valyrian.js 7.2.12 → 8.0.1
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 +6 -6
- package/dist/flux-store/index.d.ts +32 -0
- package/dist/flux-store/index.d.ts.map +1 -0
- package/dist/flux-store/index.js +267 -0
- package/dist/flux-store/index.js.map +7 -0
- package/dist/flux-store/index.min.js +1 -0
- package/dist/flux-store/index.min.js.map +1 -0
- package/dist/flux-store/index.mjs +246 -0
- package/dist/flux-store/index.mjs.map +7 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +35 -51
- package/dist/hooks/index.js.map +3 -3
- package/dist/hooks/index.min.js +1 -0
- package/dist/hooks/index.min.js.map +1 -0
- package/dist/hooks/index.mjs +36 -52
- package/dist/hooks/index.mjs.map +3 -3
- package/dist/index.d.ts +18 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +107 -88
- package/dist/index.js.map +3 -3
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +107 -88
- package/dist/index.mjs.map +3 -3
- package/dist/native-store/index.d.ts +14 -0
- package/dist/native-store/index.d.ts.map +1 -0
- package/dist/native-store/index.js +103 -0
- package/dist/native-store/index.js.map +7 -0
- package/dist/native-store/index.min.js +1 -0
- package/dist/native-store/index.min.js.map +1 -0
- package/dist/native-store/index.mjs +82 -0
- package/dist/native-store/index.mjs.map +7 -0
- package/dist/node/index.d.ts +1 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +125 -10
- package/dist/node/index.js.map +4 -4
- package/dist/node/index.mjs +125 -10
- package/dist/node/index.mjs.map +4 -4
- package/dist/node/node.sw.js +152 -0
- package/dist/node/utils/icons.d.ts +4 -5
- package/dist/node/utils/icons.d.ts.map +1 -1
- package/dist/node/utils/inline.d.ts +1 -1
- package/dist/node/utils/inline.d.ts.map +1 -1
- package/dist/node/utils/node.sw.js +152 -0
- package/dist/node/utils/session-storage.d.ts +22 -0
- package/dist/node/utils/session-storage.d.ts.map +1 -0
- package/dist/node/utils/sw.d.ts.map +1 -1
- package/dist/node/utils/tree-adapter.d.ts +5 -1
- package/dist/node/utils/tree-adapter.d.ts.map +1 -1
- package/dist/pulse-store/index.d.ts +16 -0
- package/dist/pulse-store/index.d.ts.map +1 -0
- package/dist/pulse-store/index.js +143 -0
- package/dist/pulse-store/index.js.map +7 -0
- package/dist/pulse-store/index.min.js +1 -0
- package/dist/pulse-store/index.min.js.map +1 -0
- package/dist/pulse-store/index.mjs +122 -0
- package/dist/pulse-store/index.mjs.map +7 -0
- package/dist/request/index.d.ts +11 -11
- package/dist/request/index.d.ts.map +1 -1
- package/dist/request/index.js +63 -84
- package/dist/request/index.js.map +2 -2
- package/dist/request/index.min.js +1 -0
- package/dist/request/index.min.js.map +1 -0
- package/dist/request/index.mjs +63 -84
- package/dist/request/index.mjs.map +2 -2
- package/dist/router/index.d.ts +36 -33
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +247 -96
- package/dist/router/index.js.map +3 -3
- package/dist/router/index.min.js +1 -0
- package/dist/router/index.min.js.map +1 -0
- package/dist/router/index.mjs +247 -96
- package/dist/router/index.mjs.map +3 -3
- package/dist/signals/index.d.ts +6 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/index.js +92 -0
- package/dist/signals/index.js.map +7 -0
- package/dist/signals/index.min.js +1 -0
- package/dist/signals/index.min.js.map +1 -0
- package/dist/signals/index.mjs +71 -0
- package/dist/signals/index.mjs.map +7 -0
- package/dist/suspense/index.d.ts +6 -0
- package/dist/suspense/index.d.ts.map +1 -0
- package/dist/suspense/index.js +67 -0
- package/dist/suspense/index.js.map +7 -0
- package/dist/suspense/index.min.js +1 -0
- package/dist/suspense/index.min.js.map +1 -0
- package/dist/suspense/index.mjs +46 -0
- package/dist/suspense/index.mjs.map +7 -0
- package/dist/sw/index.min.js +1 -0
- package/dist/sw/index.min.js.map +1 -0
- package/dist/translate/index.d.ts +19 -0
- package/dist/translate/index.d.ts.map +1 -0
- package/dist/translate/index.js +150 -0
- package/dist/translate/index.js.map +7 -0
- package/dist/translate/index.min.js +1 -0
- package/dist/translate/index.min.js.map +1 -0
- package/dist/translate/index.mjs +129 -0
- package/dist/translate/index.mjs.map +7 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/deep-freeze.d.ts +3 -0
- package/dist/utils/deep-freeze.d.ts.map +1 -0
- package/dist/utils/getter-setter.d.ts +3 -0
- package/dist/utils/getter-setter.d.ts.map +1 -0
- package/dist/utils/has-changed.d.ts +2 -0
- package/dist/utils/has-changed.d.ts.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +138 -0
- package/dist/utils/index.js.map +7 -0
- package/dist/utils/index.min.js +1 -0
- package/dist/utils/index.min.js.map +1 -0
- package/dist/utils/index.mjs +115 -0
- package/dist/utils/index.mjs.map +7 -0
- package/lib/flux-store/index.ts +312 -0
- package/lib/hooks/index.ts +39 -57
- package/lib/index.ts +135 -118
- package/lib/native-store/index.ts +106 -0
- package/lib/node/index.ts +3 -1
- package/lib/node/utils/icons.ts +4 -4
- package/lib/node/utils/inline.ts +2 -0
- package/lib/node/utils/node.sw.js +152 -0
- package/lib/node/utils/session-storage.ts +117 -0
- package/lib/node/utils/sw.ts +34 -10
- package/lib/node/utils/tree-adapter.ts +19 -1
- package/lib/pulse-store/index.ts +188 -0
- package/lib/request/index.ts +92 -122
- package/lib/router/index.ts +353 -164
- package/lib/signals/index.ts +98 -0
- package/lib/suspense/index.ts +57 -0
- package/lib/translate/index.ts +156 -0
- package/lib/utils/deep-freeze.ts +54 -0
- package/lib/utils/getter-setter.ts +40 -0
- package/lib/utils/has-changed.ts +43 -0
- package/lib/utils/index.ts +3 -0
- package/package.json +40 -57
- package/tsconfig.json +5 -4
- package/dist/dataset/index.d.ts +0 -24
- package/dist/dataset/index.d.ts.map +0 -1
- package/dist/dataset/index.js +0 -178
- package/dist/dataset/index.js.map +0 -7
- package/dist/dataset/index.mjs +0 -157
- package/dist/dataset/index.mjs.map +0 -7
- package/dist/node/node.sw.tpl +0 -133
- package/dist/node/utils/node.sw.tpl +0 -133
- package/dist/proxy-signal/index.d.ts +0 -23
- package/dist/proxy-signal/index.d.ts.map +0 -1
- package/dist/proxy-signal/index.js +0 -138
- package/dist/proxy-signal/index.js.map +0 -7
- package/dist/proxy-signal/index.mjs +0 -117
- package/dist/proxy-signal/index.mjs.map +0 -7
- package/dist/signal/index.d.ts +0 -9
- package/dist/signal/index.d.ts.map +0 -1
- package/dist/signal/index.js +0 -76
- package/dist/signal/index.js.map +0 -7
- package/dist/signal/index.mjs +0 -55
- package/dist/signal/index.mjs.map +0 -7
- package/dist/store/index.d.ts +0 -16
- package/dist/store/index.d.ts.map +0 -1
- package/dist/store/index.js +0 -93
- package/dist/store/index.js.map +0 -7
- package/dist/store/index.mjs +0 -72
- package/dist/store/index.mjs.map +0 -7
- package/lib/dataset/index.ts +0 -193
- package/lib/node/utils/node.sw.tpl +0 -133
- package/lib/proxy-signal/index.ts +0 -187
- package/lib/signal/index.ts +0 -86
- package/lib/store/index.ts +0 -101
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// lib/proxy-signal/index.ts
|
|
21
|
-
var proxy_signal_exports = {};
|
|
22
|
-
__export(proxy_signal_exports, {
|
|
23
|
-
ProxySignal: () => ProxySignal
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(proxy_signal_exports);
|
|
26
|
-
var import_valyrian = require("valyrian.js");
|
|
27
|
-
function makeUnsubscribe(subscriptions, computed, handler, cleanup) {
|
|
28
|
-
if (typeof cleanup === "function") {
|
|
29
|
-
computed.cleanup = cleanup;
|
|
30
|
-
}
|
|
31
|
-
computed.unsubscribe = () => {
|
|
32
|
-
subscriptions.delete(handler);
|
|
33
|
-
computed?.cleanup();
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function createSubscription(signal, subscriptions, handler) {
|
|
37
|
-
if (subscriptions.has(handler) === false) {
|
|
38
|
-
const computed = ProxySignal(() => handler(signal.value));
|
|
39
|
-
const cleanup = computed();
|
|
40
|
-
makeUnsubscribe(subscriptions, computed, handler, cleanup);
|
|
41
|
-
subscriptions.set(handler, computed);
|
|
42
|
-
}
|
|
43
|
-
return subscriptions.get(handler);
|
|
44
|
-
}
|
|
45
|
-
var updateTimeout;
|
|
46
|
-
function delayedUpdate() {
|
|
47
|
-
clearTimeout(updateTimeout);
|
|
48
|
-
updateTimeout = setTimeout(import_valyrian.update);
|
|
49
|
-
}
|
|
50
|
-
function ProxySignal(value) {
|
|
51
|
-
const subscriptions = /* @__PURE__ */ new Map();
|
|
52
|
-
const getters = {};
|
|
53
|
-
let forceUpdate = false;
|
|
54
|
-
const signal = new Proxy(
|
|
55
|
-
// eslint-disable-next-line no-unused-vars
|
|
56
|
-
function(valOrPath, handler) {
|
|
57
|
-
if (typeof valOrPath === "undefined") {
|
|
58
|
-
return signal.value;
|
|
59
|
-
}
|
|
60
|
-
if (typeof valOrPath === "function") {
|
|
61
|
-
return createSubscription(signal, subscriptions, valOrPath);
|
|
62
|
-
}
|
|
63
|
-
if (typeof valOrPath === "string" && typeof handler !== "undefined") {
|
|
64
|
-
const parsed = valOrPath.split(".");
|
|
65
|
-
let result = signal.value;
|
|
66
|
-
let next;
|
|
67
|
-
while (parsed.length) {
|
|
68
|
-
next = parsed.shift();
|
|
69
|
-
if (parsed.length > 0) {
|
|
70
|
-
if (typeof result[next] !== "object") {
|
|
71
|
-
result[next] = {};
|
|
72
|
-
}
|
|
73
|
-
result = result[next];
|
|
74
|
-
} else {
|
|
75
|
-
result[next] = typeof handler === "function" ? handler(result[next]) : handler;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
forceUpdate = true;
|
|
79
|
-
signal.value = signal.value;
|
|
80
|
-
return signal.value;
|
|
81
|
-
}
|
|
82
|
-
signal.value = valOrPath;
|
|
83
|
-
return signal.value;
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
set(state, prop, val) {
|
|
87
|
-
if (prop === "value" || prop === "unsubscribe" || prop === "cleanup") {
|
|
88
|
-
const old = state[prop];
|
|
89
|
-
state[prop] = val;
|
|
90
|
-
if (prop === "value" && (forceUpdate || val !== old)) {
|
|
91
|
-
forceUpdate = false;
|
|
92
|
-
for (const [handler, computed] of subscriptions) {
|
|
93
|
-
computed.cleanup();
|
|
94
|
-
const cleanup = handler(val);
|
|
95
|
-
makeUnsubscribe(subscriptions, computed, handler, cleanup);
|
|
96
|
-
}
|
|
97
|
-
delayedUpdate();
|
|
98
|
-
}
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
return false;
|
|
102
|
-
},
|
|
103
|
-
get(state, prop) {
|
|
104
|
-
if (prop === "value") {
|
|
105
|
-
return typeof state.value === "function" ? state.value() : state.value;
|
|
106
|
-
}
|
|
107
|
-
if (prop === "cleanup" || prop === "unsubscribe" || prop === "getter") {
|
|
108
|
-
return state[prop];
|
|
109
|
-
}
|
|
110
|
-
if (prop in getters) {
|
|
111
|
-
return getters[prop](state.value);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
);
|
|
116
|
-
Object.defineProperties(signal, {
|
|
117
|
-
value: { value, writable: true, enumerable: true },
|
|
118
|
-
cleanup: {
|
|
119
|
-
value() {
|
|
120
|
-
for (const [handler, computed] of subscriptions) {
|
|
121
|
-
computed.unsubscribe();
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
writable: true,
|
|
125
|
-
enumerable: true
|
|
126
|
-
},
|
|
127
|
-
getter: {
|
|
128
|
-
value(name, handler) {
|
|
129
|
-
if (name in getters) {
|
|
130
|
-
throw new Error("Named computed already exists.");
|
|
131
|
-
}
|
|
132
|
-
getters[name] = handler;
|
|
133
|
-
},
|
|
134
|
-
enumerable: true
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
return signal;
|
|
138
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/proxy-signal/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { update } from \"valyrian.js\";\n\n/* eslint-disable no-use-before-define */\ninterface Cleanup {\n (): void;\n}\n\ninterface Subscription {\n // eslint-disable-next-line no-unused-vars\n (value: ProxySignal[\"value\"]): void | Cleanup;\n}\n\ninterface Subscriptions extends Map<Subscription, Cleanup> {}\n\ninterface Getter {\n // eslint-disable-next-line no-unused-vars\n (value: ProxySignal[\"value\"]): any;\n}\n\ninterface Getters {\n [key: string | symbol]: Getter;\n}\n\ninterface ProxySignal {\n // Works as a getter of the value\n (): ProxySignal[\"value\"];\n // Works as a subscription to the value\n // eslint-disable-next-line no-unused-vars\n (value: Subscription): ProxySignal;\n // Works as a setter with a path and a handler\n // eslint-disable-next-line no-unused-vars\n (path: string, handler: (valueAtPathPosition: any) => any): ProxySignal[\"value\"];\n // Works as a setter with a path and a value\n // eslint-disable-next-line no-unused-vars\n (path: string, value: any): ProxySignal[\"value\"];\n // Works as a setter with a value\n // eslint-disable-next-line no-unused-vars\n (value: any): ProxySignal[\"value\"];\n // Gets the current value of the signal.\n value: any;\n // Cleanup function to be called to remove all subscriptions.\n cleanup: () => void;\n // Creates a getter on the signal.\n // eslint-disable-next-line no-unused-vars\n getter: (name: string, handler: Getter) => any;\n // To access the getters on the signal.\n [key: string | number | symbol]: any;\n}\n\nfunction makeUnsubscribe(\n subscriptions: Subscriptions,\n computed: ProxySignal,\n handler: Subscription,\n cleanup?: Cleanup\n) {\n if (typeof cleanup === \"function\") {\n computed.cleanup = cleanup;\n }\n computed.unsubscribe = () => {\n subscriptions.delete(handler);\n computed?.cleanup();\n };\n}\n\nfunction createSubscription(signal: ProxySignal, subscriptions: Subscriptions, handler: Subscription) {\n if (subscriptions.has(handler) === false) {\n // eslint-disable-next-line no-use-before-define\n const computed = ProxySignal(() => handler(signal.value));\n const cleanup = computed(); // Execute to register itself\n makeUnsubscribe(subscriptions, computed, handler, cleanup);\n subscriptions.set(handler, computed);\n }\n\n return subscriptions.get(handler);\n}\n\nlet updateTimeout: any;\nfunction delayedUpdate() {\n clearTimeout(updateTimeout);\n updateTimeout = setTimeout(update);\n}\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function ProxySignal(value: any): ProxySignal {\n const subscriptions = new Map();\n const getters: Getters = {};\n\n let forceUpdate = false;\n\n const signal: ProxySignal = new Proxy(\n // eslint-disable-next-line no-unused-vars\n function (valOrPath?: any | Subscription, handler?: (valueAtPathPosition: any) => any) {\n // Works as a getter\n if (typeof valOrPath === \"undefined\") {\n return signal.value;\n }\n\n // Works as a subscription\n if (typeof valOrPath === \"function\") {\n return createSubscription(signal, subscriptions, valOrPath);\n }\n\n // Works as a setter with a path\n if (typeof valOrPath === \"string\" && typeof handler !== \"undefined\") {\n const parsed = valOrPath.split(\".\");\n let result = signal.value;\n let next;\n while (parsed.length) {\n next = parsed.shift() as string;\n if (parsed.length > 0) {\n if (typeof result[next] !== \"object\") {\n result[next] = {};\n }\n result = result[next];\n } else {\n result[next] = typeof handler === \"function\" ? handler(result[next]) : handler;\n }\n }\n forceUpdate = true;\n signal.value = signal.value;\n return signal.value;\n }\n\n // Works as a setter with a value\n signal.value = valOrPath;\n return signal.value;\n } as ProxySignal,\n {\n set(state, prop, val) {\n if (prop === \"value\" || prop === \"unsubscribe\" || prop === \"cleanup\") {\n const old = state[prop];\n state[prop] = val;\n if (prop === \"value\" && (forceUpdate || val !== old)) {\n forceUpdate = false;\n for (const [handler, computed] of subscriptions) {\n computed.cleanup();\n const cleanup = handler(val);\n makeUnsubscribe(subscriptions, computed, handler, cleanup);\n }\n delayedUpdate();\n }\n return true;\n }\n return false;\n },\n get(state, prop) {\n if (prop === \"value\") {\n return typeof state.value === \"function\" ? state.value() : state.value;\n }\n\n if (prop === \"cleanup\" || prop === \"unsubscribe\" || prop === \"getter\") {\n return state[prop];\n }\n\n if (prop in getters) {\n return getters[prop](state.value);\n }\n }\n }\n );\n\n Object.defineProperties(signal, {\n value: { value, writable: true, enumerable: true },\n cleanup: {\n value() {\n // eslint-disable-next-line no-unused-vars\n for (const [handler, computed] of subscriptions) {\n computed.unsubscribe();\n }\n },\n writable: true,\n enumerable: true\n },\n getter: {\n value(name: string, handler: Getter) {\n if (name in getters) {\n throw new Error(\"Named computed already exists.\");\n }\n\n getters[name] = handler;\n },\n enumerable: true\n }\n });\n\n return signal;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
// lib/proxy-signal/index.ts
|
|
2
|
-
import { update } from "valyrian.js";
|
|
3
|
-
function makeUnsubscribe(subscriptions, computed, handler, cleanup) {
|
|
4
|
-
if (typeof cleanup === "function") {
|
|
5
|
-
computed.cleanup = cleanup;
|
|
6
|
-
}
|
|
7
|
-
computed.unsubscribe = () => {
|
|
8
|
-
subscriptions.delete(handler);
|
|
9
|
-
computed?.cleanup();
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
function createSubscription(signal, subscriptions, handler) {
|
|
13
|
-
if (subscriptions.has(handler) === false) {
|
|
14
|
-
const computed = ProxySignal(() => handler(signal.value));
|
|
15
|
-
const cleanup = computed();
|
|
16
|
-
makeUnsubscribe(subscriptions, computed, handler, cleanup);
|
|
17
|
-
subscriptions.set(handler, computed);
|
|
18
|
-
}
|
|
19
|
-
return subscriptions.get(handler);
|
|
20
|
-
}
|
|
21
|
-
var updateTimeout;
|
|
22
|
-
function delayedUpdate() {
|
|
23
|
-
clearTimeout(updateTimeout);
|
|
24
|
-
updateTimeout = setTimeout(update);
|
|
25
|
-
}
|
|
26
|
-
function ProxySignal(value) {
|
|
27
|
-
const subscriptions = /* @__PURE__ */ new Map();
|
|
28
|
-
const getters = {};
|
|
29
|
-
let forceUpdate = false;
|
|
30
|
-
const signal = new Proxy(
|
|
31
|
-
// eslint-disable-next-line no-unused-vars
|
|
32
|
-
function(valOrPath, handler) {
|
|
33
|
-
if (typeof valOrPath === "undefined") {
|
|
34
|
-
return signal.value;
|
|
35
|
-
}
|
|
36
|
-
if (typeof valOrPath === "function") {
|
|
37
|
-
return createSubscription(signal, subscriptions, valOrPath);
|
|
38
|
-
}
|
|
39
|
-
if (typeof valOrPath === "string" && typeof handler !== "undefined") {
|
|
40
|
-
const parsed = valOrPath.split(".");
|
|
41
|
-
let result = signal.value;
|
|
42
|
-
let next;
|
|
43
|
-
while (parsed.length) {
|
|
44
|
-
next = parsed.shift();
|
|
45
|
-
if (parsed.length > 0) {
|
|
46
|
-
if (typeof result[next] !== "object") {
|
|
47
|
-
result[next] = {};
|
|
48
|
-
}
|
|
49
|
-
result = result[next];
|
|
50
|
-
} else {
|
|
51
|
-
result[next] = typeof handler === "function" ? handler(result[next]) : handler;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
forceUpdate = true;
|
|
55
|
-
signal.value = signal.value;
|
|
56
|
-
return signal.value;
|
|
57
|
-
}
|
|
58
|
-
signal.value = valOrPath;
|
|
59
|
-
return signal.value;
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
set(state, prop, val) {
|
|
63
|
-
if (prop === "value" || prop === "unsubscribe" || prop === "cleanup") {
|
|
64
|
-
const old = state[prop];
|
|
65
|
-
state[prop] = val;
|
|
66
|
-
if (prop === "value" && (forceUpdate || val !== old)) {
|
|
67
|
-
forceUpdate = false;
|
|
68
|
-
for (const [handler, computed] of subscriptions) {
|
|
69
|
-
computed.cleanup();
|
|
70
|
-
const cleanup = handler(val);
|
|
71
|
-
makeUnsubscribe(subscriptions, computed, handler, cleanup);
|
|
72
|
-
}
|
|
73
|
-
delayedUpdate();
|
|
74
|
-
}
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
},
|
|
79
|
-
get(state, prop) {
|
|
80
|
-
if (prop === "value") {
|
|
81
|
-
return typeof state.value === "function" ? state.value() : state.value;
|
|
82
|
-
}
|
|
83
|
-
if (prop === "cleanup" || prop === "unsubscribe" || prop === "getter") {
|
|
84
|
-
return state[prop];
|
|
85
|
-
}
|
|
86
|
-
if (prop in getters) {
|
|
87
|
-
return getters[prop](state.value);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
);
|
|
92
|
-
Object.defineProperties(signal, {
|
|
93
|
-
value: { value, writable: true, enumerable: true },
|
|
94
|
-
cleanup: {
|
|
95
|
-
value() {
|
|
96
|
-
for (const [handler, computed] of subscriptions) {
|
|
97
|
-
computed.unsubscribe();
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
writable: true,
|
|
101
|
-
enumerable: true
|
|
102
|
-
},
|
|
103
|
-
getter: {
|
|
104
|
-
value(name, handler) {
|
|
105
|
-
if (name in getters) {
|
|
106
|
-
throw new Error("Named computed already exists.");
|
|
107
|
-
}
|
|
108
|
-
getters[name] = handler;
|
|
109
|
-
},
|
|
110
|
-
enumerable: true
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
return signal;
|
|
114
|
-
}
|
|
115
|
-
export {
|
|
116
|
-
ProxySignal
|
|
117
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/proxy-signal/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { update } from \"valyrian.js\";\n\n/* eslint-disable no-use-before-define */\ninterface Cleanup {\n (): void;\n}\n\ninterface Subscription {\n // eslint-disable-next-line no-unused-vars\n (value: ProxySignal[\"value\"]): void | Cleanup;\n}\n\ninterface Subscriptions extends Map<Subscription, Cleanup> {}\n\ninterface Getter {\n // eslint-disable-next-line no-unused-vars\n (value: ProxySignal[\"value\"]): any;\n}\n\ninterface Getters {\n [key: string | symbol]: Getter;\n}\n\ninterface ProxySignal {\n // Works as a getter of the value\n (): ProxySignal[\"value\"];\n // Works as a subscription to the value\n // eslint-disable-next-line no-unused-vars\n (value: Subscription): ProxySignal;\n // Works as a setter with a path and a handler\n // eslint-disable-next-line no-unused-vars\n (path: string, handler: (valueAtPathPosition: any) => any): ProxySignal[\"value\"];\n // Works as a setter with a path and a value\n // eslint-disable-next-line no-unused-vars\n (path: string, value: any): ProxySignal[\"value\"];\n // Works as a setter with a value\n // eslint-disable-next-line no-unused-vars\n (value: any): ProxySignal[\"value\"];\n // Gets the current value of the signal.\n value: any;\n // Cleanup function to be called to remove all subscriptions.\n cleanup: () => void;\n // Creates a getter on the signal.\n // eslint-disable-next-line no-unused-vars\n getter: (name: string, handler: Getter) => any;\n // To access the getters on the signal.\n [key: string | number | symbol]: any;\n}\n\nfunction makeUnsubscribe(\n subscriptions: Subscriptions,\n computed: ProxySignal,\n handler: Subscription,\n cleanup?: Cleanup\n) {\n if (typeof cleanup === \"function\") {\n computed.cleanup = cleanup;\n }\n computed.unsubscribe = () => {\n subscriptions.delete(handler);\n computed?.cleanup();\n };\n}\n\nfunction createSubscription(signal: ProxySignal, subscriptions: Subscriptions, handler: Subscription) {\n if (subscriptions.has(handler) === false) {\n // eslint-disable-next-line no-use-before-define\n const computed = ProxySignal(() => handler(signal.value));\n const cleanup = computed(); // Execute to register itself\n makeUnsubscribe(subscriptions, computed, handler, cleanup);\n subscriptions.set(handler, computed);\n }\n\n return subscriptions.get(handler);\n}\n\nlet updateTimeout: any;\nfunction delayedUpdate() {\n clearTimeout(updateTimeout);\n updateTimeout = setTimeout(update);\n}\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function ProxySignal(value: any): ProxySignal {\n const subscriptions = new Map();\n const getters: Getters = {};\n\n let forceUpdate = false;\n\n const signal: ProxySignal = new Proxy(\n // eslint-disable-next-line no-unused-vars\n function (valOrPath?: any | Subscription, handler?: (valueAtPathPosition: any) => any) {\n // Works as a getter\n if (typeof valOrPath === \"undefined\") {\n return signal.value;\n }\n\n // Works as a subscription\n if (typeof valOrPath === \"function\") {\n return createSubscription(signal, subscriptions, valOrPath);\n }\n\n // Works as a setter with a path\n if (typeof valOrPath === \"string\" && typeof handler !== \"undefined\") {\n const parsed = valOrPath.split(\".\");\n let result = signal.value;\n let next;\n while (parsed.length) {\n next = parsed.shift() as string;\n if (parsed.length > 0) {\n if (typeof result[next] !== \"object\") {\n result[next] = {};\n }\n result = result[next];\n } else {\n result[next] = typeof handler === \"function\" ? handler(result[next]) : handler;\n }\n }\n forceUpdate = true;\n signal.value = signal.value;\n return signal.value;\n }\n\n // Works as a setter with a value\n signal.value = valOrPath;\n return signal.value;\n } as ProxySignal,\n {\n set(state, prop, val) {\n if (prop === \"value\" || prop === \"unsubscribe\" || prop === \"cleanup\") {\n const old = state[prop];\n state[prop] = val;\n if (prop === \"value\" && (forceUpdate || val !== old)) {\n forceUpdate = false;\n for (const [handler, computed] of subscriptions) {\n computed.cleanup();\n const cleanup = handler(val);\n makeUnsubscribe(subscriptions, computed, handler, cleanup);\n }\n delayedUpdate();\n }\n return true;\n }\n return false;\n },\n get(state, prop) {\n if (prop === \"value\") {\n return typeof state.value === \"function\" ? state.value() : state.value;\n }\n\n if (prop === \"cleanup\" || prop === \"unsubscribe\" || prop === \"getter\") {\n return state[prop];\n }\n\n if (prop in getters) {\n return getters[prop](state.value);\n }\n }\n }\n );\n\n Object.defineProperties(signal, {\n value: { value, writable: true, enumerable: true },\n cleanup: {\n value() {\n // eslint-disable-next-line no-unused-vars\n for (const [handler, computed] of subscriptions) {\n computed.unsubscribe();\n }\n },\n writable: true,\n enumerable: true\n },\n getter: {\n value(name: string, handler: Getter) {\n if (name in getters) {\n throw new Error(\"Named computed already exists.\");\n }\n\n getters[name] = handler;\n },\n enumerable: true\n }\n });\n\n return signal;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/signal/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
type getter = () => any;
|
|
2
|
-
type setter = (newValue: any) => void;
|
|
3
|
-
type unsubscribe = () => void;
|
|
4
|
-
type subscribe = (callback: () => void) => unsubscribe;
|
|
5
|
-
type subscriptions = Set<() => void>;
|
|
6
|
-
type signal = [getter, setter, subscribe, subscriptions];
|
|
7
|
-
export declare function Signal<T>(initialValue: T): signal;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/signal/index.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,GAAG,CAAC;AACxB,KAAK,MAAM,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;AACtC,KAAK,WAAW,GAAG,MAAM,IAAI,CAAC;AAC9B,KAAK,SAAS,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;AACvD,KAAK,aAAa,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACrC,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAUzD,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAoEjD"}
|
package/dist/signal/index.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// lib/signal/index.ts
|
|
21
|
-
var signal_exports = {};
|
|
22
|
-
__export(signal_exports, {
|
|
23
|
-
Signal: () => Signal
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(signal_exports);
|
|
26
|
-
var import_valyrian = require("valyrian.js");
|
|
27
|
-
var componentToSignalsWeakMap = /* @__PURE__ */ new WeakMap();
|
|
28
|
-
function Signal(initialValue) {
|
|
29
|
-
if (import_valyrian.current.component) {
|
|
30
|
-
if (componentToSignalsWeakMap.has(import_valyrian.current.component) === false) {
|
|
31
|
-
const SignalCalls2 = { signals: [], signal_calls: -1 };
|
|
32
|
-
componentToSignalsWeakMap.set(import_valyrian.current.component, SignalCalls2);
|
|
33
|
-
(0, import_valyrian.onUnmount)(() => componentToSignalsWeakMap.delete(import_valyrian.current.component));
|
|
34
|
-
}
|
|
35
|
-
const SignalCalls = componentToSignalsWeakMap.get(import_valyrian.current.component);
|
|
36
|
-
(0, import_valyrian.onCleanup)(() => SignalCalls.signal_calls = -1);
|
|
37
|
-
const signal2 = SignalCalls.signals[++SignalCalls.signal_calls];
|
|
38
|
-
if (signal2) {
|
|
39
|
-
const fakeSubscribe = () => {
|
|
40
|
-
};
|
|
41
|
-
return [signal2[0], signal2[1], fakeSubscribe, signal2[3]];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
let value = initialValue;
|
|
45
|
-
const subscribers = /* @__PURE__ */ new Set();
|
|
46
|
-
const subscribe = (callback) => {
|
|
47
|
-
subscribers.add(callback);
|
|
48
|
-
return () => subscribers.delete(callback);
|
|
49
|
-
};
|
|
50
|
-
const domToVnodesToUpdate = /* @__PURE__ */ new Map();
|
|
51
|
-
const updateVnodes = () => domToVnodesToUpdate.forEach((vnode) => (0, import_valyrian.updateVnode)(vnode));
|
|
52
|
-
const getValue = () => {
|
|
53
|
-
if (import_valyrian.current.vnode) {
|
|
54
|
-
const vnode = import_valyrian.current.vnode;
|
|
55
|
-
domToVnodesToUpdate.set(vnode.dom, vnode);
|
|
56
|
-
subscribe(updateVnodes);
|
|
57
|
-
}
|
|
58
|
-
return value;
|
|
59
|
-
};
|
|
60
|
-
const setValue = (newValue) => {
|
|
61
|
-
if (import_valyrian.current.event) {
|
|
62
|
-
import_valyrian.current.event.preventDefault();
|
|
63
|
-
}
|
|
64
|
-
if (value === newValue) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
value = newValue;
|
|
68
|
-
subscribers.forEach((subscriber) => subscriber());
|
|
69
|
-
};
|
|
70
|
-
const signal = [getValue, setValue, subscribe, subscribers];
|
|
71
|
-
if (import_valyrian.current.component) {
|
|
72
|
-
const SignalCalls = componentToSignalsWeakMap.get(import_valyrian.current.component);
|
|
73
|
-
SignalCalls.signals.push(signal);
|
|
74
|
-
}
|
|
75
|
-
return signal;
|
|
76
|
-
}
|
package/dist/signal/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/signal/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { updateVnode, current, VnodeWithDom, onCleanup, POJOComponent, Component, onUnmount } from \"valyrian.js\";\n\ntype getter = () => any;\ntype setter = (newValue: any) => void;\ntype unsubscribe = () => void;\ntype subscribe = (callback: () => void) => unsubscribe;\ntype subscriptions = Set<() => void>;\ntype signal = [getter, setter, subscribe, subscriptions];\n\ntype SignalCalls = {\n signals: signal[];\n signal_calls: number;\n};\n\nconst componentToSignalsWeakMap = new WeakMap<Component | POJOComponent, SignalCalls>();\n\n// Signal is a generic function that creates a reactive state with a getter, setter, and subscribe mechanism.\nexport function Signal<T>(initialValue: T): signal {\n if (current.component) {\n if (componentToSignalsWeakMap.has(current.component) === false) {\n const SignalCalls = { signals: [], signal_calls: -1 };\n componentToSignalsWeakMap.set(current.component, SignalCalls);\n onUnmount(() => componentToSignalsWeakMap.delete(current.component as Component | POJOComponent));\n }\n\n const SignalCalls = componentToSignalsWeakMap.get(current.component) as SignalCalls;\n onCleanup(() => (SignalCalls.signal_calls = -1));\n\n const signal = SignalCalls.signals[++SignalCalls.signal_calls];\n\n if (signal) {\n // Return the signal if it already exists.\n // But without the subscribe function. This is to prevent the subscribe function from being called multiple times.\n const fakeSubscribe = (() => {}) as unknown as subscribe;\n return [signal[0], signal[1], fakeSubscribe, signal[3]];\n }\n }\n\n // The current value of the signal is stored in a closure to maintain state.\n let value: T = initialValue;\n // Subscribers is a Set of functions to be called whenever the value changes.\n const subscribers: subscriptions = new Set();\n\n // subscribe is a function that allows a subscriber to listen to changes in the signal's value.\n // It returns an unsubscribe function to stop listening to changes.\n const subscribe = (callback: () => void) => {\n subscribers.add(callback);\n return () => subscribers.delete(callback);\n };\n\n const domToVnodesToUpdate: Map<Node, VnodeWithDom> = new Map();\n const updateVnodes = () => domToVnodesToUpdate.forEach((vnode) => updateVnode(vnode));\n\n // getValue is a function that returns the current value of the signal.\n const getValue = () => {\n if (current.vnode) {\n const vnode = current.vnode as VnodeWithDom;\n domToVnodesToUpdate.set(vnode.dom, vnode);\n subscribe(updateVnodes);\n }\n return value;\n };\n\n // setValue is a function that updates the value of the signal and notifies subscribers.\n const setValue = (newValue: any) => {\n if (current.event) {\n current.event.preventDefault();\n }\n\n if (value === newValue) {\n return;\n }\n value = newValue;\n // Notify all subscribers by invoking their callback functions.\n subscribers.forEach((subscriber) => subscriber());\n };\n\n const signal: signal = [getValue, setValue, subscribe, subscribers];\n\n if (current.component) {\n const SignalCalls = componentToSignalsWeakMap.get(current.component) as SignalCalls;\n SignalCalls.signals.push(signal);\n }\n\n return signal;\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAmG;AAcnG,IAAM,4BAA4B,oBAAI,QAAgD;AAG/E,SAAS,OAAU,cAAyB;AACjD,MAAI,wBAAQ,WAAW;AACrB,QAAI,0BAA0B,IAAI,wBAAQ,SAAS,MAAM,OAAO;AAC9D,YAAMA,eAAc,EAAE,SAAS,CAAC,GAAG,cAAc,GAAG;AACpD,gCAA0B,IAAI,wBAAQ,WAAWA,YAAW;AAC5D,qCAAU,MAAM,0BAA0B,OAAO,wBAAQ,SAAsC,CAAC;AAAA,IAClG;AAEA,UAAM,cAAc,0BAA0B,IAAI,wBAAQ,SAAS;AACnE,mCAAU,MAAO,YAAY,eAAe,EAAG;AAE/C,UAAMC,UAAS,YAAY,QAAQ,EAAE,YAAY,YAAY;AAE7D,QAAIA,SAAQ;AAGV,YAAM,gBAAiB,MAAM;AAAA,MAAC;AAC9B,aAAO,CAACA,QAAO,CAAC,GAAGA,QAAO,CAAC,GAAG,eAAeA,QAAO,CAAC,CAAC;AAAA,IACxD;AAAA,EACF;AAGA,MAAI,QAAW;AAEf,QAAM,cAA6B,oBAAI,IAAI;AAI3C,QAAM,YAAY,CAAC,aAAyB;AAC1C,gBAAY,IAAI,QAAQ;AACxB,WAAO,MAAM,YAAY,OAAO,QAAQ;AAAA,EAC1C;AAEA,QAAM,sBAA+C,oBAAI,IAAI;AAC7D,QAAM,eAAe,MAAM,oBAAoB,QAAQ,CAAC,cAAU,6BAAY,KAAK,CAAC;AAGpF,QAAM,WAAW,MAAM;AACrB,QAAI,wBAAQ,OAAO;AACjB,YAAM,QAAQ,wBAAQ;AACtB,0BAAoB,IAAI,MAAM,KAAK,KAAK;AACxC,gBAAU,YAAY;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAGA,QAAM,WAAW,CAAC,aAAkB;AAClC,QAAI,wBAAQ,OAAO;AACjB,8BAAQ,MAAM,eAAe;AAAA,IAC/B;AAEA,QAAI,UAAU,UAAU;AACtB;AAAA,IACF;AACA,YAAQ;AAER,gBAAY,QAAQ,CAAC,eAAe,WAAW,CAAC;AAAA,EAClD;AAEA,QAAM,SAAiB,CAAC,UAAU,UAAU,WAAW,WAAW;AAElE,MAAI,wBAAQ,WAAW;AACrB,UAAM,cAAc,0BAA0B,IAAI,wBAAQ,SAAS;AACnE,gBAAY,QAAQ,KAAK,MAAM;AAAA,EACjC;AAEA,SAAO;AACT;",
|
|
6
|
-
"names": ["SignalCalls", "signal"]
|
|
7
|
-
}
|
package/dist/signal/index.mjs
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
// lib/signal/index.ts
|
|
2
|
-
import { updateVnode, current, onCleanup, onUnmount } from "valyrian.js";
|
|
3
|
-
var componentToSignalsWeakMap = /* @__PURE__ */ new WeakMap();
|
|
4
|
-
function Signal(initialValue) {
|
|
5
|
-
if (current.component) {
|
|
6
|
-
if (componentToSignalsWeakMap.has(current.component) === false) {
|
|
7
|
-
const SignalCalls2 = { signals: [], signal_calls: -1 };
|
|
8
|
-
componentToSignalsWeakMap.set(current.component, SignalCalls2);
|
|
9
|
-
onUnmount(() => componentToSignalsWeakMap.delete(current.component));
|
|
10
|
-
}
|
|
11
|
-
const SignalCalls = componentToSignalsWeakMap.get(current.component);
|
|
12
|
-
onCleanup(() => SignalCalls.signal_calls = -1);
|
|
13
|
-
const signal2 = SignalCalls.signals[++SignalCalls.signal_calls];
|
|
14
|
-
if (signal2) {
|
|
15
|
-
const fakeSubscribe = () => {
|
|
16
|
-
};
|
|
17
|
-
return [signal2[0], signal2[1], fakeSubscribe, signal2[3]];
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
let value = initialValue;
|
|
21
|
-
const subscribers = /* @__PURE__ */ new Set();
|
|
22
|
-
const subscribe = (callback) => {
|
|
23
|
-
subscribers.add(callback);
|
|
24
|
-
return () => subscribers.delete(callback);
|
|
25
|
-
};
|
|
26
|
-
const domToVnodesToUpdate = /* @__PURE__ */ new Map();
|
|
27
|
-
const updateVnodes = () => domToVnodesToUpdate.forEach((vnode) => updateVnode(vnode));
|
|
28
|
-
const getValue = () => {
|
|
29
|
-
if (current.vnode) {
|
|
30
|
-
const vnode = current.vnode;
|
|
31
|
-
domToVnodesToUpdate.set(vnode.dom, vnode);
|
|
32
|
-
subscribe(updateVnodes);
|
|
33
|
-
}
|
|
34
|
-
return value;
|
|
35
|
-
};
|
|
36
|
-
const setValue = (newValue) => {
|
|
37
|
-
if (current.event) {
|
|
38
|
-
current.event.preventDefault();
|
|
39
|
-
}
|
|
40
|
-
if (value === newValue) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
value = newValue;
|
|
44
|
-
subscribers.forEach((subscriber) => subscriber());
|
|
45
|
-
};
|
|
46
|
-
const signal = [getValue, setValue, subscribe, subscribers];
|
|
47
|
-
if (current.component) {
|
|
48
|
-
const SignalCalls = componentToSignalsWeakMap.get(current.component);
|
|
49
|
-
SignalCalls.signals.push(signal);
|
|
50
|
-
}
|
|
51
|
-
return signal;
|
|
52
|
-
}
|
|
53
|
-
export {
|
|
54
|
-
Signal
|
|
55
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/signal/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { updateVnode, current, VnodeWithDom, onCleanup, POJOComponent, Component, onUnmount } from \"valyrian.js\";\n\ntype getter = () => any;\ntype setter = (newValue: any) => void;\ntype unsubscribe = () => void;\ntype subscribe = (callback: () => void) => unsubscribe;\ntype subscriptions = Set<() => void>;\ntype signal = [getter, setter, subscribe, subscriptions];\n\ntype SignalCalls = {\n signals: signal[];\n signal_calls: number;\n};\n\nconst componentToSignalsWeakMap = new WeakMap<Component | POJOComponent, SignalCalls>();\n\n// Signal is a generic function that creates a reactive state with a getter, setter, and subscribe mechanism.\nexport function Signal<T>(initialValue: T): signal {\n if (current.component) {\n if (componentToSignalsWeakMap.has(current.component) === false) {\n const SignalCalls = { signals: [], signal_calls: -1 };\n componentToSignalsWeakMap.set(current.component, SignalCalls);\n onUnmount(() => componentToSignalsWeakMap.delete(current.component as Component | POJOComponent));\n }\n\n const SignalCalls = componentToSignalsWeakMap.get(current.component) as SignalCalls;\n onCleanup(() => (SignalCalls.signal_calls = -1));\n\n const signal = SignalCalls.signals[++SignalCalls.signal_calls];\n\n if (signal) {\n // Return the signal if it already exists.\n // But without the subscribe function. This is to prevent the subscribe function from being called multiple times.\n const fakeSubscribe = (() => {}) as unknown as subscribe;\n return [signal[0], signal[1], fakeSubscribe, signal[3]];\n }\n }\n\n // The current value of the signal is stored in a closure to maintain state.\n let value: T = initialValue;\n // Subscribers is a Set of functions to be called whenever the value changes.\n const subscribers: subscriptions = new Set();\n\n // subscribe is a function that allows a subscriber to listen to changes in the signal's value.\n // It returns an unsubscribe function to stop listening to changes.\n const subscribe = (callback: () => void) => {\n subscribers.add(callback);\n return () => subscribers.delete(callback);\n };\n\n const domToVnodesToUpdate: Map<Node, VnodeWithDom> = new Map();\n const updateVnodes = () => domToVnodesToUpdate.forEach((vnode) => updateVnode(vnode));\n\n // getValue is a function that returns the current value of the signal.\n const getValue = () => {\n if (current.vnode) {\n const vnode = current.vnode as VnodeWithDom;\n domToVnodesToUpdate.set(vnode.dom, vnode);\n subscribe(updateVnodes);\n }\n return value;\n };\n\n // setValue is a function that updates the value of the signal and notifies subscribers.\n const setValue = (newValue: any) => {\n if (current.event) {\n current.event.preventDefault();\n }\n\n if (value === newValue) {\n return;\n }\n value = newValue;\n // Notify all subscribers by invoking their callback functions.\n subscribers.forEach((subscriber) => subscriber());\n };\n\n const signal: signal = [getValue, setValue, subscribe, subscribers];\n\n if (current.component) {\n const SignalCalls = componentToSignalsWeakMap.get(current.component) as SignalCalls;\n SignalCalls.signals.push(signal);\n }\n\n return signal;\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,aAAa,SAAuB,WAAqC,iBAAiB;AAcnG,IAAM,4BAA4B,oBAAI,QAAgD;AAG/E,SAAS,OAAU,cAAyB;AACjD,MAAI,QAAQ,WAAW;AACrB,QAAI,0BAA0B,IAAI,QAAQ,SAAS,MAAM,OAAO;AAC9D,YAAMA,eAAc,EAAE,SAAS,CAAC,GAAG,cAAc,GAAG;AACpD,gCAA0B,IAAI,QAAQ,WAAWA,YAAW;AAC5D,gBAAU,MAAM,0BAA0B,OAAO,QAAQ,SAAsC,CAAC;AAAA,IAClG;AAEA,UAAM,cAAc,0BAA0B,IAAI,QAAQ,SAAS;AACnE,cAAU,MAAO,YAAY,eAAe,EAAG;AAE/C,UAAMC,UAAS,YAAY,QAAQ,EAAE,YAAY,YAAY;AAE7D,QAAIA,SAAQ;AAGV,YAAM,gBAAiB,MAAM;AAAA,MAAC;AAC9B,aAAO,CAACA,QAAO,CAAC,GAAGA,QAAO,CAAC,GAAG,eAAeA,QAAO,CAAC,CAAC;AAAA,IACxD;AAAA,EACF;AAGA,MAAI,QAAW;AAEf,QAAM,cAA6B,oBAAI,IAAI;AAI3C,QAAM,YAAY,CAAC,aAAyB;AAC1C,gBAAY,IAAI,QAAQ;AACxB,WAAO,MAAM,YAAY,OAAO,QAAQ;AAAA,EAC1C;AAEA,QAAM,sBAA+C,oBAAI,IAAI;AAC7D,QAAM,eAAe,MAAM,oBAAoB,QAAQ,CAAC,UAAU,YAAY,KAAK,CAAC;AAGpF,QAAM,WAAW,MAAM;AACrB,QAAI,QAAQ,OAAO;AACjB,YAAM,QAAQ,QAAQ;AACtB,0BAAoB,IAAI,MAAM,KAAK,KAAK;AACxC,gBAAU,YAAY;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAGA,QAAM,WAAW,CAAC,aAAkB;AAClC,QAAI,QAAQ,OAAO;AACjB,cAAQ,MAAM,eAAe;AAAA,IAC/B;AAEA,QAAI,UAAU,UAAU;AACtB;AAAA,IACF;AACA,YAAQ;AAER,gBAAY,QAAQ,CAAC,eAAe,WAAW,CAAC;AAAA,EAClD;AAEA,QAAM,SAAiB,CAAC,UAAU,UAAU,WAAW,WAAW;AAElE,MAAI,QAAQ,WAAW;AACrB,UAAM,cAAc,0BAA0B,IAAI,QAAQ,SAAS;AACnE,gBAAY,QAAQ,KAAK,MAAM;AAAA,EACjC;AAEA,SAAO;AACT;",
|
|
6
|
-
"names": ["SignalCalls", "signal"]
|
|
7
|
-
}
|
package/dist/store/index.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
interface StoreOptions {
|
|
2
|
-
state?: Record<string, unknown> | (() => Record<string, unknown>);
|
|
3
|
-
getters?: Record<string, Function>;
|
|
4
|
-
mutations?: Record<string, Function>;
|
|
5
|
-
actions?: Record<string, Function>;
|
|
6
|
-
}
|
|
7
|
-
interface StoreInstance {
|
|
8
|
-
new (options: StoreOptions): StoreInstance;
|
|
9
|
-
state: Record<string, any>;
|
|
10
|
-
getters?: Record<string, any>;
|
|
11
|
-
commit: (type: string, ...payload: any[]) => void;
|
|
12
|
-
dispatch: (type: string, ...payload: any[]) => void;
|
|
13
|
-
}
|
|
14
|
-
export declare const Store: StoreInstance;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/store/index.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACpC;AAED,UAAU,aAAa;IAErB,KAAK,OAAO,EAAE,YAAY,GAAG,aAAa,CAAC;IAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAElD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACrD;AAgCD,eAAO,MAAM,KAAK,eAkDW,CAAC"}
|
package/dist/store/index.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
|
|
20
|
-
// lib/store/index.ts
|
|
21
|
-
var store_exports = {};
|
|
22
|
-
__export(store_exports, {
|
|
23
|
-
Store: () => Store
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(store_exports);
|
|
26
|
-
var import_valyrian = require("valyrian.js");
|
|
27
|
-
function keyExists(typeOfKey, object, key) {
|
|
28
|
-
if (key in object === false) {
|
|
29
|
-
throw new Error(`The ${typeOfKey} "${key}" does not exists.`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function deepFreeze(obj) {
|
|
33
|
-
if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
|
|
34
|
-
if (Array.isArray(obj)) {
|
|
35
|
-
for (let i = 0, l = obj.length; i < l; i++) {
|
|
36
|
-
deepFreeze(obj[i]);
|
|
37
|
-
}
|
|
38
|
-
} else {
|
|
39
|
-
const props = Reflect.ownKeys(obj);
|
|
40
|
-
for (let i = 0, l = props.length; i < l; i++) {
|
|
41
|
-
deepFreeze(obj[props[i]]);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
Object.freeze(obj);
|
|
45
|
-
}
|
|
46
|
-
return obj;
|
|
47
|
-
}
|
|
48
|
-
var updateTimeout;
|
|
49
|
-
function delayedUpdate() {
|
|
50
|
-
clearTimeout(updateTimeout);
|
|
51
|
-
updateTimeout = setTimeout(import_valyrian.update);
|
|
52
|
-
}
|
|
53
|
-
var Store = function Store2({ state = {}, getters = {}, actions = {}, mutations = {} } = {}) {
|
|
54
|
-
let frozen = true;
|
|
55
|
-
function isUnfrozen() {
|
|
56
|
-
if (frozen) {
|
|
57
|
-
throw new Error("You need to commit a mutation to change the state");
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const localState = typeof state === "function" ? state() : state;
|
|
61
|
-
this.state = new Proxy(localState || {}, {
|
|
62
|
-
get: (state2, prop) => deepFreeze(state2[prop]),
|
|
63
|
-
set: (state2, prop, value) => {
|
|
64
|
-
isUnfrozen();
|
|
65
|
-
state2[prop] = value;
|
|
66
|
-
return true;
|
|
67
|
-
},
|
|
68
|
-
deleteProperty: (state2, prop) => {
|
|
69
|
-
isUnfrozen();
|
|
70
|
-
Reflect.deleteProperty(state2, prop);
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
this.getters = new Proxy(getters, {
|
|
75
|
-
get: (getters2, getter) => {
|
|
76
|
-
try {
|
|
77
|
-
return getters2[getter](this.state, this.getters);
|
|
78
|
-
} catch (e) {
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
this.commit = (mutation, ...args) => {
|
|
83
|
-
keyExists("mutation", mutations, mutation);
|
|
84
|
-
frozen = false;
|
|
85
|
-
mutations[mutation](this.state, ...args);
|
|
86
|
-
frozen = true;
|
|
87
|
-
delayedUpdate();
|
|
88
|
-
};
|
|
89
|
-
this.dispatch = (action, ...args) => {
|
|
90
|
-
keyExists("action", actions, action);
|
|
91
|
-
return Promise.resolve(actions[action](this, ...args));
|
|
92
|
-
};
|
|
93
|
-
};
|
package/dist/store/index.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../lib/store/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { update } from \"valyrian.js\";\n\ninterface StoreOptions {\n state?: Record<string, unknown> | (() => Record<string, unknown>);\n getters?: Record<string, Function>;\n mutations?: Record<string, Function>;\n actions?: Record<string, Function>;\n}\n\ninterface StoreInstance {\n // eslint-disable-next-line no-unused-vars\n new (options: StoreOptions): StoreInstance;\n state: Record<string, any>;\n getters?: Record<string, any>;\n // eslint-disable-next-line no-unused-vars\n commit: (type: string, ...payload: any[]) => void;\n // eslint-disable-next-line no-unused-vars\n dispatch: (type: string, ...payload: any[]) => void;\n}\n\nfunction keyExists(typeOfKey: string, object: Record<string, unknown>, key: string) {\n if (key in object === false) {\n throw new Error(`The ${typeOfKey} \"${key}\" does not exists.`);\n }\n}\n\nfunction deepFreeze(obj: any) {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nlet updateTimeout: any;\nfunction delayedUpdate() {\n clearTimeout(updateTimeout);\n updateTimeout = setTimeout(update);\n}\n\nexport const Store = function Store(\n this: StoreInstance,\n { state = {}, getters = {}, actions = {}, mutations = {} }: StoreOptions = {}\n) {\n let frozen = true;\n\n function isUnfrozen() {\n if (frozen) {\n throw new Error(\"You need to commit a mutation to change the state\");\n }\n }\n\n const localState = typeof state === \"function\" ? state() : state;\n\n this.state = new Proxy(localState || {}, {\n get: (state, prop: string) => deepFreeze(state[prop]),\n set: (state, prop: string, value: any) => {\n isUnfrozen();\n state[prop] = value;\n return true;\n },\n deleteProperty: (state, prop: string) => {\n isUnfrozen();\n Reflect.deleteProperty(state, prop);\n return true;\n }\n });\n\n this.getters = new Proxy(getters, {\n get: (getters, getter: string) => {\n try {\n return getters[getter](this.state, this.getters);\n } catch (e) {\n // Getters should fail silently\n }\n }\n });\n\n this.commit = (mutation, ...args) => {\n keyExists(\"mutation\", mutations, mutation);\n frozen = false;\n mutations[mutation](this.state, ...args);\n frozen = true;\n delayedUpdate();\n };\n\n this.dispatch = (action, ...args) => {\n keyExists(\"action\", actions, action);\n return Promise.resolve(actions[action](this, ...args));\n };\n} as unknown as StoreInstance;\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAuB;AAoBvB,SAAS,UAAU,WAAmB,QAAiC,KAAa;AAClF,MAAI,OAAO,WAAW,OAAO;AAC3B,UAAM,IAAI,MAAM,OAAO,SAAS,KAAK,GAAG,oBAAoB;AAAA,EAC9D;AACF;AAEA,SAAS,WAAW,KAAU;AAC5B,MAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,CAAC,OAAO,SAAS,GAAG,GAAG;AACpE,QAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AAC1C,mBAAW,IAAI,CAAC,CAAC;AAAA,MACnB;AAAA,IACF,OAAO;AACL,YAAM,QAAQ,QAAQ,QAAQ,GAAG;AACjC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC5C,mBAAW,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,MAC1B;AAAA,IACF;AACA,WAAO,OAAO,GAAG;AAAA,EACnB;AAEA,SAAO;AACT;AAEA,IAAI;AACJ,SAAS,gBAAgB;AACvB,eAAa,aAAa;AAC1B,kBAAgB,WAAW,sBAAM;AACnC;AAEO,IAAM,QAAQ,SAASA,OAE5B,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,GAAG,YAAY,CAAC,EAAE,IAAkB,CAAC,GAC5E;AACA,MAAI,SAAS;AAEb,WAAS,aAAa;AACpB,QAAI,QAAQ;AACV,YAAM,IAAI,MAAM,mDAAmD;AAAA,IACrE;AAAA,EACF;AAEA,QAAM,aAAa,OAAO,UAAU,aAAa,MAAM,IAAI;AAE3D,OAAK,QAAQ,IAAI,MAAM,cAAc,CAAC,GAAG;AAAA,IACvC,KAAK,CAACC,QAAO,SAAiB,WAAWA,OAAM,IAAI,CAAC;AAAA,IACpD,KAAK,CAACA,QAAO,MAAc,UAAe;AACxC,iBAAW;AACX,MAAAA,OAAM,IAAI,IAAI;AACd,aAAO;AAAA,IACT;AAAA,IACA,gBAAgB,CAACA,QAAO,SAAiB;AACvC,iBAAW;AACX,cAAQ,eAAeA,QAAO,IAAI;AAClC,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,OAAK,UAAU,IAAI,MAAM,SAAS;AAAA,IAChC,KAAK,CAACC,UAAS,WAAmB;AAChC,UAAI;AACF,eAAOA,SAAQ,MAAM,EAAE,KAAK,OAAO,KAAK,OAAO;AAAA,MACjD,SAAS,GAAG;AAAA,MAEZ;AAAA,IACF;AAAA,EACF,CAAC;AAED,OAAK,SAAS,CAAC,aAAa,SAAS;AACnC,cAAU,YAAY,WAAW,QAAQ;AACzC,aAAS;AACT,cAAU,QAAQ,EAAE,KAAK,OAAO,GAAG,IAAI;AACvC,aAAS;AACT,kBAAc;AAAA,EAChB;AAEA,OAAK,WAAW,CAAC,WAAW,SAAS;AACnC,cAAU,UAAU,SAAS,MAAM;AACnC,WAAO,QAAQ,QAAQ,QAAQ,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;AAAA,EACvD;AACF;",
|
|
6
|
-
"names": ["Store", "state", "getters"]
|
|
7
|
-
}
|