@ptolemy2002/react-proxy-context 1.0.3 → 1.0.5
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.
- package/README.md +0 -6
- package/index.js +324 -10
- package/package.json +10 -10
package/README.md
CHANGED
|
@@ -60,12 +60,6 @@ These should be installed in order to use the library, as npm does not automatic
|
|
|
60
60
|
- @types/react-dom: ^18.3.0
|
|
61
61
|
- react: ^18.3.1
|
|
62
62
|
- react-dom: ^18.3.1
|
|
63
|
-
- @types/is-callable: ^1.1.2
|
|
64
|
-
- is-callable: ^1.2.7
|
|
65
|
-
- nanoid: ^5.0.7
|
|
66
|
-
- @ptolemy2002/react-mount-effects: ^1.1.4
|
|
67
|
-
- @ptolemy2002/react-force-rerender: ^1.0.4
|
|
68
|
-
- @ptolemy2002/js-utils: ^1.0.3
|
|
69
63
|
|
|
70
64
|
## Commands
|
|
71
65
|
The following commands exist in the project:
|
package/index.js
CHANGED
|
@@ -4,6 +4,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __commonJS = (cb, mod) => function __require() {
|
|
8
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
9
|
+
};
|
|
7
10
|
var __export = (target, all) => {
|
|
8
11
|
for (var name in all)
|
|
9
12
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -26,6 +29,297 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
29
|
));
|
|
27
30
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
31
|
|
|
32
|
+
// node_modules/is-callable/index.js
|
|
33
|
+
var require_is_callable = __commonJS({
|
|
34
|
+
"node_modules/is-callable/index.js"(exports, module2) {
|
|
35
|
+
"use strict";
|
|
36
|
+
var fnToStr = Function.prototype.toString;
|
|
37
|
+
var reflectApply = typeof Reflect === "object" && Reflect !== null && Reflect.apply;
|
|
38
|
+
var badArrayLike;
|
|
39
|
+
var isCallableMarker;
|
|
40
|
+
if (typeof reflectApply === "function" && typeof Object.defineProperty === "function") {
|
|
41
|
+
try {
|
|
42
|
+
badArrayLike = Object.defineProperty({}, "length", {
|
|
43
|
+
get: function() {
|
|
44
|
+
throw isCallableMarker;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
isCallableMarker = {};
|
|
48
|
+
reflectApply(function() {
|
|
49
|
+
throw 42;
|
|
50
|
+
}, null, badArrayLike);
|
|
51
|
+
} catch (_) {
|
|
52
|
+
if (_ !== isCallableMarker) {
|
|
53
|
+
reflectApply = null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
reflectApply = null;
|
|
58
|
+
}
|
|
59
|
+
var constructorRegex = /^\s*class\b/;
|
|
60
|
+
var isES6ClassFn = function isES6ClassFunction(value) {
|
|
61
|
+
try {
|
|
62
|
+
var fnStr = fnToStr.call(value);
|
|
63
|
+
return constructorRegex.test(fnStr);
|
|
64
|
+
} catch (e) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var tryFunctionObject = function tryFunctionToStr(value) {
|
|
69
|
+
try {
|
|
70
|
+
if (isES6ClassFn(value)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
fnToStr.call(value);
|
|
74
|
+
return true;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
var toStr = Object.prototype.toString;
|
|
80
|
+
var objectClass = "[object Object]";
|
|
81
|
+
var fnClass = "[object Function]";
|
|
82
|
+
var genClass = "[object GeneratorFunction]";
|
|
83
|
+
var ddaClass = "[object HTMLAllCollection]";
|
|
84
|
+
var ddaClass2 = "[object HTML document.all class]";
|
|
85
|
+
var ddaClass3 = "[object HTMLCollection]";
|
|
86
|
+
var hasToStringTag = typeof Symbol === "function" && !!Symbol.toStringTag;
|
|
87
|
+
var isIE68 = !(0 in [,]);
|
|
88
|
+
var isDDA = function isDocumentDotAll() {
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
91
|
+
if (typeof document === "object") {
|
|
92
|
+
all = document.all;
|
|
93
|
+
if (toStr.call(all) === toStr.call(document.all)) {
|
|
94
|
+
isDDA = function isDocumentDotAll(value) {
|
|
95
|
+
if ((isIE68 || !value) && (typeof value === "undefined" || typeof value === "object")) {
|
|
96
|
+
try {
|
|
97
|
+
var str = toStr.call(value);
|
|
98
|
+
return (str === ddaClass || str === ddaClass2 || str === ddaClass3 || str === objectClass) && value("") == null;
|
|
99
|
+
} catch (e) {
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
var all;
|
|
107
|
+
module2.exports = reflectApply ? function isCallable2(value) {
|
|
108
|
+
if (isDDA(value)) {
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
if (!value) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
if (typeof value !== "function" && typeof value !== "object") {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
reflectApply(value, null, badArrayLike);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
if (e !== isCallableMarker) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return !isES6ClassFn(value) && tryFunctionObject(value);
|
|
125
|
+
} : function isCallable2(value) {
|
|
126
|
+
if (isDDA(value)) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
if (!value) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
if (typeof value !== "function" && typeof value !== "object") {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
if (hasToStringTag) {
|
|
136
|
+
return tryFunctionObject(value);
|
|
137
|
+
}
|
|
138
|
+
if (isES6ClassFn(value)) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
var strClass = toStr.call(value);
|
|
142
|
+
if (strClass !== fnClass && strClass !== genClass && !/^\[object HTML/.test(strClass)) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
return tryFunctionObject(value);
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
// node_modules/@ptolemy2002/react-force-rerender/index.js
|
|
151
|
+
var require_react_force_rerender = __commonJS({
|
|
152
|
+
"node_modules/@ptolemy2002/react-force-rerender/index.js"(exports, module2) {
|
|
153
|
+
var __defProp2 = Object.defineProperty;
|
|
154
|
+
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
155
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
156
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
157
|
+
var __export2 = (target, all) => {
|
|
158
|
+
for (var name in all)
|
|
159
|
+
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
160
|
+
};
|
|
161
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
162
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
163
|
+
for (let key of __getOwnPropNames2(from))
|
|
164
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
165
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
166
|
+
}
|
|
167
|
+
return to;
|
|
168
|
+
};
|
|
169
|
+
var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
|
|
170
|
+
var src_exports2 = {};
|
|
171
|
+
__export2(src_exports2, {
|
|
172
|
+
default: () => useForceRerender2
|
|
173
|
+
});
|
|
174
|
+
module2.exports = __toCommonJS2(src_exports2);
|
|
175
|
+
var import_react2 = require("react");
|
|
176
|
+
function useForceRerender2() {
|
|
177
|
+
const [, setTick] = (0, import_react2.useState)(0);
|
|
178
|
+
const update = (0, import_react2.useCallback)(() => {
|
|
179
|
+
setTimeout(() => {
|
|
180
|
+
setTick((tick) => tick + 1);
|
|
181
|
+
}, 0);
|
|
182
|
+
}, []);
|
|
183
|
+
return update;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
// node_modules/@ptolemy2002/react-mount-effects/index.js
|
|
189
|
+
var require_react_mount_effects = __commonJS({
|
|
190
|
+
"node_modules/@ptolemy2002/react-mount-effects/index.js"(exports, module2) {
|
|
191
|
+
var __defProp2 = Object.defineProperty;
|
|
192
|
+
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
193
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
194
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
195
|
+
var __export2 = (target, all) => {
|
|
196
|
+
for (var name in all)
|
|
197
|
+
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
198
|
+
};
|
|
199
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
200
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
201
|
+
for (let key of __getOwnPropNames2(from))
|
|
202
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
203
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
204
|
+
}
|
|
205
|
+
return to;
|
|
206
|
+
};
|
|
207
|
+
var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
|
|
208
|
+
var src_exports2 = {};
|
|
209
|
+
__export2(src_exports2, {
|
|
210
|
+
useMountEffect: () => useMountEffect2,
|
|
211
|
+
useUnmountEffect: () => useUnmountEffect2
|
|
212
|
+
});
|
|
213
|
+
module2.exports = __toCommonJS2(src_exports2);
|
|
214
|
+
var import_react2 = require("react");
|
|
215
|
+
function useMountEffect2(callback) {
|
|
216
|
+
(0, import_react2.useEffect)(() => {
|
|
217
|
+
callback();
|
|
218
|
+
}, []);
|
|
219
|
+
}
|
|
220
|
+
function useUnmountEffect2(callback) {
|
|
221
|
+
(0, import_react2.useEffect)(() => callback, []);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
// node_modules/@ptolemy2002/js-utils/index.js
|
|
227
|
+
var require_js_utils = __commonJS({
|
|
228
|
+
"node_modules/@ptolemy2002/js-utils/index.js"(exports, module2) {
|
|
229
|
+
var __defProp2 = Object.defineProperty;
|
|
230
|
+
var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
|
|
231
|
+
var __getOwnPropNames2 = Object.getOwnPropertyNames;
|
|
232
|
+
var __hasOwnProp2 = Object.prototype.hasOwnProperty;
|
|
233
|
+
var __export2 = (target, all) => {
|
|
234
|
+
for (var name in all)
|
|
235
|
+
__defProp2(target, name, { get: all[name], enumerable: true });
|
|
236
|
+
};
|
|
237
|
+
var __copyProps2 = (to, from, except, desc) => {
|
|
238
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
239
|
+
for (let key of __getOwnPropNames2(from))
|
|
240
|
+
if (!__hasOwnProp2.call(to, key) && key !== except)
|
|
241
|
+
__defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
|
|
242
|
+
}
|
|
243
|
+
return to;
|
|
244
|
+
};
|
|
245
|
+
var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
|
|
246
|
+
var src_exports2 = {};
|
|
247
|
+
__export2(src_exports2, {
|
|
248
|
+
Callable: () => Callable,
|
|
249
|
+
ext_hasNestedProperty: () => ext_hasNestedProperty,
|
|
250
|
+
isNullOrUndefined: () => isNullOrUndefined2,
|
|
251
|
+
listInPlainEnglish: () => listInPlainEnglish,
|
|
252
|
+
loadExtension: () => loadExtension,
|
|
253
|
+
unloadExtension: () => unloadExtension
|
|
254
|
+
});
|
|
255
|
+
module2.exports = __toCommonJS2(src_exports2);
|
|
256
|
+
function ext_hasNestedProperty(prop = "") {
|
|
257
|
+
if (typeof prop === "string") prop = prop.split(".");
|
|
258
|
+
if (!Array.isArray(prop)) return this.hasOwnProperty(prop);
|
|
259
|
+
let obj = this;
|
|
260
|
+
for (let i = 0; i < prop.length; i++) {
|
|
261
|
+
const p = prop[i];
|
|
262
|
+
if (!obj?.hasOwnProperty(p)) return false;
|
|
263
|
+
obj = obj[p];
|
|
264
|
+
}
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
function loadExtension(name, func, base = Object) {
|
|
268
|
+
if (base.prototype.hasOwnProperty(name)) return;
|
|
269
|
+
Object.defineProperty(base.prototype, name, {
|
|
270
|
+
value: func,
|
|
271
|
+
enumerable: false,
|
|
272
|
+
writable: true,
|
|
273
|
+
configurable: true
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
function unloadExtension(name, base = Object) {
|
|
277
|
+
delete base.prototype[name];
|
|
278
|
+
}
|
|
279
|
+
function listInPlainEnglish(list, { max = void 0, conjunction = "and" } = {}) {
|
|
280
|
+
if (max === void 0) max = list.length;
|
|
281
|
+
if (list.length === 0) {
|
|
282
|
+
return "";
|
|
283
|
+
}
|
|
284
|
+
if (list.length === 1) {
|
|
285
|
+
return list[0];
|
|
286
|
+
}
|
|
287
|
+
if (list.length === 2) {
|
|
288
|
+
return `${list[0]} ${conjunction} ${list[1]}`;
|
|
289
|
+
}
|
|
290
|
+
list = list.map((v, i) => {
|
|
291
|
+
if (i === list.length - 1) return v;
|
|
292
|
+
if (v.endsWith(`"`)) {
|
|
293
|
+
return v.slice(0, -1) + `," `;
|
|
294
|
+
} else if (v.endsWith(`'`)) {
|
|
295
|
+
return v.slice(0, -1) + `,' `;
|
|
296
|
+
} else {
|
|
297
|
+
return v + ", ";
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
if (list.length > max) {
|
|
301
|
+
return `${list.slice(0, max).join("")}${conjunction} ${list.length - max} more`;
|
|
302
|
+
} else {
|
|
303
|
+
return `${list.slice(0, -1).join("")}${conjunction} ${list[list.length - 1]}`;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
function isNullOrUndefined2(v) {
|
|
307
|
+
return v === null || v === void 0;
|
|
308
|
+
}
|
|
309
|
+
var Callable = class extends Function {
|
|
310
|
+
constructor() {
|
|
311
|
+
super("...args", "return this.__self__.__call__(...args)");
|
|
312
|
+
let self = this.bind(this);
|
|
313
|
+
this.__self__ = self;
|
|
314
|
+
return self;
|
|
315
|
+
}
|
|
316
|
+
// This should be overridden by the subclass
|
|
317
|
+
__call__() {
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
|
|
29
323
|
// src/index.js
|
|
30
324
|
var src_exports = {};
|
|
31
325
|
__export(src_exports, {
|
|
@@ -35,11 +329,25 @@ __export(src_exports, {
|
|
|
35
329
|
});
|
|
36
330
|
module.exports = __toCommonJS(src_exports);
|
|
37
331
|
var import_react = __toESM(require("react"));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
332
|
+
|
|
333
|
+
// node_modules/nanoid/url-alphabet/index.js
|
|
334
|
+
var urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
|
|
335
|
+
|
|
336
|
+
// node_modules/nanoid/index.browser.js
|
|
337
|
+
var nanoid = (size = 21) => {
|
|
338
|
+
let id = "";
|
|
339
|
+
let bytes = crypto.getRandomValues(new Uint8Array(size));
|
|
340
|
+
while (size--) {
|
|
341
|
+
id += urlAlphabet[bytes[size] & 63];
|
|
342
|
+
}
|
|
343
|
+
return id;
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
// src/index.js
|
|
347
|
+
var import_is_callable = __toESM(require_is_callable());
|
|
348
|
+
var import_react_force_rerender = __toESM(require_react_force_rerender());
|
|
349
|
+
var import_react_mount_effects = __toESM(require_react_mount_effects());
|
|
350
|
+
var import_js_utils = __toESM(require_js_utils());
|
|
43
351
|
function createProxyContext(defaultValue, name) {
|
|
44
352
|
if (typeof Proxy == "undefined") throw new Error("Proxy is not supported in this environment.");
|
|
45
353
|
const context = (0, import_react.createContext)(defaultValue);
|
|
@@ -51,8 +359,9 @@ function ProxyContextProvider({ contextClass, children, value, onChange, proxyRe
|
|
|
51
359
|
const objRef = (0, import_react.useRef)();
|
|
52
360
|
const contextRef = (0, import_react.useRef)({});
|
|
53
361
|
const subscribe = (0, import_react.useCallback)((callback, deps, listenReinit = true) => {
|
|
54
|
-
const id =
|
|
362
|
+
const id = nanoid();
|
|
55
363
|
changeSubscribers.current[id] = {
|
|
364
|
+
id,
|
|
56
365
|
deps,
|
|
57
366
|
callback,
|
|
58
367
|
listenReinit
|
|
@@ -68,7 +377,7 @@ function ProxyContextProvider({ contextClass, children, value, onChange, proxyRe
|
|
|
68
377
|
if (!(0, import_js_utils.isNullOrUndefined)(newObj)) {
|
|
69
378
|
objRef.current = new Proxy(newObj, {
|
|
70
379
|
get: function(target, prop) {
|
|
71
|
-
const result = Reflect.get(target, prop,
|
|
380
|
+
const result = Reflect.get(target, prop, newObj);
|
|
72
381
|
if ((0, import_is_callable.default)(result)) {
|
|
73
382
|
return result.bind(objRef.current);
|
|
74
383
|
} else {
|
|
@@ -77,20 +386,25 @@ function ProxyContextProvider({ contextClass, children, value, onChange, proxyRe
|
|
|
77
386
|
},
|
|
78
387
|
set: function(target, prop, value2) {
|
|
79
388
|
const prevValue = target[prop];
|
|
80
|
-
Reflect.set(target, prop, value2,
|
|
389
|
+
Reflect.set(target, prop, value2, newObj);
|
|
81
390
|
value2 = target[prop];
|
|
82
391
|
Object.values(changeSubscribers.current).forEach((subscriber) => {
|
|
83
|
-
if (!subscriber.deps || subscriber.deps.includes(prop) && prevValue !== value2 || subscriber.deps.some((subProp) => (0, import_is_callable.default)(subProp) && subProp(prop, value2, prevValue,
|
|
392
|
+
if (!subscriber.deps || subscriber.deps.includes(prop) && prevValue !== value2 || subscriber.deps.some((subProp) => (0, import_is_callable.default)(subProp) && subProp(prop, value2, prevValue, newObj))) {
|
|
84
393
|
subscriber.callback(prop, value2, prevValue);
|
|
85
394
|
}
|
|
86
395
|
});
|
|
87
396
|
if ((0, import_is_callable.default)(onChange)) onChange(prop, value2, prevValue);
|
|
397
|
+
Object.values(changeSubscribers.current).forEach((subscriber) => {
|
|
398
|
+
subscriber.callback(prop, value2, prevValue);
|
|
399
|
+
});
|
|
88
400
|
return true;
|
|
89
401
|
}
|
|
90
402
|
});
|
|
91
403
|
}
|
|
92
404
|
Object.values(changeSubscribers.current).forEach((subscriber) => {
|
|
93
|
-
if (subscriber.listenReinit)
|
|
405
|
+
if (subscriber.listenReinit) {
|
|
406
|
+
subscriber.callback(null, objRef.current, prevObj);
|
|
407
|
+
}
|
|
94
408
|
});
|
|
95
409
|
proxyRef && (proxyRef.current = objRef.current);
|
|
96
410
|
if ((0, import_is_callable.default)(onChange)) onChange(null, objRef.current, prevObj);
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ptolemy2002/react-proxy-context",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"index.js"
|
|
7
7
|
],
|
|
8
8
|
"scripts": {
|
|
9
|
-
"build": "esbuild src/index.js --bundle --format=cjs --outfile=index.js --loader:.js=jsx --external:react --external:react-dom
|
|
9
|
+
"build": "esbuild src/index.js --bundle --format=cjs --outfile=index.js --loader:.js=jsx --external:react --external:react-dom",
|
|
10
10
|
"postinstall": "npx typesync",
|
|
11
11
|
"uninstall": "bash ./scripts/uninstall.sh",
|
|
12
12
|
"reinstall": "bash ./scripts/reinstall.sh",
|
|
@@ -30,15 +30,15 @@
|
|
|
30
30
|
"@types/react": "^18.3.3",
|
|
31
31
|
"@types/react-dom": "^18.3.0",
|
|
32
32
|
"react": "^18.3.1",
|
|
33
|
-
"react-dom": "^18.3.1"
|
|
34
|
-
"@types/is-callable": "^1.1.2",
|
|
35
|
-
"is-callable": "^1.2.7",
|
|
36
|
-
"nanoid": "^5.0.7",
|
|
37
|
-
"@ptolemy2002/react-mount-effects": "^1.1.4",
|
|
38
|
-
"@ptolemy2002/react-force-rerender": "^1.0.4",
|
|
39
|
-
"@ptolemy2002/js-utils": "^1.0.3"
|
|
33
|
+
"react-dom": "^18.3.1"
|
|
40
34
|
},
|
|
41
35
|
"devDependencies": {
|
|
42
|
-
"
|
|
36
|
+
"@ptolemy2002/js-utils": "^1.0.3",
|
|
37
|
+
"@ptolemy2002/react-force-rerender": "^1.0.4",
|
|
38
|
+
"@ptolemy2002/react-mount-effects": "^1.1.4",
|
|
39
|
+
"@types/is-callable": "^1.1.2",
|
|
40
|
+
"esbuild": "^0.23.0",
|
|
41
|
+
"is-callable": "^1.2.7",
|
|
42
|
+
"nanoid": "^5.0.7"
|
|
43
43
|
}
|
|
44
44
|
}
|