From f17bf91404064955163b40e5d3c4c4091c38ca76 Mon Sep 17 00:00:00 2001 From: dilane3 Date: Sun, 9 Apr 2023 16:22:12 +0100 Subject: [PATCH 1/4] Make the payload optional for actions returned by useActions and useAction hooks --- cjs/hooks/types.d.ts | 2 +- cjs/hooks/useAction.d.ts | 2 +- cjs/hooks/useActions.js | 2 +- cjs/hooks/useActions.js.map | 2 +- cjs/index.js | 33 ++++++++++++--------------------- dist/hooks/types.d.ts | 2 +- dist/hooks/useAction.d.ts | 2 +- dist/hooks/useActions.js.map | 2 +- package.json | 2 +- src/hooks/types.ts | 2 +- src/hooks/useActions.ts | 2 +- 11 files changed, 22 insertions(+), 31 deletions(-) diff --git a/cjs/hooks/types.d.ts b/cjs/hooks/types.d.ts index 5ea0015..d58bbc8 100644 --- a/cjs/hooks/types.d.ts +++ b/cjs/hooks/types.d.ts @@ -1,3 +1,3 @@ export type Actions = { - [key: string]: (payload: any) => void; + [key: string]: (payload?: any) => void; }; diff --git a/cjs/hooks/useAction.d.ts b/cjs/hooks/useAction.d.ts index b7661c7..0eb8358 100644 --- a/cjs/hooks/useAction.d.ts +++ b/cjs/hooks/useAction.d.ts @@ -1,2 +1,2 @@ -declare const useAction: (signalName: string, action: string) => (payload: any) => void; +declare const useAction: (signalName: string, action: string) => (payload?: any) => void; export default useAction; diff --git a/cjs/hooks/useActions.js b/cjs/hooks/useActions.js index f2fa582..f725215 100644 --- a/cjs/hooks/useActions.js +++ b/cjs/hooks/useActions.js @@ -81,4 +81,4 @@ var useActions = function useActions(signalName) { return handleFormatActions(); }; exports.default = useActions; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsImNvbnRleHRzXzEiLCJfX2ltcG9ydERlZmF1bHQiLCJ1c2VBY3Rpb25zIiwic2lnbmFsTmFtZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhY3Rpb25zIiwiQXJyYXkiLCJfa2V5IiwiRXJyb3IiLCJfcmVmIiwidXNlQ29udGV4dCIsImRlZmF1bHQiLCJzaWduYWxzIiwiZGlzcGF0Y2giLCJoYW5kbGVHZXRBY3Rpb25zIiwic2lnbmFsIiwiZmluZCIsIm5hbWUiLCJmaWx0ZXJlZEFjdGlvbnMiLCJfbG9vcCIsImFjdGlvbiIsIl9hY3Rpb25zIiwiX2kiLCJhY3Rpb25OYW1lIiwiY29uY2F0IiwicmV0cmlldmVkQWN0aW9uIiwiYWN0IiwidHlwZSIsInB1c2giLCJoYW5kbGVGb3JtYXRBY3Rpb25zIiwibm9uRm9ybWF0dGVkQWN0aW9ucyIsImZvcm1hdHRlZEFjdGlvbnMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwiX2xvb3AyIiwidmFsdWUiLCJzcGxpdCIsInBheWxvYWQiLCJzIiwibiIsImRvbmUiLCJlcnIiLCJlIiwiZiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsZUFBQSxDQUFBRixPQUFBO0FBSUEsSUFBTUcsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLFVBQWtCLEVBQTBCO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBckJDLE9BQWlCLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxPQUFBQSxJQUFBLFdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7SUFBakJGLE9BQWlC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 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsImNvbnRleHRzXzEiLCJfX2ltcG9ydERlZmF1bHQiLCJ1c2VBY3Rpb25zIiwic2lnbmFsTmFtZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhY3Rpb25zIiwiQXJyYXkiLCJfa2V5IiwiRXJyb3IiLCJfcmVmIiwidXNlQ29udGV4dCIsImRlZmF1bHQiLCJzaWduYWxzIiwiZGlzcGF0Y2giLCJoYW5kbGVHZXRBY3Rpb25zIiwic2lnbmFsIiwiZmluZCIsIm5hbWUiLCJmaWx0ZXJlZEFjdGlvbnMiLCJfbG9vcCIsImFjdGlvbiIsIl9hY3Rpb25zIiwiX2kiLCJhY3Rpb25OYW1lIiwiY29uY2F0IiwicmV0cmlldmVkQWN0aW9uIiwiYWN0IiwidHlwZSIsInB1c2giLCJoYW5kbGVGb3JtYXRBY3Rpb25zIiwibm9uRm9ybWF0dGVkQWN0aW9ucyIsImZvcm1hdHRlZEFjdGlvbnMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwiX2xvb3AyIiwidmFsdWUiLCJzcGxpdCIsInBheWxvYWQiLCJzIiwibiIsImRvbmUiLCJlcnIiLCJlIiwiZiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsZUFBQSxDQUFBRixPQUFBO0FBSUEsSUFBTUcsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLFVBQWtCLEVBQTBCO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBckJDLE9BQWlCLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxPQUFBQSxJQUFBLFdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7SUFBakJGLE9BQWlC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 \ No newline at end of file diff --git a/cjs/hooks/useActions.js.map b/cjs/hooks/useActions.js.map index 0fad069..c553518 100644 --- a/cjs/hooks/useActions.js.map +++ b/cjs/hooks/useActions.js.map @@ -1 +1 @@ -{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAIpC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAY,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE;gBAC9C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAIpC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAY,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAa,EAAE,EAAE;gBAC/C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file diff --git a/cjs/index.js b/cjs/index.js index 88a9da8..320d469 100644 --- a/cjs/index.js +++ b/cjs/index.js @@ -1,33 +1,24 @@ "use strict"; -var __importDefault = - (void 0 && (void 0).__importDefault) || - function (mod) { - return mod && mod.__esModule - ? mod - : { - default: mod, - }; +var __importDefault = void 0 && (void 0).__importDefault || function (mod) { + return mod && mod.__esModule ? mod : { + "default": mod }; +}; Object.defineProperty(exports, "__esModule", { - value: true, + value: true }); -exports.useSignal = - exports.useActions = - exports.useAction = - exports.createStore = - exports.createSignal = - void 0; -var createSignal_1 = __importDefault(require("./helpers/createSignal.js")); +exports.useSignal = exports.useActions = exports.useAction = exports.createStore = exports.createSignal = void 0; +var createSignal_1 = __importDefault(require("./helpers/createSignal")); exports.createSignal = createSignal_1.default; -var createStore_1 = __importDefault(require("./helpers/createStore.js")); +var createStore_1 = __importDefault(require("./helpers/createStore")); exports.createStore = createStore_1.default; var providers_1 = __importDefault(require("./providers")); -var useAction_1 = __importDefault(require("./hooks/useAction.js")); +var useAction_1 = __importDefault(require("./hooks/useAction")); exports.useAction = useAction_1.default; -var useActions_1 = __importDefault(require("./hooks/useActions.js")); +var useActions_1 = __importDefault(require("./hooks/useActions")); exports.useActions = useActions_1.default; -var useSignal_1 = __importDefault(require("./hooks/useSignal.js")); +var useSignal_1 = __importDefault(require("./hooks/useSignal")); exports.useSignal = useSignal_1.default; exports.default = providers_1.default; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVTaWduYWxfMSIsIl9faW1wb3J0RGVmYXVsdCIsInJlcXVpcmUiLCJleHBvcnRzIiwiY3JlYXRlU2lnbmFsIiwiZGVmYXVsdCIsImNyZWF0ZVN0b3JlXzEiLCJjcmVhdGVTdG9yZSIsInByb3ZpZGVyc18xIiwidXNlQWN0aW9uXzEiLCJ1c2VBY3Rpb24iLCJ1c2VBY3Rpb25zXzEiLCJ1c2VBY3Rpb25zIiwidXNlU2lnbmFsXzEiLCJ1c2VTaWduYWwiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxlQUFBLENBQUFDLE9BQUE7QUFVU0MsT0FBQSxDQUFBQyxZQUFBLEdBVkZKLGNBQUEsQ0FBQUssT0FBWTtBQUNuQixJQUFBQyxhQUFBLEdBQUFMLGVBQUEsQ0FBQUMsT0FBQTtBQVN1QkMsT0FBQSxDQUFBSSxXQUFBLEdBVGhCRCxhQUFBLENBQUFELE9BQVc7QUFDbEIsSUFBQUcsV0FBQSxHQUFBUCxlQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTyxXQUFBLEdBQUFSLGVBQUEsQ0FBQUMsT0FBQTtBQU1vQ0MsT0FBQSxDQUFBTyxTQUFBLEdBTjdCRCxXQUFBLENBQUFKLE9BQVM7QUFDaEIsSUFBQU0sWUFBQSxHQUFBVixlQUFBLENBQUFDLE9BQUE7QUFLK0NDLE9BQUEsQ0FBQVMsVUFBQSxHQUx4Q0QsWUFBQSxDQUFBTixPQUFVO0FBQ2pCLElBQUFRLFdBQUEsR0FBQVosZUFBQSxDQUFBQyxPQUFBO0FBSTJEQyxPQUFBLENBQUFXLFNBQUEsR0FKcERELFdBQUEsQ0FBQVIsT0FBUztBQUVoQkYsT0FBQSxDQUFBRSxPQUFBLEdBQWVHLFdBQUEsQ0FBQUgsT0FBVSJ9 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVTaWduYWxfMSIsIl9faW1wb3J0RGVmYXVsdCIsInJlcXVpcmUiLCJleHBvcnRzIiwiY3JlYXRlU2lnbmFsIiwiZGVmYXVsdCIsImNyZWF0ZVN0b3JlXzEiLCJjcmVhdGVTdG9yZSIsInByb3ZpZGVyc18xIiwidXNlQWN0aW9uXzEiLCJ1c2VBY3Rpb24iLCJ1c2VBY3Rpb25zXzEiLCJ1c2VBY3Rpb25zIiwidXNlU2lnbmFsXzEiLCJ1c2VTaWduYWwiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxlQUFBLENBQUFDLE9BQUE7QUFVU0MsT0FBQSxDQUFBQyxZQUFBLEdBVkZKLGNBQUEsQ0FBQUssT0FBWTtBQUNuQixJQUFBQyxhQUFBLEdBQUFMLGVBQUEsQ0FBQUMsT0FBQTtBQVN1QkMsT0FBQSxDQUFBSSxXQUFBLEdBVGhCRCxhQUFBLENBQUFELE9BQVc7QUFDbEIsSUFBQUcsV0FBQSxHQUFBUCxlQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTyxXQUFBLEdBQUFSLGVBQUEsQ0FBQUMsT0FBQTtBQU1vQ0MsT0FBQSxDQUFBTyxTQUFBLEdBTjdCRCxXQUFBLENBQUFKLE9BQVM7QUFDaEIsSUFBQU0sWUFBQSxHQUFBVixlQUFBLENBQUFDLE9BQUE7QUFLK0NDLE9BQUEsQ0FBQVMsVUFBQSxHQUx4Q0QsWUFBQSxDQUFBTixPQUFVO0FBQ2pCLElBQUFRLFdBQUEsR0FBQVosZUFBQSxDQUFBQyxPQUFBO0FBSTJEQyxPQUFBLENBQUFXLFNBQUEsR0FKcERELFdBQUEsQ0FBQVIsT0FBUztBQUVoQkYsT0FBQSxDQUFBRSxPQUFBLEdBQWVHLFdBQUEsQ0FBQUgsT0FBVSJ9 \ No newline at end of file diff --git a/dist/hooks/types.d.ts b/dist/hooks/types.d.ts index 5ea0015..d58bbc8 100644 --- a/dist/hooks/types.d.ts +++ b/dist/hooks/types.d.ts @@ -1,3 +1,3 @@ export type Actions = { - [key: string]: (payload: any) => void; + [key: string]: (payload?: any) => void; }; diff --git a/dist/hooks/useAction.d.ts b/dist/hooks/useAction.d.ts index b7661c7..0eb8358 100644 --- a/dist/hooks/useAction.d.ts +++ b/dist/hooks/useAction.d.ts @@ -1,2 +1,2 @@ -declare const useAction: (signalName: string, action: string) => (payload: any) => void; +declare const useAction: (signalName: string, action: string) => (payload?: any) => void; export default useAction; diff --git a/dist/hooks/useActions.js.map b/dist/hooks/useActions.js.map index 0fad069..c553518 100644 --- a/dist/hooks/useActions.js.map +++ b/dist/hooks/useActions.js.map @@ -1 +1 @@ -{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAIpC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAY,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAY,EAAE,EAAE;gBAC9C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAIpC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAY,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAa,EAAE,EAAE;gBAC/C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index d80a687..b4bd21d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dilane3/gx", - "version": "1.2.5", + "version": "1.2.6", "private": false, "license": "MIT", "main": "cjs/index.js", diff --git a/src/hooks/types.ts b/src/hooks/types.ts index 1b2a68b..ef4dc9d 100644 --- a/src/hooks/types.ts +++ b/src/hooks/types.ts @@ -1,3 +1,3 @@ export type Actions = { - [key: string]: (payload: any) => void + [key: string]: (payload?: any) => void } \ No newline at end of file diff --git a/src/hooks/useActions.ts b/src/hooks/useActions.ts index 4fbc323..45b8438 100644 --- a/src/hooks/useActions.ts +++ b/src/hooks/useActions.ts @@ -51,7 +51,7 @@ const useActions = (signalName: string, ...actions: string[]) => { // Get action name const actionName = action.type.split("/")[1]; - formattedActions[actionName] = (payload: any) => { + formattedActions[actionName] = (payload?: any) => { dispatch({ type: action.type, payload, From d24a796b57a62a54fbc46b004936e6a6a88b8dc0 Mon Sep 17 00:00:00 2001 From: dilane3 Date: Thu, 1 Jun 2023 08:41:05 +0100 Subject: [PATCH 2/4] Add new feature (operations handler) to act to the state without update it and return a specific value --- src/contexts/types.ts | 13 ++++++++++++- src/helpers/createSignal.ts | 16 ++++++++++++++-- src/helpers/types.ts | 5 +++++ src/hooks/types.ts | 4 ++++ src/hooks/useOperations.ts | 38 +++++++++++++++++++++++++++++++++++++ 5 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 src/hooks/useOperations.ts diff --git a/src/contexts/types.ts b/src/contexts/types.ts index eb00618..ce38bee 100644 --- a/src/contexts/types.ts +++ b/src/contexts/types.ts @@ -8,7 +8,10 @@ export type GXSignalType = { state: T, // Actions of the signal - actions: GXActionType[] + actions: GXActionType[], + + // Operation of the signal + operations?: GXOperationType[] } export type GXActionType = { @@ -19,6 +22,14 @@ export type GXActionType = { handler: (state: T, payload: P) => T } +export type GXOperationType = { + // Represent the type of the operation + type: string, + + // The handle function + handler: (state: T, payload: P) => Q +} + export type DispatchedActionType = { // The type of the action type: string, diff --git a/src/helpers/createSignal.ts b/src/helpers/createSignal.ts index 5e0f7b3..94362ca 100644 --- a/src/helpers/createSignal.ts +++ b/src/helpers/createSignal.ts @@ -1,5 +1,5 @@ import { CreateSignalOptionType } from './types'; -import { GXActionType } from '../contexts/types'; +import { GXActionType, GXOperationType } from '../contexts/types'; /** * Create a signal with a state and actions for managing this state @@ -8,6 +8,7 @@ import { GXActionType } from '../contexts/types'; */ const createSignal = (options: CreateSignalOptionType) => { const actions: GXActionType[] = []; + const operations: GXOperationType[] = []; // Convert the actions object to an array const actionsTable = Object.entries(options.actions) @@ -19,11 +20,22 @@ const createSignal = (options: CreateSignalOptionType) => { }) } + // Convert the operations object to an array + const operationsTable = Object.entries(options.operations || {}); + + for (let operation of operationsTable) { + operations.push({ + type: `${options.name}/${operation[0]}`, + handler: operation[1] + }) + } + // Create a signal const signal = { name: options.name, state: options.state, - actions + actions, + operations } return signal; diff --git a/src/helpers/types.ts b/src/helpers/types.ts index 7bd8c4f..aa5a8cd 100644 --- a/src/helpers/types.ts +++ b/src/helpers/types.ts @@ -4,6 +4,7 @@ export type CreateSignalOptionType = { name: string; state: T; actions: Action; + operations?: Operation; } export type CreateStoreType = { @@ -12,4 +13,8 @@ export type CreateStoreType = { export type Action = { [key: string]: (state: T, payload: any) => T +} + +export type Operation = { + [key: string]: (state: T, payload?: any) => any } \ No newline at end of file diff --git a/src/hooks/types.ts b/src/hooks/types.ts index ef4dc9d..54e955a 100644 --- a/src/hooks/types.ts +++ b/src/hooks/types.ts @@ -1,3 +1,7 @@ export type Actions = { [key: string]: (payload?: any) => void +} + +export type Operations

= { + [key: string]: (payload?: any) => P } \ No newline at end of file diff --git a/src/hooks/useOperations.ts b/src/hooks/useOperations.ts new file mode 100644 index 0000000..cb838ad --- /dev/null +++ b/src/hooks/useOperations.ts @@ -0,0 +1,38 @@ +import { useContext } from "react"; +import GXContext from "../contexts"; +import { Operations } from "./types"; + +const useOperations = (signalName: string) => { + // Get Global Context + const { signals } = useContext(GXContext); + + if (!signalName || typeof signalName !== "string") + throw new Error("Provide a signalName as a first argument of useAction"); + + const handleFormatOperations = () => { + const signal = signals.find((signal) => signal.name === signalName); + + if (!signal) throw new Error(`Signal ${signalName} not found`); + + // Get actions + const nonFormattedOperations = signal.operations; + + // Formatted actions + const formattedOperations: Operations = {}; + + for (const operation of nonFormattedOperations) { + // Get action name + const operationName = operation.type.split("/")[1]; + + formattedOperations[operationName] = (payload: any) => { + return operation.handler(signal.state, payload); + }; + } + + return formattedOperations; + }; + + return handleFormatOperations(); +}; + +export default useOperations; From 472cf65a4ab90629044a817cd521f29520ab70c8 Mon Sep 17 00:00:00 2001 From: dilane3 Date: Tue, 11 Jul 2023 13:04:54 +0100 Subject: [PATCH 3/4] Change error message --- src/hooks/useOperations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/useOperations.ts b/src/hooks/useOperations.ts index cb838ad..528b356 100644 --- a/src/hooks/useOperations.ts +++ b/src/hooks/useOperations.ts @@ -7,7 +7,7 @@ const useOperations = (signalName: string) => { const { signals } = useContext(GXContext); if (!signalName || typeof signalName !== "string") - throw new Error("Provide a signalName as a first argument of useAction"); + throw new Error("Provide a signalName as a first argument of useOperations"); const handleFormatOperations = () => { const signal = signals.find((signal) => signal.name === signalName); From 19bdcebe57c819a96fc5c3dc230bb7447aa1a66a Mon Sep 17 00:00:00 2001 From: dilane3 Date: Wed, 26 Jul 2023 22:15:53 +0100 Subject: [PATCH 4/4] Adding new feature: useOperations hook --- .npmignore | 1 - README.md | 108 ++++++++++++++++++++++++------- cjs/contexts/index.d.ts | 4 -- cjs/contexts/index.js | 12 ---- cjs/contexts/index.js.map | 1 - cjs/contexts/types.d.ts | 19 ------ cjs/contexts/types.js | 6 -- cjs/contexts/types.js.map | 1 - cjs/helpers/createSignal.d.ts | 13 ---- cjs/helpers/createSignal.js | 31 --------- cjs/helpers/createSignal.js.map | 1 - cjs/helpers/createStore.d.ts | 4 -- cjs/helpers/createStore.js | 14 ---- cjs/helpers/createStore.js.map | 1 - cjs/helpers/types.d.ts | 12 ---- cjs/helpers/types.js | 6 -- cjs/helpers/types.js.map | 1 - cjs/hooks/types.d.ts | 3 - cjs/hooks/types.js | 6 -- cjs/hooks/types.js.map | 1 - cjs/hooks/useAction.d.ts | 2 - cjs/hooks/useAction.js | 19 ------ cjs/hooks/useAction.js.map | 1 - cjs/hooks/useActions.d.ts | 3 - cjs/hooks/useActions.js | 84 ------------------------ cjs/hooks/useActions.js.map | 1 - cjs/hooks/useSignal.d.ts | 2 - cjs/hooks/useSignal.js | 37 ----------- cjs/hooks/useSignal.js.map | 1 - cjs/index.d.ts | 8 --- cjs/index.js | 24 ------- cjs/index.js.map | 1 - cjs/providers/index.d.ts | 3 - cjs/providers/index.js | 42 ------------ cjs/providers/index.js.map | 1 - cjs/providers/reducer.d.ts | 4 -- cjs/providers/reducer.js | 47 -------------- cjs/providers/reducer.js.map | 1 - cjs/providers/types.d.ts | 10 --- cjs/providers/types.js | 6 -- cjs/providers/types.js.map | 1 - dist/contexts/index.d.ts | 2 +- dist/contexts/index.js | 2 +- dist/contexts/index.js.map | 2 +- dist/contexts/types.d.ts | 7 +- dist/helpers/createSignal.d.ts | 5 +- dist/helpers/createSignal.js | 14 +++- dist/helpers/createSignal.js.map | 2 +- dist/helpers/createStore.d.ts | 4 +- dist/helpers/types.d.ts | 6 +- dist/hooks/types.d.ts | 3 + dist/hooks/useAction.d.ts | 3 +- dist/hooks/useAction.js | 4 +- dist/hooks/useAction.js.map | 2 +- dist/hooks/useActions.d.ts | 4 +- dist/hooks/useActions.js | 4 +- dist/hooks/useActions.js.map | 2 +- dist/hooks/useOperations.d.ts | 3 + dist/hooks/useOperations.js | 49 ++++++++++++++ dist/hooks/useOperations.js.map | 1 + dist/hooks/useSignal.js | 4 +- dist/hooks/useSignal.js.map | 2 +- dist/index.d.ts | 15 +++-- dist/index.js | 29 +++++---- dist/index.js.map | 2 +- dist/providers/index.d.ts | 2 +- dist/providers/index.js | 8 +-- dist/providers/index.js.map | 2 +- dist/providers/reducer.d.ts | 4 +- dist/providers/types.d.ts | 2 +- package.json | 6 +- src/contexts/index.ts | 6 +- src/contexts/types.ts | 2 +- src/helpers/createSignal.ts | 26 ++++---- src/helpers/createStore.ts | 4 +- src/helpers/types.ts | 2 +- src/hooks/useAction.ts | 7 +- src/hooks/useActions.ts | 12 ++-- src/hooks/useOperations.ts | 38 +++++++++-- src/hooks/useSignal.ts | 2 +- src/index.ts | 24 +++++-- src/providers/index.tsx | 6 +- src/providers/reducer.ts | 4 +- src/providers/types.ts | 2 +- 84 files changed, 307 insertions(+), 566 deletions(-) delete mode 100644 cjs/contexts/index.d.ts delete mode 100644 cjs/contexts/index.js delete mode 100644 cjs/contexts/index.js.map delete mode 100644 cjs/contexts/types.d.ts delete mode 100644 cjs/contexts/types.js delete mode 100644 cjs/contexts/types.js.map delete mode 100644 cjs/helpers/createSignal.d.ts delete mode 100644 cjs/helpers/createSignal.js delete mode 100644 cjs/helpers/createSignal.js.map delete mode 100644 cjs/helpers/createStore.d.ts delete mode 100644 cjs/helpers/createStore.js delete mode 100644 cjs/helpers/createStore.js.map delete mode 100644 cjs/helpers/types.d.ts delete mode 100644 cjs/helpers/types.js delete mode 100644 cjs/helpers/types.js.map delete mode 100644 cjs/hooks/types.d.ts delete mode 100644 cjs/hooks/types.js delete mode 100644 cjs/hooks/types.js.map delete mode 100644 cjs/hooks/useAction.d.ts delete mode 100644 cjs/hooks/useAction.js delete mode 100644 cjs/hooks/useAction.js.map delete mode 100644 cjs/hooks/useActions.d.ts delete mode 100644 cjs/hooks/useActions.js delete mode 100644 cjs/hooks/useActions.js.map delete mode 100644 cjs/hooks/useSignal.d.ts delete mode 100644 cjs/hooks/useSignal.js delete mode 100644 cjs/hooks/useSignal.js.map delete mode 100644 cjs/index.d.ts delete mode 100644 cjs/index.js delete mode 100644 cjs/index.js.map delete mode 100644 cjs/providers/index.d.ts delete mode 100644 cjs/providers/index.js delete mode 100644 cjs/providers/index.js.map delete mode 100644 cjs/providers/reducer.d.ts delete mode 100644 cjs/providers/reducer.js delete mode 100644 cjs/providers/reducer.js.map delete mode 100644 cjs/providers/types.d.ts delete mode 100644 cjs/providers/types.js delete mode 100644 cjs/providers/types.js.map create mode 100644 dist/hooks/useOperations.d.ts create mode 100644 dist/hooks/useOperations.js create mode 100644 dist/hooks/useOperations.js.map diff --git a/.npmignore b/.npmignore index 1a1a903..8e1cbc8 100644 --- a/.npmignore +++ b/.npmignore @@ -1,4 +1,3 @@ node_modules src -dist tsconfig.json diff --git a/README.md b/README.md index 41915cd..ce6e26d 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,8 @@ [![npm downloads](https://img.shields.io/npm/dm/%40dilane3%2Fgx)](https://www.npmjs.com/package/@dilane3/gx) [![GitHub license](https://img.shields.io/github/license/react-gx/gx)](https://github.com/react-gx/gx/blob/main/LICENSE) - ![logo](https://lh4.googleusercontent.com/k2V9Oh-tfABeDjwovtMUqE-lt6cULH0c1EFgb-XNTFh1lt5DVGTGhl3Ty3fMF3xhCBY=w2400) - This library aims to provide you an `easy` and `fast` way to set up and manage the global state of your **`react`** application. ## Documentation @@ -48,7 +46,7 @@ import React, { StrictMode } from "react"; function App() { return ( - { + { // Your application here } @@ -66,7 +64,7 @@ import React, { Fragment } from "react"; function App() { return ( - { + { // Your application here } @@ -86,10 +84,9 @@ module.exports = { }; ``` - ## Definition of concepts -**GX** comes with some new concepts like `signal`, `action` and `store`. +**GX** comes with some new concepts like `signal`, `action`, and `store`. ### 1. Signal @@ -100,7 +97,7 @@ For handle it, there is a special `createSignal` function for this case. ### 2. Action -**Actions** represent functions that act to the state and make it changing over the time. +**Actions** represent functions that act to the state and make it changing over the time. Your have to specify these `actions` when you create yours `signals`. @@ -121,7 +118,6 @@ For structuring your code very well you have to follow these steps. - Inside the signals directory you will create files that will contains your state declaration with actions that act to this state. (**ie: counter.js**) - Inside the store directory, just create an index.js file. We will see how to fill it. - Here is the result. ![structure](https://lh3.googleusercontent.com/_z_JTStNFHyXTmjz4GrcphAN6BC_CeKYxN1zwyxWGC-ujpIcVTqthesXT6Lfe8b4t1M=w2400) @@ -131,10 +127,10 @@ Here is the result. Inside the `signals` directory, create a file called `counter.js` for example. ```js -import { createSignal } from '@dilane3/gx'; +import { createSignal } from "@dilane3/gx"; const counterSignal = createSignal({ - name: 'counter', + name: "counter", state: 0, actions: { increment: (state, payload) => { @@ -143,8 +139,8 @@ const counterSignal = createSignal({ decrement: (state, payload) => { return state - payload; - } - } + }, + }, }); export default counterSignal; @@ -173,7 +169,7 @@ import GXProvider from "@dilane3/gx"; function App() { return ( - { + { // Your application here } @@ -187,7 +183,6 @@ export default App; Create a component called `Counter` inside the Counter.js file. Then import two hooks from `gx` called `useSignal` and `useActions` like follow. - ```js import React from "react"; import { useSignal, useActions } from "@dilane3/gx"; @@ -214,12 +209,79 @@ function Counter() { export default Counter; ``` -Note that the `useSignal` hook takes the name of the signal as a parameter and return the state contained inside that signal. +Note that the `useSignal` hook takes the name of the signal as a parameter and return the state contained inside that signal. The `useAction` hook takes the name of the signal too and returns an object that contains all the actions of this signal. Actually, if you click on the increment button, the counter will increase by one and if you click on the decrement button, the counter will decrease by one. +### Sixth step: Adding operations to your signals. + +This feature comes with the version `1.3.0` of `gx`. It allows you to add operations to your signals. +**Operations** are functions that use your current state and apply some filters on it. They return the result of the operation without changing the state. + +For example, if you want to know if the counter is even or odd, you can create an operation called `isEven` like follow. + +```js +import { createSignal } from "@dilane3/gx"; + +const counterSignal = createSignal({ + name: "counter", + state: 0, + actions: { + increment: (state, payload) => { + return state + payload; + }, + + decrement: (state, payload) => { + return state - payload; + }, + }, + + // Operations section + operations: { + isEven: (state) => { + return state % 2 === 0; + }, + }, +}); + +export default counterSignal; +``` + +Then, you can use it inside your component like follow. + +```js +import React from "react"; +import { useSignal, useActions, useOperations } from "@dilane3/gx"; + +function Counter() { + // State + const counter = useSignal("counter"); + + // Actions + const { increment, decrement } = useActions("counter"); + + // Operations + const { isEven } = useOperations("counter"); + + return ( +

+

Counter App

+ +

Count: {counter}

+ +

is even: {isEven() ? "yes" : "no"}

+ + + +
+ ); +} + +export default Counter; +``` + ## API ### `createSignal` @@ -228,12 +290,11 @@ This function takes an object as a parameter and returns a signal. The object must contain the following properties: - -| Properties | Type | Description | -| --- | --- | --- | -| `name` | `string` | The name of the signal. It must be unique. | -| `state` | `any` | The initial state of the signal. | -| `actions` | `object` | An object that contains all the actions of the signal. | +| Properties | Type | Description | +| ---------- | -------- | ------------------------------------------------------ | +| `name` | `string` | The name of the signal. It must be unique. | +| `state` | `any` | The initial state of the signal. | +| `actions` | `object` | An object that contains all the actions of the signal. | Structure of the `actions` object: @@ -242,13 +303,12 @@ Structure of the `actions` object: actionName: (state, payload) => { // Do something with the state and the payload return state; - } + }; } ``` All actions must return the new state of the signal. - ### `createStore` This function takes an array of signals as a parameter and returns a store. @@ -264,7 +324,7 @@ This component takes a store as a parameter and wraps your application with it. ```jsx const App = () => ( - { + { // Your application here } diff --git a/cjs/contexts/index.d.ts b/cjs/contexts/index.d.ts deleted file mode 100644 index 10233aa..0000000 --- a/cjs/contexts/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// -import { GXContextType } from "./types"; -declare const GXContext: import("react").Context; -export default GXContext; diff --git a/cjs/contexts/index.js b/cjs/contexts/index.js deleted file mode 100644 index 0aeec25..0000000 --- a/cjs/contexts/index.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var react_1 = require("react"); -var GXContext = (0, react_1.createContext)({ - signals: [], - dispatch: function dispatch() {} -}); -exports.default = GXContext; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsIkdYQ29udGV4dCIsImNyZWF0ZUNvbnRleHQiLCJzaWduYWxzIiwiZGlzcGF0Y2giLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0cy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFHQSxJQUFNQyxTQUFTLEdBQUcsSUFBQUYsT0FBQSxDQUFBRyxhQUFhLEVBQWdCO0VBQzdDQyxPQUFPLEVBQUUsRUFBRTtFQUNYQyxRQUFRLEVBQUUsU0FBQUEsU0FBQSxFQUFLLENBQUU7Q0FDbEIsQ0FBQztBQUVGQyxPQUFBLENBQUFDLE9BQUEsR0FBZUwsU0FBUyJ9 \ No newline at end of file diff --git a/cjs/contexts/index.js.map b/cjs/contexts/index.js.map deleted file mode 100644 index 24febf7..0000000 --- a/cjs/contexts/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contexts/index.ts"],"names":[],"mappings":";;AAAA,iCAAsC;AAGtC,MAAM,SAAS,GAAG,IAAA,qBAAa,EAAgB;IAC7C,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;CACnB,CAAC,CAAC;AAEH,kBAAe,SAAS,CAAA"} \ No newline at end of file diff --git a/cjs/contexts/types.d.ts b/cjs/contexts/types.d.ts deleted file mode 100644 index 9b5bb4b..0000000 --- a/cjs/contexts/types.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// -import { GXAction } from "../providers/types"; -export type GXSignalType = { - name: string; - state: T; - actions: GXActionType[]; -}; -export type GXActionType = { - type: string; - handler: (state: T, payload: P) => T; -}; -export type DispatchedActionType = { - type: string; - payload: any; -}; -export type GXContextType = { - signals: GXSignalType[]; - dispatch: React.Dispatch; -}; diff --git a/cjs/contexts/types.js b/cjs/contexts/types.js deleted file mode 100644 index 74da1f2..0000000 --- a/cjs/contexts/types.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHRzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbbnVsbF0sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/cjs/contexts/types.js.map b/cjs/contexts/types.js.map deleted file mode 100644 index 50cfc6a..0000000 --- a/cjs/contexts/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/contexts/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/cjs/helpers/createSignal.d.ts b/cjs/helpers/createSignal.d.ts deleted file mode 100644 index 59ce0f7..0000000 --- a/cjs/helpers/createSignal.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CreateSignalOptionType } from './types'; -import { GXActionType } from '../contexts/types'; -/** - * Create a signal with a state and actions for managing this state - * @param options - * @returns - */ -declare const createSignal: (options: CreateSignalOptionType) => { - name: string; - state: T; - actions: GXActionType[]; -}; -export default createSignal; diff --git a/cjs/helpers/createSignal.js b/cjs/helpers/createSignal.js deleted file mode 100644 index 0388d14..0000000 --- a/cjs/helpers/createSignal.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/** - * Create a signal with a state and actions for managing this state - * @param options - * @returns - */ -var createSignal = function createSignal(options) { - var actions = []; - // Convert the actions object to an array - var actionsTable = Object.entries(options.actions); - for (var _i = 0, _actionsTable = actionsTable; _i < _actionsTable.length; _i++) { - var action = _actionsTable[_i]; - actions.push({ - type: "".concat(options.name, "/").concat(action[0]), - handler: action[1] - }); - } - // Create a signal - var signal = { - name: options.name, - state: options.state, - actions: actions - }; - return signal; -}; -exports.default = createSignal; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVTaWduYWwiLCJvcHRpb25zIiwiYWN0aW9ucyIsImFjdGlvbnNUYWJsZSIsIk9iamVjdCIsImVudHJpZXMiLCJfaSIsIl9hY3Rpb25zVGFibGUiLCJsZW5ndGgiLCJhY3Rpb24iLCJwdXNoIiwidHlwZSIsImNvbmNhdCIsIm5hbWUiLCJoYW5kbGVyIiwic2lnbmFsIiwic3RhdGUiLCJleHBvcnRzIiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2NyZWF0ZVNpZ25hbC50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQTs7Ozs7QUFLQSxJQUFNQSxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBT0MsT0FBa0MsRUFBSTtFQUM3RCxJQUFNQyxPQUFPLEdBQTJCLEVBQUU7RUFFMUM7RUFDQSxJQUFNQyxZQUFZLEdBQUdDLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDSixPQUFPLENBQUNDLE9BQU8sQ0FBQztFQUVwRCxTQUFBSSxFQUFBLE1BQUFDLGFBQUEsR0FBbUJKLFlBQVksRUFBQUcsRUFBQSxHQUFBQyxhQUFBLENBQUFDLE1BQUEsRUFBQUYsRUFBQSxJQUFFO0lBQTVCLElBQUlHLE1BQU0sR0FBQUYsYUFBQSxDQUFBRCxFQUFBO0lBQ2JKLE9BQU8sQ0FBQ1EsSUFBSSxDQUFDO01BQ1hDLElBQUksS0FBQUMsTUFBQSxDQUFLWCxPQUFPLENBQUNZLElBQUksT0FBQUQsTUFBQSxDQUFJSCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUU7TUFDcENLLE9BQU8sRUFBRUwsTUFBTSxDQUFDLENBQUM7S0FDbEIsQ0FBQzs7RUFHSjtFQUNBLElBQU1NLE1BQU0sR0FBRztJQUNiRixJQUFJLEVBQUVaLE9BQU8sQ0FBQ1ksSUFBSTtJQUNsQkcsS0FBSyxFQUFFZixPQUFPLENBQUNlLEtBQUs7SUFDcEJkLE9BQU8sRUFBUEE7R0FDRDtFQUVELE9BQU9hLE1BQU07QUFDZixDQUFDO0FBRURFLE9BQUEsQ0FBQUMsT0FBQSxHQUFlbEIsWUFBWSJ9 \ No newline at end of file diff --git a/cjs/helpers/createSignal.js.map b/cjs/helpers/createSignal.js.map deleted file mode 100644 index c3dddca..0000000 --- a/cjs/helpers/createSignal.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createSignal.js","sourceRoot":"","sources":["../../src/helpers/createSignal.ts"],"names":[],"mappings":";;AAGA;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAI,OAAkC,EAAE,EAAE;IAC7D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,yCAAyC;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEpD,KAAK,IAAI,MAAM,IAAI,YAAY,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;SACnB,CAAC,CAAA;KACH;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;KACR,CAAA;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AAED,kBAAe,YAAY,CAAC"} \ No newline at end of file diff --git a/cjs/helpers/createStore.d.ts b/cjs/helpers/createStore.d.ts deleted file mode 100644 index cdcabf4..0000000 --- a/cjs/helpers/createStore.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { GXSignalType } from "../contexts/types"; -import { CreateStoreType } from "./types"; -declare const createStore: (signals: GXSignalType[]) => CreateStoreType; -export default createStore; diff --git a/cjs/helpers/createStore.js b/cjs/helpers/createStore.js deleted file mode 100644 index dfa0e25..0000000 --- a/cjs/helpers/createStore.js +++ /dev/null @@ -1,14 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var createStore = function createStore(signals) { - return { - getSignals: function getSignals() { - return signals; - } - }; -}; -exports.default = createStore; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVTdG9yZSIsInNpZ25hbHMiLCJnZXRTaWduYWxzIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9jcmVhdGVTdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxJQUFNQSxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsT0FBdUIsRUFBcUI7RUFDL0QsT0FBTztJQUNMQyxVQUFVLEVBQUUsU0FBQUEsV0FBQTtNQUFBLE9BQU1ELE9BQU87SUFBQTtHQUMxQjtBQUNILENBQUM7QUFFREUsT0FBQSxDQUFBQyxPQUFBLEdBQWVKLFdBQVcifQ== \ No newline at end of file diff --git a/cjs/helpers/createStore.js.map b/cjs/helpers/createStore.js.map deleted file mode 100644 index 90cccb2..0000000 --- a/cjs/helpers/createStore.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../src/helpers/createStore.ts"],"names":[],"mappings":";;AAGA,MAAM,WAAW,GAAG,CAAC,OAAuB,EAAmB,EAAE;IAC/D,OAAO;QACL,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"} \ No newline at end of file diff --git a/cjs/helpers/types.d.ts b/cjs/helpers/types.d.ts deleted file mode 100644 index 59eb067..0000000 --- a/cjs/helpers/types.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { GXSignalType } from "../contexts/types"; -export type CreateSignalOptionType = { - name: string; - state: T; - actions: Action; -}; -export type CreateStoreType = { - getSignals: () => GXSignalType[]; -}; -export type Action = { - [key: string]: (state: T, payload: any) => T; -}; diff --git a/cjs/helpers/types.js b/cjs/helpers/types.js deleted file mode 100644 index a35be81..0000000 --- a/cjs/helpers/types.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/cjs/helpers/types.js.map b/cjs/helpers/types.js.map deleted file mode 100644 index bc4cff3..0000000 --- a/cjs/helpers/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/helpers/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/cjs/hooks/types.d.ts b/cjs/hooks/types.d.ts deleted file mode 100644 index d58bbc8..0000000 --- a/cjs/hooks/types.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export type Actions = { - [key: string]: (payload?: any) => void; -}; diff --git a/cjs/hooks/types.js b/cjs/hooks/types.js deleted file mode 100644 index f77d742..0000000 --- a/cjs/hooks/types.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbbnVsbF0sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/cjs/hooks/types.js.map b/cjs/hooks/types.js.map deleted file mode 100644 index c660c10..0000000 --- a/cjs/hooks/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/hooks/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/cjs/hooks/useAction.d.ts b/cjs/hooks/useAction.d.ts deleted file mode 100644 index 0eb8358..0000000 --- a/cjs/hooks/useAction.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const useAction: (signalName: string, action: string) => (payload?: any) => void; -export default useAction; diff --git a/cjs/hooks/useAction.js b/cjs/hooks/useAction.js deleted file mode 100644 index 98a4a69..0000000 --- a/cjs/hooks/useAction.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; - -var __importDefault = void 0 && (void 0).__importDefault || function (mod) { - return mod && mod.__esModule ? mod : { - "default": mod - }; -}; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var useActions_1 = __importDefault(require("./useActions")); -var useAction = function useAction(signalName, action) { - if (!signalName || typeof signalName !== "string") throw new Error("Provide a signalName as a first argument of useAction"); - if (!action || typeof action !== "string") throw new Error("Provide an action as second argument of useAction"); - var actions = (0, useActions_1.default)(signalName, action); - return Object.values(actions)[0]; -}; -exports.default = useAction; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VBY3Rpb25zXzEiLCJfX2ltcG9ydERlZmF1bHQiLCJyZXF1aXJlIiwidXNlQWN0aW9uIiwic2lnbmFsTmFtZSIsImFjdGlvbiIsIkVycm9yIiwiYWN0aW9ucyIsImRlZmF1bHQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUFjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsZUFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVNBLENBQUlDLFVBQWtCLEVBQUVDLE1BQWMsRUFBSTtFQUN2RCxJQUFJLENBQUNELFVBQVUsSUFBSSxPQUFPQSxVQUFVLEtBQUssUUFBUSxFQUMvQyxNQUFNLElBQUlFLEtBQUssQ0FBQyx1REFBdUQsQ0FBQztFQUUxRSxJQUFJLENBQUNELE1BQU0sSUFBSSxPQUFPQSxNQUFNLEtBQUssUUFBUSxFQUN2QyxNQUFNLElBQUlDLEtBQUssQ0FBQyxtREFBbUQsQ0FBQztFQUV0RSxJQUFNQyxPQUFPLEdBQUcsSUFBQVAsWUFBQSxDQUFBUSxPQUFVLEVBQUNKLFVBQVUsRUFBRUMsTUFBTSxDQUFDO0VBRTlDLE9BQU9JLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVESSxPQUFBLENBQUFILE9BQUEsR0FBZUwsU0FBUyJ9 \ No newline at end of file diff --git a/cjs/hooks/useAction.js.map b/cjs/hooks/useAction.js.map deleted file mode 100644 index 043e7e7..0000000 --- a/cjs/hooks/useAction.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"useAction.js","sourceRoot":"","sources":["../../src/hooks/useAction.ts"],"names":[],"mappings":";;;;;AAAA,8DAAsC;AAEtC,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAE,EAAE;IACvD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAE3E,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QACvC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/cjs/hooks/useActions.d.ts b/cjs/hooks/useActions.d.ts deleted file mode 100644 index 07ef067..0000000 --- a/cjs/hooks/useActions.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { Actions } from "./types"; -declare const useActions: (signalName: string, ...actions: string[]) => Actions; -export default useActions; diff --git a/cjs/hooks/useActions.js b/cjs/hooks/useActions.js deleted file mode 100644 index f725215..0000000 --- a/cjs/hooks/useActions.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -var __importDefault = void 0 && (void 0).__importDefault || function (mod) { - return mod && mod.__esModule ? mod : { - "default": mod - }; -}; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var react_1 = require("react"); -var contexts_1 = __importDefault(require("../contexts")); -var useActions = function useActions(signalName) { - for (var _len = arguments.length, actions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - actions[_key - 1] = arguments[_key]; - } - if (!signalName || typeof signalName !== "string") throw new Error("Provide a signalName as first argument of useActions"); - // Get Global Context - var _ref = (0, react_1.useContext)(contexts_1.default), - signals = _ref.signals, - dispatch = _ref.dispatch; - // Some handlers - /** - * Get actions of a signal - * @param signalName - * @returns - */ - var handleGetActions = function handleGetActions(signalName) { - var signal = signals.find(function (signal) { - return signal.name === signalName; - }); - if (signal) { - if (!actions || actions.length === 0) return signal.actions; - var filteredActions = []; - var _loop = function _loop() { - var action = _actions[_i]; - var actionName = "".concat(signalName, "/").concat(action); - var retrievedAction = signal.actions.find(function (act) { - return act.type === actionName; - }); - if (retrievedAction) filteredActions.push(retrievedAction);else throw new Error("Action ".concat(actionName, " not found")); - }; - for (var _i = 0, _actions = actions; _i < _actions.length; _i++) { - _loop(); - } - return filteredActions; - } else throw new Error("Signal ".concat(signalName, " not found")); - }; - var handleFormatActions = function handleFormatActions() { - // Get actions - var nonFormattedActions = handleGetActions(signalName); - // Formatted actions - var formattedActions = {}; - var _iterator = _createForOfIteratorHelper(nonFormattedActions), - _step; - try { - var _loop2 = function _loop2() { - var action = _step.value; - // Get action name - var actionName = action.type.split("/")[1]; - formattedActions[actionName] = function (payload) { - dispatch({ - type: action.type, - payload: payload - }); - }; - }; - for (_iterator.s(); !(_step = _iterator.n()).done;) { - _loop2(); - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - return formattedActions; - }; - return handleFormatActions(); -}; -exports.default = useActions; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsImNvbnRleHRzXzEiLCJfX2ltcG9ydERlZmF1bHQiLCJ1c2VBY3Rpb25zIiwic2lnbmFsTmFtZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhY3Rpb25zIiwiQXJyYXkiLCJfa2V5IiwiRXJyb3IiLCJfcmVmIiwidXNlQ29udGV4dCIsImRlZmF1bHQiLCJzaWduYWxzIiwiZGlzcGF0Y2giLCJoYW5kbGVHZXRBY3Rpb25zIiwic2lnbmFsIiwiZmluZCIsIm5hbWUiLCJmaWx0ZXJlZEFjdGlvbnMiLCJfbG9vcCIsImFjdGlvbiIsIl9hY3Rpb25zIiwiX2kiLCJhY3Rpb25OYW1lIiwiY29uY2F0IiwicmV0cmlldmVkQWN0aW9uIiwiYWN0IiwidHlwZSIsInB1c2giLCJoYW5kbGVGb3JtYXRBY3Rpb25zIiwibm9uRm9ybWF0dGVkQWN0aW9ucyIsImZvcm1hdHRlZEFjdGlvbnMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwiX2xvb3AyIiwidmFsdWUiLCJzcGxpdCIsInBheWxvYWQiLCJzIiwibiIsImRvbmUiLCJlcnIiLCJlIiwiZiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQWN0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsZUFBQSxDQUFBRixPQUFBO0FBSUEsSUFBTUcsVUFBVSxHQUFHLFNBQWJBLFVBQVVBLENBQUlDLFVBQWtCLEVBQTBCO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBckJDLE9BQWlCLE9BQUFDLEtBQUEsQ0FBQUosSUFBQSxPQUFBQSxJQUFBLFdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7SUFBakJGLE9BQWlCLENBQUFFLElBQUEsUUFBQUosU0FBQSxDQUFBSSxJQUFBO0VBQUE7RUFDMUQsSUFBSSxDQUFDTixVQUFVLElBQUksT0FBT0EsVUFBVSxLQUFLLFFBQVEsRUFDL0MsTUFBTSxJQUFJTyxLQUFLLENBQUMsc0RBQXNELENBQUM7RUFFekU7RUFDQSxJQUFBQyxJQUFBLEdBQThCLElBQUFiLE9BQUEsQ0FBQWMsVUFBVSxFQUFDWixVQUFBLENBQUFhLE9BQVMsQ0FBQztJQUEzQ0MsT0FBTyxHQUFBSCxJQUFBLENBQVBHLE9BQU87SUFBRUMsUUFBUSxHQUFBSixJQUFBLENBQVJJLFFBQVE7RUFFekI7RUFFQTs7Ozs7RUFLQSxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJYixVQUFrQixFQUFJO0lBQzlDLElBQU1jLE1BQU0sR0FBR0gsT0FBTyxDQUFDSSxJQUFJLENBQUMsVUFBQ0QsTUFBTTtNQUFBLE9BQUtBLE1BQU0sQ0FBQ0UsSUFBSSxLQUFLaEIsVUFBVTtJQUFBLEVBQUM7SUFFbkUsSUFBSWMsTUFBTSxFQUFFO01BQ1YsSUFBSSxDQUFDVixPQUFPLElBQUlBLE9BQU8sQ0FBQ0QsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPVyxNQUFNLENBQUNWLE9BQU87TUFFM0QsSUFBTWEsZUFBZSxHQUF3QixFQUFFO01BQUMsSUFBQUMsS0FBQSxZQUFBQSxNQUFBLEVBRXBCO1FBQXZCLElBQUlDLE1BQU0sR0FBQUMsUUFBQSxDQUFBQyxFQUFBO1FBQ2IsSUFBTUMsVUFBVSxNQUFBQyxNQUFBLENBQU12QixVQUFVLE9BQUF1QixNQUFBLENBQUlKLE1BQU0sQ0FBRTtRQUU1QyxJQUFNSyxlQUFlLEdBQUdWLE1BQU0sQ0FBQ1YsT0FBTyxDQUFDVyxJQUFJLENBQ3pDLFVBQUNVLEdBQUc7VUFBQSxPQUFLQSxHQUFHLENBQUNDLElBQUksS0FBS0osVUFBVTtRQUFBLEVBQ2pDO1FBRUQsSUFBSUUsZUFBZSxFQUFFUCxlQUFlLENBQUNVLElBQUksQ0FBQ0gsZUFBZSxDQUFDLENBQUMsS0FDdEQsTUFBTSxJQUFJakIsS0FBSyxXQUFBZ0IsTUFBQSxDQUFXRCxVQUFVLGdCQUFhO09BQ3ZEO01BVEQsU0FBQUQsRUFBQSxNQUFBRCxRQUFBLEdBQW1CaEIsT0FBTyxFQUFBaUIsRUFBQSxHQUFBRCxRQUFBLENBQUFqQixNQUFBLEVBQUFrQixFQUFBO1FBQUFILEtBQUE7TUFBQTtNQVcxQixPQUFPRCxlQUFlO0tBQ3ZCLE1BQU0sTUFBTSxJQUFJVixLQUFLLFdBQUFnQixNQUFBLENBQVd2QixVQUFVLGdCQUFhO0VBQzFELENBQUM7RUFFRCxJQUFNNEIsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBQSxFQUFRO0lBQy9CO0lBQ0EsSUFBTUMsbUJBQW1CLEdBQUdoQixnQkFBZ0IsQ0FBQ2IsVUFBVSxDQUFDO0lBRXhEO0lBQ0EsSUFBTThCLGdCQUFnQixHQUFZLEVBQUU7SUFBQyxJQUFBQyxTQUFBLEdBQUFDLDBCQUFBLENBRWhCSCxtQkFBbUI7TUFBQUksS0FBQTtJQUFBO01BQUEsSUFBQUMsTUFBQSxZQUFBQSxPQUFBLEVBQUU7UUFBQSxJQUEvQmYsTUFBTSxHQUFBYyxLQUFBLENBQUFFLEtBQUE7UUFDZjtRQUNBLElBQU1iLFVBQVUsR0FBR0gsTUFBTSxDQUFDTyxJQUFJLENBQUNVLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUNOLGdCQUFnQixDQUFDUixVQUFVLENBQUMsR0FBRyxVQUFDZSxPQUFhLEVBQUk7VUFDL0N6QixRQUFRLENBQUM7WUFDUGMsSUFBSSxFQUFFUCxNQUFNLENBQUNPLElBQUk7WUFDakJXLE9BQU8sRUFBUEE7V0FDRCxDQUFDO1FBQ0osQ0FBQztPQUNGO01BVkQsS0FBQU4sU0FBQSxDQUFBTyxDQUFBLE1BQUFMLEtBQUEsR0FBQUYsU0FBQSxDQUFBUSxDQUFBLElBQUFDLElBQUE7UUFBQU4sTUFBQTtNQUFBO0lBVUMsU0FBQU8sR0FBQTtNQUFBVixTQUFBLENBQUFXLENBQUEsQ0FBQUQsR0FBQTtJQUFBO01BQUFWLFNBQUEsQ0FBQVksQ0FBQTtJQUFBO0lBRUQsT0FBT2IsZ0JBQWdCO0VBQ3pCLENBQUM7RUFFRCxPQUFPRixtQkFBbUIsRUFBRTtBQUM5QixDQUFDO0FBRURnQixPQUFBLENBQUFsQyxPQUFBLEdBQWVYLFVBQVUifQ== \ No newline at end of file diff --git a/cjs/hooks/useActions.js.map b/cjs/hooks/useActions.js.map deleted file mode 100644 index c553518..0000000 --- a/cjs/hooks/useActions.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAIpC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAY,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAa,EAAE,EAAE;gBAC/C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file diff --git a/cjs/hooks/useSignal.d.ts b/cjs/hooks/useSignal.d.ts deleted file mode 100644 index 51d6a1c..0000000 --- a/cjs/hooks/useSignal.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -declare const useSignal: (signalName: string) => T; -export default useSignal; diff --git a/cjs/hooks/useSignal.js b/cjs/hooks/useSignal.js deleted file mode 100644 index 25e9e63..0000000 --- a/cjs/hooks/useSignal.js +++ /dev/null @@ -1,37 +0,0 @@ -"use strict"; - -var __importDefault = void 0 && (void 0).__importDefault || function (mod) { - return mod && mod.__esModule ? mod : { - "default": mod - }; -}; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var react_1 = require("react"); -var contexts_1 = __importDefault(require("../contexts")); -var useSignal = function useSignal(signalName) { - var _ref = (0, react_1.useContext)(contexts_1.default), - signals = _ref.signals; - var memoizedSignals = (0, react_1.useMemo)(function () { - return signals; - }, [signals]); - /** - * Get state of a signal base on its name - * @param signalName - * @returns - */ - var handleGetSignalState = function handleGetSignalState(signalName) { - var signal = memoizedSignals.find(function (signal) { - return signal.name === signalName; - }); - if (signal) { - return signal.state; - } - // Throw error if signal not found - throw new Error("Signal ".concat(signalName, " not found")); - }; - return handleGetSignalState(signalName); -}; -exports.default = useSignal; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsImNvbnRleHRzXzEiLCJfX2ltcG9ydERlZmF1bHQiLCJ1c2VTaWduYWwiLCJzaWduYWxOYW1lIiwiX3JlZiIsInVzZUNvbnRleHQiLCJkZWZhdWx0Iiwic2lnbmFscyIsIm1lbW9pemVkU2lnbmFscyIsInVzZU1lbW8iLCJoYW5kbGVHZXRTaWduYWxTdGF0ZSIsInNpZ25hbCIsImZpbmQiLCJuYW1lIiwic3RhdGUiLCJFcnJvciIsImNvbmNhdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2lnbmFsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbbnVsbF0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxlQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFNRyxTQUFTLEdBQUcsU0FBWkEsU0FBU0EsQ0FBYUMsVUFBa0IsRUFBSTtFQUNoRCxJQUFBQyxJQUFBLEdBQW9CLElBQUFOLE9BQUEsQ0FBQU8sVUFBVSxFQUFDTCxVQUFBLENBQUFNLE9BQVMsQ0FBQztJQUFqQ0MsT0FBTyxHQUFBSCxJQUFBLENBQVBHLE9BQU87RUFDZixJQUFNQyxlQUFlLEdBQUcsSUFBQVYsT0FBQSxDQUFBVyxPQUFPLEVBQUM7SUFBQSxPQUFNRixPQUFPO0VBQUEsR0FBRSxDQUFDQSxPQUFPLENBQUMsQ0FBQztFQUV6RDs7Ozs7RUFLQSxJQUFNRyxvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJUCxVQUFrQixFQUFPO0lBQ3JELElBQU1RLE1BQU0sR0FBR0gsZUFBZSxDQUFDSSxJQUFJLENBQUMsVUFBQUQsTUFBTTtNQUFBLE9BQUlBLE1BQU0sQ0FBQ0UsSUFBSSxLQUFLVixVQUFVO0lBQUEsRUFBQztJQUV6RSxJQUFJUSxNQUFNLEVBQUU7TUFDVixPQUFPQSxNQUFNLENBQUNHLEtBQUs7O0lBR3JCO0lBQ0EsTUFBTSxJQUFJQyxLQUFLLFdBQUFDLE1BQUEsQ0FBV2IsVUFBVSxnQkFBYTtFQUNuRCxDQUFDO0VBRUQsT0FBT08sb0JBQW9CLENBQUNQLFVBQVUsQ0FBQztBQUN6QyxDQUFDO0FBRURjLE9BQUEsQ0FBQVgsT0FBQSxHQUFlSixTQUFTIn0= \ No newline at end of file diff --git a/cjs/hooks/useSignal.js.map b/cjs/hooks/useSignal.js.map deleted file mode 100644 index cbcf249..0000000 --- a/cjs/hooks/useSignal.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"useSignal.js","sourceRoot":"","sources":["../../src/hooks/useSignal.ts"],"names":[],"mappings":";;;;;AAAA,iCAA4C;AAC5C,2DAAoC;AAEpC,MAAM,SAAS,GAAG,CAAU,UAAkB,EAAE,EAAE;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAK,EAAE;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAE1E,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,KAAK,CAAC;SACrB;QAED,kCAAkC;QAClC,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/cjs/index.d.ts b/cjs/index.d.ts deleted file mode 100644 index b115086..0000000 --- a/cjs/index.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import createSignal from "./helpers/createSignal"; -import createStore from "./helpers/createStore"; -import GXProvider from "./providers"; -import useAction from "./hooks/useAction"; -import useActions from "./hooks/useActions"; -import useSignal from "./hooks/useSignal"; -export default GXProvider; -export { createSignal, createStore, useAction, useActions, useSignal }; diff --git a/cjs/index.js b/cjs/index.js deleted file mode 100644 index 320d469..0000000 --- a/cjs/index.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; - -var __importDefault = void 0 && (void 0).__importDefault || function (mod) { - return mod && mod.__esModule ? mod : { - "default": mod - }; -}; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.useSignal = exports.useActions = exports.useAction = exports.createStore = exports.createSignal = void 0; -var createSignal_1 = __importDefault(require("./helpers/createSignal")); -exports.createSignal = createSignal_1.default; -var createStore_1 = __importDefault(require("./helpers/createStore")); -exports.createStore = createStore_1.default; -var providers_1 = __importDefault(require("./providers")); -var useAction_1 = __importDefault(require("./hooks/useAction")); -exports.useAction = useAction_1.default; -var useActions_1 = __importDefault(require("./hooks/useActions")); -exports.useActions = useActions_1.default; -var useSignal_1 = __importDefault(require("./hooks/useSignal")); -exports.useSignal = useSignal_1.default; -exports.default = providers_1.default; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVTaWduYWxfMSIsIl9faW1wb3J0RGVmYXVsdCIsInJlcXVpcmUiLCJleHBvcnRzIiwiY3JlYXRlU2lnbmFsIiwiZGVmYXVsdCIsImNyZWF0ZVN0b3JlXzEiLCJjcmVhdGVTdG9yZSIsInByb3ZpZGVyc18xIiwidXNlQWN0aW9uXzEiLCJ1c2VBY3Rpb24iLCJ1c2VBY3Rpb25zXzEiLCJ1c2VBY3Rpb25zIiwidXNlU2lnbmFsXzEiLCJ1c2VTaWduYWwiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsY0FBQSxHQUFBQyxlQUFBLENBQUFDLE9BQUE7QUFVU0MsT0FBQSxDQUFBQyxZQUFBLEdBVkZKLGNBQUEsQ0FBQUssT0FBWTtBQUNuQixJQUFBQyxhQUFBLEdBQUFMLGVBQUEsQ0FBQUMsT0FBQTtBQVN1QkMsT0FBQSxDQUFBSSxXQUFBLEdBVGhCRCxhQUFBLENBQUFELE9BQVc7QUFDbEIsSUFBQUcsV0FBQSxHQUFBUCxlQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTyxXQUFBLEdBQUFSLGVBQUEsQ0FBQUMsT0FBQTtBQU1vQ0MsT0FBQSxDQUFBTyxTQUFBLEdBTjdCRCxXQUFBLENBQUFKLE9BQVM7QUFDaEIsSUFBQU0sWUFBQSxHQUFBVixlQUFBLENBQUFDLE9BQUE7QUFLK0NDLE9BQUEsQ0FBQVMsVUFBQSxHQUx4Q0QsWUFBQSxDQUFBTixPQUFVO0FBQ2pCLElBQUFRLFdBQUEsR0FBQVosZUFBQSxDQUFBQyxPQUFBO0FBSTJEQyxPQUFBLENBQUFXLFNBQUEsR0FKcERELFdBQUEsQ0FBQVIsT0FBUztBQUVoQkYsT0FBQSxDQUFBRSxPQUFBLEdBQWVHLFdBQUEsQ0FBQUgsT0FBVSJ9 \ No newline at end of file diff --git a/cjs/index.js.map b/cjs/index.js.map deleted file mode 100644 index 80d41cd..0000000 --- a/cjs/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,0EAAkD;AAUzC,uBAVF,sBAAY,CAUE;AATrB,wEAAgD;AASzB,sBAThB,qBAAW,CASgB;AARlC,4DAAqC;AAErC,kEAA0C;AAMN,oBAN7B,mBAAS,CAM6B;AAL7C,oEAA4C;AAKG,qBALxC,oBAAU,CAKwC;AAJzD,kEAA0C;AAIiB,oBAJpD,mBAAS,CAIoD;AAFpE,kBAAe,mBAAU,CAAC"} \ No newline at end of file diff --git a/cjs/providers/index.d.ts b/cjs/providers/index.d.ts deleted file mode 100644 index 6a3aabf..0000000 --- a/cjs/providers/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -/// -import { GXProviderProps } from "./types"; -export default function GXProvider({ children, store }: GXProviderProps): JSX.Element; diff --git a/cjs/providers/index.js b/cjs/providers/index.js deleted file mode 100644 index 873fda2..0000000 --- a/cjs/providers/index.js +++ /dev/null @@ -1,42 +0,0 @@ -"use strict"; - -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } -function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -var __importDefault = void 0 && (void 0).__importDefault || function (mod) { - return mod && mod.__esModule ? mod : { - "default": mod - }; -}; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var jsx_runtime_1 = require("react/jsx-runtime"); -var react_1 = require("react"); -var contexts_1 = __importDefault(require("../contexts")); -var reducer_1 = __importDefault(require("./reducer")); -function GXProvider(_ref) { - var children = _ref.children, - store = _ref.store; - // Global state that manage all signals - var _ref2 = (0, react_1.useReducer)(reducer_1.default, store.getSignals()), - _ref3 = _slicedToArray(_ref2, 2), - signals = _ref3[0], - dispatch = _ref3[1]; - // Context value - var contextValue = { - signals: signals, - dispatch: dispatch - }; - return (0, jsx_runtime_1.jsx)(contexts_1.default.Provider, Object.assign({ - value: contextValue - }, { - children: children - })); -} -exports.default = GXProvider; -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZWFjdF8xIiwicmVxdWlyZSIsImNvbnRleHRzXzEiLCJfX2ltcG9ydERlZmF1bHQiLCJyZWR1Y2VyXzEiLCJHWFByb3ZpZGVyIiwiX3JlZiIsImNoaWxkcmVuIiwic3RvcmUiLCJfcmVmMiIsInVzZVJlZHVjZXIiLCJkZWZhdWx0IiwiZ2V0U2lnbmFscyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJzaWduYWxzIiwiZGlzcGF0Y2giLCJjb250ZXh0VmFsdWUiLCJqc3hfcnVudGltZV8xIiwianN4IiwiUHJvdmlkZXIiLCJPYmplY3QiLCJhc3NpZ24iLCJ2YWx1ZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFDLGVBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLFNBQUEsR0FBQUQsZUFBQSxDQUFBRixPQUFBO0FBRUEsU0FBd0JJLFVBQVVBLENBQUFDLElBQUEsRUFBcUM7RUFBQSxJQUFsQ0MsUUFBUSxHQUFBRCxJQUFBLENBQVJDLFFBQVE7SUFBRUMsS0FBSyxHQUFBRixJQUFBLENBQUxFLEtBQUs7RUFDbEQ7RUFDQSxJQUFBQyxLQUFBLEdBQTRCLElBQUFULE9BQUEsQ0FBQVUsVUFBVSxFQUFDTixTQUFBLENBQUFPLE9BQVMsRUFBRUgsS0FBSyxDQUFDSSxVQUFVLEVBQUUsQ0FBQztJQUFBQyxLQUFBLEdBQUFDLGNBQUEsQ0FBQUwsS0FBQTtJQUE5RE0sT0FBTyxHQUFBRixLQUFBO0lBQUVHLFFBQVEsR0FBQUgsS0FBQTtFQUV4QjtFQUNBLElBQU1JLFlBQVksR0FBRztJQUNuQkYsT0FBTyxFQUFQQSxPQUFPO0lBQ1BDLFFBQVEsRUFBUkE7R0FDRDtFQUVELE9BQ0UsSUFBQUUsYUFBQSxDQUFBQyxHQUFBLEVBQUNqQixVQUFBLENBQUFTLE9BQVMsQ0FBQ1MsUUFBUSxFQUFBQyxNQUFBLENBQUFDLE1BQUE7SUFBQ0MsS0FBSyxFQUFFTjtFQUFZO0lBQUFWLFFBQUEsRUFBR0E7RUFBUSxHQUFzQjtBQUU1RTtBQWJBaUIsT0FBQSxDQUFBYixPQUFBLEdBQUFOLFVBQUE7QUFhQyJ9 \ No newline at end of file diff --git a/cjs/providers/index.js.map b/cjs/providers/index.js.map deleted file mode 100644 index fbe3203..0000000 --- a/cjs/providers/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAEpC,wDAAkC;AAElC,SAAwB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAmB;IACrE,uCAAuC;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAA,kBAAU,EAAC,iBAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtE,gBAAgB;IAChB,MAAM,YAAY,GAAG;QACnB,OAAO;QACP,QAAQ;KACT,CAAC;IAEF,OAAO,CACL,uBAAC,kBAAS,CAAC,QAAQ,kBAAC,KAAK,EAAE,YAAY,gBAAG,QAAQ,IAAsB,CACzE,CAAC;AACJ,CAAC;AAbD,6BAaC;AAAA,CAAC"} \ No newline at end of file diff --git a/cjs/providers/reducer.d.ts b/cjs/providers/reducer.d.ts deleted file mode 100644 index 6999312..0000000 --- a/cjs/providers/reducer.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { GXSignalType } from "../contexts/types"; -import { GXAction } from "./types"; -declare const gxReducer: (signals: GXSignalType[], action: GXAction) => GXSignalType[]; -export default gxReducer; diff --git a/cjs/providers/reducer.js b/cjs/providers/reducer.js deleted file mode 100644 index 6d020ab..0000000 --- a/cjs/providers/reducer.js +++ /dev/null @@ -1,47 +0,0 @@ -"use strict"; - -function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } -Object.defineProperty(exports, "__esModule", { - value: true -}); -var gxReducer = function gxReducer(signals, action) { - // Prev signals - var prevSignals = _toConsumableArray(signals); - // Get the signal name - var signalName = action.type.split("/")[0]; - // Get the signal - var signal = prevSignals.find(function (signal) { - return signal.name === signalName; - }); - if (!signal) throw new Error("Signal \"".concat(signalName, "\" not found")); - var actionToDispatch = null; - // Get the action - var _iterator = _createForOfIteratorHelper(signal.actions), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var act = _step.value; - if (act.type === action.type) { - actionToDispatch = act; - break; - } - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - if (actionToDispatch) { - // Dispatch the action - signal.state = actionToDispatch.handler(signal.state, action.payload); - } else throw new Error("Action \"".concat(action.type, "\" not found")); - return prevSignals; -}; -exports.default = gxReducer; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJneFJlZHVjZXIiLCJzaWduYWxzIiwiYWN0aW9uIiwicHJldlNpZ25hbHMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzaWduYWxOYW1lIiwidHlwZSIsInNwbGl0Iiwic2lnbmFsIiwiZmluZCIsIm5hbWUiLCJFcnJvciIsImNvbmNhdCIsImFjdGlvblRvRGlzcGF0Y2giLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImFjdGlvbnMiLCJfc3RlcCIsInMiLCJuIiwiZG9uZSIsImFjdCIsInZhbHVlIiwiZXJyIiwiZSIsImYiLCJzdGF0ZSIsImhhbmRsZXIiLCJwYXlsb2FkIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL3JlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOltudWxsXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUdBLElBQU1BLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJQyxPQUF1QixFQUFFQyxNQUFnQixFQUFJO0VBQzlEO0VBQ0EsSUFBTUMsV0FBVyxHQUFBQyxrQkFBQSxDQUFPSCxPQUFPLENBQUM7RUFFaEM7RUFDQSxJQUFNSSxVQUFVLEdBQUdILE1BQU0sQ0FBQ0ksSUFBSSxDQUFDQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBRTVDO0VBQ0EsSUFBTUMsTUFBTSxHQUFHTCxXQUFXLENBQUNNLElBQUksQ0FBQyxVQUFDRCxNQUFNO0lBQUEsT0FBS0EsTUFBTSxDQUFDRSxJQUFJLEtBQUtMLFVBQVU7RUFBQSxFQUFDO0VBRXZFLElBQUksQ0FBQ0csTUFBTSxFQUFFLE1BQU0sSUFBSUcsS0FBSyxhQUFBQyxNQUFBLENBQVlQLFVBQVUsa0JBQWM7RUFFaEUsSUFBSVEsZ0JBQWdCLEdBQUcsSUFBSTtFQUUzQjtFQUFBLElBQUFDLFNBQUEsR0FBQUMsMEJBQUEsQ0FDZ0JQLE1BQU0sQ0FBQ1EsT0FBTztJQUFBQyxLQUFBO0VBQUE7SUFBOUIsS0FBQUgsU0FBQSxDQUFBSSxDQUFBLE1BQUFELEtBQUEsR0FBQUgsU0FBQSxDQUFBSyxDQUFBLElBQUFDLElBQUEsR0FBZ0M7TUFBQSxJQUF2QkMsR0FBRyxHQUFBSixLQUFBLENBQUFLLEtBQUE7TUFDVixJQUFJRCxHQUFHLENBQUNmLElBQUksS0FBS0osTUFBTSxDQUFDSSxJQUFJLEVBQUU7UUFDNUJPLGdCQUFnQixHQUFHUSxHQUFHO1FBRXRCOzs7RUFFSCxTQUFBRSxHQUFBO0lBQUFULFNBQUEsQ0FBQVUsQ0FBQSxDQUFBRCxHQUFBO0VBQUE7SUFBQVQsU0FBQSxDQUFBVyxDQUFBO0VBQUE7RUFFRCxJQUFJWixnQkFBZ0IsRUFBRTtJQUNwQjtJQUNBTCxNQUFNLENBQUNrQixLQUFLLEdBQUdiLGdCQUFnQixDQUFDYyxPQUFPLENBQUNuQixNQUFNLENBQUNrQixLQUFLLEVBQUV4QixNQUFNLENBQUMwQixPQUFPLENBQUM7R0FDdEUsTUFBTSxNQUFNLElBQUlqQixLQUFLLGFBQUFDLE1BQUEsQ0FBWVYsTUFBTSxDQUFDSSxJQUFJLGtCQUFjO0VBRTNELE9BQU9ILFdBQVc7QUFDcEIsQ0FBQztBQUVEMEIsT0FBQSxDQUFBQyxPQUFBLEdBQWU5QixTQUFTIn0= \ No newline at end of file diff --git a/cjs/providers/reducer.js.map b/cjs/providers/reducer.js.map deleted file mode 100644 index f935362..0000000 --- a/cjs/providers/reducer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../src/providers/reducer.ts"],"names":[],"mappings":";;AAGA,MAAM,SAAS,GAAG,CAAC,OAAuB,EAAE,MAAgB,EAAE,EAAE;IAC9D,eAAe;IACf,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAEjC,sBAAsB;IACtB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,iBAAiB;IACjB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAExE,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,aAAa,CAAC,CAAC;IAEjE,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAE5B,iBAAiB;IACjB,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE;QAC9B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;YAC5B,gBAAgB,GAAG,GAAG,CAAC;YAEvB,MAAM;SACP;KACF;IAED,IAAI,gBAAgB,EAAE;QACpB,sBAAsB;QACtB,MAAM,CAAC,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;KACvE;;QAAM,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;IAE5D,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/cjs/providers/types.d.ts b/cjs/providers/types.d.ts deleted file mode 100644 index 0212864..0000000 --- a/cjs/providers/types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -/// -import { CreateStoreType } from '../helpers/types'; -export type GXProviderProps = { - children: React.ReactElement; - store: CreateStoreType; -}; -export type GXAction = { - type: string; - payload: any; -}; diff --git a/cjs/providers/types.js b/cjs/providers/types.js deleted file mode 100644 index fe53c0e..0000000 --- a/cjs/providers/types.js +++ /dev/null @@ -1,6 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3ZpZGVycy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/cjs/providers/types.js.map b/cjs/providers/types.js.map deleted file mode 100644 index 27cedee..0000000 --- a/cjs/providers/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/contexts/index.d.ts b/dist/contexts/index.d.ts index 10233aa..00d0878 100644 --- a/dist/contexts/index.d.ts +++ b/dist/contexts/index.d.ts @@ -1,4 +1,4 @@ /// -import { GXContextType } from "./types"; +import { GXContextType } from "./types.js"; declare const GXContext: import("react").Context; export default GXContext; diff --git a/dist/contexts/index.js b/dist/contexts/index.js index 90ea21f..c8d630f 100644 --- a/dist/contexts/index.js +++ b/dist/contexts/index.js @@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); const GXContext = (0, react_1.createContext)({ signals: [], - dispatch: () => { } + dispatch: () => { }, }); exports.default = GXContext; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/contexts/index.js.map b/dist/contexts/index.js.map index 24febf7..61f6ff0 100644 --- a/dist/contexts/index.js.map +++ b/dist/contexts/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contexts/index.ts"],"names":[],"mappings":";;AAAA,iCAAsC;AAGtC,MAAM,SAAS,GAAG,IAAA,qBAAa,EAAgB;IAC7C,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;CACnB,CAAC,CAAC;AAEH,kBAAe,SAAS,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contexts/index.ts"],"names":[],"mappings":";;AAAA,iCAAsC;AAGtC,MAAM,SAAS,GAAG,IAAA,qBAAa,EAAgB;IAC7C,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;CACnB,CAAC,CAAC;AAEH,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/contexts/types.d.ts b/dist/contexts/types.d.ts index 9b5bb4b..cc94f32 100644 --- a/dist/contexts/types.d.ts +++ b/dist/contexts/types.d.ts @@ -1,14 +1,19 @@ /// -import { GXAction } from "../providers/types"; +import { GXAction } from "../providers/types.js"; export type GXSignalType = { name: string; state: T; actions: GXActionType[]; + operations?: GXOperationType[]; }; export type GXActionType = { type: string; handler: (state: T, payload: P) => T; }; +export type GXOperationType = { + type: string; + handler: (state: T, payload: P) => Q; +}; export type DispatchedActionType = { type: string; payload: any; diff --git a/dist/helpers/createSignal.d.ts b/dist/helpers/createSignal.d.ts index 59ce0f7..41241bb 100644 --- a/dist/helpers/createSignal.d.ts +++ b/dist/helpers/createSignal.d.ts @@ -1,5 +1,5 @@ -import { CreateSignalOptionType } from './types'; -import { GXActionType } from '../contexts/types'; +import { CreateSignalOptionType } from "./types.js"; +import { GXActionType, GXOperationType } from "../contexts/types.js"; /** * Create a signal with a state and actions for managing this state * @param options @@ -9,5 +9,6 @@ declare const createSignal: (options: CreateSignalOptionType) => { name: string; state: T; actions: GXActionType[]; + operations: GXOperationType[]; }; export default createSignal; diff --git a/dist/helpers/createSignal.js b/dist/helpers/createSignal.js index 6ce7448..3157c8d 100644 --- a/dist/helpers/createSignal.js +++ b/dist/helpers/createSignal.js @@ -7,19 +7,29 @@ Object.defineProperty(exports, "__esModule", { value: true }); */ const createSignal = (options) => { const actions = []; + const operations = []; // Convert the actions object to an array const actionsTable = Object.entries(options.actions); for (let action of actionsTable) { actions.push({ type: `${options.name}/${action[0]}`, - handler: action[1] + handler: action[1], + }); + } + // Convert the operations object to an array + const operationsTable = Object.entries(options.operations || {}); + for (let operation of operationsTable) { + operations.push({ + type: `${options.name}/${operation[0]}`, + handler: operation[1], }); } // Create a signal const signal = { name: options.name, state: options.state, - actions + actions, + operations, }; return signal; }; diff --git a/dist/helpers/createSignal.js.map b/dist/helpers/createSignal.js.map index c3dddca..1df9385 100644 --- a/dist/helpers/createSignal.js.map +++ b/dist/helpers/createSignal.js.map @@ -1 +1 @@ -{"version":3,"file":"createSignal.js","sourceRoot":"","sources":["../../src/helpers/createSignal.ts"],"names":[],"mappings":";;AAGA;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAI,OAAkC,EAAE,EAAE;IAC7D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,yCAAyC;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAEpD,KAAK,IAAI,MAAM,IAAI,YAAY,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;SACnB,CAAC,CAAA;KACH;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;KACR,CAAA;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AAED,kBAAe,YAAY,CAAC"} \ No newline at end of file +{"version":3,"file":"createSignal.js","sourceRoot":"","sources":["../../src/helpers/createSignal.ts"],"names":[],"mappings":";;AAGA;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAI,OAAkC,EAAE,EAAE;IAC7D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,UAAU,GAA8B,EAAE,CAAC;IAEjD,yCAAyC;IACzC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD,KAAK,IAAI,MAAM,IAAI,YAAY,EAAE;QAC/B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;YACpC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;SACnB,CAAC,CAAC;KACJ;IAED,4CAA4C;IAC5C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAEjE,KAAK,IAAI,SAAS,IAAI,eAAe,EAAE;QACrC,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;YACvC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;KACJ;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;QACP,UAAU;KACX,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"} \ No newline at end of file diff --git a/dist/helpers/createStore.d.ts b/dist/helpers/createStore.d.ts index cdcabf4..2295848 100644 --- a/dist/helpers/createStore.d.ts +++ b/dist/helpers/createStore.d.ts @@ -1,4 +1,4 @@ -import { GXSignalType } from "../contexts/types"; -import { CreateStoreType } from "./types"; +import { GXSignalType } from "../contexts/types.js"; +import { CreateStoreType } from "./types.js"; declare const createStore: (signals: GXSignalType[]) => CreateStoreType; export default createStore; diff --git a/dist/helpers/types.d.ts b/dist/helpers/types.d.ts index 59eb067..aa95e5b 100644 --- a/dist/helpers/types.d.ts +++ b/dist/helpers/types.d.ts @@ -1,8 +1,9 @@ -import { GXSignalType } from "../contexts/types"; +import { GXSignalType } from "../contexts/types.js"; export type CreateSignalOptionType = { name: string; state: T; actions: Action; + operations?: Operation; }; export type CreateStoreType = { getSignals: () => GXSignalType[]; @@ -10,3 +11,6 @@ export type CreateStoreType = { export type Action = { [key: string]: (state: T, payload: any) => T; }; +export type Operation = { + [key: string]: (state: T, payload?: any) => any; +}; diff --git a/dist/hooks/types.d.ts b/dist/hooks/types.d.ts index d58bbc8..bbaef3b 100644 --- a/dist/hooks/types.d.ts +++ b/dist/hooks/types.d.ts @@ -1,3 +1,6 @@ export type Actions = { [key: string]: (payload?: any) => void; }; +export type Operations

= { + [key: string]: (payload?: any) => P; +}; diff --git a/dist/hooks/useAction.d.ts b/dist/hooks/useAction.d.ts index 0eb8358..13187f8 100644 --- a/dist/hooks/useAction.d.ts +++ b/dist/hooks/useAction.d.ts @@ -1,2 +1,3 @@ -declare const useAction: (signalName: string, action: string) => (payload?: any) => void; +import { Actions } from "./types.js"; +declare const useAction: (signalName: string, action: string) => any; export default useAction; diff --git a/dist/hooks/useAction.js b/dist/hooks/useAction.js index 3eaef77..8ef4ac6 100644 --- a/dist/hooks/useAction.js +++ b/dist/hooks/useAction.js @@ -3,13 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -const useActions_1 = __importDefault(require("./useActions")); +const useActions_js_1 = __importDefault(require("./useActions.js")); const useAction = (signalName, action) => { if (!signalName || typeof signalName !== "string") throw new Error("Provide a signalName as a first argument of useAction"); if (!action || typeof action !== "string") throw new Error("Provide an action as second argument of useAction"); - const actions = (0, useActions_1.default)(signalName, action); + const actions = (0, useActions_js_1.default)(signalName, action); return Object.values(actions)[0]; }; exports.default = useAction; diff --git a/dist/hooks/useAction.js.map b/dist/hooks/useAction.js.map index 043e7e7..7955ac0 100644 --- a/dist/hooks/useAction.js.map +++ b/dist/hooks/useAction.js.map @@ -1 +1 @@ -{"version":3,"file":"useAction.js","sourceRoot":"","sources":["../../src/hooks/useAction.ts"],"names":[],"mappings":";;;;;AAAA,8DAAsC;AAEtC,MAAM,SAAS,GAAG,CAAC,UAAkB,EAAE,MAAc,EAAE,EAAE;IACvD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAE3E,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QACvC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE/C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"useAction.js","sourceRoot":"","sources":["../../src/hooks/useAction.ts"],"names":[],"mappings":";;;;;AACA,oEAAyC;AAEzC,MAAM,SAAS,GAAG,CAAc,UAAkB,EAAE,MAAc,EAAE,EAAE;IACpE,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAE3E,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QACvC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAI,UAAU,EAAE,MAAM,CAAC,CAAC;IAElD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/hooks/useActions.d.ts b/dist/hooks/useActions.d.ts index 07ef067..3ebd9fa 100644 --- a/dist/hooks/useActions.d.ts +++ b/dist/hooks/useActions.d.ts @@ -1,3 +1,3 @@ -import { Actions } from "./types"; -declare const useActions: (signalName: string, ...actions: string[]) => Actions; +import { Actions } from "./types.js"; +declare const useActions: (signalName: string, ...actions: string[]) => T; export default useActions; diff --git a/dist/hooks/useActions.js b/dist/hooks/useActions.js index 70762cc..4b3c6eb 100644 --- a/dist/hooks/useActions.js +++ b/dist/hooks/useActions.js @@ -4,12 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); -const contexts_1 = __importDefault(require("../contexts")); +const index_js_1 = __importDefault(require("../contexts/index.js")); const useActions = (signalName, ...actions) => { if (!signalName || typeof signalName !== "string") throw new Error("Provide a signalName as first argument of useActions"); // Get Global Context - const { signals, dispatch } = (0, react_1.useContext)(contexts_1.default); + const { signals, dispatch } = (0, react_1.useContext)(index_js_1.default); // Some handlers /** * Get actions of a signal diff --git a/dist/hooks/useActions.js.map b/dist/hooks/useActions.js.map index c553518..8d5261f 100644 --- a/dist/hooks/useActions.js.map +++ b/dist/hooks/useActions.js.map @@ -1 +1 @@ -{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAIpC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC9D,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAY,EAAE,CAAC;QAErC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAa,EAAE,EAAE;gBAC/C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"useActions.js","sourceRoot":"","sources":["../../src/hooks/useActions.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,oEAA6C;AAI7C,MAAM,UAAU,GAAG,CAAc,UAAkB,EAAE,GAAG,OAAiB,EAAE,EAAE;IAC3E,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAE1E,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAEpD,gBAAgB;IAEhB;;;;OAIG;IACH,MAAM,gBAAgB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC;YAE5D,MAAM,eAAe,GAAwB,EAAE,CAAC;YAEhD,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,MAAM,UAAU,GAAG,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;gBAE7C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;gBAEF,IAAI,eAAe;oBAAE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;;oBACtD,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;aACxD;YAED,OAAO,eAAe,CAAC;SACxB;;YAAM,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,GAAM,EAAE;QAClC,cAAc;QACd,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEzD,oBAAoB;QACpB,MAAM,gBAAgB,GAAG,EAAS,CAAC;QAEnC,KAAK,MAAM,MAAM,IAAI,mBAAmB,EAAE;YACxC,kBAAkB;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7C,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,OAAa,EAAE,EAAE;gBAC/C,QAAQ,CAAC;oBACP,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;iBACR,CAAC,CAAC;YACL,CAAC,CAAC;SACH;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,mBAAmB,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"} \ No newline at end of file diff --git a/dist/hooks/useOperations.d.ts b/dist/hooks/useOperations.d.ts new file mode 100644 index 0000000..e7361e3 --- /dev/null +++ b/dist/hooks/useOperations.d.ts @@ -0,0 +1,3 @@ +import { Operations } from "./types.js"; +declare const useOperations: >(signalName: string) => T; +export default useOperations; diff --git a/dist/hooks/useOperations.js b/dist/hooks/useOperations.js new file mode 100644 index 0000000..e4418b5 --- /dev/null +++ b/dist/hooks/useOperations.js @@ -0,0 +1,49 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_1 = require("react"); +const index_js_1 = __importDefault(require("../contexts/index.js")); +const useOperations = (signalName) => { + // Get Global Context + const { signals } = (0, react_1.useContext)(index_js_1.default); + if (!signalName || typeof signalName !== "string") + throw new Error("Provide a signalName as a first argument of useOperations"); + const handleFormatOperations = () => { + const signal = signals.find((signal) => signal.name === signalName); + if (!signal) + throw new Error(`Signal ${signalName} not found`); + // Get actions + const nonFormattedOperations = signal.operations; + // Formatted actions + const formattedOperations = {}; + for (const operation of nonFormattedOperations) { + // Get action name + const operationName = operation.type.split("/")[1]; + formattedOperations[operationName] = (payload) => { + return operation.handler(signal.state, payload); + }; + } + // return formattedOperations; + return formattedOperations; + }; + return handleFormatOperations(); +}; +// Définir un type générique pour représenter une fonction +// type FunctionType any> = T; +// Définir un type générique pour représenter un objet contenant des fonctions +// type FunctionObject = { +// [K in keyof T]: T[K] extends Function ? FunctionType : never; +// }; +// type FunctionObject = { +// [K in keyof T]: T[K] extends (payload: infer Arg) => infer R +// ? (payload: Arg) => R +// : (payload?: any) => any; +// }; +// // Utilisation d'une fonction auxiliaire pour extraire le type du second paramètre +// type SecondParamType = T extends (a: any, b: infer P) => any ? P : any; +// // Utilisation d'une fonction auxiliaire pour extraire le type de retour d'une fonction +// type ReturnTypeFunc = T extends (...args: any[]) => infer R ? R : any; +exports.default = useOperations; +//# sourceMappingURL=useOperations.js.map \ No newline at end of file diff --git a/dist/hooks/useOperations.js.map b/dist/hooks/useOperations.js.map new file mode 100644 index 0000000..a223b5a --- /dev/null +++ b/dist/hooks/useOperations.js.map @@ -0,0 +1 @@ +{"version":3,"file":"useOperations.js","sourceRoot":"","sources":["../../src/hooks/useOperations.ts"],"names":[],"mappings":";;;;;AAAA,iCAAmC;AACnC,oEAA6C;AAG7C,MAAM,aAAa,GAAG,CAAiB,UAAkB,EAAE,EAAE;IAC3D,qBAAqB;IACrB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAE1C,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ;QAC/C,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IAEJ,MAAM,sBAAsB,GAAG,GAAM,EAAE;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;QAE/D,cAAc;QACd,MAAM,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC;QAEjD,oBAAoB;QACpB,MAAM,mBAAmB,GAAG,EAAS,CAAC;QAEtC,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE;YAC9C,kBAAkB;YAClB,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnD,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,OAAa,EAAE,EAAE;gBACrD,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC,CAAC;SACH;QAED,8BAA8B;QAE9B,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,sBAAsB,EAAE,CAAC;AAClC,CAAC,CAAC;AAEF,0DAA0D;AAC1D,0DAA0D;AAE1D,8EAA8E;AAC9E,6BAA6B;AAC7B,wEAAwE;AACxE,KAAK;AAEL,6BAA6B;AAC7B,iEAAiE;AACjE,4BAA4B;AAC5B,gCAAgC;AAChC,KAAK;AAEL,qFAAqF;AACrF,6EAA6E;AAE7E,0FAA0F;AAC1F,4EAA4E;AAE5E,kBAAe,aAAa,CAAC"} \ No newline at end of file diff --git a/dist/hooks/useSignal.js b/dist/hooks/useSignal.js index d40f896..0584d23 100644 --- a/dist/hooks/useSignal.js +++ b/dist/hooks/useSignal.js @@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); -const contexts_1 = __importDefault(require("../contexts")); +const index_js_1 = __importDefault(require("../contexts/index.js")); const useSignal = (signalName) => { - const { signals } = (0, react_1.useContext)(contexts_1.default); + const { signals } = (0, react_1.useContext)(index_js_1.default); const memoizedSignals = (0, react_1.useMemo)(() => signals, [signals]); /** * Get state of a signal base on its name diff --git a/dist/hooks/useSignal.js.map b/dist/hooks/useSignal.js.map index cbcf249..82b4d16 100644 --- a/dist/hooks/useSignal.js.map +++ b/dist/hooks/useSignal.js.map @@ -1 +1 @@ -{"version":3,"file":"useSignal.js","sourceRoot":"","sources":["../../src/hooks/useSignal.ts"],"names":[],"mappings":";;;;;AAAA,iCAA4C;AAC5C,2DAAoC;AAEpC,MAAM,SAAS,GAAG,CAAU,UAAkB,EAAE,EAAE;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAK,EAAE;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAE1E,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,KAAK,CAAC;SACrB;QAED,kCAAkC;QAClC,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"useSignal.js","sourceRoot":"","sources":["../../src/hooks/useSignal.ts"],"names":[],"mappings":";;;;;AAAA,iCAA4C;AAC5C,oEAA6C;AAE7C,MAAM,SAAS,GAAG,CAAU,UAAkB,EAAE,EAAE;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAU,EAAC,kBAAS,CAAC,CAAC;IAC1C,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAK,EAAE;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAE1E,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,KAAK,CAAC;SACrB;QAED,kCAAkC;QAClC,MAAM,IAAI,KAAK,CAAC,UAAU,UAAU,YAAY,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC1C,CAAC,CAAC;AAEF,kBAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index b115086..5adcfbc 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,8 +1,9 @@ -import createSignal from "./helpers/createSignal"; -import createStore from "./helpers/createStore"; -import GXProvider from "./providers"; -import useAction from "./hooks/useAction"; -import useActions from "./hooks/useActions"; -import useSignal from "./hooks/useSignal"; +import createSignal from "./helpers/createSignal.js"; +import createStore from "./helpers/createStore.js"; +import GXProvider from "./providers/index.js"; +import useAction from "./hooks/useAction.js"; +import useActions from "./hooks/useActions.js"; +import useSignal from "./hooks/useSignal.js"; +import useOperations from "./hooks/useOperations.js"; export default GXProvider; -export { createSignal, createStore, useAction, useActions, useSignal }; +export { createSignal, createStore, useAction, useActions, useSignal, useOperations, }; diff --git a/dist/index.js b/dist/index.js index 3e99ec8..8f1e20d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3,17 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.useSignal = exports.useActions = exports.useAction = exports.createStore = exports.createSignal = void 0; -const createSignal_1 = __importDefault(require("./helpers/createSignal")); -exports.createSignal = createSignal_1.default; -const createStore_1 = __importDefault(require("./helpers/createStore")); -exports.createStore = createStore_1.default; -const providers_1 = __importDefault(require("./providers")); -const useAction_1 = __importDefault(require("./hooks/useAction")); -exports.useAction = useAction_1.default; -const useActions_1 = __importDefault(require("./hooks/useActions")); -exports.useActions = useActions_1.default; -const useSignal_1 = __importDefault(require("./hooks/useSignal")); -exports.useSignal = useSignal_1.default; -exports.default = providers_1.default; +exports.useOperations = exports.useSignal = exports.useActions = exports.useAction = exports.createStore = exports.createSignal = void 0; +const createSignal_js_1 = __importDefault(require("./helpers/createSignal.js")); +exports.createSignal = createSignal_js_1.default; +const createStore_js_1 = __importDefault(require("./helpers/createStore.js")); +exports.createStore = createStore_js_1.default; +const index_js_1 = __importDefault(require("./providers/index.js")); +const useAction_js_1 = __importDefault(require("./hooks/useAction.js")); +exports.useAction = useAction_js_1.default; +const useActions_js_1 = __importDefault(require("./hooks/useActions.js")); +exports.useActions = useActions_js_1.default; +const useSignal_js_1 = __importDefault(require("./hooks/useSignal.js")); +exports.useSignal = useSignal_js_1.default; +const useOperations_js_1 = __importDefault(require("./hooks/useOperations.js")); +exports.useOperations = useOperations_js_1.default; +exports.default = index_js_1.default; +// "build": "tsc && npx babel dist --out-dir cjs --extensions '.js' --source-maps inline --copy-files", //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 80d41cd..15c3f2f 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,0EAAkD;AAUzC,uBAVF,sBAAY,CAUE;AATrB,wEAAgD;AASzB,sBAThB,qBAAW,CASgB;AARlC,4DAAqC;AAErC,kEAA0C;AAMN,oBAN7B,mBAAS,CAM6B;AAL7C,oEAA4C;AAKG,qBALxC,oBAAU,CAKwC;AAJzD,kEAA0C;AAIiB,oBAJpD,mBAAS,CAIoD;AAFpE,kBAAe,mBAAU,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,gFAAqD;AAYnD,uBAZK,yBAAY,CAYL;AAXd,8EAAmD;AAYjD,sBAZK,wBAAW,CAYL;AAXb,oEAA8C;AAE9C,wEAA6C;AAU3C,oBAVK,sBAAS,CAUL;AATX,0EAA+C;AAU7C,qBAVK,uBAAU,CAUL;AATZ,wEAA6C;AAU3C,oBAVK,sBAAS,CAUL;AATX,gFAAqD;AAUnD,wBAVK,0BAAa,CAUL;AARf,kBAAe,kBAAU,CAAC;AAW1B,uGAAuG"} \ No newline at end of file diff --git a/dist/providers/index.d.ts b/dist/providers/index.d.ts index 6a3aabf..18daece 100644 --- a/dist/providers/index.d.ts +++ b/dist/providers/index.d.ts @@ -1,3 +1,3 @@ /// -import { GXProviderProps } from "./types"; +import { GXProviderProps } from "./types.js"; export default function GXProvider({ children, store }: GXProviderProps): JSX.Element; diff --git a/dist/providers/index.js b/dist/providers/index.js index c3dc3d1..a6be43f 100644 --- a/dist/providers/index.js +++ b/dist/providers/index.js @@ -5,17 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); -const contexts_1 = __importDefault(require("../contexts")); -const reducer_1 = __importDefault(require("./reducer")); +const index_js_1 = __importDefault(require("../contexts/index.js")); +const reducer_js_1 = __importDefault(require("./reducer.js")); function GXProvider({ children, store }) { // Global state that manage all signals - const [signals, dispatch] = (0, react_1.useReducer)(reducer_1.default, store.getSignals()); + const [signals, dispatch] = (0, react_1.useReducer)(reducer_js_1.default, store.getSignals()); // Context value const contextValue = { signals, dispatch, }; - return ((0, jsx_runtime_1.jsx)(contexts_1.default.Provider, Object.assign({ value: contextValue }, { children: children }))); + return ((0, jsx_runtime_1.jsx)(index_js_1.default.Provider, Object.assign({ value: contextValue }, { children: children }))); } exports.default = GXProvider; ; diff --git a/dist/providers/index.js.map b/dist/providers/index.js.map index fbe3203..a5d901b 100644 --- a/dist/providers/index.js.map +++ b/dist/providers/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAmC;AACnC,2DAAoC;AAEpC,wDAAkC;AAElC,SAAwB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAmB;IACrE,uCAAuC;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAA,kBAAU,EAAC,iBAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtE,gBAAgB;IAChB,MAAM,YAAY,GAAG;QACnB,OAAO;QACP,QAAQ;KACT,CAAC;IAEF,OAAO,CACL,uBAAC,kBAAS,CAAC,QAAQ,kBAAC,KAAK,EAAE,YAAY,gBAAG,QAAQ,IAAsB,CACzE,CAAC;AACJ,CAAC;AAbD,6BAaC;AAAA,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAmC;AACnC,oEAA6C;AAE7C,8DAAqC;AAErC,SAAwB,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAmB;IACrE,uCAAuC;IACvC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAA,kBAAU,EAAC,oBAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAEtE,gBAAgB;IAChB,MAAM,YAAY,GAAG;QACnB,OAAO;QACP,QAAQ;KACT,CAAC;IAEF,OAAO,CACL,uBAAC,kBAAS,CAAC,QAAQ,kBAAC,KAAK,EAAE,YAAY,gBAAG,QAAQ,IAAsB,CACzE,CAAC;AACJ,CAAC;AAbD,6BAaC;AAAA,CAAC"} \ No newline at end of file diff --git a/dist/providers/reducer.d.ts b/dist/providers/reducer.d.ts index 6999312..cc8ee35 100644 --- a/dist/providers/reducer.d.ts +++ b/dist/providers/reducer.d.ts @@ -1,4 +1,4 @@ -import { GXSignalType } from "../contexts/types"; -import { GXAction } from "./types"; +import { GXSignalType } from "../contexts/types.js"; +import { GXAction } from "./types.js"; declare const gxReducer: (signals: GXSignalType[], action: GXAction) => GXSignalType[]; export default gxReducer; diff --git a/dist/providers/types.d.ts b/dist/providers/types.d.ts index 0212864..dd63d14 100644 --- a/dist/providers/types.d.ts +++ b/dist/providers/types.d.ts @@ -1,5 +1,5 @@ /// -import { CreateStoreType } from '../helpers/types'; +import { CreateStoreType } from '../helpers/types.js'; export type GXProviderProps = { children: React.ReactElement; store: CreateStoreType; diff --git a/package.json b/package.json index b4bd21d..26dc140 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { "name": "@dilane3/gx", - "version": "1.2.6", + "version": "1.3.0", "private": false, "license": "MIT", - "main": "cjs/index.js", + "main": "dist/index.js", "type": "commonjs", "author": { "name": "dilane3", @@ -36,7 +36,7 @@ "react": "^18.0.0" }, "scripts": { - "build": "tsc && npx babel dist --out-dir cjs --extensions '.js' --source-maps inline --copy-files", + "build": "tsc", "test": "react-scripts test", "deploy": "npm publish --access public" }, diff --git a/src/contexts/index.ts b/src/contexts/index.ts index 6c19f6b..e3299c4 100644 --- a/src/contexts/index.ts +++ b/src/contexts/index.ts @@ -1,9 +1,9 @@ import { createContext } from "react"; -import { GXContextType } from "./types"; +import { GXContextType } from "./types.js"; const GXContext = createContext({ signals: [], - dispatch: () => {} + dispatch: () => {}, }); -export default GXContext \ No newline at end of file +export default GXContext; diff --git a/src/contexts/types.ts b/src/contexts/types.ts index ce38bee..e4dccbb 100644 --- a/src/contexts/types.ts +++ b/src/contexts/types.ts @@ -1,4 +1,4 @@ -import { GXAction } from "../providers/types"; +import { GXAction } from "../providers/types.js"; export type GXSignalType = { // Name of the signal diff --git a/src/helpers/createSignal.ts b/src/helpers/createSignal.ts index 94362ca..74faa4d 100644 --- a/src/helpers/createSignal.ts +++ b/src/helpers/createSignal.ts @@ -1,23 +1,23 @@ -import { CreateSignalOptionType } from './types'; -import { GXActionType, GXOperationType } from '../contexts/types'; +import { CreateSignalOptionType } from "./types.js"; +import { GXActionType, GXOperationType } from "../contexts/types.js"; /** * Create a signal with a state and actions for managing this state - * @param options - * @returns + * @param options + * @returns */ const createSignal = (options: CreateSignalOptionType) => { const actions: GXActionType[] = []; const operations: GXOperationType[] = []; // Convert the actions object to an array - const actionsTable = Object.entries(options.actions) + const actionsTable = Object.entries(options.actions); for (let action of actionsTable) { actions.push({ type: `${options.name}/${action[0]}`, - handler: action[1] - }) + handler: action[1], + }); } // Convert the operations object to an array @@ -26,8 +26,8 @@ const createSignal = (options: CreateSignalOptionType) => { for (let operation of operationsTable) { operations.push({ type: `${options.name}/${operation[0]}`, - handler: operation[1] - }) + handler: operation[1], + }); } // Create a signal @@ -35,10 +35,10 @@ const createSignal = (options: CreateSignalOptionType) => { name: options.name, state: options.state, actions, - operations - } + operations, + }; return signal; -} +}; -export default createSignal; \ No newline at end of file +export default createSignal; diff --git a/src/helpers/createStore.ts b/src/helpers/createStore.ts index 6708d76..1978c8f 100644 --- a/src/helpers/createStore.ts +++ b/src/helpers/createStore.ts @@ -1,5 +1,5 @@ -import { GXSignalType } from "../contexts/types"; -import { CreateStoreType } from "./types"; +import { GXSignalType } from "../contexts/types.js"; +import { CreateStoreType } from "./types.js"; const createStore = (signals: GXSignalType[]): CreateStoreType => { return { diff --git a/src/helpers/types.ts b/src/helpers/types.ts index aa5a8cd..4475df0 100644 --- a/src/helpers/types.ts +++ b/src/helpers/types.ts @@ -1,4 +1,4 @@ -import { GXSignalType } from "../contexts/types"; +import { GXSignalType } from "../contexts/types.js"; export type CreateSignalOptionType = { name: string; diff --git a/src/hooks/useAction.ts b/src/hooks/useAction.ts index 6200459..d4545ef 100644 --- a/src/hooks/useAction.ts +++ b/src/hooks/useAction.ts @@ -1,13 +1,14 @@ -import useActions from "./useActions"; +import { Actions } from "./types.js"; +import useActions from "./useActions.js"; -const useAction = (signalName: string, action: string) => { +const useAction = (signalName: string, action: string) => { if (!signalName || typeof signalName !== "string") throw new Error("Provide a signalName as a first argument of useAction"); if (!action || typeof action !== "string") throw new Error("Provide an action as second argument of useAction"); - const actions = useActions(signalName, action); + const actions = useActions(signalName, action); return Object.values(actions)[0]; }; diff --git a/src/hooks/useActions.ts b/src/hooks/useActions.ts index 45b8438..1498c88 100644 --- a/src/hooks/useActions.ts +++ b/src/hooks/useActions.ts @@ -1,9 +1,9 @@ import { useContext } from "react"; -import GXContext from "../contexts"; -import { GXActionType } from "../contexts/types"; -import { Actions } from "./types"; +import GXContext from "../contexts/index.js"; +import { GXActionType } from "../contexts/types.js"; +import { Actions } from "./types.js"; -const useActions = (signalName: string, ...actions: string[]) => { +const useActions = (signalName: string, ...actions: string[]) => { if (!signalName || typeof signalName !== "string") throw new Error("Provide a signalName as first argument of useActions"); @@ -40,12 +40,12 @@ const useActions = (signalName: string, ...actions: string[]) => { } else throw new Error(`Signal ${signalName} not found`); }; - const handleFormatActions = () => { + const handleFormatActions = (): T => { // Get actions const nonFormattedActions = handleGetActions(signalName); // Formatted actions - const formattedActions: Actions = {}; + const formattedActions = {} as any; for (const action of nonFormattedActions) { // Get action name diff --git a/src/hooks/useOperations.ts b/src/hooks/useOperations.ts index 528b356..d1729d7 100644 --- a/src/hooks/useOperations.ts +++ b/src/hooks/useOperations.ts @@ -1,15 +1,17 @@ import { useContext } from "react"; -import GXContext from "../contexts"; -import { Operations } from "./types"; +import GXContext from "../contexts/index.js"; +import { Operations } from "./types.js"; -const useOperations = (signalName: string) => { +const useOperations = (signalName: string) => { // Get Global Context const { signals } = useContext(GXContext); if (!signalName || typeof signalName !== "string") - throw new Error("Provide a signalName as a first argument of useOperations"); + throw new Error( + "Provide a signalName as a first argument of useOperations" + ); - const handleFormatOperations = () => { + const handleFormatOperations = (): T => { const signal = signals.find((signal) => signal.name === signalName); if (!signal) throw new Error(`Signal ${signalName} not found`); @@ -18,21 +20,43 @@ const useOperations = (signalName: string) => { const nonFormattedOperations = signal.operations; // Formatted actions - const formattedOperations: Operations = {}; + const formattedOperations = {} as any; for (const operation of nonFormattedOperations) { // Get action name const operationName = operation.type.split("/")[1]; - formattedOperations[operationName] = (payload: any) => { + formattedOperations[operationName] = (payload?: any) => { return operation.handler(signal.state, payload); }; } + // return formattedOperations; + return formattedOperations; }; return handleFormatOperations(); }; +// Définir un type générique pour représenter une fonction +// type FunctionType any> = T; + +// Définir un type générique pour représenter un objet contenant des fonctions +// type FunctionObject = { +// [K in keyof T]: T[K] extends Function ? FunctionType : never; +// }; + +// type FunctionObject = { +// [K in keyof T]: T[K] extends (payload: infer Arg) => infer R +// ? (payload: Arg) => R +// : (payload?: any) => any; +// }; + +// // Utilisation d'une fonction auxiliaire pour extraire le type du second paramètre +// type SecondParamType = T extends (a: any, b: infer P) => any ? P : any; + +// // Utilisation d'une fonction auxiliaire pour extraire le type de retour d'une fonction +// type ReturnTypeFunc = T extends (...args: any[]) => infer R ? R : any; + export default useOperations; diff --git a/src/hooks/useSignal.ts b/src/hooks/useSignal.ts index 72d72f9..1190652 100644 --- a/src/hooks/useSignal.ts +++ b/src/hooks/useSignal.ts @@ -1,5 +1,5 @@ import { useContext, useMemo } from "react"; -import GXContext from "../contexts"; +import GXContext from "../contexts/index.js"; const useSignal = (signalName: string) => { const { signals } = useContext(GXContext); diff --git a/src/index.ts b/src/index.ts index 721e7f8..e0ce541 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,21 @@ -import createSignal from "./helpers/createSignal"; -import createStore from "./helpers/createStore"; -import GXProvider from "./providers"; +import createSignal from "./helpers/createSignal.js"; +import createStore from "./helpers/createStore.js"; +import GXProvider from "./providers/index.js"; -import useAction from "./hooks/useAction"; -import useActions from "./hooks/useActions"; -import useSignal from "./hooks/useSignal"; +import useAction from "./hooks/useAction.js"; +import useActions from "./hooks/useActions.js"; +import useSignal from "./hooks/useSignal.js"; +import useOperations from "./hooks/useOperations.js"; export default GXProvider; -export { createSignal, createStore, useAction, useActions, useSignal }; +export { + createSignal, + createStore, + useAction, + useActions, + useSignal, + useOperations, +}; + +// "build": "tsc && npx babel dist --out-dir cjs --extensions '.js' --source-maps inline --copy-files", diff --git a/src/providers/index.tsx b/src/providers/index.tsx index 56a58af..c679c6b 100644 --- a/src/providers/index.tsx +++ b/src/providers/index.tsx @@ -1,7 +1,7 @@ import { useReducer } from "react"; -import GXContext from "../contexts"; -import { GXProviderProps } from "./types"; -import gxReducer from "./reducer"; +import GXContext from "../contexts/index.js"; +import { GXProviderProps } from "./types.js"; +import gxReducer from "./reducer.js"; export default function GXProvider({ children, store }: GXProviderProps) { // Global state that manage all signals diff --git a/src/providers/reducer.ts b/src/providers/reducer.ts index 5b4cdb9..b694dac 100644 --- a/src/providers/reducer.ts +++ b/src/providers/reducer.ts @@ -1,5 +1,5 @@ -import { GXSignalType } from "../contexts/types"; -import { GXAction } from "./types"; +import { GXSignalType } from "../contexts/types.js"; +import { GXAction } from "./types.js"; const gxReducer = (signals: GXSignalType[], action: GXAction) => { // Prev signals diff --git a/src/providers/types.ts b/src/providers/types.ts index 5a394b8..8830fac 100644 --- a/src/providers/types.ts +++ b/src/providers/types.ts @@ -1,4 +1,4 @@ -import { CreateStoreType } from '../helpers/types'; +import { CreateStoreType } from '../helpers/types.js'; export type GXProviderProps = { children: React.ReactElement,