react-better-model 0.2.2 → 1.0.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/AGENTS.md +43 -0
  2. package/LICENSE +21 -4
  3. package/lib/ModelBase.d.ts +15 -0
  4. package/lib/ModelBase.d.ts.map +1 -0
  5. package/lib/ModelBase.js +91 -0
  6. package/lib/ModelBase.js.map +1 -0
  7. package/lib/ModelWithHooks.d.ts +9 -0
  8. package/lib/ModelWithHooks.d.ts.map +1 -0
  9. package/lib/ModelWithHooks.js +108 -0
  10. package/lib/ModelWithHooks.js.map +1 -0
  11. package/lib/common-types.d.ts +9 -0
  12. package/lib/common-types.d.ts.map +1 -0
  13. package/lib/{types.js → common-types.js} +1 -1
  14. package/lib/common-types.js.map +1 -0
  15. package/lib/create-model.d.ts +18 -0
  16. package/lib/create-model.d.ts.map +1 -0
  17. package/lib/create-model.js +78 -0
  18. package/lib/create-model.js.map +1 -0
  19. package/lib/create-model.test.d.ts +2 -0
  20. package/lib/create-model.test.d.ts.map +1 -0
  21. package/lib/create-model.test.js +80 -0
  22. package/lib/create-model.test.js.map +1 -0
  23. package/lib/index.d.ts +4 -8
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +22 -9
  26. package/lib/index.js.map +1 -1
  27. package/lib/src/ModelBase.d.ts +16 -0
  28. package/lib/src/ModelBase.d.ts.map +1 -0
  29. package/lib/src/ModelBase.js +97 -0
  30. package/lib/src/ModelBase.js.map +1 -0
  31. package/lib/src/ModelWithHooks.d.ts +8 -0
  32. package/lib/src/ModelWithHooks.d.ts.map +1 -0
  33. package/lib/src/ModelWithHooks.js +57 -0
  34. package/lib/src/ModelWithHooks.js.map +1 -0
  35. package/lib/src/common-types.d.ts +9 -0
  36. package/lib/src/common-types.d.ts.map +1 -0
  37. package/lib/src/common-types.js +3 -0
  38. package/lib/src/common-types.js.map +1 -0
  39. package/lib/src/create-model.d.ts +18 -0
  40. package/lib/src/create-model.d.ts.map +1 -0
  41. package/lib/src/create-model.js +78 -0
  42. package/lib/src/create-model.js.map +1 -0
  43. package/lib/src/index.d.ts +5 -0
  44. package/lib/src/index.d.ts.map +1 -0
  45. package/lib/src/index.js +34 -0
  46. package/lib/src/index.js.map +1 -0
  47. package/lib/src/utils.d.ts +4 -0
  48. package/lib/src/utils.d.ts.map +1 -0
  49. package/lib/src/utils.js +36 -0
  50. package/lib/src/utils.js.map +1 -0
  51. package/lib/tests/ModelBase.test.d.ts +2 -0
  52. package/lib/tests/ModelBase.test.d.ts.map +1 -0
  53. package/lib/tests/ModelBase.test.js +73 -0
  54. package/lib/tests/ModelBase.test.js.map +1 -0
  55. package/lib/tests/ModelWithHooks.test.d.ts +2 -0
  56. package/lib/tests/ModelWithHooks.test.d.ts.map +1 -0
  57. package/lib/tests/ModelWithHooks.test.js +108 -0
  58. package/lib/tests/ModelWithHooks.test.js.map +1 -0
  59. package/lib/tests/create-model.test.d.ts +2 -0
  60. package/lib/tests/create-model.test.d.ts.map +1 -0
  61. package/lib/tests/create-model.test.js +104 -0
  62. package/lib/tests/create-model.test.js.map +1 -0
  63. package/lib/tests/utils.test.d.ts +2 -0
  64. package/lib/tests/utils.test.d.ts.map +1 -0
  65. package/lib/tests/utils.test.js +30 -0
  66. package/lib/tests/utils.test.js.map +1 -0
  67. package/package.json +13 -11
  68. package/readme.md +212 -105
  69. package/lib/Model.d.ts +0 -23
  70. package/lib/Model.d.ts.map +0 -1
  71. package/lib/Model.js +0 -108
  72. package/lib/Model.js.map +0 -1
  73. package/lib/hooks/event-hooks.d.ts +0 -6
  74. package/lib/hooks/event-hooks.d.ts.map +0 -1
  75. package/lib/hooks/event-hooks.js +0 -19
  76. package/lib/hooks/event-hooks.js.map +0 -1
  77. package/lib/hooks/model-hooks.d.ts +0 -4
  78. package/lib/hooks/model-hooks.d.ts.map +0 -1
  79. package/lib/hooks/model-hooks.js +0 -9
  80. package/lib/hooks/model-hooks.js.map +0 -1
  81. package/lib/hooks/state-hooks.d.ts +0 -5
  82. package/lib/hooks/state-hooks.d.ts.map +0 -1
  83. package/lib/hooks/state-hooks.js +0 -19
  84. package/lib/hooks/state-hooks.js.map +0 -1
  85. package/lib/types.d.ts +0 -13
  86. package/lib/types.d.ts.map +0 -1
  87. package/lib/types.js.map +0 -1
  88. package/lib/utils/compose-providers.d.ts +0 -3
  89. package/lib/utils/compose-providers.d.ts.map +0 -1
  90. package/lib/utils/compose-providers.js +0 -19
  91. package/lib/utils/compose-providers.js.map +0 -1
  92. package/lib/utils/create-model.d.ts +0 -21
  93. package/lib/utils/create-model.d.ts.map +0 -1
  94. package/lib/utils/create-model.js +0 -84
  95. package/lib/utils/create-model.js.map +0 -1
  96. package/lib/utils/js-event-types.d.ts +0 -6
  97. package/lib/utils/js-event-types.d.ts.map +0 -1
  98. package/lib/utils/js-event-types.js +0 -9
  99. package/lib/utils/js-event-types.js.map +0 -1
@@ -1,21 +0,0 @@
1
- import React, { FC } from 'react';
2
- import { Model } from '../Model';
3
- import { ModelProviderProps } from '../types';
4
- declare type Ctor<M extends Model<M['state'], M['events']>> = new (initialState: M['state'], events?: M['events']) => M;
5
- export declare function createModel<K extends keyof M['state'], E extends keyof M['events'], M extends Model<M['state'], M['events']>>(CName: Ctor<M>): {
6
- Ctx: React.Context<M>;
7
- Provider: ({ value, initialState, ...props }: ModelProviderProps<M>) => JSX.Element;
8
- withProvider<T extends {}>(fc: React.FC<T & {
9
- model: M;
10
- }>): (props: T & {
11
- initialState?: Partial<M["state"]> | undefined;
12
- }) => JSX.Element;
13
- withModel<T_1 extends {}>(fc: React.FC<T_1 & {
14
- model: M;
15
- }>): (props: T_1) => React.ReactElement<any, any> | null;
16
- useModel(): M;
17
- useState(key: K): [M["state"][K], (data: M["state"][K]) => void];
18
- useEvent(key: E): (data?: (M["events"][E] extends undefined ? never : M["events"][E]) | undefined) => void;
19
- };
20
- export {};
21
- //# sourceMappingURL=create-model.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../src/utils/create-model.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAiB,EAAE,EAAW,MAAM,OAAO,CAAA;AAEzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAIhC,OAAO,EAAsB,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAIjE,aAAK,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAE/G,wBAAgB,WAAW,CAC1B,CAAC,SAAS,MAAM,CAAC,CAAC,OAAO,CAAC,EAC1B,CAAC,SAAS,MAAM,CAAC,CAAC,QAAQ,CAAC,EAC3B,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EACvC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;;kDAGsC,mBAAmB,CAAC,CAAC;;eAS1B,CAAC;;;;;eASJ,CAAC;;;kBAU/B,CAAC;kBAGD,CAAC;EAIhB"}
@@ -1,84 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || function (mod) {
26
- if (mod && mod.__esModule) return mod;
27
- var result = {};
28
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
- __setModuleDefault(result, mod);
30
- return result;
31
- };
32
- var __rest = (this && this.__rest) || function (s, e) {
33
- var t = {};
34
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
35
- t[p] = s[p];
36
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
37
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
38
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
39
- t[p[i]] = s[p[i]];
40
- }
41
- return t;
42
- };
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.createModel = void 0;
45
- var react_1 = __importStar(require("react"));
46
- var event_hooks_1 = require("../hooks/event-hooks");
47
- var model_hooks_1 = require("../hooks/model-hooks");
48
- var state_hooks_1 = require("../hooks/state-hooks");
49
- var DEFAULT_OPTIONS = {};
50
- function createModel(CName) {
51
- var Ctx = (0, react_1.createContext)({});
52
- function Provider(_a) {
53
- var value = _a.value, initialState = _a.initialState, props = __rest(_a, ["value", "initialState"]);
54
- var viewModel = (0, react_1.useMemo)(function () { return value || new CName(initialState); }, []);
55
- return react_1.default.createElement(Ctx.Provider, __assign({}, props, { value: viewModel }));
56
- }
57
- return {
58
- Ctx: Ctx,
59
- Provider: Provider,
60
- withProvider: function (fc) {
61
- return function (props) {
62
- var model = (0, react_1.useMemo)(function () { return new CName(props.initialState); }, []);
63
- return react_1.default.createElement(Provider, { value: model }, fc(__assign(__assign({}, props), { model: model })));
64
- };
65
- },
66
- withModel: function (fc) {
67
- return function (props) {
68
- var model = (0, model_hooks_1.useModelCtx)(Ctx);
69
- return fc(__assign(__assign({}, props), { model: model }));
70
- };
71
- },
72
- useModel: function () {
73
- return (0, model_hooks_1.useModelCtx)(Ctx);
74
- },
75
- useState: function (key) {
76
- return (0, state_hooks_1.useModelCtxState)(Ctx, key);
77
- },
78
- useEvent: function (key) {
79
- return (0, event_hooks_1.useModelCtxEvent)(Ctx, key);
80
- },
81
- };
82
- }
83
- exports.createModel = createModel;
84
- //# sourceMappingURL=create-model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../src/utils/create-model.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAyD;AAGzD,oDAA8E;AAC9E,oDAAkD;AAClD,oDAA8E;AAG9E,IAAM,eAAe,GAAuB,EAAE,CAAA;AAI9C,SAAgB,WAAW,CAIzB,KAAc;IACf,IAAM,GAAG,GAAG,IAAA,qBAAa,EAAI,EAAO,CAAC,CAAA;IAErC,SAAS,QAAQ,CAAC,EAAwD;QAAtD,IAAA,KAAK,WAAA,EAAE,YAAY,kBAAA,EAAK,KAAK,cAA/B,yBAAiC,CAAF;QAChD,IAAM,SAAS,GAAG,IAAA,eAAO,EAAC,cAAM,OAAA,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,EAAhC,CAAgC,EAAE,EAAE,CAAC,CAAA;QAErE,OAAO,8BAAC,GAAG,CAAC,QAAQ,eAAK,KAAK,IAAE,KAAK,EAAE,SAAS,IAAI,CAAA;IACrD,CAAC;IAED,OAAO;QACN,GAAG,KAAA;QACH,QAAQ,UAAA;QACR,YAAY,EAAZ,UAA2B,EAAwB;YAClD,OAAO,UAAC,KAAiD;gBACxD,IAAM,KAAK,GAAG,IAAA,eAAO,EAAC,cAAM,OAAA,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,EAA7B,CAA6B,EAAE,EAAE,CAAC,CAAA;gBAE9D,OAAO,8BAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAC3B,EAAE,uBAAK,KAAK,KAAE,KAAK,OAAA,IAAE,CACZ,CAAA;YACZ,CAAC,CAAA;QACF,CAAC;QACD,SAAS,EAAT,UAAwB,EAAwB;YAC/C,OAAO,UAAC,KAAQ;gBACf,IAAM,KAAK,GAAG,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAA;gBAE9B,OAAO,EAAE,uBAAK,KAAK,KAAE,KAAK,OAAA,IAAG,CAAA;YAC9B,CAAC,CAAA;QACF,CAAC;QACD,QAAQ;YACP,OAAO,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,QAAQ,EAAR,UAAS,GAAM;YACd,OAAO,IAAA,8BAAgB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAClC,CAAC;QACD,QAAQ,EAAR,UAAS,GAAM;YACd,OAAO,IAAA,8BAAgB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAClC,CAAC;KACD,CAAA;AACF,CAAC;AA1CD,kCA0CC"}
@@ -1,6 +0,0 @@
1
- export declare const EventTypes: {
2
- number: number;
3
- string: string;
4
- boolean: boolean;
5
- };
6
- //# sourceMappingURL=js-event-types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"js-event-types.d.ts","sourceRoot":"","sources":["../../src/utils/js-event-types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;CAItB,CAAA"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EventTypes = void 0;
4
- exports.EventTypes = {
5
- number: 0,
6
- string: '',
7
- boolean: false,
8
- };
9
- //# sourceMappingURL=js-event-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"js-event-types.js","sourceRoot":"","sources":["../../src/utils/js-event-types.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACzB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,KAAK;CACd,CAAA"}