@avstantso/utils-names-tree 1.3.0 → 1.3.3

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 CHANGED
@@ -1,6 +1,27 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [1.3.3] - 2026-02-05
5
+
6
+ ### Changed
7
+
8
+ - Updated `@avstantso/ts` dependency (+String.Split)
9
+
10
+
11
+ ## [1.3.2] - 2026-02-04
12
+
13
+ ### Changed
14
+
15
+ - Removed `dev-basic` workspace dependency (dev deps now resolved via `.yarnrc.yml` packageExtensions)
16
+
17
+
18
+ ## [1.3.1] - 2026-02-04
19
+
20
+ ### Added
21
+
22
+ - **`NamesTree.symbolRootAlias`** — Symbol for accessing the `rootAlias` value from tree instances via `tree[NamesTree.symbolRootAlias]`, avoiding property name conflicts
23
+
24
+
4
25
  ## [1.3.0] - 2026-01-31
5
26
 
6
27
  ### Added
package/README.md CHANGED
@@ -14,6 +14,7 @@ Type-safe tree structure utilities for generating hierarchical names, paths, and
14
14
  - **Preset configurations** - Built-in presets for common use cases (Names, URLs, i18n keys)
15
15
  - **Customizable kinds** - Define custom formatting methods for different output types
16
16
  - **Tree merging** - Combine multiple data sources into a single tree structure
17
+ - **Symbol-based root alias access** - Access `rootAlias` value via `NamesTree.symbolRootAlias` symbol, avoiding property name conflicts
17
18
  - **Prefix support** - Add prefixes to all generated values
18
19
  - Zero dependencies beyond the monorepo packages
19
20
 
@@ -65,6 +66,7 @@ console.log(`${formTree.label}`); // 'label'
65
66
 
66
67
  **Exported Members:**
67
68
  - `NamesTree` - Complete NamesTree utilities namespace (same as `AVStantso.NamesTree`)
69
+ - `NamesTree.symbolRootAlias` - Symbol for accessing the `rootAlias` value from tree instances
68
70
 
69
71
  ## API Reference
70
72
 
@@ -407,6 +409,9 @@ console.log(`${UrlsTree.Url.Home}`); // '/'
407
409
  // Splitted trees also have the alias
408
410
  const [NAMES, PATHS, URLS] = UrlsTree.$splitted;
409
411
  console.log(`${URLS.Home}`); // '/'
412
+
413
+ // Access rootAlias value via Symbol (avoids property name conflicts)
414
+ console.log(UrlsTree[NamesTree.symbolRootAlias]); // 'Home'
410
415
  ```
411
416
 
412
417
  **Using Default Kind:**
@@ -426,6 +431,28 @@ console.log(`${tree2.profile.settings}`); // '/profile/settings'
426
431
 
427
432
  ---
428
433
 
434
+ ### NamesTree.symbolRootAlias
435
+
436
+ A Symbol property for safely accessing the `rootAlias` value from a tree instance. Using a Symbol avoids conflicts with tree data properties.
437
+
438
+ **Type:** `typeof symbolRootAlias` (unique symbol)
439
+
440
+ **Example:**
441
+ ```typescript
442
+ import { NamesTree } from '@avstantso/utils-names-tree';
443
+
444
+ const Urls = { profile: { settings: '' } };
445
+ const UrlsTree = NamesTree.Urls(Urls, { rootAlias: 'Home' } as const);
446
+
447
+ // Access rootAlias value via symbol
448
+ console.log(UrlsTree[NamesTree.symbolRootAlias]); // 'Home'
449
+
450
+ // The symbol is NOT accessible as a regular property
451
+ console.log((UrlsTree as any).symbolRootAlias); // undefined
452
+ ```
453
+
454
+ ---
455
+
429
456
  ## Advanced Features
430
457
 
431
458
  ### Tree Merging
@@ -1,4 +1,5 @@
1
1
  declare namespace AVStantso {
2
+ const symbolRootAlias: unique symbol;
2
3
  const BaseKinds: {
3
4
  name: Kinds.Method;
4
5
  backslash: Kinds.Method;
@@ -404,6 +405,10 @@ declare namespace AVStantso {
404
405
  * @summary Modify existing tree by additional data
405
406
  */
406
407
  $merge<M extends NamesTree.Source.Root>(data: M): NamesTree<T & M, O, KDs, S>;
408
+ /**
409
+ * @summary Access to `rootAlias` value
410
+ */
411
+ [symbolRootAlias]: O['rootAlias'];
407
412
  } & _NamesTree.ExtractByKinds<T, O, KDs> & (O extends {
408
413
  rootAlias: infer R extends TS.Key;
409
414
  } ? {
@@ -454,6 +459,10 @@ declare namespace AVStantso {
454
459
  * @summary Make `urls` `NamesTree`
455
460
  */
456
461
  Urls<T extends AVStantso.NamesTree.Source.Root, O extends AVStantso.NamesTree.Options = undefined>(data: T, options?: O): AVStantso.NamesTree.Presets.Urls.Tree<T, O>;
462
+ /**
463
+ * @summary Symbol for access to `rootAlias` value of property
464
+ */
465
+ symbolRootAlias: typeof symbolRootAlias;
457
466
  }
458
467
  }
459
468
  export interface Code {
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ require('@avstantso/js');
5
5
 
6
6
  var AVStantso$1;
7
7
  (function (AVStantso) {
8
+ const symbolRootAlias = Symbol('rootAlias');
8
9
  const BaseKinds = (() => {
9
10
  const name = (path) => path.peek();
10
11
  const slash = (path) => path.join('/');
@@ -196,7 +197,13 @@ var AVStantso$1;
196
197
  return tree;
197
198
  },
198
199
  writable: false
199
- }
200
+ },
201
+ ...(options?.rootAlias && {
202
+ [symbolRootAlias]: {
203
+ value: options.rootAlias,
204
+ writable: false
205
+ }
206
+ })
200
207
  });
201
208
  kinds.forEach((kind) => Object.defineProperty(tree, kind.toCapitalized(), {
202
209
  get: () => getSub(kind)
@@ -224,7 +231,8 @@ var AVStantso$1;
224
231
  _RegKinds,
225
232
  Names: MakePreset('name'),
226
233
  I18ns: MakePreset('i18n', 'name'),
227
- Urls: MakePreset('name', 'path', 'url')
234
+ Urls: MakePreset('name', 'path', 'url'),
235
+ symbolRootAlias: symbolRootAlias
228
236
  });
229
237
  });
230
238
  })(AVStantso$1 || (AVStantso$1 = {}));
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 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":";;;;;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,KAAK,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,SAAS,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,QAAA,MAAM,GAAG,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,QAAA,MAAM,IAAI,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,QAAA,MAAM,IAAI,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAA,MAAM,UAAU,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9C,QAAA,MAAM,WAAW,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,SAAS,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAA,MAAM,IAAI,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAExC,QAAA,MAAM,GAAG,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,EAAE;AAC1C,QAAA,MAAM,OAAO,GAAM,CAAC,IAAI,KAAK,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAA,MAAM,QAAQ,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAC/C,QAAA,MAAM,MAAM,GAAM,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;AAC1D,QAAA,MAAM,QAAQ,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAC9C,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3C,QAAA,MAAM,MAAM,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAC7C,QAAA,MAAM,MAAM,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AAC7C,QAAA,MAAM,KAAK,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AAC5C,QAAA,MAAM,GAAG,GAAM,CAAC,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,GAAG;QAC3C,MAAM,MAAM,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5D,MAAM,IAAI,GAAM,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAE3D,OAAO;YACL,IAAI;YACJ,SAAS;YACT,KAAK;YACL,GAAG;YACH,GAAG;YACH,IAAI;YACJ,KAAK;YACL,KAAK;YACL,IAAI;YACJ,UAAU;YACV,WAAW;YACX,KAAK;YACL,SAAS;YACT,KAAK;YACL,IAAI;AAEJ,YAAA,IAAI,EAAE,KAAK;YACX,GAAG;YACH,KAAK;AACL,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,MAAM,EAAE,GAAG;YACX,OAAO;YACP,QAAQ;YACR,MAAM;YACN,QAAQ;YACR,KAAK;YACL,MAAM;YACN,MAAM;YACN,KAAK;YACL,GAAG;YACH,MAAM;YACN,IAAI;AAEJ,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,SAAS,EAAE,WAAW;AACtB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,KAAK,EAAE;SACR;IACH,CAAC,GAAG;;AAGJ,IAAsB,CAAC,MAAK;QAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAsB;QAE3D,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAW,CAAC;AAC/C,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;QAE7D,OAAO;AACL,YAAA,IAAI,EAAE,IAAa;AACnB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,IAAI,EAAE,GAAG;AAET,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;AAChD,YAAA,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;AAClD,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;YACrD,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAW,CAAC;AACzC,YAAA,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAW,CAAC;AAChD,YAAA,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;AACrD,YAAA,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;YAClD,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAW,CAAC;AACvC,YAAA,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAW,CAAC;AACnD,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,KAAK;YACV,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,EAAW,CAAC;YAClD,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAW,CAAC;AAE9C,YAAA,KAAK,EAAE,GAAG;AACV,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,KAAK,EAAE;SACC;IACZ,CAAC;AA2nBY,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;QAYA,SAAS,eAAe,CAAC,IAAa,EAAA;YACpC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;QAC/B;AAEA,QAAA,SAAS,SAAS,CAChB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAa,EACtC,EAAU,EACV,OAAA,GAAoB,CAAC,EAAE,CAAC,EAAA;YAExB,IAAI,eAAe,CAAC,EAAE,CAAC;gBAAE;YAEzB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC;AAE7C,YAAA,MAAM,EAAE,GAAG,OAAO,EAAE,WAAW;AAE/B,YAAA,EAAE,CAAC,QAAQ,GAAG,OAAO,CACnB,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;AAC5B,mBAAA,KAAK,CAAC,CAAC,CAAC,CACZ;AAED,YAAA,IAAI,CAAC,OAAO;AACV,gBAAA,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAI;AAC7C,oBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAAE;AACxB,oBAAA,MAAM,CAAC,GAAG,CAAA,CAAA,EAAI,CAAC,EAAE;oBACjB,IAAI,CAAC,IAAI,EAAE;AAAE,wBAAA,OAAO,EAAE,CAAC,CAAoB,CAAC;oBAE5C,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;AACvC,gBAAA,CAAC,CAAC;QACN;QAEA,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;AAElE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,MAAM,CAAC,OAAO,CAAC,IAAI;qBAChB,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;oBAClB,IAAI,UAAU,KAAK,CAAC;wBAAE;AAEtB,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;AAChC,8BAAE,OAAO,IAAI,eAAe,CAAC,CAAC;kCAC1B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;kCACjB,EAAE;AAEZ,oBAAA,IAAI,UAAU;AAAE,wBAAA,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC;AAExC,oBAAA,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC;AAC/B,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,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAE3C,oBAAA,MAAM,EAAE;AACN,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,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAC7D,QAAQ,CAAC,OAAO,CAAC;AAEjB,YAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,gBAAA,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC;gBAExB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE;AAC7C,oBAAA,GAAG,EAAE,MAAM,IAAI;AACf,oBAAA,UAAU,EAAE;AACb,iBAAA,CAAC;YACJ;AAEA,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,EA76BSA,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 symbolRootAlias = Symbol('rootAlias');\n\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\n /**\n * @summary Access to `rootAlias` value\n */\n [symbolRootAlias]: O['rootAlias'];\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 //#region Factory with options\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 //#endregion\n\n //#region Factory without options\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 //#endregion\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 * @summary Symbol for access to `rootAlias` value of property\n */\n symbolRootAlias: typeof symbolRootAlias;\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 ...(options?.rootAlias && {\n [symbolRootAlias]: {\n value: options.rootAlias,\n writable: false\n }\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 symbolRootAlias: symbolRootAlias as typeof symbolRootAlias\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.3.0",
5
+ "version": "1.3.3",
6
6
  "description": "AVStantso framework utils: NamesTree",
7
7
  "keywords": [
8
8
  "NamesTree"
@@ -23,14 +23,11 @@
23
23
  "test": "NODE_ENV=test jest --coverage"
24
24
  },
25
25
  "dependencies": {
26
- "@avstantso/concepts": "1.2.2",
27
- "@avstantso/core": "1.2.1",
28
- "@avstantso/errors": "1.2.1",
29
- "@avstantso/js": "1.2.2",
30
- "@avstantso/std-ext": "1.2.1",
31
- "@avstantso/ts": "1.3.0"
32
- },
33
- "devDependencies": {
34
- "@avstantso/dev-basic": "1.0.0"
26
+ "@avstantso/concepts": "1.2.4",
27
+ "@avstantso/core": "1.2.2",
28
+ "@avstantso/errors": "1.2.2",
29
+ "@avstantso/js": "1.2.4",
30
+ "@avstantso/std-ext": "1.2.2",
31
+ "@avstantso/ts": "1.3.2"
35
32
  }
36
33
  }