@avstantso/utils-names-tree 1.2.1 → 1.3.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/CHANGELOG.md +22 -0
- package/README.md +309 -133
- package/dist/_global/_register.d.ts +287 -38
- package/dist/index.js +142 -19
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -7,10 +7,113 @@ var AVStantso$1;
|
|
|
7
7
|
(function (AVStantso) {
|
|
8
8
|
const BaseKinds = (() => {
|
|
9
9
|
const name = (path) => path.peek();
|
|
10
|
-
const
|
|
11
|
-
const
|
|
10
|
+
const slash = (path) => path.join('/');
|
|
11
|
+
const backslash = (path) => path.join('\\');
|
|
12
12
|
const dot = (path) => path.join('.');
|
|
13
|
-
|
|
13
|
+
const amp = (path) => path.join('&');
|
|
14
|
+
const hash = (path) => path.join('#');
|
|
15
|
+
const colon = (path) => path.join(':');
|
|
16
|
+
const arrow = (path) => path.join('->');
|
|
17
|
+
const dash = (path) => path.join('-');
|
|
18
|
+
const underscore = (path) => path.join('_');
|
|
19
|
+
const doubleColon = (path) => path.join('::');
|
|
20
|
+
const comma = (path) => path.join(',');
|
|
21
|
+
const semicolon = (path) => path.join(';');
|
|
22
|
+
const space = (path) => path.join(' ');
|
|
23
|
+
const pipe = (path) => path.join('|');
|
|
24
|
+
const url = (path) => `/${slash(path)}`;
|
|
25
|
+
const query = (path) => `?${amp(path)}`;
|
|
26
|
+
const longArg = (path) => `--${dash(path)}`;
|
|
27
|
+
const shortArg = (path) => `-${path.peek()}`;
|
|
28
|
+
const envVar = (path) => underscore(path).toUpperCase();
|
|
29
|
+
const cssClass = (path) => `.${dash(path)}`;
|
|
30
|
+
const cssId = (path) => `#${dash(path)}`;
|
|
31
|
+
const anchor = (path) => `#${path.peek()}`;
|
|
32
|
+
const scoped = (path) => `@${slash(path)}`;
|
|
33
|
+
const param = (path) => `:${path.peek()}`;
|
|
34
|
+
const arg = (path) => `{${path.peek()}}`;
|
|
35
|
+
const params = (path) => path.map(s => `:${s}`).join('/');
|
|
36
|
+
const args = (path) => path.map(s => `{${s}}`).join('/');
|
|
37
|
+
return {
|
|
38
|
+
name,
|
|
39
|
+
backslash,
|
|
40
|
+
slash,
|
|
41
|
+
dot,
|
|
42
|
+
amp,
|
|
43
|
+
hash,
|
|
44
|
+
colon,
|
|
45
|
+
arrow,
|
|
46
|
+
dash,
|
|
47
|
+
underscore,
|
|
48
|
+
doubleColon,
|
|
49
|
+
comma,
|
|
50
|
+
semicolon,
|
|
51
|
+
space,
|
|
52
|
+
pipe,
|
|
53
|
+
path: slash,
|
|
54
|
+
url,
|
|
55
|
+
query,
|
|
56
|
+
i18n: dot,
|
|
57
|
+
domain: dot,
|
|
58
|
+
longArg,
|
|
59
|
+
shortArg,
|
|
60
|
+
envVar,
|
|
61
|
+
cssClass,
|
|
62
|
+
cssId,
|
|
63
|
+
anchor,
|
|
64
|
+
scoped,
|
|
65
|
+
param,
|
|
66
|
+
arg,
|
|
67
|
+
params,
|
|
68
|
+
args,
|
|
69
|
+
snake: underscore,
|
|
70
|
+
namespace: doubleColon,
|
|
71
|
+
csv: comma,
|
|
72
|
+
title: space
|
|
73
|
+
};
|
|
74
|
+
})();
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
76
|
+
(() => {
|
|
77
|
+
const V = avstantso.Generic.Validator();
|
|
78
|
+
const KMParam = V({ beforeEach: ':' });
|
|
79
|
+
const KMArg = V({ beforeEach: '{', afterEach: '}' });
|
|
80
|
+
return {
|
|
81
|
+
name: null,
|
|
82
|
+
backslash: '\\',
|
|
83
|
+
slash: '/',
|
|
84
|
+
dot: '.',
|
|
85
|
+
amp: '&',
|
|
86
|
+
hash: '#',
|
|
87
|
+
colon: ':',
|
|
88
|
+
arrow: '->',
|
|
89
|
+
dash: '-',
|
|
90
|
+
underscore: '_',
|
|
91
|
+
doubleColon: '::',
|
|
92
|
+
comma: ',',
|
|
93
|
+
semicolon: ';',
|
|
94
|
+
space: ' ',
|
|
95
|
+
pipe: '|',
|
|
96
|
+
path: '/',
|
|
97
|
+
url: V({ prefix: '/', separator: '/' }),
|
|
98
|
+
query: V({ prefix: '?', separator: '&' }),
|
|
99
|
+
i18n: '.',
|
|
100
|
+
domain: '.',
|
|
101
|
+
longArg: V({ prefix: '--', separator: '-' }),
|
|
102
|
+
shortArg: V({ beforeEach: '-' }),
|
|
103
|
+
envVar: V({ separator: '_', up: true }),
|
|
104
|
+
cssClass: V({ prefix: '.', separator: '-' }),
|
|
105
|
+
cssId: V({ prefix: '#', separator: '-' }),
|
|
106
|
+
anchor: V({ beforeEach: '#' }),
|
|
107
|
+
scoped: V({ prefix: '@', separator: '/' }),
|
|
108
|
+
param: KMParam,
|
|
109
|
+
arg: KMArg,
|
|
110
|
+
params: V({ separator: '/', ...KMParam }),
|
|
111
|
+
args: V({ separator: '/', ...KMArg }),
|
|
112
|
+
snake: '_',
|
|
113
|
+
namespace: '::',
|
|
114
|
+
csv: ',',
|
|
115
|
+
title: ' '
|
|
116
|
+
};
|
|
14
117
|
})();
|
|
15
118
|
AVStantso.NamesTree = avstantso._reg.NamesTree(({ JS }) => {
|
|
16
119
|
const kindsMethods = {
|
|
@@ -21,12 +124,33 @@ var AVStantso$1;
|
|
|
21
124
|
const { prefix = '' } = options || {};
|
|
22
125
|
return Object.entries(kindsMethods).reduce((r, [k, v]) => Object.assign(r, { [k]: () => `${prefix}${v(path, options)}` }), {});
|
|
23
126
|
}
|
|
127
|
+
function isStopRecursion(node) {
|
|
128
|
+
return !JS.is.structure(node);
|
|
129
|
+
}
|
|
130
|
+
function NodeKinds({ strTail, kinds, options }, ds, subPath = ['']) {
|
|
131
|
+
if (isStopRecursion(ds))
|
|
132
|
+
return;
|
|
133
|
+
const methods = PathMethods(subPath, options);
|
|
134
|
+
const dk = options?.defaultKind;
|
|
135
|
+
ds.toString = methods[(dk && kinds.includes(dk) && dk)
|
|
136
|
+
|| kinds[0]];
|
|
137
|
+
if (!strTail)
|
|
138
|
+
Object.entriesEx(methods).forEach(([m, get]) => {
|
|
139
|
+
if (!kinds.includes(m))
|
|
140
|
+
return;
|
|
141
|
+
const p = `_${m}`;
|
|
142
|
+
if (p in ds)
|
|
143
|
+
delete ds[p];
|
|
144
|
+
Object.defineProperty(ds, p, { get });
|
|
145
|
+
});
|
|
146
|
+
}
|
|
24
147
|
function NodeData(context) {
|
|
25
148
|
const { strTail, kinds, options, dest, data, path = [] } = context;
|
|
26
|
-
if (!
|
|
149
|
+
if (!isStopRecursion(data)) {
|
|
27
150
|
Object.entries(data)
|
|
28
|
-
.filter(([k]) => 'toString' !== k)
|
|
29
151
|
.forEach(([k, v]) => {
|
|
152
|
+
if ('toString' === k)
|
|
153
|
+
return;
|
|
30
154
|
const oldDs = dest[k];
|
|
31
155
|
const fds = JS.is.function(oldDs);
|
|
32
156
|
const fv = JS.is.function(v);
|
|
@@ -41,21 +165,12 @@ var AVStantso$1;
|
|
|
41
165
|
? oldDs
|
|
42
166
|
: fv
|
|
43
167
|
? (...args) => v(...args)
|
|
44
|
-
: strTail &&
|
|
168
|
+
: strTail && isStopRecursion(v)
|
|
45
169
|
? methods[kinds[0]]()
|
|
46
170
|
: {};
|
|
47
171
|
if (needReMake)
|
|
48
172
|
Object.assign(ds, oldDs);
|
|
49
|
-
|
|
50
|
-
ds.toString = methods[kinds[0]];
|
|
51
|
-
if (!strTail)
|
|
52
|
-
Object.entries(methods).forEach(([m, get]) => {
|
|
53
|
-
const p = `_${m}`;
|
|
54
|
-
if (p in ds)
|
|
55
|
-
delete ds[p];
|
|
56
|
-
Object.defineProperty(ds, p, { get });
|
|
57
|
-
});
|
|
58
|
-
}
|
|
173
|
+
NodeKinds(context, ds, subPath);
|
|
59
174
|
NodeData({ ...context, dest: ds, data: v, path: subPath });
|
|
60
175
|
Object.assign(dest, { [k]: ds });
|
|
61
176
|
});
|
|
@@ -73,8 +188,8 @@ var AVStantso$1;
|
|
|
73
188
|
const tree = {};
|
|
74
189
|
if (!strTail) {
|
|
75
190
|
Object.defineProperties(tree, {
|
|
76
|
-
splitted: { get: () => kinds.map(getSub) },
|
|
77
|
-
merge: {
|
|
191
|
+
$splitted: { get: () => kinds.map(getSub) },
|
|
192
|
+
$merge: {
|
|
78
193
|
value: (addData) => {
|
|
79
194
|
NodeData({ strTail, kinds, options, dest: tree, data: addData });
|
|
80
195
|
subs = {};
|
|
@@ -87,7 +202,15 @@ var AVStantso$1;
|
|
|
87
202
|
get: () => getSub(kind)
|
|
88
203
|
}));
|
|
89
204
|
}
|
|
90
|
-
|
|
205
|
+
const context = { strTail, kinds, options, dest: tree, data };
|
|
206
|
+
NodeData(context);
|
|
207
|
+
if (options?.rootAlias) {
|
|
208
|
+
NodeKinds(context, tree);
|
|
209
|
+
Object.defineProperty(tree, options.rootAlias, {
|
|
210
|
+
get: () => tree,
|
|
211
|
+
enumerable: true
|
|
212
|
+
});
|
|
213
|
+
}
|
|
91
214
|
return tree;
|
|
92
215
|
}
|
|
93
216
|
function NamesTree(data, ...params) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n const BaseKinds = (() => {\n type M = NamesTree.Kinds.Method;\n\n const name: M = (path) => path.peek();\n const path: M = (path) => path.join('/');\n const url: M = (path) => `/${path.join('/')}`;\n const dot: M = (path) => path.join('.');\n\n return { name, path, url, i18n: dot, domain: dot };\n })();\n\n export namespace NamesTree {\n export namespace Kinds {\n export type Method = (path: string[], options?: Options) => string;\n\n /**\n * @summary List of all allow tree kinds\n */\n export type All = TS.Union.ToTuple<keyof Kinds>;\n }\n\n type BaseKinds = typeof BaseKinds;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Kinds extends BaseKinds {}\n\n /**\n * @summary Allow tree kind\n */\n export type Kind = Kinds.All[number];\n\n //#region Source\n /**\n * @summary Tree node data source\n */\n export type Source = Source.Root | string;\n\n export namespace Source {\n /**\n * @summary Tree root node data source\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n export type Root = object | Function;\n }\n //#endregion\n\n //#region Node\n type _NodeKinds<\n KDs extends readonly Kind[],\n R = unknown\n > = KDs extends readonly [infer C extends Kind, ...infer Rest extends readonly Kind[]]\n ? _NodeKinds<Rest, R & { [K in `_${C}`]: string }>\n : { [K in keyof R]: R[K] };\n\n /**\n * @summary Tree node for source `T` with allow kinds `KDs`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n KDs extends readonly Kind[] = Kinds.All,\n S extends boolean = false\n > = (S extends true ? unknown : _NodeKinds<KDs>) & Node.Data<T, KDs, S>;\n\n export namespace Node {\n /**\n * @summary Tree node data part for source `T` with allow kinds `KDs`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Data<\n T extends Source = Source,\n KDs extends readonly Kind[] = Kinds.All,\n S extends boolean = false\n > = T extends Source.Root\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n ? (T extends Function ? T : unknown) & {\n [K in keyof T]: Node<Extract<T[K], Source>, KDs, S>;\n }\n : S extends true\n ? T\n : unknown;\n }\n //#endregion\n\n /**\n * @summary Tree options\n */\n export interface Options {\n prefix?: string;\n }\n\n /**\n * @summary `NamesTree` kinds presets\n */\n export namespace Presets {\n /**\n * @summary `Names` preset\n */\n export namespace Names {\n /**\n * @summary `Names` preset kinds\n */\n export type Kinds = ['name'];\n\n /**\n * @summary `Names` preset tree node for source `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n S extends boolean = false\n > = NamesTree.Node<T, Kinds, S>;\n\n /**\n * @summary `Names` preset `NamesTree` for data `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Tree<\n T extends NamesTree.Source.Root,\n S extends boolean = false\n > = AVStantso.NamesTree<T, Kinds, S>;\n }\n\n /**\n * @summary `I18ns` preset\n */\n export namespace I18ns {\n /**\n * @summary `I18ns` preset kinds\n */\n export type Kinds = ['i18n', 'name'];\n\n /**\n * @summary `I18ns` preset tree node for source `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n S extends boolean = false\n > = NamesTree.Node<T, Kinds, S>;\n\n /**\n * @summary `I18ns` preset `NamesTree` for data `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Tree<\n T extends NamesTree.Source.Root,\n S extends boolean = false\n > = AVStantso.NamesTree<T, Kinds, S>;\n }\n\n /**\n * @summary `Urls` preset\n */\n export namespace Urls {\n /**\n * @summary `Urls` preset kinds\n */\n export type Kinds = ['name', 'path', 'url'];\n\n /**\n * @summary `Urls` preset tree node for source `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n S extends boolean = false\n > = NamesTree.Node<T, Kinds, S>;\n\n /**\n * @summary `Urls` preset `NamesTree` for data `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Tree<\n T extends NamesTree.Source.Root,\n S extends boolean = false\n > = AVStantso.NamesTree<T, Kinds, S>;\n }\n }\n }\n\n namespace _NamesTree {\n //#region Splitted\n type _Splitted<\n T extends NamesTree.Source.Root,\n KDs extends readonly NamesTree.Kind[],\n R extends TS.Arr = []\n > = KDs extends readonly [\n infer C extends NamesTree.Kind,\n ...infer Rest extends readonly NamesTree.Kind[]\n ]\n ? _Splitted<\n T,\n Rest,\n [...R, NamesTree<T, [C], true>]\n >\n : R;\n\n export type Splitted<\n T extends NamesTree.Source.Root,\n KDs extends readonly NamesTree.Kind[]\n > = _Splitted<T, KDs>;\n //#endregion\n\n export type ExtractByKinds<\n T extends NamesTree.Source.Root,\n KDs extends readonly NamesTree.Kind[],\n R = unknown\n > = KDs extends readonly [\n infer C extends NamesTree.Kind,\n ...infer Rest extends readonly NamesTree.Kind[]\n ]\n ? ExtractByKinds<\n T,\n Rest,\n R & { [K in Capitalize<C>]: NamesTree<T, [C], true> }\n >\n : R;\n }\n\n /**\n * @summary Names tree for data `T` with allow kinds `KDs`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type NamesTree<\n T extends NamesTree.Source.Root,\n KDs extends readonly NamesTree.Kind[],\n S extends boolean = false\n > = NamesTree.Node.Data<T, KDs, S>\n & (S extends true\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n ? {}\n : {\n /**\n * @summary Get array of splitted trees each with unique kind\n */\n splitted: _NamesTree.Splitted<T, KDs>;\n\n /**\n * @summary Modify existing tree by additional data\n */\n merge<M extends NamesTree.Source.Root>(\n data: M\n ): NamesTree<T & M, KDs, S>;\n } & _NamesTree.ExtractByKinds<T, KDs>);\n\n export namespace Code {\n /**\n * @summary `AVStantso.NamesTree` utility\n */\n export interface NamesTree {\n <\n T extends AVStantso.NamesTree.Source.Root,\n K0 extends AVStantso.NamesTree.Kind,\n K1 extends Exclude<AVStantso.NamesTree.Kind, K0> = undefined,\n K2 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1> = undefined,\n K3 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1 | K2> = undefined,\n K4 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3\n > = undefined,\n K5 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4\n > = undefined,\n K6 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5\n > = undefined,\n K7 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6\n > = undefined,\n K8 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7\n > = undefined,\n K9 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8\n > = undefined\n >(\n data: T,\n options: AVStantso.NamesTree.Options,\n kind0: K0,\n kind1?: K1,\n kind2?: K2,\n kind3?: K3,\n kind4?: K4,\n kind5?: K5,\n kind6?: K6,\n kind7?: K7,\n kind8?: K8,\n kind9?: K9\n ): AVStantso.NamesTree<\n T,\n AVStantso.TS.Array.FilterUnique<\n [K0, K1, K2, K3, K4, K5, K6, K7, K8, K9]\n >\n >;\n\n <\n T extends AVStantso.NamesTree.Source.Root,\n K0 extends AVStantso.NamesTree.Kind,\n K1 extends Exclude<AVStantso.NamesTree.Kind, K0> = undefined,\n K2 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1> = undefined,\n K3 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1 | K2> = undefined,\n K4 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3\n > = undefined,\n K5 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4\n > = undefined,\n K6 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5\n > = undefined,\n K7 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6\n > = undefined,\n K8 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7\n > = undefined,\n K9 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8\n > = undefined\n >(\n data: T,\n kind0: K0,\n kind1?: K1,\n kind2?: K2,\n kind3?: K3,\n kind4?: K4,\n kind5?: K5,\n kind6?: K6,\n kind7?: K7,\n kind8?: K8,\n kind9?: K9\n ): AVStantso.NamesTree<\n T,\n AVStantso.TS.Array.FilterUnique<\n [K0, K1, K2, K3, K4, K5, K6, K7, K8, K9]\n >\n >;\n\n /**\n * @summary Register external `NamesTree` kinds\n */\n _RegKinds(kinds: NodeJS.Dict<AVStantso.NamesTree.Kinds.Method>): void;\n\n /**\n * @summary Make `Name` `NamesTree`\n */\n Names<T extends AVStantso.NamesTree.Source.Root>(\n data: T,\n options?: AVStantso.NamesTree.Options\n ): AVStantso.NamesTree.Presets.Names.Tree<T>;\n\n /**\n * @summary Make `i18n` `NamesTree`\n */\n I18ns<T extends AVStantso.NamesTree.Source.Root>(\n data: T,\n options?: AVStantso.NamesTree.Options\n ): AVStantso.NamesTree.Presets.I18ns.Tree<T>;\n\n /**\n * @summary Make `urls` `NamesTree`\n */\n Urls<T extends AVStantso.NamesTree.Source.Root>(\n data: T,\n options?: AVStantso.NamesTree.Options\n ): AVStantso.NamesTree.Presets.Urls.Tree<T>;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.NamesTree` utility\n */\n NamesTree: Code.NamesTree;\n }\n\n export const NamesTree = avstantso._reg.NamesTree(({ JS }) => {\n const kindsMethods: NodeJS.Dict<AVStantso.NamesTree.Kinds.Method> = {\n ...BaseKinds\n };\n\n const _RegKinds: Code.NamesTree['_RegKinds'] = (kinds) =>\n Object.assign(kindsMethods, kinds);\n\n type PathMethods = Record<NamesTree.Kind, () => string>;\n function PathMethods(\n path: string[],\n options?: NamesTree.Options\n ): PathMethods {\n const { prefix = '' } = options || {};\n\n return Object.entries(kindsMethods).reduce(\n (r, [k, v]) => Object.assign(r, { [k]: () => `${prefix}${v(path, options)}` }),\n {} as PathMethods\n );\n }\n\n type NDContext = {\n strTail: boolean;\n kinds: NamesTree.Kind[];\n options: NamesTree.Options;\n\n dest: NamesTree.Node.Data;\n data: NamesTree.Source;\n path?: string[];\n };\n function NodeData(context: NDContext): NamesTree.Node.Data {\n const { strTail, kinds, options, dest, data, path = [] } = context;\n\n if (!JS.is.string(data)) {\n Object.entries(data)\n .filter(([k]) => 'toString' !== k)\n .forEach(([k, v]) => {\n const oldDs = dest[k as keyof typeof dest];\n\n const fds = JS.is.function(oldDs);\n const fv = JS.is.function(v);\n\n if (fds && fv) {\n console.warn('%O', { oldDs, v, fds, fv, data });\n\n throw Error(\n `Can't merge NamesTrees functions nodes at \"${path.join('.')}\"`\n );\n }\n\n const needReMake = oldDs && !fds && fv;\n\n const subPath = [...path, k];\n\n const methods = PathMethods(subPath, options);\n\n const ds =\n oldDs && !needReMake\n ? oldDs\n : fv\n ? (...args: TS.Arr) => v(...args)\n : strTail && JS.is.string(v)\n ? methods[kinds[0]]()\n : {};\n\n if (needReMake) Object.assign(ds, oldDs);\n\n if (!JS.is.string(ds)) {\n ds.toString = methods[kinds[0]];\n\n if (!strTail)\n Object.entries(methods).forEach(([m, get]) => {\n const p = `_${m}`;\n if (p in ds) delete ds[p as keyof typeof ds];\n\n Object.defineProperty(ds, p, { get });\n });\n }\n\n NodeData({ ...context, dest: ds, data: v, path: subPath });\n\n Object.assign(dest, { [k]: ds });\n });\n }\n\n return dest;\n }\n\n function MakeTree(\n data: NamesTree.Source.Root,\n strTail: boolean,\n options: NamesTree.Options,\n ...kinds: NamesTree.Kind[]\n ) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n let subs: any = {};\n function getSub(kind: NamesTree.Kind) {\n if (!subs[kind]) subs[kind] = MakeTree(data, true, options, kind);\n\n return subs[kind];\n }\n\n const tree: any = {};\n\n if (!strTail) {\n Object.defineProperties(tree, {\n splitted: { get: () => kinds.map(getSub) },\n\n merge: {\n value: (addData: NamesTree.Source.Root) => {\n NodeData({ strTail, kinds, options, dest: tree, data: addData });\n subs = {};\n return tree;\n },\n writable: false\n }\n });\n\n kinds.forEach((kind) =>\n Object.defineProperty(tree, kind.toCapitalized(), {\n get: () => getSub(kind)\n })\n );\n }\n\n NodeData({ strTail, kinds, options, dest: tree, data });\n\n return tree;\n }\n\n function NamesTree(data: NamesTree.Source.Root, ...params: TS.Arr) {\n const options = !JS.is.string(params[0]) ? params.shift() : undefined;\n\n return MakeTree(data, false, options, ...params);\n }\n\n function MakePreset(...params: string[]) {\n return (\n data: NamesTree.Source.Root,\n options: NamesTree.Options\n ) => NamesTree(data, options, ...params);\n }\n\n return Object.assign(\n NamesTree,\n {\n _RegKinds,\n Names: MakePreset('name'),\n I18ns: MakePreset('i18n', 'name'),\n Urls: MakePreset('name', 'path', 'url')\n }\n );\n });\n}\n","import NamesTree = AVStantso.NamesTree;\n\nexport {\n NamesTree\n};\n"],"names":["AVStantso"],"mappings":";;;;;AAAA,IAAUA,WAAS;AAAnB,CAAA,UAAU,SAAS,EAAA;AACjB,IAAA,MAAM,SAAS,GAAG,CAAC,MAAK;QAGtB,MAAM,IAAI,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACrC,QAAA,MAAM,IAAI,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,GAAG,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC7C,QAAA,MAAM,GAAG,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAEvC,QAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACpD,CAAC,GAAG;AAoYS,IAAA,SAAA,CAAA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,KAAI;AAC3D,QAAA,MAAM,YAAY,GAAkD;AAClE,YAAA,GAAG;SACJ;AAED,QAAA,MAAM,SAAS,GAAgC,CAAC,KAAK,KACnD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;AAGpC,QAAA,SAAS,WAAW,CAClB,IAAc,EACd,OAA2B,EAAA;YAE3B,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,IAAI,EAAE;YAErC,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAA,EAAG,MAAM,CAAA,EAAG,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,CAAE,EAAE,CAAC,EAC9E,EAAiB,CAClB;QACH;QAWA,SAAS,QAAQ,CAAC,OAAkB,EAAA;AAClC,YAAA,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,OAAO;YAElE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,MAAM,CAAC,OAAO,CAAC,IAAI;qBAChB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,KAAK,CAAC;qBAChC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;AAClB,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,CAAsB,CAAC;oBAE1C,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACjC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5B,oBAAA,IAAI,GAAG,IAAI,EAAE,EAAE;AACb,wBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;wBAE/C,MAAM,KAAK,CACT,CAAA,2CAAA,EAA8C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG,CAChE;oBACH;oBAEA,MAAM,UAAU,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE;oBAEtC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;oBAE5B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;AAE7C,oBAAA,MAAM,EAAE,GACN,KAAK,IAAI,CAAC;AACR,0BAAE;AACF,0BAAE;8BACE,CAAC,GAAG,IAAY,KAAK,CAAC,CAAC,GAAG,IAAI;8BAC9B,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;kCACvB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;kCACjB,EAAE;AAEZ,oBAAA,IAAI,UAAU;AAAE,wBAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;oBAExC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;wBACrB,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE/B,wBAAA,IAAI,CAAC,OAAO;AACV,4BAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAI;AAC3C,gCAAA,MAAM,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,EAAE;gCACjB,IAAI,CAAC,IAAI,EAAE;AAAE,oCAAA,OAAO,EAAE,CAAC,CAAoB,CAAC;gCAE5C,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;AACvC,4BAAA,CAAC,CAAC;oBACN;AAEA,oBAAA,QAAQ,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAE1D,oBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;AAClC,gBAAA,CAAC,CAAC;YACN;AAEA,YAAA,OAAO,IAAI;QACb;QAEA,SAAS,QAAQ,CACf,IAA2B,EAC3B,OAAgB,EAChB,OAA0B,EAC1B,GAAG,KAAuB,EAAA;;YAI1B,IAAI,IAAI,GAAQ,EAAE;YAClB,SAAS,MAAM,CAAC,IAAoB,EAAA;AAClC,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;AAEjE,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB;YAEA,MAAM,IAAI,GAAQ,EAAE;YAEpB,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,oBAAA,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAE1C,oBAAA,KAAK,EAAE;AACL,wBAAA,KAAK,EAAE,CAAC,OAA8B,KAAI;AACxC,4BAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4BAChE,IAAI,GAAG,EAAE;AACT,4BAAA,OAAO,IAAI;wBACb,CAAC;AACD,wBAAA,QAAQ,EAAE;AACX;AACF,iBAAA,CAAC;AAEF,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KACjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE;AAChD,oBAAA,GAAG,EAAE,MAAM,MAAM,CAAC,IAAI;AACvB,iBAAA,CAAC,CACH;YACH;AAEA,YAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEvD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,SAAS,SAAS,CAAC,IAA2B,EAAE,GAAG,MAAc,EAAA;YAC/D,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,SAAS;YAErE,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAClD;QAEA,SAAS,UAAU,CAAC,GAAG,MAAgB,EAAA;AACrC,YAAA,OAAO,CACL,IAA2B,EAC3B,OAA0B,KACvB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC1C;AAEA,QAAA,OAAO,MAAM,CAAC,MAAM,CAClB,SAAS,EACT;YACE,SAAS;AACT,YAAA,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;AACzB,YAAA,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;YACjC,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK;AACvC,SAAA,CACF;AACH,IAAA,CAAC,CAAC;AACJ,CAAC,EAxiBSA,WAAS,KAATA,WAAS,GAAA,EAAA,CAAA,CAAA;;ACAnB,IAAO,SAAS,GAAG,SAAS,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n const BaseKinds = (() => {\n type M = NamesTree.Kinds.Method;\n\n const name: M = (path) => path.peek();\n const slash: M = (path) => path.join('/');\n const backslash: M = (path) => path.join('\\\\');\n const dot: M = (path) => path.join('.');\n const amp: M = (path) => path.join('&');\n const hash: M = (path) => path.join('#');\n const colon: M = (path) => path.join(':');\n const arrow: M = (path) => path.join('->');\n const dash: M = (path) => path.join('-');\n const underscore: M = (path) => path.join('_');\n const doubleColon: M = (path) => path.join('::');\n const comma: M = (path) => path.join(',');\n const semicolon: M = (path) => path.join(';');\n const space: M = (path) => path.join(' ');\n const pipe: M = (path) => path.join('|');\n\n const url: M = (path) => `/${slash(path)}`;\n const query: M = (path) => `?${amp(path)}`;\n const longArg: M = (path) => `--${dash(path)}`;\n const shortArg: M = (path) => `-${path.peek()}`;\n const envVar: M = (path) => underscore(path).toUpperCase();\n const cssClass: M = (path) => `.${dash(path)}`;\n const cssId: M = (path) => `#${dash(path)}`;\n const anchor: M = (path) => `#${path.peek()}`;\n const scoped: M = (path) => `@${slash(path)}`;\n const param: M = (path) => `:${path.peek()}`;\n const arg: M = (path) => `{${path.peek()}}`;\n const params: M = (path) => path.map(s => `:${s}`).join('/');\n const args: M = (path) => path.map(s => `{${s}}`).join('/');\n\n return {\n name,\n backslash,\n slash,\n dot,\n amp,\n hash,\n colon,\n arrow,\n dash,\n underscore,\n doubleColon,\n comma,\n semicolon,\n space,\n pipe,\n\n path: slash,\n url,\n query,\n i18n: dot,\n domain: dot,\n longArg,\n shortArg,\n envVar,\n cssClass,\n cssId,\n anchor,\n scoped,\n param,\n arg,\n params,\n args,\n\n snake: underscore,\n namespace: doubleColon,\n csv: comma,\n title: space\n };\n })();\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const BaseKindsMeta = (() => {\n const V = avstantso.Generic.Validator<NamesTree.KindMeta>();\n\n const KMParam = V({ beforeEach: ':' } as const);\n const KMArg = V({ beforeEach: '{', afterEach: '}' } as const);\n\n return {\n name: null as never,\n backslash: '\\\\',\n slash: '/',\n dot: '.',\n amp: '&',\n hash: '#',\n colon: ':',\n arrow: '->',\n dash: '-',\n underscore: '_',\n doubleColon: '::',\n comma: ',',\n semicolon: ';',\n space: ' ',\n pipe: '|',\n\n path: '/',\n url: V({ prefix: '/', separator: '/' } as const),\n query: V({ prefix: '?', separator: '&' } as const),\n i18n: '.',\n domain: '.',\n longArg: V({ prefix: '--', separator: '-' } as const),\n shortArg: V({ beforeEach: '-' } as const),\n envVar: V({ separator: '_', up: true } as const),\n cssClass: V({ prefix: '.', separator: '-' } as const),\n cssId: V({ prefix: '#', separator: '-' } as const),\n anchor: V({ beforeEach: '#' } as const),\n scoped: V({ prefix: '@', separator: '/' } as const),\n param: KMParam,\n arg: KMArg,\n params: V({ separator: '/', ...KMParam } as const),\n args: V({ separator: '/', ...KMArg } as const),\n\n snake: '_',\n namespace: '::',\n csv: ',',\n title: ' '\n } as const;\n })();\n\n export namespace NamesTree {\n export namespace Kinds {\n export type Method = (path: string[], options?: Options) => string;\n\n /**\n * @summary List of all allow tree kinds\n */\n export type All = TS.Union.ToTuple<keyof Kinds>;\n }\n\n type BaseKinds = typeof BaseKinds;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Kinds extends BaseKinds {}\n\n /**\n * @summary Allow tree kind\n */\n export type Kind = Kinds.All[number];\n\n //#region KindMeta\n export type KindMeta = {\n prefix?: string;\n separator?: string;\n beforeEach?: string;\n afterEach?: string;\n up?: boolean;\n };\n\n type BaseKindsMeta = typeof BaseKindsMeta;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface KindsMeta extends BaseKindsMeta {}\n\n namespace _ResolveKind {\n type RR<\n M extends KindMeta,\n MK extends keyof KindMeta\n > = M[MK] extends string\n ? M[MK]\n : '';\n\n export type Step<\n M extends KindMeta,\n K extends TS.Key,\n F extends boolean\n > = TS.Array.Join<[\n RR<M, F extends true ? 'prefix' : 'separator'>,\n RR<M, 'beforeEach'>,\n TS.String<K>,\n RR<M, 'afterEach'>\n ]> extends infer S extends string\n ? M['up'] extends true ? Uppercase<S> : S\n : never;\n }\n\n type _ResolveKind<\n M extends KindMeta,\n P extends TS.Keys,\n F extends boolean,\n R extends string = ''\n > = P extends readonly [infer C extends TS.Key, ...infer Rest extends TS.Keys]\n ? _ResolveKind<M, Rest, false, `${R}${_ResolveKind.Step<M, C, F>}`>\n : R;\n\n /**\n * Resolve kind step\n * @template KD Kind to resolve\n * @template P Path stack. E.g. for `a/b/c` must be `['c', 'b', 'a']`\n * @EXAMPLE(@TS.String.Case)\n */\n export type ResolveKind<\n KD extends Kind,\n P extends TS.Keys,\n O extends Options = Options\n > = ([KindsMeta[KD]] extends [never]\n ? TS.String<P[0]>\n : (\n KindsMeta[KD] extends string\n ? { separator: KindsMeta[KD] }\n : KindsMeta[KD]\n ) extends infer M extends KindMeta\n ? _ResolveKind<M, TS.Array.Reverse<P>, true>\n : string\n ) extends infer R extends string\n ? O extends { prefix: string } ? `${O['prefix']}${R}` : R\n : never;\n\n namespace ResolveKind {\n //#region @TS.String.Case — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n // Stack expected\n type P0 = ['node0'];\n type P1 = ['node1', 'node0'];\n type P2 = ['node2', 'node1', 'node0'];\n\n type name0 = CheckType<ResolveKind<'name', P0>, 'node0'>;\n type name1 = CheckType<ResolveKind<'name', P1>, 'node1'>;\n type name2 = CheckType<ResolveKind<'name', P2>, 'node2'>;\n\n type path0 = CheckType<ResolveKind<'path', P0>, 'node0'>;\n type path1 = CheckType<ResolveKind<'path', P1>, 'node0/node1'>;\n type path2 = CheckType<ResolveKind<'path', P2>, 'node0/node1/node2'>;\n\n type url0 = CheckType<ResolveKind<'url', P0>, '/node0'>;\n type url1 = CheckType<ResolveKind<'url', P1>, '/node0/node1'>;\n type url2 = CheckType<ResolveKind<'url', P2>, '/node0/node1/node2'>;\n\n type dot0 = CheckType<ResolveKind<'dot', P0>, 'node0'>;\n type dot1 = CheckType<ResolveKind<'dot', P1>, 'node0.node1'>;\n type dot2 = CheckType<ResolveKind<'dot', P2>, 'node0.node1.node2'>;\n\n type param0 = CheckType<ResolveKind<'params', P0>, ':node0'>;\n\n type params0 = CheckType<ResolveKind<'params', P0>, ':node0'>;\n type params1 = CheckType<ResolveKind<'params', P1>, ':node0/:node1'>;\n type params2 = CheckType<ResolveKind<'params', P2>, ':node0/:node1/:node2'>;\n\n type arg0 = CheckType<ResolveKind<'arg', P0>, '{node0}'>;\n\n type args0 = CheckType<ResolveKind<'args', P0>, '{node0}'>;\n type args1 = CheckType<ResolveKind<'args', P1>, '{node0}/{node1}'>;\n type args2 = CheckType<ResolveKind<'args', P2>, '{node0}/{node1}/{node2}'>;\n\n type envVar0 = CheckType<ResolveKind<'envVar', P0>, 'NODE0'>;\n type envVar1 = CheckType<ResolveKind<'envVar', P1>, 'NODE0_NODE1'>;\n type envVar2 = CheckType<ResolveKind<'envVar', P2>, 'NODE0_NODE1_NODE2'>;\n\n type query0 = CheckType<ResolveKind<'query', ['a']>, '?a'>;\n type query1 = CheckType<ResolveKind<'query', ['b', 'a']>, '?a&b'>;\n type query2 = CheckType<ResolveKind<'query', ['c', 'b', 'a']>, '?a&b&c'>;\n\n type longArg0 = CheckType<ResolveKind<'longArg', ['dry']>, '--dry'>;\n type longArg1 = CheckType<ResolveKind<'longArg', ['run', 'dry']>, '--dry-run'>;\n\n type shortArg0 = CheckType<ResolveKind<'shortArg', ['v']>, '-v'>;\n type shortArg1 = CheckType<ResolveKind<'shortArg', ['f', 'v']>, '-v-f'>;\n\n type cssClass0 = CheckType<ResolveKind<'cssClass', ['btn']>, '.btn'>;\n type cssClass1 = CheckType<ResolveKind<'cssClass', ['primary', 'btn']>, '.btn-primary'>;\n\n type cssId0 = CheckType<ResolveKind<'cssId', ['main']>, '#main'>;\n type cssId1 = CheckType<ResolveKind<'cssId', ['content', 'main']>, '#main-content'>;\n\n type anchor0 = CheckType<ResolveKind<'anchor', ['section']>, '#section'>;\n type anchor1 = CheckType<ResolveKind<'anchor', ['intro', 'section']>, '#section#intro'>;\n\n type scoped0 = CheckType<ResolveKind<'scoped', ['org']>, '@org'>;\n type scoped1 = CheckType<ResolveKind<'scoped', ['pkg', 'org']>, '@org/pkg'>;\n\n type param0_ = CheckType<ResolveKind<'param', ['id']>, ':id'>;\n type param1_ = CheckType<ResolveKind<'param', ['sub', 'id']>, ':id:sub'>;\n\n type prefixed = CheckType<ResolveKind<'dash', ['id', 'user'], { prefix: '$' }>, '$user-id'>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars */\n //#endregion\n }\n //#endregion\n\n //#region Source\n /**\n * @summary Tree node data source\n */\n export type Source = TS.Type.Builtin;\n\n export namespace Source {\n /**\n * @summary Tree root node data source\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n export type Root = object | Function;\n }\n //#endregion\n\n //#region Node\n export type _NodeKinds<\n O extends Options,\n KDs extends readonly Kind[],\n P extends TS.Keys,\n R = unknown\n > = KDs extends readonly [\n infer C extends Kind,\n ...infer Rest extends readonly Kind[]\n ]\n ? _NodeKinds<O, Rest, P, R & { [K in `_${C}`]: ResolveKind<C, P> }>\n : { [K in keyof R]: R[K] };\n\n /**\n * @summary Tree node for source `T` with allow kinds `KDs`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n O extends Options = Options,\n KDs extends readonly Kind[] = Kinds.All,\n S extends boolean = false,\n P extends TS.Keys = []\n > = (S extends true\n ? unknown\n : _NodeKinds<O, KDs, P>\n ) & Node.Data<T, O, KDs, S, P>;\n\n export namespace Node {\n //#region Constraint\n type _Constraint<\n KDs extends readonly Kind[],\n R = unknown\n > = KDs extends readonly [\n infer C extends Kind,\n ...infer Rest extends readonly Kind[]\n ]\n ? _Constraint<Rest, R & { [K in `_${C}`]: string }>\n : R;\n\n /**\n * @summary Node constraint\n */\n export type Constraint<\n KDs extends readonly Kind[] = Kinds.All\n > = _Constraint<KDs> extends infer R\n ? { [K in keyof R]: R[K] }\n : never;\n //#endregion\n\n /**\n * @summary Node data part\n */\n export type Data<\n T extends Source = Source,\n O extends Options = Options,\n KDs extends readonly Kind[] = Kinds.All,\n S extends boolean = false,\n P extends TS.Keys = []\n > = T extends Source.Root\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n ? (T extends Function ? T : unknown) & {\n [K in keyof T]: Node<\n Extract<T[K], Source>,\n O,\n KDs,\n S,\n [TS.String<K, '?'>, ...P]\n >;\n }\n : S extends true\n ? NamesTree.ResolveKind<KDs[0], P, O>\n : unknown;\n }\n //#endregion\n\n /**\n * @summary Tree options\n */\n export interface Options {\n /**\n * @summary Additional prefix for all `Kinds` methods\n */\n prefix?: string;\n\n /**\n * @summary Alias for root of tree as additional property.\\\n * E.g. `Home` for urls\n */\n rootAlias?: string;\n\n /**\n * @summary If picked and represents in internal array — will be used on `ToString` for nodes.\\\n * Else will be used first kind from tree.\n */\n defaultKind?: Kind;\n }\n\n //#region Presets\n /**\n * @summary `NamesTree` kinds presets\n */\n export namespace Presets {\n /**\n * @summary `Names` preset\n */\n export namespace Names {\n /**\n * @summary `Names` preset kinds\n */\n export type Kinds = ['name'];\n\n /**\n * @summary `Names` preset node constraint\n */\n export type Constraint = NamesTree.Node.Constraint<Kinds>;\n\n /**\n * @summary `Names` preset tree node for source `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n O extends Options = Options,\n S extends boolean = false,\n P extends TS.Keys = []\n > = NamesTree.Node<T, O, Kinds, S, P>;\n\n /**\n * @summary `Names` preset `NamesTree` for data `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Tree<\n T extends Source.Root,\n O extends Options,\n S extends boolean = false\n > = NamesTree<T, O, Kinds, S>;\n }\n\n /**\n * @summary `I18ns` preset\n */\n export namespace I18ns {\n /**\n * @summary `I18ns` preset kinds\n */\n export type Kinds = ['i18n', 'name'];\n\n /**\n * @summary `I18ns` preset node constraint\n */\n export type Constraint = NamesTree.Node.Constraint<Kinds>;\n\n /**\n * @summary `I18ns` preset tree node for source `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n O extends Options = Options,\n S extends boolean = false,\n P extends TS.Keys = []\n > = NamesTree.Node<T, O, Kinds, S, P>;\n\n /**\n * @summary `I18ns` preset `NamesTree` for data `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Tree<\n T extends Source.Root,\n O extends Options,\n S extends boolean = false\n > = NamesTree<T, O, Kinds, S>;\n }\n\n /**\n * @summary `Urls` preset\n */\n export namespace Urls {\n /**\n * @summary `Urls` preset kinds\n */\n export type Kinds = ['name', 'path', 'url'];\n\n /**\n * @summary `Urls` preset node constraint\n */\n export type Constraint = NamesTree.Node.Constraint<Kinds>;\n\n /**\n * @summary `Urls` preset tree node for source `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Node<\n T extends Source = Source,\n O extends Options = Options,\n S extends boolean = false,\n P extends TS.Keys = []\n > = NamesTree.Node<T, O, Kinds, S, P>;\n\n /**\n * @summary `Urls` preset `NamesTree` for data `T`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type Tree<\n T extends NamesTree.Source.Root,\n O extends NamesTree.Options,\n S extends boolean = false\n > = NamesTree<T, O, Kinds, S>;\n }\n }\n //#endregion\n }\n\n namespace _NamesTree {\n //#region Splitted\n type _Splitted<\n T extends NamesTree.Source.Root,\n O extends NamesTree.Options,\n KDs extends readonly NamesTree.Kind[],\n R extends TS.Arr = []\n > = KDs extends readonly [\n infer C extends NamesTree.Kind,\n ...infer Rest extends readonly NamesTree.Kind[]\n ]\n ? _Splitted<\n T,\n O,\n Rest,\n [...R, NamesTree<T, O, [C], true>]\n >\n : R;\n\n export type Splitted<\n T extends NamesTree.Source.Root,\n O extends NamesTree.Options,\n KDs extends readonly NamesTree.Kind[]\n > = _Splitted<T, O, KDs>;\n //#endregion\n\n export type ExtractByKinds<\n T extends NamesTree.Source.Root,\n O extends NamesTree.Options,\n KDs extends readonly NamesTree.Kind[],\n R = unknown\n > = KDs extends readonly [\n infer C extends NamesTree.Kind,\n ...infer Rest extends readonly NamesTree.Kind[]\n ]\n ? ExtractByKinds<\n T,\n O,\n Rest,\n R & { [K in Capitalize<C>]: NamesTree<T, O, [C], true> }\n >\n : R;\n }\n\n /**\n * @summary Names tree for data `T` with allow kinds `KDs`\n *\n * If `S = true`, allows tails nodes as string\n */\n export type NamesTree<\n T extends NamesTree.Source.Root,\n O extends NamesTree.Options,\n KDs extends readonly NamesTree.Kind[],\n S extends boolean = false\n > = NamesTree.Node.Data<T, O, KDs, S>\n & (S extends true\n ? O extends { rootAlias: infer R extends TS.Key }\n ? { [K in R]: NamesTree.ResolveKind<KDs[0], [''], O>; }\n : unknown\n : {\n /**\n * @summary Get array of splitted trees each with unique kind\n */\n $splitted: _NamesTree.Splitted<T, O, KDs>;\n\n /**\n * @summary Modify existing tree by additional data\n */\n $merge<M extends NamesTree.Source.Root>(\n data: M\n ): NamesTree<T & M, O, KDs, S>;\n } & _NamesTree.ExtractByKinds<T, O, KDs> & (\n O extends { rootAlias: infer R extends TS.Key }\n ? { [K in R]: NamesTree._NodeKinds<O, KDs, ['']>; }\n : unknown\n )\n );\n\n export namespace Code {\n /**\n * @summary `AVStantso.NamesTree` utility\n */\n export interface NamesTree {\n <\n T extends AVStantso.NamesTree.Source.Root,\n O extends AVStantso.NamesTree.Options,\n K0 extends AVStantso.NamesTree.Kind,\n K1 extends Exclude<AVStantso.NamesTree.Kind, K0> = undefined,\n K2 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1> = undefined,\n K3 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1 | K2> = undefined,\n K4 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3\n > = undefined,\n K5 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4\n > = undefined,\n K6 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5\n > = undefined,\n K7 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6\n > = undefined,\n K8 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7\n > = undefined,\n K9 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8\n > = undefined\n >(\n data: T,\n options: O,\n kind0: K0,\n kind1?: K1,\n kind2?: K2,\n kind3?: K3,\n kind4?: K4,\n kind5?: K5,\n kind6?: K6,\n kind7?: K7,\n kind8?: K8,\n kind9?: K9\n ): AVStantso.NamesTree<\n T,\n O,\n AVStantso.TS.Array.Filter<\n AVStantso.TS.Array.Filter.Unique<\n [K0, K1, K2, K3, K4, K5, K6, K7, K8, K9]\n >\n >\n >;\n\n <\n T extends AVStantso.NamesTree.Source.Root,\n K0 extends AVStantso.NamesTree.Kind,\n K1 extends Exclude<AVStantso.NamesTree.Kind, K0> = undefined,\n K2 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1> = undefined,\n K3 extends Exclude<AVStantso.NamesTree.Kind, K0 | K1 | K2> = undefined,\n K4 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3\n > = undefined,\n K5 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4\n > = undefined,\n K6 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5\n > = undefined,\n K7 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6\n > = undefined,\n K8 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7\n > = undefined,\n K9 extends Exclude<\n AVStantso.NamesTree.Kind,\n K0 | K1 | K2 | K3 | K4 | K5 | K6 | K7 | K8\n > = undefined\n >(\n data: T,\n kind0: K0,\n kind1?: K1,\n kind2?: K2,\n kind3?: K3,\n kind4?: K4,\n kind5?: K5,\n kind6?: K6,\n kind7?: K7,\n kind8?: K8,\n kind9?: K9\n ): AVStantso.NamesTree<\n T,\n undefined,\n AVStantso.TS.Array.Filter<\n AVStantso.TS.Array.Filter.Unique<\n [K0, K1, K2, K3, K4, K5, K6, K7, K8, K9]\n >\n >\n >;\n\n /**\n * @summary Register external `NamesTree` kinds\n */\n _RegKinds(kinds: NodeJS.Dict<AVStantso.NamesTree.Kinds.Method>): void;\n\n /**\n * @summary Make `Name` `NamesTree`\n */\n Names<\n T extends AVStantso.NamesTree.Source.Root,\n O extends AVStantso.NamesTree.Options = undefined\n >(\n data: T,\n options?: O\n ): AVStantso.NamesTree.Presets.Names.Tree<T, O>;\n\n /**\n * @summary Make `i18n` `NamesTree`\n */\n I18ns<\n T extends AVStantso.NamesTree.Source.Root,\n O extends AVStantso.NamesTree.Options = undefined\n >(\n data: T,\n options?: O\n ): AVStantso.NamesTree.Presets.I18ns.Tree<T, O>;\n\n /**\n * @summary Make `urls` `NamesTree`\n */\n Urls<\n T extends AVStantso.NamesTree.Source.Root,\n O extends AVStantso.NamesTree.Options = undefined\n >(\n data: T,\n options?: O\n ): AVStantso.NamesTree.Presets.Urls.Tree<T, O>;\n }\n }\n\n export interface Code {\n /**\n * @summary `AVStantso.NamesTree` utility\n */\n NamesTree: Code.NamesTree;\n }\n\n export const NamesTree = avstantso._reg.NamesTree(({ JS }) => {\n const kindsMethods: NodeJS.Dict<AVStantso.NamesTree.Kinds.Method> = {\n ...BaseKinds\n };\n\n const _RegKinds: Code.NamesTree['_RegKinds'] = (kinds) =>\n Object.assign(kindsMethods, kinds);\n\n type PathMethods = Record<NamesTree.Kind, () => string>;\n function PathMethods(\n path: string[],\n options?: NamesTree.Options\n ): PathMethods {\n const { prefix = '' } = options || {};\n\n return Object.entries(kindsMethods).reduce(\n (r, [k, v]) => Object.assign(r, { [k]: () => `${prefix}${v(path, options)}` }),\n {} as PathMethods\n );\n }\n\n type NDContext = {\n strTail: boolean;\n kinds: NamesTree.Kind[];\n options: NamesTree.Options;\n\n dest: NamesTree.Node.Data;\n data: NamesTree.Source;\n path?: string[];\n };\n\n function isStopRecursion(node: unknown) {\n return !JS.is.structure(node);\n }\n\n function NodeKinds(\n { strTail, kinds, options }: NDContext,\n ds: object,\n subPath: string[] = ['']\n ) {\n if (isStopRecursion(ds)) return;\n\n const methods = PathMethods(subPath, options);\n\n const dk = options?.defaultKind;\n\n ds.toString = methods[\n (dk && kinds.includes(dk) && dk)\n || kinds[0]\n ];\n\n if (!strTail)\n Object.entriesEx(methods).forEach(([m, get]) => {\n if (!kinds.includes(m)) return;\n const p = `_${m}`;\n if (p in ds) delete ds[p as keyof typeof ds];\n\n Object.defineProperty(ds, p, { get });\n });\n }\n\n function NodeData(context: NDContext): NamesTree.Node.Data {\n const { strTail, kinds, options, dest, data, path = [] } = context;\n\n if (!isStopRecursion(data)) {\n Object.entries(data)\n .forEach(([k, v]) => {\n if ('toString' === k) return;\n\n const oldDs = dest[k as keyof typeof dest];\n\n const fds = JS.is.function(oldDs);\n const fv = JS.is.function(v);\n\n if (fds && fv) {\n console.warn('%O', { oldDs, v, fds, fv, data });\n\n throw Error(\n `Can't merge NamesTrees functions nodes at \"${path.join('.')}\"`\n );\n }\n\n const needReMake = oldDs && !fds && fv;\n\n const subPath = [...path, k];\n\n const methods = PathMethods(subPath, options);\n\n const ds =\n oldDs && !needReMake\n ? oldDs\n : fv\n ? (...args: TS.Arr) => v(...args)\n : strTail && isStopRecursion(v)\n ? methods[kinds[0]]()\n : {};\n\n if (needReMake) Object.assign(ds, oldDs);\n\n NodeKinds(context, ds, subPath);\n NodeData({ ...context, dest: ds, data: v, path: subPath });\n\n Object.assign(dest, { [k]: ds });\n });\n }\n\n return dest;\n }\n\n function MakeTree(\n data: NamesTree.Source.Root,\n strTail: boolean,\n options: NamesTree.Options,\n ...kinds: NamesTree.Kind[]\n ) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n let subs: any = {};\n function getSub(kind: NamesTree.Kind) {\n if (!subs[kind]) subs[kind] = MakeTree(data, true, options, kind);\n\n return subs[kind];\n }\n\n const tree: any = {};\n\n if (!strTail) {\n Object.defineProperties(tree, {\n $splitted: { get: () => kinds.map(getSub) },\n\n $merge: {\n value: (addData: NamesTree.Source.Root) => {\n NodeData({ strTail, kinds, options, dest: tree, data: addData });\n subs = {};\n return tree;\n },\n writable: false\n }\n });\n\n kinds.forEach((kind) =>\n Object.defineProperty(tree, kind.toCapitalized(), {\n get: () => getSub(kind)\n })\n );\n }\n\n const context = { strTail, kinds, options, dest: tree, data };\n NodeData(context);\n\n if (options?.rootAlias) {\n NodeKinds(context, tree);\n\n Object.defineProperty(tree, options.rootAlias, {\n get: () => tree,\n enumerable: true\n });\n }\n\n return tree;\n }\n\n function NamesTree(data: NamesTree.Source.Root, ...params: TS.Arr) {\n const options = !JS.is.string(params[0]) ? params.shift() : undefined;\n\n return MakeTree(data, false, options, ...params);\n }\n\n function MakePreset(...params: string[]) {\n return (\n data: NamesTree.Source.Root,\n options: NamesTree.Options\n ) => NamesTree(data, options, ...params);\n }\n\n return Object.assign(\n NamesTree,\n {\n _RegKinds,\n Names: MakePreset('name'),\n I18ns: MakePreset('i18n', 'name'),\n Urls: MakePreset('name', 'path', 'url')\n }\n );\n });\n}\n","import NamesTree = AVStantso.NamesTree;\n\nexport {\n NamesTree\n};\n"],"names":["AVStantso"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@avstantso/utils-names-tree",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"author": "avstantso",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.3.0",
|
|
6
6
|
"description": "AVStantso framework utils: NamesTree",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"NamesTree"
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
"test": "NODE_ENV=test jest --coverage"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@avstantso/concepts": "1.2.
|
|
26
|
+
"@avstantso/concepts": "1.2.2",
|
|
27
27
|
"@avstantso/core": "1.2.1",
|
|
28
28
|
"@avstantso/errors": "1.2.1",
|
|
29
|
-
"@avstantso/js": "1.2.
|
|
29
|
+
"@avstantso/js": "1.2.2",
|
|
30
30
|
"@avstantso/std-ext": "1.2.1",
|
|
31
|
-
"@avstantso/ts": "1.
|
|
31
|
+
"@avstantso/ts": "1.3.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@avstantso/dev-basic": "1.0.0"
|