@capsuletech/web-state 0.1.0
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 +7 -0
- package/dist/create.d.ts +33 -0
- package/dist/helpers.d.ts +33 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.mjs +637 -0
- package/dist/index.mjs.map +1 -0
- package/dist/package.json +18 -0
- package/dist/tag-registry.d.ts +23 -0
- package/package.json +27 -0
package/README.md
ADDED
package/dist/create.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AnyStateMachine } from 'xstate';
|
|
2
|
+
export interface IStateHandlers {
|
|
3
|
+
onInit?: (api: any) => any;
|
|
4
|
+
onExit?: (api: any) => any;
|
|
5
|
+
[methodName: string]: ((api: any) => any) | undefined;
|
|
6
|
+
}
|
|
7
|
+
export interface IDefineStateSchema<TCtx = any> {
|
|
8
|
+
initial: string;
|
|
9
|
+
context?: TCtx;
|
|
10
|
+
states: Record<string, IStateHandlers>;
|
|
11
|
+
[methodName: string]: any;
|
|
12
|
+
}
|
|
13
|
+
export interface IMachineContext<TCtx = any> {
|
|
14
|
+
data: TCtx;
|
|
15
|
+
loading: boolean;
|
|
16
|
+
errors: Record<string, string>;
|
|
17
|
+
styles: Record<string, string>;
|
|
18
|
+
components: Record<string, any>;
|
|
19
|
+
/**
|
|
20
|
+
* Динамические patch'и props у компонентов, индексированные по id.
|
|
21
|
+
* Контроллер пишет сюда через `store.setProps({...})`; UiProxy при рендере
|
|
22
|
+
* мержит эти значения поверх статичных props у компонента с тем же id.
|
|
23
|
+
* Канал общего назначения — для `active`, кастомных флагов, и пр.
|
|
24
|
+
*/
|
|
25
|
+
props: Record<string, Record<string, any>>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Строит XState-машину из пользовательской HCA-схемы.
|
|
29
|
+
* Машина владеет: списком стейтов, переходами (через __GOTO_*) и универсальными store-мутациями.
|
|
30
|
+
* UI-события (onClick, onInput, ...) и onInit/onExit обрабатываются НЕ через XState event-bus —
|
|
31
|
+
* см. ControllerProxy + createLogicWrapper.
|
|
32
|
+
*/
|
|
33
|
+
export declare const createState: <TCtx = any>(schema: IDefineStateSchema<TCtx>) => AnyStateMachine;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
interface ComponentData {
|
|
2
|
+
meta?: {
|
|
3
|
+
tags?: string[];
|
|
4
|
+
};
|
|
5
|
+
dynamicMeta?: {
|
|
6
|
+
tags?: string[];
|
|
7
|
+
};
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
type ComponentsList = Record<string, ComponentData>;
|
|
11
|
+
interface MatchOptions {
|
|
12
|
+
/** Учитывать ли dynamicMeta.tags при поиске. По умолчанию true. */
|
|
13
|
+
lookDynamic?: boolean;
|
|
14
|
+
/** Раскрывать ли алиасы тегов из tag-registry. По умолчанию true. */
|
|
15
|
+
expandAliases?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** Оставляет компоненты, у которых есть указанные теги (с учётом алиасов). */
|
|
18
|
+
export declare const pickByTags: (data: ComponentsList, targetTags: readonly string[], opts?: MatchOptions | boolean) => Partial<ComponentsList>;
|
|
19
|
+
/** Убирает компоненты, у которых есть указанные теги. */
|
|
20
|
+
export declare const omitByTags: (data: ComponentsList, targetTags: readonly string[], opts?: MatchOptions | boolean) => Partial<ComponentsList>;
|
|
21
|
+
/** Первый компонент с указанными тегами. */
|
|
22
|
+
export declare const matchByTags: (data: ComponentsList, targetTags: readonly string[], opts?: MatchOptions | boolean) => ComponentData | undefined;
|
|
23
|
+
/** Первый компонент + его id. */
|
|
24
|
+
export declare const matchEntryByTags: (data: ComponentsList, targetTags: readonly string[], opts?: MatchOptions | boolean) => {
|
|
25
|
+
meta?: {
|
|
26
|
+
tags?: string[];
|
|
27
|
+
};
|
|
28
|
+
dynamicMeta?: {
|
|
29
|
+
tags?: string[];
|
|
30
|
+
};
|
|
31
|
+
id: string;
|
|
32
|
+
} | undefined;
|
|
33
|
+
export {};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createState } from './create';
|
|
2
|
+
export { createBridge } from './bridge';
|
|
3
|
+
export type { IBridge, IRegisteredComponent, BridgeMatchOptions } from './bridge';
|
|
4
|
+
export type { IDefineStateSchema, IStateHandlers, IMachineContext } from './create';
|
|
5
|
+
export { pickByTags, omitByTags, matchByTags, matchEntryByTags } from './helpers';
|
|
6
|
+
export { registerAliases, clearAliases, getAliases, expandTags } from './tag-registry';
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,637 @@
|
|
|
1
|
+
import { createMachine as F, assign as a } from "xstate";
|
|
2
|
+
const Rt = (t) => {
|
|
3
|
+
const n = Object.keys(t.states), i = {};
|
|
4
|
+
for (const r of n)
|
|
5
|
+
i[`__GOTO_${r}__`] = { target: `.${r}` };
|
|
6
|
+
return F({
|
|
7
|
+
id: "capsule-fsm",
|
|
8
|
+
initial: t.initial,
|
|
9
|
+
context: {
|
|
10
|
+
data: t.context ?? {},
|
|
11
|
+
loading: !1,
|
|
12
|
+
errors: {},
|
|
13
|
+
styles: {},
|
|
14
|
+
components: {},
|
|
15
|
+
props: {}
|
|
16
|
+
},
|
|
17
|
+
states: Object.fromEntries(n.map((r) => [r, {}])),
|
|
18
|
+
on: {
|
|
19
|
+
...i,
|
|
20
|
+
SET_DATA: {
|
|
21
|
+
actions: a({
|
|
22
|
+
data: ({ context: r, event: s }) => ({ ...r.data, ...s.payload })
|
|
23
|
+
})
|
|
24
|
+
},
|
|
25
|
+
SET_LOADING: {
|
|
26
|
+
actions: a({ loading: ({ event: r }) => r.value })
|
|
27
|
+
},
|
|
28
|
+
SET_STYLES: {
|
|
29
|
+
actions: a({ styles: ({ event: r }) => r.styles })
|
|
30
|
+
},
|
|
31
|
+
SET_ERRORS: {
|
|
32
|
+
actions: a({ errors: ({ event: r }) => r.errors })
|
|
33
|
+
},
|
|
34
|
+
REGISTER_COMPONENT: {
|
|
35
|
+
actions: a({
|
|
36
|
+
components: ({ context: r, event: s }) => ({
|
|
37
|
+
...r.components,
|
|
38
|
+
...s.payload
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
},
|
|
42
|
+
UNREGISTER_COMPONENT: {
|
|
43
|
+
actions: a({
|
|
44
|
+
components: ({ context: r, event: s }) => {
|
|
45
|
+
const { [s.id]: f, ...e } = r.components;
|
|
46
|
+
return e;
|
|
47
|
+
},
|
|
48
|
+
props: ({ context: r, event: s }) => {
|
|
49
|
+
const { [s.id]: f, ...e } = r.props;
|
|
50
|
+
return e;
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
},
|
|
54
|
+
// Per-id patch'и props: мержим поверх существующего, без полной замены.
|
|
55
|
+
// payload — `{ [id]: { propName: value, ... } }`.
|
|
56
|
+
SET_PROPS: {
|
|
57
|
+
actions: a({
|
|
58
|
+
props: ({ context: r, event: s }) => {
|
|
59
|
+
const f = { ...r.props };
|
|
60
|
+
for (const [e, c] of Object.entries(s.payload))
|
|
61
|
+
f[e] = { ...f[e] ?? {}, ...c };
|
|
62
|
+
return f;
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
function $(t, n) {
|
|
70
|
+
const i = new Set(n);
|
|
71
|
+
return t.filter((r) => i.has(r));
|
|
72
|
+
}
|
|
73
|
+
function _(t) {
|
|
74
|
+
return t;
|
|
75
|
+
}
|
|
76
|
+
function h(t) {
|
|
77
|
+
return t === "__proto__";
|
|
78
|
+
}
|
|
79
|
+
function N(t) {
|
|
80
|
+
switch (typeof t) {
|
|
81
|
+
case "number":
|
|
82
|
+
case "symbol":
|
|
83
|
+
return !1;
|
|
84
|
+
case "string":
|
|
85
|
+
return t.includes(".") || t.includes("[") || t.includes("]");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function S(t) {
|
|
89
|
+
return typeof t == "string" || typeof t == "symbol" ? t : Object.is(t?.valueOf?.(), -0) ? "-0" : String(t);
|
|
90
|
+
}
|
|
91
|
+
function M(t) {
|
|
92
|
+
if (t == null)
|
|
93
|
+
return "";
|
|
94
|
+
if (typeof t == "string")
|
|
95
|
+
return t;
|
|
96
|
+
if (Array.isArray(t))
|
|
97
|
+
return t.map(M).join(",");
|
|
98
|
+
const n = String(t);
|
|
99
|
+
return n === "0" && Object.is(Number(t), -0) ? "-0" : n;
|
|
100
|
+
}
|
|
101
|
+
function B(t) {
|
|
102
|
+
if (Array.isArray(t))
|
|
103
|
+
return t.map(S);
|
|
104
|
+
if (typeof t == "symbol")
|
|
105
|
+
return [t];
|
|
106
|
+
t = M(t);
|
|
107
|
+
const n = [], i = t.length;
|
|
108
|
+
if (i === 0)
|
|
109
|
+
return n;
|
|
110
|
+
let r = 0, s = "", f = "", e = !1;
|
|
111
|
+
for (t.charCodeAt(0) === 46 && (n.push(""), r++); r < i; ) {
|
|
112
|
+
const c = t[r];
|
|
113
|
+
f ? c === "\\" && r + 1 < i ? (r++, s += t[r]) : c === f ? f = "" : s += c : e ? c === '"' || c === "'" ? f = c : c === "]" ? (e = !1, n.push(s), s = "") : s += c : c === "[" ? (e = !0, s && (n.push(s), s = "")) : c === "." ? s && (n.push(s), s = "") : s += c, r++;
|
|
114
|
+
}
|
|
115
|
+
return s && n.push(s), n;
|
|
116
|
+
}
|
|
117
|
+
function E(t, n, i) {
|
|
118
|
+
if (t == null)
|
|
119
|
+
return i;
|
|
120
|
+
switch (typeof n) {
|
|
121
|
+
case "string": {
|
|
122
|
+
if (h(n))
|
|
123
|
+
return i;
|
|
124
|
+
const r = t[n];
|
|
125
|
+
return r === void 0 ? N(n) ? E(t, B(n), i) : i : r;
|
|
126
|
+
}
|
|
127
|
+
case "number":
|
|
128
|
+
case "symbol": {
|
|
129
|
+
typeof n == "number" && (n = S(n));
|
|
130
|
+
const r = t[n];
|
|
131
|
+
return r === void 0 ? i : r;
|
|
132
|
+
}
|
|
133
|
+
default: {
|
|
134
|
+
if (Array.isArray(n))
|
|
135
|
+
return z(t, n, i);
|
|
136
|
+
if (Object.is(n?.valueOf(), -0) ? n = "-0" : n = String(n), h(n))
|
|
137
|
+
return i;
|
|
138
|
+
const r = t[n];
|
|
139
|
+
return r === void 0 ? i : r;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function z(t, n, i) {
|
|
144
|
+
if (n.length === 0)
|
|
145
|
+
return i;
|
|
146
|
+
let r = t;
|
|
147
|
+
for (let s = 0; s < n.length; s++) {
|
|
148
|
+
if (r == null || h(n[s]))
|
|
149
|
+
return i;
|
|
150
|
+
r = r[n[s]];
|
|
151
|
+
}
|
|
152
|
+
return r === void 0 ? i : r;
|
|
153
|
+
}
|
|
154
|
+
function Y(t) {
|
|
155
|
+
return function(n) {
|
|
156
|
+
return E(n, t);
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function X(t) {
|
|
160
|
+
return t !== null && (typeof t == "object" || typeof t == "function");
|
|
161
|
+
}
|
|
162
|
+
function A(t) {
|
|
163
|
+
return t == null || typeof t != "object" && typeof t != "function";
|
|
164
|
+
}
|
|
165
|
+
function j(t, n) {
|
|
166
|
+
return t === n || Number.isNaN(t) && Number.isNaN(n);
|
|
167
|
+
}
|
|
168
|
+
function D(t, n, i) {
|
|
169
|
+
return typeof i != "function" ? D(t, n, () => {
|
|
170
|
+
}) : O(t, n, function r(s, f, e, c, u, y) {
|
|
171
|
+
const g = i(s, f, e, c, u, y);
|
|
172
|
+
return g !== void 0 ? !!g : O(s, f, r, y);
|
|
173
|
+
}, /* @__PURE__ */ new Map());
|
|
174
|
+
}
|
|
175
|
+
function O(t, n, i, r) {
|
|
176
|
+
if (n === t)
|
|
177
|
+
return !0;
|
|
178
|
+
switch (typeof n) {
|
|
179
|
+
case "object":
|
|
180
|
+
return Z(t, n, i, r);
|
|
181
|
+
case "function":
|
|
182
|
+
return Object.keys(n).length > 0 ? O(t, { ...n }, i, r) : j(t, n);
|
|
183
|
+
default:
|
|
184
|
+
return X(t) ? typeof n == "string" ? n === "" : !0 : j(t, n);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function Z(t, n, i, r) {
|
|
188
|
+
if (n == null)
|
|
189
|
+
return !0;
|
|
190
|
+
if (Array.isArray(n))
|
|
191
|
+
return I(t, n, i, r);
|
|
192
|
+
if (n instanceof Map)
|
|
193
|
+
return H(t, n, i, r);
|
|
194
|
+
if (n instanceof Set)
|
|
195
|
+
return J(t, n, i, r);
|
|
196
|
+
const s = Object.keys(n);
|
|
197
|
+
if (t == null || A(t))
|
|
198
|
+
return s.length === 0;
|
|
199
|
+
if (s.length === 0)
|
|
200
|
+
return !0;
|
|
201
|
+
if (r?.has(n))
|
|
202
|
+
return r.get(n) === t;
|
|
203
|
+
r?.set(n, t);
|
|
204
|
+
try {
|
|
205
|
+
for (let f = 0; f < s.length; f++) {
|
|
206
|
+
const e = s[f];
|
|
207
|
+
if (!A(t) && !(e in t) || n[e] === void 0 && t[e] !== void 0 || n[e] === null && t[e] !== null || !i(t[e], n[e], e, t, n, r))
|
|
208
|
+
return !1;
|
|
209
|
+
}
|
|
210
|
+
return !0;
|
|
211
|
+
} finally {
|
|
212
|
+
r?.delete(n);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
function H(t, n, i, r) {
|
|
216
|
+
if (n.size === 0)
|
|
217
|
+
return !0;
|
|
218
|
+
if (!(t instanceof Map))
|
|
219
|
+
return !1;
|
|
220
|
+
for (const [s, f] of n.entries()) {
|
|
221
|
+
const e = t.get(s);
|
|
222
|
+
if (i(e, f, s, t, n, r) === !1)
|
|
223
|
+
return !1;
|
|
224
|
+
}
|
|
225
|
+
return !0;
|
|
226
|
+
}
|
|
227
|
+
function I(t, n, i, r) {
|
|
228
|
+
if (n.length === 0)
|
|
229
|
+
return !0;
|
|
230
|
+
if (!Array.isArray(t))
|
|
231
|
+
return !1;
|
|
232
|
+
const s = /* @__PURE__ */ new Set();
|
|
233
|
+
for (let f = 0; f < n.length; f++) {
|
|
234
|
+
const e = n[f];
|
|
235
|
+
let c = !1;
|
|
236
|
+
for (let u = 0; u < t.length; u++) {
|
|
237
|
+
if (s.has(u))
|
|
238
|
+
continue;
|
|
239
|
+
const y = t[u];
|
|
240
|
+
let g = !1;
|
|
241
|
+
if (i(y, e, f, t, n, r) && (g = !0), g) {
|
|
242
|
+
s.add(u), c = !0;
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (!c)
|
|
247
|
+
return !1;
|
|
248
|
+
}
|
|
249
|
+
return !0;
|
|
250
|
+
}
|
|
251
|
+
function J(t, n, i, r) {
|
|
252
|
+
return n.size === 0 ? !0 : t instanceof Set ? I([...t], [...n], i, r) : !1;
|
|
253
|
+
}
|
|
254
|
+
function P(t, n) {
|
|
255
|
+
return D(t, n, () => {
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
function Q(t) {
|
|
259
|
+
return Object.getOwnPropertySymbols(t).filter((n) => Object.prototype.propertyIsEnumerable.call(t, n));
|
|
260
|
+
}
|
|
261
|
+
function w(t) {
|
|
262
|
+
return t == null ? t === void 0 ? "[object Undefined]" : "[object Null]" : Object.prototype.toString.call(t);
|
|
263
|
+
}
|
|
264
|
+
const k = "[object RegExp]", R = "[object String]", q = "[object Number]", G = "[object Boolean]", U = "[object Arguments]", K = "[object Symbol]", V = "[object Date]", T = "[object Map]", C = "[object Set]", v = "[object Array]", tt = "[object ArrayBuffer]", L = "[object Object]", nt = "[object DataView]", rt = "[object Uint8Array]", et = "[object Uint8ClampedArray]", it = "[object Uint16Array]", st = "[object Uint32Array]", ft = "[object Int8Array]", ct = "[object Int16Array]", ut = "[object Int32Array]", ot = "[object Float32Array]", yt = "[object Float64Array]", x = typeof globalThis == "object" && globalThis || typeof window == "object" && window || typeof self == "object" && self || typeof global == "object" && global || /* @__PURE__ */ (function() {
|
|
265
|
+
return this;
|
|
266
|
+
})() || Function("return this")();
|
|
267
|
+
function at(t) {
|
|
268
|
+
return typeof x.Buffer < "u" && x.Buffer.isBuffer(t);
|
|
269
|
+
}
|
|
270
|
+
function dt(t) {
|
|
271
|
+
return ArrayBuffer.isView(t) && !(t instanceof DataView);
|
|
272
|
+
}
|
|
273
|
+
function gt(t, n) {
|
|
274
|
+
return d(t, void 0, t, /* @__PURE__ */ new Map(), n);
|
|
275
|
+
}
|
|
276
|
+
function d(t, n, i, r = /* @__PURE__ */ new Map(), s = void 0) {
|
|
277
|
+
const f = s?.(t, n, i, r);
|
|
278
|
+
if (f !== void 0)
|
|
279
|
+
return f;
|
|
280
|
+
if (A(t))
|
|
281
|
+
return t;
|
|
282
|
+
if (r.has(t))
|
|
283
|
+
return r.get(t);
|
|
284
|
+
if (Array.isArray(t)) {
|
|
285
|
+
const e = new Array(t.length);
|
|
286
|
+
r.set(t, e);
|
|
287
|
+
for (let c = 0; c < t.length; c++)
|
|
288
|
+
e[c] = d(t[c], c, i, r, s);
|
|
289
|
+
return Object.hasOwn(t, "index") && (e.index = t.index), Object.hasOwn(t, "input") && (e.input = t.input), e;
|
|
290
|
+
}
|
|
291
|
+
if (t instanceof Date)
|
|
292
|
+
return new Date(t.getTime());
|
|
293
|
+
if (t instanceof RegExp) {
|
|
294
|
+
const e = new RegExp(t.source, t.flags);
|
|
295
|
+
return e.lastIndex = t.lastIndex, e;
|
|
296
|
+
}
|
|
297
|
+
if (t instanceof Map) {
|
|
298
|
+
const e = /* @__PURE__ */ new Map();
|
|
299
|
+
r.set(t, e);
|
|
300
|
+
for (const [c, u] of t)
|
|
301
|
+
e.set(c, d(u, c, i, r, s));
|
|
302
|
+
return e;
|
|
303
|
+
}
|
|
304
|
+
if (t instanceof Set) {
|
|
305
|
+
const e = /* @__PURE__ */ new Set();
|
|
306
|
+
r.set(t, e);
|
|
307
|
+
for (const c of t)
|
|
308
|
+
e.add(d(c, void 0, i, r, s));
|
|
309
|
+
return e;
|
|
310
|
+
}
|
|
311
|
+
if (at(t))
|
|
312
|
+
return t.subarray();
|
|
313
|
+
if (dt(t)) {
|
|
314
|
+
const e = new (Object.getPrototypeOf(t)).constructor(t.length);
|
|
315
|
+
r.set(t, e);
|
|
316
|
+
for (let c = 0; c < t.length; c++)
|
|
317
|
+
e[c] = d(t[c], c, i, r, s);
|
|
318
|
+
return e;
|
|
319
|
+
}
|
|
320
|
+
if (t instanceof ArrayBuffer || typeof SharedArrayBuffer < "u" && t instanceof SharedArrayBuffer)
|
|
321
|
+
return t.slice(0);
|
|
322
|
+
if (t instanceof DataView) {
|
|
323
|
+
const e = new DataView(t.buffer.slice(0), t.byteOffset, t.byteLength);
|
|
324
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
325
|
+
}
|
|
326
|
+
if (typeof File < "u" && t instanceof File) {
|
|
327
|
+
const e = new File([t], t.name, {
|
|
328
|
+
type: t.type
|
|
329
|
+
});
|
|
330
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
331
|
+
}
|
|
332
|
+
if (typeof Blob < "u" && t instanceof Blob) {
|
|
333
|
+
const e = new Blob([t], { type: t.type });
|
|
334
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
335
|
+
}
|
|
336
|
+
if (t instanceof Error) {
|
|
337
|
+
const e = structuredClone(t);
|
|
338
|
+
return r.set(t, e), e.message = t.message, e.name = t.name, e.stack = t.stack, e.cause = t.cause, e.constructor = t.constructor, o(e, t, i, r, s), e;
|
|
339
|
+
}
|
|
340
|
+
if (t instanceof Boolean) {
|
|
341
|
+
const e = new Boolean(t.valueOf());
|
|
342
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
343
|
+
}
|
|
344
|
+
if (t instanceof Number) {
|
|
345
|
+
const e = new Number(t.valueOf());
|
|
346
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
347
|
+
}
|
|
348
|
+
if (t instanceof String) {
|
|
349
|
+
const e = new String(t.valueOf());
|
|
350
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
351
|
+
}
|
|
352
|
+
if (typeof t == "object" && pt(t)) {
|
|
353
|
+
const e = Object.create(Object.getPrototypeOf(t));
|
|
354
|
+
return r.set(t, e), o(e, t, i, r, s), e;
|
|
355
|
+
}
|
|
356
|
+
return t;
|
|
357
|
+
}
|
|
358
|
+
function o(t, n, i = t, r, s) {
|
|
359
|
+
const f = [...Object.keys(n), ...Q(n)];
|
|
360
|
+
for (let e = 0; e < f.length; e++) {
|
|
361
|
+
const c = f[e], u = Object.getOwnPropertyDescriptor(t, c);
|
|
362
|
+
(u == null || u.writable) && (t[c] = d(n[c], c, i, r, s));
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
function pt(t) {
|
|
366
|
+
switch (w(t)) {
|
|
367
|
+
case U:
|
|
368
|
+
case v:
|
|
369
|
+
case tt:
|
|
370
|
+
case nt:
|
|
371
|
+
case G:
|
|
372
|
+
case V:
|
|
373
|
+
case ot:
|
|
374
|
+
case yt:
|
|
375
|
+
case ft:
|
|
376
|
+
case ct:
|
|
377
|
+
case ut:
|
|
378
|
+
case T:
|
|
379
|
+
case q:
|
|
380
|
+
case L:
|
|
381
|
+
case k:
|
|
382
|
+
case C:
|
|
383
|
+
case R:
|
|
384
|
+
case K:
|
|
385
|
+
case rt:
|
|
386
|
+
case et:
|
|
387
|
+
case it:
|
|
388
|
+
case st:
|
|
389
|
+
return !0;
|
|
390
|
+
default:
|
|
391
|
+
return !1;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
function bt(t) {
|
|
395
|
+
return d(t, void 0, t, /* @__PURE__ */ new Map(), void 0);
|
|
396
|
+
}
|
|
397
|
+
function mt(t) {
|
|
398
|
+
return t = bt(t), (n) => P(n, t);
|
|
399
|
+
}
|
|
400
|
+
function ht(t, n) {
|
|
401
|
+
return gt(t, (i, r, s, f) => {
|
|
402
|
+
if (typeof t == "object") {
|
|
403
|
+
if (w(t) === L && typeof t.constructor != "function") {
|
|
404
|
+
const e = {};
|
|
405
|
+
return f.set(t, e), o(e, t, s, f), e;
|
|
406
|
+
}
|
|
407
|
+
switch (Object.prototype.toString.call(t)) {
|
|
408
|
+
case q:
|
|
409
|
+
case R:
|
|
410
|
+
case G: {
|
|
411
|
+
const e = new t.constructor(t?.valueOf());
|
|
412
|
+
return o(e, t), e;
|
|
413
|
+
}
|
|
414
|
+
case U: {
|
|
415
|
+
const e = {};
|
|
416
|
+
return o(e, t), e.length = t.length, e[Symbol.iterator] = t[Symbol.iterator], e;
|
|
417
|
+
}
|
|
418
|
+
default:
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
function At(t) {
|
|
425
|
+
return ht(t);
|
|
426
|
+
}
|
|
427
|
+
const Ot = /^(?:0|[1-9]\d*)$/;
|
|
428
|
+
function St(t, n = Number.MAX_SAFE_INTEGER) {
|
|
429
|
+
switch (typeof t) {
|
|
430
|
+
case "number":
|
|
431
|
+
return Number.isInteger(t) && t >= 0 && t < n;
|
|
432
|
+
case "symbol":
|
|
433
|
+
return !1;
|
|
434
|
+
case "string":
|
|
435
|
+
return Ot.test(t);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
function Et(t) {
|
|
439
|
+
return t !== null && typeof t == "object" && w(t) === "[object Arguments]";
|
|
440
|
+
}
|
|
441
|
+
function wt(t, n) {
|
|
442
|
+
let i;
|
|
443
|
+
if (Array.isArray(n) ? i = n : typeof n == "string" && N(n) && t?.[n] == null ? i = B(n) : i = [n], i.length === 0)
|
|
444
|
+
return !1;
|
|
445
|
+
let r = t;
|
|
446
|
+
for (let s = 0; s < i.length; s++) {
|
|
447
|
+
const f = i[s];
|
|
448
|
+
if ((r == null || !Object.hasOwn(r, f)) && !((Array.isArray(r) || Et(r)) && St(f) && f < r.length))
|
|
449
|
+
return !1;
|
|
450
|
+
r = r[f];
|
|
451
|
+
}
|
|
452
|
+
return !0;
|
|
453
|
+
}
|
|
454
|
+
function jt(t, n) {
|
|
455
|
+
switch (typeof t) {
|
|
456
|
+
case "object": {
|
|
457
|
+
Object.is(t?.valueOf(), -0) && (t = "-0");
|
|
458
|
+
break;
|
|
459
|
+
}
|
|
460
|
+
case "number": {
|
|
461
|
+
t = S(t);
|
|
462
|
+
break;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return n = At(n), function(i) {
|
|
466
|
+
const r = E(i, t);
|
|
467
|
+
return r === void 0 ? wt(i, t) : n === void 0 ? r === void 0 : P(r, n);
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
function xt(t) {
|
|
471
|
+
if (t == null)
|
|
472
|
+
return _;
|
|
473
|
+
switch (typeof t) {
|
|
474
|
+
case "function":
|
|
475
|
+
return t;
|
|
476
|
+
case "object":
|
|
477
|
+
return Array.isArray(t) && t.length === 2 ? jt(t[0], t[1]) : mt(t);
|
|
478
|
+
case "string":
|
|
479
|
+
case "symbol":
|
|
480
|
+
case "number":
|
|
481
|
+
return Y(t);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
function W(t, n = _, i = 0) {
|
|
485
|
+
if (!t)
|
|
486
|
+
return;
|
|
487
|
+
i < 0 && (i = Math.max(t.length + i, 0));
|
|
488
|
+
const r = xt(n);
|
|
489
|
+
if (!Array.isArray(t)) {
|
|
490
|
+
const s = Object.keys(t);
|
|
491
|
+
for (let f = i; f < s.length; f++) {
|
|
492
|
+
const e = s[f], c = t[e];
|
|
493
|
+
if (r(c, e, t))
|
|
494
|
+
return c;
|
|
495
|
+
}
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
return t.slice(i).find(r);
|
|
499
|
+
}
|
|
500
|
+
function lt(t, n) {
|
|
501
|
+
const i = {}, r = Object.keys(t);
|
|
502
|
+
for (let s = 0; s < r.length; s++) {
|
|
503
|
+
const f = r[s], e = t[f];
|
|
504
|
+
n(e, f) || (i[f] = e);
|
|
505
|
+
}
|
|
506
|
+
return i;
|
|
507
|
+
}
|
|
508
|
+
function _t(t, n) {
|
|
509
|
+
const i = {}, r = Object.keys(t);
|
|
510
|
+
for (let s = 0; s < r.length; s++) {
|
|
511
|
+
const f = r[s], e = t[f];
|
|
512
|
+
n(e, f) && (i[f] = e);
|
|
513
|
+
}
|
|
514
|
+
return i;
|
|
515
|
+
}
|
|
516
|
+
let p = {
|
|
517
|
+
// Минимальные дефолты. Разработчик может расширить через `registerAliases(...)`
|
|
518
|
+
// или сбросить через `clearAliases()` + `registerAliases(...)`.
|
|
519
|
+
"@inputs": ["email", "password", "phone", "text", "number"],
|
|
520
|
+
"@actions": ["submit", "cancel", "reset"]
|
|
521
|
+
};
|
|
522
|
+
const qt = (t) => {
|
|
523
|
+
p = { ...p, ...t };
|
|
524
|
+
}, Gt = () => {
|
|
525
|
+
p = {};
|
|
526
|
+
}, Ut = () => p, Nt = (t) => {
|
|
527
|
+
const n = /* @__PURE__ */ new Set(), i = [...t], r = /* @__PURE__ */ new Set();
|
|
528
|
+
for (; i.length > 0; ) {
|
|
529
|
+
const s = i.shift();
|
|
530
|
+
if (r.has(s)) continue;
|
|
531
|
+
r.add(s), n.add(s);
|
|
532
|
+
const f = p[s];
|
|
533
|
+
if (f)
|
|
534
|
+
for (const e of f)
|
|
535
|
+
r.has(e) || i.push(e);
|
|
536
|
+
}
|
|
537
|
+
return [...n];
|
|
538
|
+
}, b = (t, n, i) => {
|
|
539
|
+
const r = t.meta?.tags ?? [], s = i.lookDynamic ? t.dynamicMeta?.tags ?? [] : [], f = [...r, ...s], e = i.expandAliases ? Nt(n) : n;
|
|
540
|
+
return $(f, e).length > 0;
|
|
541
|
+
}, m = (t) => typeof t == "boolean" ? { lookDynamic: t, expandAliases: !0 } : {
|
|
542
|
+
lookDynamic: t?.lookDynamic ?? !0,
|
|
543
|
+
expandAliases: t?.expandAliases ?? !0
|
|
544
|
+
}, l = (t, n, i) => {
|
|
545
|
+
const r = m(i);
|
|
546
|
+
return _t(t, (s) => b(s, n, r));
|
|
547
|
+
}, Mt = (t, n, i) => {
|
|
548
|
+
const r = m(i);
|
|
549
|
+
return lt(t, (s) => b(s, n, r));
|
|
550
|
+
}, Bt = (t, n, i) => {
|
|
551
|
+
const r = m(i);
|
|
552
|
+
return W(Object.values(t), (s) => b(s, n, r));
|
|
553
|
+
}, Dt = (t, n, i) => {
|
|
554
|
+
const r = m(i), s = W(Object.entries(t), ([, f]) => b(f, n, r));
|
|
555
|
+
return s ? { id: s[0], ...s[1] } : void 0;
|
|
556
|
+
}, Lt = (t, n) => ({
|
|
557
|
+
// снимки
|
|
558
|
+
get ctx() {
|
|
559
|
+
return t.context;
|
|
560
|
+
},
|
|
561
|
+
get loading() {
|
|
562
|
+
return t.context?.loading;
|
|
563
|
+
},
|
|
564
|
+
get styles() {
|
|
565
|
+
return t.context?.styles ?? {};
|
|
566
|
+
},
|
|
567
|
+
get errors() {
|
|
568
|
+
return t.context?.errors ?? {};
|
|
569
|
+
},
|
|
570
|
+
get components() {
|
|
571
|
+
return t.context?.components ?? {};
|
|
572
|
+
},
|
|
573
|
+
get props() {
|
|
574
|
+
return t.context?.props ?? {};
|
|
575
|
+
},
|
|
576
|
+
// мутации
|
|
577
|
+
update: (i) => n({ type: "SET_DATA", payload: i }),
|
|
578
|
+
setLoading: (i) => n({ type: "SET_LOADING", value: i }),
|
|
579
|
+
setStyles: (i) => n({ type: "SET_STYLES", styles: i }),
|
|
580
|
+
setErrors: (i) => n({ type: "SET_ERRORS", errors: i }),
|
|
581
|
+
/**
|
|
582
|
+
* Patch'ит дополнительные props у компонентов по id. Каждый id мержится:
|
|
583
|
+
* `setProps({ id1: { active: true } })` оставит другие поля у id1 нетронутыми.
|
|
584
|
+
* UiProxy подмешивает эти props при рендере поверх статичных prop'ов JSX.
|
|
585
|
+
*
|
|
586
|
+
* Низкоуровневый API — для адресных patch'ей по уже известному id.
|
|
587
|
+
* Для tag-based update'ов используй `patch(tags, ...)` ниже.
|
|
588
|
+
*/
|
|
589
|
+
setProps: (i) => {
|
|
590
|
+
n({ type: "SET_PROPS", payload: i });
|
|
591
|
+
},
|
|
592
|
+
registerComponent: (i) => n({ type: "REGISTER_COMPONENT", payload: i }),
|
|
593
|
+
unregisterComponent: (i) => n({ type: "UNREGISTER_COMPONENT", id: i }),
|
|
594
|
+
// tag-операции (объединяют meta.tags + dynamicMeta.tags, раскрывают алиасы)
|
|
595
|
+
pick: (i, r) => l(t.context?.components ?? {}, i, r),
|
|
596
|
+
omit: (i, r) => Mt(t.context?.components ?? {}, i, r),
|
|
597
|
+
match: (i, r) => Bt(t.context?.components ?? {}, i, r),
|
|
598
|
+
matchEntry: (i, r) => Dt(t.context?.components ?? {}, i, r),
|
|
599
|
+
/**
|
|
600
|
+
* Tag-based мутатор — симметричен `pick/omit/match/matchEntry`. Находит
|
|
601
|
+
* компоненты по тегам (та же логика что у `pick`) и мержит patch к их
|
|
602
|
+
* runtime-props (через SET_PROPS).
|
|
603
|
+
*
|
|
604
|
+
* `patchOrFn`:
|
|
605
|
+
* - **объект** → один и тот же patch применяется ко всем совпадениям:
|
|
606
|
+
* `store.patch(['logout'], { disabled: true })`
|
|
607
|
+
* - **функция** `(comp, id) => patch | null | undefined` → per-component
|
|
608
|
+
* patch; возврат falsy/`{}` пропускает этот id:
|
|
609
|
+
* `store.patch(['nav'], (c) => ({ active: c.meta?.href === path }))`
|
|
610
|
+
*
|
|
611
|
+
* `opts` — те же что у `pick` (`lookDynamic`, `expandAliases`).
|
|
612
|
+
*
|
|
613
|
+
* Один `send({type: 'SET_PROPS'})` на все совпадения — атомарный update,
|
|
614
|
+
* без N-кратных перерендеров.
|
|
615
|
+
*/
|
|
616
|
+
patch: (i, r, s) => {
|
|
617
|
+
const f = l(t.context?.components ?? {}, i, s), e = {};
|
|
618
|
+
for (const [c, u] of Object.entries(f)) {
|
|
619
|
+
const y = typeof r == "function" ? r(u, c) : r;
|
|
620
|
+
y && Object.keys(y).length && (e[c] = y);
|
|
621
|
+
}
|
|
622
|
+
Object.keys(e).length && n({ type: "SET_PROPS", payload: e });
|
|
623
|
+
}
|
|
624
|
+
});
|
|
625
|
+
export {
|
|
626
|
+
Gt as clearAliases,
|
|
627
|
+
Lt as createBridge,
|
|
628
|
+
Rt as createState,
|
|
629
|
+
Nt as expandTags,
|
|
630
|
+
Ut as getAliases,
|
|
631
|
+
Bt as matchByTags,
|
|
632
|
+
Dt as matchEntryByTags,
|
|
633
|
+
Mt as omitByTags,
|
|
634
|
+
l as pickByTags,
|
|
635
|
+
qt as registerAliases
|
|
636
|
+
};
|
|
637
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../src/create.ts","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/array/intersection.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/function/identity.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/_internal/isUnsafeProperty.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/_internal/isDeepKey.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/_internal/toKey.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/util/toString.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/util/toPath.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/object/get.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/object/property.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/predicate/isObject.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/predicate/isPrimitive.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/_internal/isEqualsSameValueZero.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/predicate/isMatchWith.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/predicate/isMatch.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/_internal/getSymbols.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/_internal/getTag.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/_internal/tags.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/_internal/globalThis.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/predicate/isBuffer.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/predicate/isTypedArray.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/object/cloneDeepWith.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/object/cloneDeep.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/predicate/matches.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/object/cloneDeepWith.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/object/cloneDeep.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/_internal/isIndex.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/predicate/isArguments.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/object/has.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/util/iteratee.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/compat/array/find.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/object/omitBy.mjs","../../../../node_modules/.pnpm/es-toolkit@1.46.1/node_modules/es-toolkit/dist/object/pickBy.mjs","../src/tag-registry.ts","../src/helpers.ts","../src/bridge.ts"],"sourcesContent":["import { type AnyStateMachine, assign, createMachine } from 'xstate';\n\nexport interface IStateHandlers {\n onInit?: (api: any) => any;\n onExit?: (api: any) => any;\n [methodName: string]: ((api: any) => any) | undefined;\n}\n\nexport interface IDefineStateSchema<TCtx = any> {\n initial: string;\n context?: TCtx;\n states: Record<string, IStateHandlers>;\n [methodName: string]: any;\n}\n\nexport interface IMachineContext<TCtx = any> {\n data: TCtx;\n loading: boolean;\n errors: Record<string, string>;\n styles: Record<string, string>;\n components: Record<string, any>;\n /**\n * Динамические patch'и props у компонентов, индексированные по id.\n * Контроллер пишет сюда через `store.setProps({...})`; UiProxy при рендере\n * мержит эти значения поверх статичных props у компонента с тем же id.\n * Канал общего назначения — для `active`, кастомных флагов, и пр.\n */\n props: Record<string, Record<string, any>>;\n}\n\n/**\n * Строит XState-машину из пользовательской HCA-схемы.\n * Машина владеет: списком стейтов, переходами (через __GOTO_*) и универсальными store-мутациями.\n * UI-события (onClick, onInput, ...) и onInit/onExit обрабатываются НЕ через XState event-bus —\n * см. ControllerProxy + createLogicWrapper.\n */\nexport const createState = <TCtx = any>(schema: IDefineStateSchema<TCtx>): AnyStateMachine => {\n const stateNames = Object.keys(schema.states);\n\n const gotoTransitions: Record<string, any> = {};\n for (const name of stateNames) {\n gotoTransitions[`__GOTO_${name}__`] = { target: `.${name}` };\n }\n\n return createMachine({\n id: 'capsule-fsm',\n initial: schema.initial,\n context: {\n data: (schema.context ?? {}) as any,\n loading: false,\n errors: {},\n styles: {},\n components: {},\n props: {},\n },\n states: Object.fromEntries(stateNames.map((s) => [s, {}])) as any,\n on: {\n ...gotoTransitions,\n SET_DATA: {\n actions: assign({\n data: ({ context, event }: any) => ({ ...context.data, ...event.payload }),\n }),\n },\n SET_LOADING: {\n actions: assign({ loading: ({ event }: any) => event.value }),\n },\n SET_STYLES: {\n actions: assign({ styles: ({ event }: any) => event.styles }),\n },\n SET_ERRORS: {\n actions: assign({ errors: ({ event }: any) => event.errors }),\n },\n REGISTER_COMPONENT: {\n actions: assign({\n components: ({ context, event }: any) => ({\n ...context.components,\n ...event.payload,\n }),\n }),\n },\n UNREGISTER_COMPONENT: {\n actions: assign({\n components: ({ context, event }: any) => {\n const { [event.id]: _, ...rest } = context.components;\n return rest;\n },\n props: ({ context, event }: any) => {\n const { [event.id]: _, ...rest } = context.props;\n return rest;\n },\n }),\n },\n // Per-id patch'и props: мержим поверх существующего, без полной замены.\n // payload — `{ [id]: { propName: value, ... } }`.\n SET_PROPS: {\n actions: assign({\n props: ({ context, event }: any) => {\n const next = { ...context.props };\n for (const [id, patch] of Object.entries(event.payload as Record<string, any>)) {\n next[id] = { ...(next[id] ?? {}), ...patch };\n }\n return next;\n },\n }),\n },\n },\n });\n};\n","function intersection(firstArr, secondArr) {\n const secondSet = new Set(secondArr);\n return firstArr.filter(item => secondSet.has(item));\n}\n\nexport { intersection };\n","function identity(x) {\n return x;\n}\n\nexport { identity };\n","function isUnsafeProperty(key) {\n return key === '__proto__';\n}\n\nexport { isUnsafeProperty };\n","function isDeepKey(key) {\n switch (typeof key) {\n case 'number':\n case 'symbol': {\n return false;\n }\n case 'string': {\n return key.includes('.') || key.includes('[') || key.includes(']');\n }\n }\n}\n\nexport { isDeepKey };\n","function toKey(value) {\n if (typeof value === 'string' || typeof value === 'symbol') {\n return value;\n }\n if (Object.is(value?.valueOf?.(), -0)) {\n return '-0';\n }\n return String(value);\n}\n\nexport { toKey };\n","function toString(value) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n if (Array.isArray(value)) {\n return value.map(toString).join(',');\n }\n const result = String(value);\n if (result === '0' && Object.is(Number(value), -0)) {\n return '-0';\n }\n return result;\n}\n\nexport { toString };\n","import { toString } from './toString.mjs';\nimport { toKey } from '../_internal/toKey.mjs';\n\nfunction toPath(deepKey) {\n if (Array.isArray(deepKey)) {\n return deepKey.map(toKey);\n }\n if (typeof deepKey === 'symbol') {\n return [deepKey];\n }\n deepKey = toString(deepKey);\n const result = [];\n const length = deepKey.length;\n if (length === 0) {\n return result;\n }\n let index = 0;\n let key = '';\n let quoteChar = '';\n let bracket = false;\n if (deepKey.charCodeAt(0) === 46) {\n result.push('');\n index++;\n }\n while (index < length) {\n const char = deepKey[index];\n if (quoteChar) {\n if (char === '\\\\' && index + 1 < length) {\n index++;\n key += deepKey[index];\n }\n else if (char === quoteChar) {\n quoteChar = '';\n }\n else {\n key += char;\n }\n }\n else if (bracket) {\n if (char === '\"' || char === \"'\") {\n quoteChar = char;\n }\n else if (char === ']') {\n bracket = false;\n result.push(key);\n key = '';\n }\n else {\n key += char;\n }\n }\n else {\n if (char === '[') {\n bracket = true;\n if (key) {\n result.push(key);\n key = '';\n }\n }\n else if (char === '.') {\n if (key) {\n result.push(key);\n key = '';\n }\n }\n else {\n key += char;\n }\n }\n index++;\n }\n if (key) {\n result.push(key);\n }\n return result;\n}\n\nexport { toPath };\n","import { isUnsafeProperty } from '../../_internal/isUnsafeProperty.mjs';\nimport { isDeepKey } from '../_internal/isDeepKey.mjs';\nimport { toKey } from '../_internal/toKey.mjs';\nimport { toPath } from '../util/toPath.mjs';\n\nfunction get(object, path, defaultValue) {\n if (object == null) {\n return defaultValue;\n }\n switch (typeof path) {\n case 'string': {\n if (isUnsafeProperty(path)) {\n return defaultValue;\n }\n const result = object[path];\n if (result === undefined) {\n if (isDeepKey(path)) {\n return get(object, toPath(path), defaultValue);\n }\n else {\n return defaultValue;\n }\n }\n return result;\n }\n case 'number':\n case 'symbol': {\n if (typeof path === 'number') {\n path = toKey(path);\n }\n const result = object[path];\n if (result === undefined) {\n return defaultValue;\n }\n return result;\n }\n default: {\n if (Array.isArray(path)) {\n return getWithPath(object, path, defaultValue);\n }\n if (Object.is(path?.valueOf(), -0)) {\n path = '-0';\n }\n else {\n path = String(path);\n }\n if (isUnsafeProperty(path)) {\n return defaultValue;\n }\n const result = object[path];\n if (result === undefined) {\n return defaultValue;\n }\n return result;\n }\n }\n}\nfunction getWithPath(object, path, defaultValue) {\n if (path.length === 0) {\n return defaultValue;\n }\n let current = object;\n for (let index = 0; index < path.length; index++) {\n if (current == null) {\n return defaultValue;\n }\n if (isUnsafeProperty(path[index])) {\n return defaultValue;\n }\n current = current[path[index]];\n }\n if (current === undefined) {\n return defaultValue;\n }\n return current;\n}\n\nexport { get };\n","import { get } from './get.mjs';\n\nfunction property(path) {\n return function (object) {\n return get(object, path);\n };\n}\n\nexport { property };\n","function isObject(value) {\n return value !== null && (typeof value === 'object' || typeof value === 'function');\n}\n\nexport { isObject };\n","function isPrimitive(value) {\n return value == null || (typeof value !== 'object' && typeof value !== 'function');\n}\n\nexport { isPrimitive };\n","function isEqualsSameValueZero(value, other) {\n return value === other || (Number.isNaN(value) && Number.isNaN(other));\n}\n\nexport { isEqualsSameValueZero };\n","import { isObject } from './isObject.mjs';\nimport { isPrimitive } from '../../predicate/isPrimitive.mjs';\nimport { isEqualsSameValueZero } from '../../_internal/isEqualsSameValueZero.mjs';\n\nfunction isMatchWith(target, source, compare) {\n if (typeof compare !== 'function') {\n return isMatchWith(target, source, () => undefined);\n }\n return isMatchWithInternal(target, source, function doesMatch(objValue, srcValue, key, object, source, stack) {\n const isEqual = compare(objValue, srcValue, key, object, source, stack);\n if (isEqual !== undefined) {\n return Boolean(isEqual);\n }\n return isMatchWithInternal(objValue, srcValue, doesMatch, stack);\n }, new Map());\n}\nfunction isMatchWithInternal(target, source, compare, stack) {\n if (source === target) {\n return true;\n }\n switch (typeof source) {\n case 'object': {\n return isObjectMatch(target, source, compare, stack);\n }\n case 'function': {\n const sourceKeys = Object.keys(source);\n if (sourceKeys.length > 0) {\n return isMatchWithInternal(target, { ...source }, compare, stack);\n }\n return isEqualsSameValueZero(target, source);\n }\n default: {\n if (!isObject(target)) {\n return isEqualsSameValueZero(target, source);\n }\n if (typeof source === 'string') {\n return source === '';\n }\n return true;\n }\n }\n}\nfunction isObjectMatch(target, source, compare, stack) {\n if (source == null) {\n return true;\n }\n if (Array.isArray(source)) {\n return isArrayMatch(target, source, compare, stack);\n }\n if (source instanceof Map) {\n return isMapMatch(target, source, compare, stack);\n }\n if (source instanceof Set) {\n return isSetMatch(target, source, compare, stack);\n }\n const keys = Object.keys(source);\n if (target == null || isPrimitive(target)) {\n return keys.length === 0;\n }\n if (keys.length === 0) {\n return true;\n }\n if (stack?.has(source)) {\n return stack.get(source) === target;\n }\n stack?.set(source, target);\n try {\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!isPrimitive(target) && !(key in target)) {\n return false;\n }\n if (source[key] === undefined && target[key] !== undefined) {\n return false;\n }\n if (source[key] === null && target[key] !== null) {\n return false;\n }\n const isEqual = compare(target[key], source[key], key, target, source, stack);\n if (!isEqual) {\n return false;\n }\n }\n return true;\n }\n finally {\n stack?.delete(source);\n }\n}\nfunction isMapMatch(target, source, compare, stack) {\n if (source.size === 0) {\n return true;\n }\n if (!(target instanceof Map)) {\n return false;\n }\n for (const [key, sourceValue] of source.entries()) {\n const targetValue = target.get(key);\n const isEqual = compare(targetValue, sourceValue, key, target, source, stack);\n if (isEqual === false) {\n return false;\n }\n }\n return true;\n}\nfunction isArrayMatch(target, source, compare, stack) {\n if (source.length === 0) {\n return true;\n }\n if (!Array.isArray(target)) {\n return false;\n }\n const countedIndex = new Set();\n for (let i = 0; i < source.length; i++) {\n const sourceItem = source[i];\n let found = false;\n for (let j = 0; j < target.length; j++) {\n if (countedIndex.has(j)) {\n continue;\n }\n const targetItem = target[j];\n let matches = false;\n const isEqual = compare(targetItem, sourceItem, i, target, source, stack);\n if (isEqual) {\n matches = true;\n }\n if (matches) {\n countedIndex.add(j);\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n}\nfunction isSetMatch(target, source, compare, stack) {\n if (source.size === 0) {\n return true;\n }\n if (!(target instanceof Set)) {\n return false;\n }\n return isArrayMatch([...target], [...source], compare, stack);\n}\n\nexport { isMatchWith, isSetMatch };\n","import { isMatchWith } from './isMatchWith.mjs';\n\nfunction isMatch(target, source) {\n return isMatchWith(target, source, () => undefined);\n}\n\nexport { isMatch };\n","function getSymbols(object) {\n return Object.getOwnPropertySymbols(object).filter(symbol => Object.prototype.propertyIsEnumerable.call(object, symbol));\n}\n\nexport { getSymbols };\n","function getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return Object.prototype.toString.call(value);\n}\n\nexport { getTag };\n","const regexpTag = '[object RegExp]';\nconst stringTag = '[object String]';\nconst numberTag = '[object Number]';\nconst booleanTag = '[object Boolean]';\nconst argumentsTag = '[object Arguments]';\nconst symbolTag = '[object Symbol]';\nconst dateTag = '[object Date]';\nconst mapTag = '[object Map]';\nconst setTag = '[object Set]';\nconst arrayTag = '[object Array]';\nconst functionTag = '[object Function]';\nconst arrayBufferTag = '[object ArrayBuffer]';\nconst objectTag = '[object Object]';\nconst errorTag = '[object Error]';\nconst dataViewTag = '[object DataView]';\nconst uint8ArrayTag = '[object Uint8Array]';\nconst uint8ClampedArrayTag = '[object Uint8ClampedArray]';\nconst uint16ArrayTag = '[object Uint16Array]';\nconst uint32ArrayTag = '[object Uint32Array]';\nconst bigUint64ArrayTag = '[object BigUint64Array]';\nconst int8ArrayTag = '[object Int8Array]';\nconst int16ArrayTag = '[object Int16Array]';\nconst int32ArrayTag = '[object Int32Array]';\nconst bigInt64ArrayTag = '[object BigInt64Array]';\nconst float32ArrayTag = '[object Float32Array]';\nconst float64ArrayTag = '[object Float64Array]';\n\nexport { argumentsTag, arrayBufferTag, arrayTag, bigInt64ArrayTag, bigUint64ArrayTag, booleanTag, dataViewTag, dateTag, errorTag, float32ArrayTag, float64ArrayTag, functionTag, int16ArrayTag, int32ArrayTag, int8ArrayTag, mapTag, numberTag, objectTag, regexpTag, setTag, stringTag, symbolTag, uint16ArrayTag, uint32ArrayTag, uint8ArrayTag, uint8ClampedArrayTag };\n","const globalThis_ = (typeof globalThis === 'object' && globalThis) ||\n (typeof window === 'object' && window) ||\n (typeof self === 'object' && self) ||\n (typeof global === 'object' && global) ||\n (function () {\n return this;\n })() ||\n Function('return this')();\n\nexport { globalThis_ as globalThis };\n","import { globalThis as globalThis_ } from '../_internal/globalThis.mjs';\n\nfunction isBuffer(x) {\n return typeof globalThis_.Buffer !== 'undefined' && globalThis_.Buffer.isBuffer(x);\n}\n\nexport { isBuffer };\n","function isTypedArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\nexport { isTypedArray };\n","import { getSymbols } from '../compat/_internal/getSymbols.mjs';\nimport { getTag } from '../compat/_internal/getTag.mjs';\nimport { uint32ArrayTag, uint16ArrayTag, uint8ClampedArrayTag, uint8ArrayTag, symbolTag, stringTag, setTag, regexpTag, objectTag, numberTag, mapTag, int32ArrayTag, int16ArrayTag, int8ArrayTag, float64ArrayTag, float32ArrayTag, dateTag, booleanTag, dataViewTag, arrayBufferTag, arrayTag, argumentsTag } from '../compat/_internal/tags.mjs';\nimport { isBuffer } from '../predicate/isBuffer.mjs';\nimport { isPrimitive } from '../predicate/isPrimitive.mjs';\nimport { isTypedArray } from '../predicate/isTypedArray.mjs';\n\nfunction cloneDeepWith(obj, cloneValue) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), cloneValue);\n}\nfunction cloneDeepWithImpl(valueToClone, keyToClone, objectToClone, stack = new Map(), cloneValue = undefined) {\n const cloned = cloneValue?.(valueToClone, keyToClone, objectToClone, stack);\n if (cloned !== undefined) {\n return cloned;\n }\n if (isPrimitive(valueToClone)) {\n return valueToClone;\n }\n if (stack.has(valueToClone)) {\n return stack.get(valueToClone);\n }\n if (Array.isArray(valueToClone)) {\n const result = new Array(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n if (Object.hasOwn(valueToClone, 'index')) {\n result.index = valueToClone.index;\n }\n if (Object.hasOwn(valueToClone, 'input')) {\n result.input = valueToClone.input;\n }\n return result;\n }\n if (valueToClone instanceof Date) {\n return new Date(valueToClone.getTime());\n }\n if (valueToClone instanceof RegExp) {\n const result = new RegExp(valueToClone.source, valueToClone.flags);\n result.lastIndex = valueToClone.lastIndex;\n return result;\n }\n if (valueToClone instanceof Map) {\n const result = new Map();\n stack.set(valueToClone, result);\n for (const [key, value] of valueToClone) {\n result.set(key, cloneDeepWithImpl(value, key, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (valueToClone instanceof Set) {\n const result = new Set();\n stack.set(valueToClone, result);\n for (const value of valueToClone) {\n result.add(cloneDeepWithImpl(value, undefined, objectToClone, stack, cloneValue));\n }\n return result;\n }\n if (isBuffer(valueToClone)) {\n return valueToClone.subarray();\n }\n if (isTypedArray(valueToClone)) {\n const result = new (Object.getPrototypeOf(valueToClone).constructor)(valueToClone.length);\n stack.set(valueToClone, result);\n for (let i = 0; i < valueToClone.length; i++) {\n result[i] = cloneDeepWithImpl(valueToClone[i], i, objectToClone, stack, cloneValue);\n }\n return result;\n }\n if (valueToClone instanceof ArrayBuffer ||\n (typeof SharedArrayBuffer !== 'undefined' && valueToClone instanceof SharedArrayBuffer)) {\n return valueToClone.slice(0);\n }\n if (valueToClone instanceof DataView) {\n const result = new DataView(valueToClone.buffer.slice(0), valueToClone.byteOffset, valueToClone.byteLength);\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof File !== 'undefined' && valueToClone instanceof File) {\n const result = new File([valueToClone], valueToClone.name, {\n type: valueToClone.type,\n });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof Blob !== 'undefined' && valueToClone instanceof Blob) {\n const result = new Blob([valueToClone], { type: valueToClone.type });\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Error) {\n const result = structuredClone(valueToClone);\n stack.set(valueToClone, result);\n result.message = valueToClone.message;\n result.name = valueToClone.name;\n result.stack = valueToClone.stack;\n result.cause = valueToClone.cause;\n result.constructor = valueToClone.constructor;\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Boolean) {\n const result = new Boolean(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof Number) {\n const result = new Number(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (valueToClone instanceof String) {\n const result = new String(valueToClone.valueOf());\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n if (typeof valueToClone === 'object' && isCloneableObject(valueToClone)) {\n const result = Object.create(Object.getPrototypeOf(valueToClone));\n stack.set(valueToClone, result);\n copyProperties(result, valueToClone, objectToClone, stack, cloneValue);\n return result;\n }\n return valueToClone;\n}\nfunction copyProperties(target, source, objectToClone = target, stack, cloneValue) {\n const keys = [...Object.keys(source), ...getSymbols(source)];\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (descriptor == null || descriptor.writable) {\n target[key] = cloneDeepWithImpl(source[key], key, objectToClone, stack, cloneValue);\n }\n }\n}\nfunction isCloneableObject(object) {\n switch (getTag(object)) {\n case argumentsTag:\n case arrayTag:\n case arrayBufferTag:\n case dataViewTag:\n case booleanTag:\n case dateTag:\n case float32ArrayTag:\n case float64ArrayTag:\n case int8ArrayTag:\n case int16ArrayTag:\n case int32ArrayTag:\n case mapTag:\n case numberTag:\n case objectTag:\n case regexpTag:\n case setTag:\n case stringTag:\n case symbolTag:\n case uint8ArrayTag:\n case uint8ClampedArrayTag:\n case uint16ArrayTag:\n case uint32ArrayTag: {\n return true;\n }\n default: {\n return false;\n }\n }\n}\n\nexport { cloneDeepWith, cloneDeepWithImpl, copyProperties };\n","import { cloneDeepWithImpl } from './cloneDeepWith.mjs';\n\nfunction cloneDeep(obj) {\n return cloneDeepWithImpl(obj, undefined, obj, new Map(), undefined);\n}\n\nexport { cloneDeep };\n","import { isMatch } from './isMatch.mjs';\nimport { cloneDeep } from '../../object/cloneDeep.mjs';\n\nfunction matches(source) {\n source = cloneDeep(source);\n return (target) => {\n return isMatch(target, source);\n };\n}\n\nexport { matches };\n","import { cloneDeepWith as cloneDeepWith$1, copyProperties } from '../../object/cloneDeepWith.mjs';\nimport { getTag } from '../_internal/getTag.mjs';\nimport { objectTag, argumentsTag, booleanTag, stringTag, numberTag } from '../_internal/tags.mjs';\n\nfunction cloneDeepWith(obj, customizer) {\n return cloneDeepWith$1(obj, (value, key, object, stack) => {\n const cloned = customizer?.(value, key, object, stack);\n if (cloned !== undefined) {\n return cloned;\n }\n if (typeof obj !== 'object') {\n return undefined;\n }\n if (getTag(obj) === objectTag && typeof obj.constructor !== 'function') {\n const result = {};\n stack.set(obj, result);\n copyProperties(result, obj, object, stack);\n return result;\n }\n switch (Object.prototype.toString.call(obj)) {\n case numberTag:\n case stringTag:\n case booleanTag: {\n const result = new obj.constructor(obj?.valueOf());\n copyProperties(result, obj);\n return result;\n }\n case argumentsTag: {\n const result = {};\n copyProperties(result, obj);\n result.length = obj.length;\n result[Symbol.iterator] = obj[Symbol.iterator];\n return result;\n }\n default: {\n return undefined;\n }\n }\n });\n}\n\nexport { cloneDeepWith };\n","import { cloneDeepWith } from './cloneDeepWith.mjs';\n\nfunction cloneDeep(obj) {\n return cloneDeepWith(obj);\n}\n\nexport { cloneDeep };\n","const IS_UNSIGNED_INTEGER = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length = Number.MAX_SAFE_INTEGER) {\n switch (typeof value) {\n case 'number': {\n return Number.isInteger(value) && value >= 0 && value < length;\n }\n case 'symbol': {\n return false;\n }\n case 'string': {\n return IS_UNSIGNED_INTEGER.test(value);\n }\n }\n}\n\nexport { isIndex };\n","import { getTag } from '../_internal/getTag.mjs';\n\nfunction isArguments(value) {\n return value !== null && typeof value === 'object' && getTag(value) === '[object Arguments]';\n}\n\nexport { isArguments };\n","import { isDeepKey } from '../_internal/isDeepKey.mjs';\nimport { isIndex } from '../_internal/isIndex.mjs';\nimport { isArguments } from '../predicate/isArguments.mjs';\nimport { toPath } from '../util/toPath.mjs';\n\nfunction has(object, path) {\n let resolvedPath;\n if (Array.isArray(path)) {\n resolvedPath = path;\n }\n else if (typeof path === 'string' && isDeepKey(path) && object?.[path] == null) {\n resolvedPath = toPath(path);\n }\n else {\n resolvedPath = [path];\n }\n if (resolvedPath.length === 0) {\n return false;\n }\n let current = object;\n for (let i = 0; i < resolvedPath.length; i++) {\n const key = resolvedPath[i];\n if (current == null || !Object.hasOwn(current, key)) {\n const isSparseIndex = (Array.isArray(current) || isArguments(current)) && isIndex(key) && key < current.length;\n if (!isSparseIndex) {\n return false;\n }\n }\n current = current[key];\n }\n return true;\n}\n\nexport { has };\n","import { isMatch } from './isMatch.mjs';\nimport { toKey } from '../_internal/toKey.mjs';\nimport { cloneDeep } from '../object/cloneDeep.mjs';\nimport { get } from '../object/get.mjs';\nimport { has } from '../object/has.mjs';\n\nfunction matchesProperty(property, source) {\n switch (typeof property) {\n case 'object': {\n if (Object.is(property?.valueOf(), -0)) {\n property = '-0';\n }\n break;\n }\n case 'number': {\n property = toKey(property);\n break;\n }\n }\n source = cloneDeep(source);\n return function (target) {\n const result = get(target, property);\n if (result === undefined) {\n return has(target, property);\n }\n if (source === undefined) {\n return result === undefined;\n }\n return isMatch(result, source);\n };\n}\n\nexport { matchesProperty };\n","import { identity } from '../../function/identity.mjs';\nimport { property } from '../object/property.mjs';\nimport { matches } from '../predicate/matches.mjs';\nimport { matchesProperty } from '../predicate/matchesProperty.mjs';\n\nfunction iteratee(value) {\n if (value == null) {\n return identity;\n }\n switch (typeof value) {\n case 'function': {\n return value;\n }\n case 'object': {\n if (Array.isArray(value) && value.length === 2) {\n return matchesProperty(value[0], value[1]);\n }\n return matches(value);\n }\n case 'string':\n case 'symbol':\n case 'number': {\n return property(value);\n }\n }\n}\n\nexport { iteratee };\n","import { identity } from '../../function/identity.mjs';\nimport { iteratee } from '../util/iteratee.mjs';\n\nfunction find(source, _doesMatch = identity, fromIndex = 0) {\n if (!source) {\n return undefined;\n }\n if (fromIndex < 0) {\n fromIndex = Math.max(source.length + fromIndex, 0);\n }\n const doesMatch = iteratee(_doesMatch);\n if (!Array.isArray(source)) {\n const keys = Object.keys(source);\n for (let i = fromIndex; i < keys.length; i++) {\n const key = keys[i];\n const value = source[key];\n if (doesMatch(value, key, source)) {\n return value;\n }\n }\n return undefined;\n }\n return source.slice(fromIndex).find(doesMatch);\n}\n\nexport { find };\n","function omitBy(obj, shouldOmit) {\n const result = {};\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n if (!shouldOmit(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\nexport { omitBy };\n","function pickBy(obj, shouldPick) {\n const result = {};\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const value = obj[key];\n if (shouldPick(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\nexport { pickBy };\n","/**\n * Реестр тег-алиасов. Алиас (`@inputs`, `@actions` и т.д.) — это группа конкретных тегов,\n * которая разворачивается на стороне запроса в `pickByTags / omitByTags / matchByTags`.\n *\n * Семантика: алиас — это «зонтик». Запрос `pick(['@inputs'])` находит:\n * 1) элементы, у которых в meta.tags есть сам `@inputs`,\n * 2) элементы, у которых в meta.tags есть любой из его раскрытий (email, password, ...).\n *\n * Раскрытие рекурсивное (алиасы алиасов), с защитой от циклов.\n */\n\nlet aliases: Record<string, readonly string[]> = {\n // Минимальные дефолты. Разработчик может расширить через `registerAliases(...)`\n // или сбросить через `clearAliases()` + `registerAliases(...)`.\n '@inputs': ['email', 'password', 'phone', 'text', 'number'],\n '@actions': ['submit', 'cancel', 'reset'],\n};\n\n/** Слить переданные алиасы с текущим реестром (override по совпадающим ключам). */\nexport const registerAliases = (next: Record<string, readonly string[]>): void => {\n aliases = { ...aliases, ...next };\n};\n\n/** Полностью очистить реестр (включая дефолты). */\nexport const clearAliases = (): void => {\n aliases = {};\n};\n\n/** Снимок текущего реестра — read-only. */\nexport const getAliases = (): Readonly<Record<string, readonly string[]>> => aliases;\n\n/**\n * Развернуть набор тегов с учётом алиасов. Возвращает «расширенный» набор:\n * исходные теги + все раскрытия + раскрытия раскрытий (рекурсивно).\n *\n * Защищает от циклов через множество посещённых.\n */\nexport const expandTags = (tags: readonly string[]): string[] => {\n const out = new Set<string>();\n const queue: string[] = [...tags];\n const seen = new Set<string>();\n\n while (queue.length > 0) {\n const tag = queue.shift() as string;\n if (seen.has(tag)) continue;\n seen.add(tag);\n out.add(tag);\n\n const expansion = aliases[tag];\n if (expansion) {\n for (const t of expansion) {\n if (!seen.has(t)) queue.push(t);\n }\n }\n }\n\n return [...out];\n};\n","import { intersection } from 'es-toolkit/array';\nimport { find } from 'es-toolkit/compat';\nimport { omitBy, pickBy } from 'es-toolkit/object';\nimport { expandTags } from './tag-registry';\n\ninterface ComponentData {\n meta?: { tags?: string[] };\n dynamicMeta?: { tags?: string[] };\n [key: string]: any;\n}\n\ntype ComponentsList = Record<string, ComponentData>;\n\ninterface MatchOptions {\n /** Учитывать ли dynamicMeta.tags при поиске. По умолчанию true. */\n lookDynamic?: boolean;\n /** Раскрывать ли алиасы тегов из tag-registry. По умолчанию true. */\n expandAliases?: boolean;\n}\n\nconst hasTags = (\n item: ComponentData,\n targetTags: readonly string[],\n opts: { lookDynamic: boolean; expandAliases: boolean },\n) => {\n const metaTags = item.meta?.tags ?? [];\n const dynamicTags = opts.lookDynamic ? (item.dynamicMeta?.tags ?? []) : [];\n const allItemTags = [...metaTags, ...dynamicTags];\n\n const query = opts.expandAliases ? expandTags(targetTags) : targetTags;\n\n return intersection(allItemTags, query as string[]).length > 0;\n};\n\nconst normalizeOpts = (\n opts?: MatchOptions | boolean,\n): { lookDynamic: boolean; expandAliases: boolean } => {\n // Backwards-compat: третий аргумент мог быть просто boolean (lookDynamic).\n if (typeof opts === 'boolean') return { lookDynamic: opts, expandAliases: true };\n return {\n lookDynamic: opts?.lookDynamic ?? true,\n expandAliases: opts?.expandAliases ?? true,\n };\n};\n\n/** Оставляет компоненты, у которых есть указанные теги (с учётом алиасов). */\nexport const pickByTags = (\n data: ComponentsList,\n targetTags: readonly string[],\n opts?: MatchOptions | boolean,\n) => {\n const o = normalizeOpts(opts);\n return pickBy(data, (item) => hasTags(item, targetTags, o));\n};\n\n/** Убирает компоненты, у которых есть указанные теги. */\nexport const omitByTags = (\n data: ComponentsList,\n targetTags: readonly string[],\n opts?: MatchOptions | boolean,\n) => {\n const o = normalizeOpts(opts);\n return omitBy(data, (item) => hasTags(item, targetTags, o));\n};\n\n/** Первый компонент с указанными тегами. */\nexport const matchByTags = (\n data: ComponentsList,\n targetTags: readonly string[],\n opts?: MatchOptions | boolean,\n) => {\n const o = normalizeOpts(opts);\n return find(Object.values(data), (item) => hasTags(item, targetTags, o));\n};\n\n/** Первый компонент + его id. */\nexport const matchEntryByTags = (\n data: ComponentsList,\n targetTags: readonly string[],\n opts?: MatchOptions | boolean,\n) => {\n const o = normalizeOpts(opts);\n const entry = find(Object.entries(data), ([, item]) => hasTags(item, targetTags, o));\n return entry ? { id: entry[0], ...entry[1] } : undefined;\n};\n","import { matchByTags, matchEntryByTags, omitByTags, pickByTags } from './helpers';\n\nexport interface BridgeMatchOptions {\n /** Учитывать ли dynamicMeta.tags. По умолчанию true. */\n lookDynamic?: boolean;\n /** Раскрывать ли алиасы тегов. По умолчанию true. */\n expandAliases?: boolean;\n}\n\n/**\n * Запись о смонтированном UI-элементе в `store.components`. Заполняется\n * UiProxy'ем при регистрации (для элементов с собственной `meta`).\n *\n * - `meta` — идентификация: теги (роли), которыми элемент описал себя.\n * - `payload` — произвольные данные, которые автор Entity явно прикрепил\n * к элементу для контроллера (например `{ href: '/branches' }` у nav-итема).\n * JSX: `<Nav.Item meta={{tags:['nav']}} payload={{href:'/branches'}} />`.\n * - `dynamicMeta` — сценарная окраска от родительского Widget'а.\n * - `name`, `value`, `type` — DOM-derived (для инпутов/кнопок).\n */\nexport interface IRegisteredComponent {\n meta?: { tags?: readonly string[]; [k: string]: unknown };\n dynamicMeta?: { tags?: readonly string[]; [k: string]: unknown };\n payload?: Record<string, unknown>;\n name?: string;\n value?: unknown;\n type?: string;\n [k: string]: unknown;\n}\n\n/** Тип возвращаемого Bridge'ем API — для type-аннотаций в Controller/Feature. */\nexport type IBridge = ReturnType<typeof createBridge>;\n\nexport const createBridge = (state: any, send: any) => {\n return {\n // снимки\n get ctx() {\n return state.context;\n },\n get loading() {\n return state.context?.loading;\n },\n get styles() {\n return state.context?.styles ?? {};\n },\n get errors() {\n return state.context?.errors ?? {};\n },\n get components() {\n return state.context?.components ?? {};\n },\n get props() {\n return state.context?.props ?? {};\n },\n\n // мутации\n update: (payload: Record<string, any>) => send({ type: 'SET_DATA', payload }),\n setLoading: (value: boolean) => send({ type: 'SET_LOADING', value }),\n setStyles: (styles: Record<string, string>) => send({ type: 'SET_STYLES', styles }),\n setErrors: (errors: Record<string, string>) => send({ type: 'SET_ERRORS', errors }),\n /**\n * Patch'ит дополнительные props у компонентов по id. Каждый id мержится:\n * `setProps({ id1: { active: true } })` оставит другие поля у id1 нетронутыми.\n * UiProxy подмешивает эти props при рендере поверх статичных prop'ов JSX.\n *\n * Низкоуровневый API — для адресных patch'ей по уже известному id.\n * Для tag-based update'ов используй `patch(tags, ...)` ниже.\n */\n setProps: (payload: Record<string, Record<string, any>>) => {\n send({ type: 'SET_PROPS', payload });\n },\n registerComponent: (payload: Record<string, any>) =>\n send({ type: 'REGISTER_COMPONENT', payload }),\n unregisterComponent: (id: string) => send({ type: 'UNREGISTER_COMPONENT', id }),\n\n // tag-операции (объединяют meta.tags + dynamicMeta.tags, раскрывают алиасы)\n pick: (tags: readonly string[], opts?: BridgeMatchOptions) =>\n pickByTags(state.context?.components ?? {}, tags, opts),\n omit: (tags: readonly string[], opts?: BridgeMatchOptions) =>\n omitByTags(state.context?.components ?? {}, tags, opts),\n match: (tags: readonly string[], opts?: BridgeMatchOptions) =>\n matchByTags(state.context?.components ?? {}, tags, opts),\n matchEntry: (tags: readonly string[], opts?: BridgeMatchOptions) =>\n matchEntryByTags(state.context?.components ?? {}, tags, opts),\n\n /**\n * Tag-based мутатор — симметричен `pick/omit/match/matchEntry`. Находит\n * компоненты по тегам (та же логика что у `pick`) и мержит patch к их\n * runtime-props (через SET_PROPS).\n *\n * `patchOrFn`:\n * - **объект** → один и тот же patch применяется ко всем совпадениям:\n * `store.patch(['logout'], { disabled: true })`\n * - **функция** `(comp, id) => patch | null | undefined` → per-component\n * patch; возврат falsy/`{}` пропускает этот id:\n * `store.patch(['nav'], (c) => ({ active: c.meta?.href === path }))`\n *\n * `opts` — те же что у `pick` (`lookDynamic`, `expandAliases`).\n *\n * Один `send({type: 'SET_PROPS'})` на все совпадения — атомарный update,\n * без N-кратных перерендеров.\n */\n patch: (\n tags: readonly string[],\n patchOrFn:\n | Record<string, any>\n | ((comp: IRegisteredComponent, id: string) => Record<string, any> | null | undefined),\n opts?: BridgeMatchOptions,\n ) => {\n const matched = pickByTags(state.context?.components ?? {}, tags, opts);\n const payload: Record<string, Record<string, any>> = {};\n for (const [id, comp] of Object.entries(matched)) {\n const p =\n typeof patchOrFn === 'function' ? patchOrFn(comp as IRegisteredComponent, id) : patchOrFn;\n if (p && Object.keys(p).length) payload[id] = p;\n }\n if (Object.keys(payload).length) send({ type: 'SET_PROPS', payload });\n },\n };\n};\n"],"names":["createState","schema","stateNames","gotoTransitions","name","createMachine","s","assign","context","event","_","rest","next","id","patch","intersection","firstArr","secondArr","secondSet","item","identity","x","isUnsafeProperty","key","isDeepKey","toKey","value","toString","result","toPath","deepKey","length","index","quoteChar","bracket","char","get","object","path","defaultValue","getWithPath","current","property","isObject","isPrimitive","isEqualsSameValueZero","other","isMatchWith","target","source","compare","isMatchWithInternal","doesMatch","objValue","srcValue","stack","isEqual","isObjectMatch","isArrayMatch","isMapMatch","isSetMatch","keys","i","sourceValue","targetValue","countedIndex","sourceItem","found","j","targetItem","matches","isMatch","getSymbols","symbol","getTag","regexpTag","stringTag","numberTag","booleanTag","argumentsTag","symbolTag","dateTag","mapTag","setTag","arrayTag","arrayBufferTag","objectTag","dataViewTag","uint8ArrayTag","uint8ClampedArrayTag","uint16ArrayTag","uint32ArrayTag","int8ArrayTag","int16ArrayTag","int32ArrayTag","float32ArrayTag","float64ArrayTag","globalThis_","isBuffer","isTypedArray","cloneDeepWith","obj","cloneValue","cloneDeepWithImpl","valueToClone","keyToClone","objectToClone","cloned","copyProperties","isCloneableObject","descriptor","cloneDeep","customizer","cloneDeepWith$1","IS_UNSIGNED_INTEGER","isIndex","isArguments","has","resolvedPath","matchesProperty","iteratee","find","_doesMatch","fromIndex","omitBy","shouldOmit","pickBy","shouldPick","aliases","registerAliases","clearAliases","getAliases","expandTags","tags","out","queue","seen","tag","expansion","t","hasTags","targetTags","opts","metaTags","dynamicTags","allItemTags","query","normalizeOpts","pickByTags","data","o","omitByTags","matchByTags","matchEntryByTags","entry","createBridge","state","send","payload","styles","errors","patchOrFn","matched","comp","p"],"mappings":"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","x_google_ignoreList":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@capsuletech/web-state",
|
|
3
|
+
"version": "0.0.17",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./index.mjs",
|
|
6
|
+
"types": "./index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./index.d.ts",
|
|
10
|
+
"import": "./index.mjs",
|
|
11
|
+
"default": "./index.mjs"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {},
|
|
15
|
+
"peerDependencies": {
|
|
16
|
+
"solid-js": "^1.9.0"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Реестр тег-алиасов. Алиас (`@inputs`, `@actions` и т.д.) — это группа конкретных тегов,
|
|
3
|
+
* которая разворачивается на стороне запроса в `pickByTags / omitByTags / matchByTags`.
|
|
4
|
+
*
|
|
5
|
+
* Семантика: алиас — это «зонтик». Запрос `pick(['@inputs'])` находит:
|
|
6
|
+
* 1) элементы, у которых в meta.tags есть сам `@inputs`,
|
|
7
|
+
* 2) элементы, у которых в meta.tags есть любой из его раскрытий (email, password, ...).
|
|
8
|
+
*
|
|
9
|
+
* Раскрытие рекурсивное (алиасы алиасов), с защитой от циклов.
|
|
10
|
+
*/
|
|
11
|
+
/** Слить переданные алиасы с текущим реестром (override по совпадающим ключам). */
|
|
12
|
+
export declare const registerAliases: (next: Record<string, readonly string[]>) => void;
|
|
13
|
+
/** Полностью очистить реестр (включая дефолты). */
|
|
14
|
+
export declare const clearAliases: () => void;
|
|
15
|
+
/** Снимок текущего реестра — read-only. */
|
|
16
|
+
export declare const getAliases: () => Readonly<Record<string, readonly string[]>>;
|
|
17
|
+
/**
|
|
18
|
+
* Развернуть набор тегов с учётом алиасов. Возвращает «расширенный» набор:
|
|
19
|
+
* исходные теги + все раскрытия + раскрытия раскрытий (рекурсивно).
|
|
20
|
+
*
|
|
21
|
+
* Защищает от циклов через множество посещённых.
|
|
22
|
+
*/
|
|
23
|
+
export declare const expandTags: (tags: readonly string[]) => string[];
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@capsuletech/web-state",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.mjs",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"default": "./dist/index.mjs"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"dependencies": {},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"solid-js": "^1.9.0"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@capsuletech/shared-vite": "0.1.0"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "vite build"
|
|
26
|
+
}
|
|
27
|
+
}
|