@datasworn-community/core 0.2.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.
Files changed (201) hide show
  1. package/README.md +11 -0
  2. package/dist/cjs/Datasworn.d.ts +5012 -0
  3. package/dist/cjs/Datasworn.d.ts.map +1 -0
  4. package/dist/cjs/Datasworn.js +3 -0
  5. package/dist/cjs/Datasworn.js.map +1 -0
  6. package/dist/cjs/DataswornSource.d.ts +5025 -0
  7. package/dist/cjs/DataswornSource.d.ts.map +1 -0
  8. package/dist/cjs/DataswornSource.js +3 -0
  9. package/dist/cjs/DataswornSource.js.map +1 -0
  10. package/dist/cjs/DataswornTree.d.ts +9 -0
  11. package/dist/cjs/DataswornTree.d.ts.map +1 -0
  12. package/dist/cjs/DataswornTree.js +25 -0
  13. package/dist/cjs/DataswornTree.js.map +1 -0
  14. package/dist/cjs/DataswornVersion.d.ts +8 -0
  15. package/dist/cjs/DataswornVersion.d.ts.map +1 -0
  16. package/dist/cjs/DataswornVersion.js +10 -0
  17. package/dist/cjs/DataswornVersion.js.map +1 -0
  18. package/dist/cjs/Errors.d.ts +5 -0
  19. package/dist/cjs/Errors.d.ts.map +1 -0
  20. package/dist/cjs/Errors.js +11 -0
  21. package/dist/cjs/Errors.js.map +1 -0
  22. package/dist/cjs/IdElements/CONST.d.ts +37 -0
  23. package/dist/cjs/IdElements/CONST.d.ts.map +1 -0
  24. package/dist/cjs/IdElements/CONST.js +26 -0
  25. package/dist/cjs/IdElements/CONST.js.map +1 -0
  26. package/dist/cjs/IdElements/PathKeys.d.ts +13 -0
  27. package/dist/cjs/IdElements/PathKeys.d.ts.map +1 -0
  28. package/dist/cjs/IdElements/PathKeys.js +3 -0
  29. package/dist/cjs/IdElements/PathKeys.js.map +1 -0
  30. package/dist/cjs/IdElements/Pattern.d.ts +13 -0
  31. package/dist/cjs/IdElements/Pattern.d.ts.map +1 -0
  32. package/dist/cjs/IdElements/Pattern.js +20 -0
  33. package/dist/cjs/IdElements/Pattern.js.map +1 -0
  34. package/dist/cjs/IdElements/TypeGuard.d.ts +25 -0
  35. package/dist/cjs/IdElements/TypeGuard.d.ts.map +1 -0
  36. package/dist/cjs/IdElements/TypeGuard.js +72 -0
  37. package/dist/cjs/IdElements/TypeGuard.js.map +1 -0
  38. package/dist/cjs/IdElements/TypeId.d.ts +114 -0
  39. package/dist/cjs/IdElements/TypeId.d.ts.map +1 -0
  40. package/dist/cjs/IdElements/TypeId.js +259 -0
  41. package/dist/cjs/IdElements/TypeId.js.map +1 -0
  42. package/dist/cjs/IdElements/index.d.ts +6 -0
  43. package/dist/cjs/IdElements/index.d.ts.map +1 -0
  44. package/dist/cjs/IdElements/index.js +48 -0
  45. package/dist/cjs/IdElements/index.js.map +1 -0
  46. package/dist/cjs/IdParser.d.ts +380 -0
  47. package/dist/cjs/IdParser.d.ts.map +1 -0
  48. package/dist/cjs/IdParser.js +1012 -0
  49. package/dist/cjs/IdParser.js.map +1 -0
  50. package/dist/cjs/Migrations/index.d.ts +2 -0
  51. package/dist/cjs/Migrations/index.d.ts.map +1 -0
  52. package/dist/cjs/Migrations/index.js +18 -0
  53. package/dist/cjs/Migrations/index.js.map +1 -0
  54. package/dist/cjs/Migrations/updateIds.d.ts +34 -0
  55. package/dist/cjs/Migrations/updateIds.d.ts.map +1 -0
  56. package/dist/cjs/Migrations/updateIds.js +141 -0
  57. package/dist/cjs/Migrations/updateIds.js.map +1 -0
  58. package/dist/cjs/StringId.d.ts +47 -0
  59. package/dist/cjs/StringId.d.ts.map +1 -0
  60. package/dist/cjs/StringId.js +3 -0
  61. package/dist/cjs/StringId.js.map +1 -0
  62. package/dist/cjs/Tree.d.ts +5 -0
  63. package/dist/cjs/Tree.d.ts.map +1 -0
  64. package/dist/cjs/Tree.js +3 -0
  65. package/dist/cjs/Tree.js.map +1 -0
  66. package/dist/cjs/TypeNode.d.ts +93 -0
  67. package/dist/cjs/TypeNode.d.ts.map +1 -0
  68. package/dist/cjs/TypeNode.js +3 -0
  69. package/dist/cjs/TypeNode.js.map +1 -0
  70. package/dist/cjs/Utils/Array.d.ts +16 -0
  71. package/dist/cjs/Utils/Array.d.ts.map +1 -0
  72. package/dist/cjs/Utils/Array.js +14 -0
  73. package/dist/cjs/Utils/Array.js.map +1 -0
  74. package/dist/cjs/Utils/Id.d.ts +75 -0
  75. package/dist/cjs/Utils/Id.d.ts.map +1 -0
  76. package/dist/cjs/Utils/Id.js +3 -0
  77. package/dist/cjs/Utils/Id.js.map +1 -0
  78. package/dist/cjs/Utils/Number.d.ts +5 -0
  79. package/dist/cjs/Utils/Number.d.ts.map +1 -0
  80. package/dist/cjs/Utils/Number.js +4 -0
  81. package/dist/cjs/Utils/Number.js.map +1 -0
  82. package/dist/cjs/Utils/Sort.d.ts +17 -0
  83. package/dist/cjs/Utils/Sort.d.ts.map +1 -0
  84. package/dist/cjs/Utils/Sort.js +277 -0
  85. package/dist/cjs/Utils/Sort.js.map +1 -0
  86. package/dist/cjs/Utils/String.d.ts +4 -0
  87. package/dist/cjs/Utils/String.d.ts.map +1 -0
  88. package/dist/cjs/Utils/String.js +3 -0
  89. package/dist/cjs/Utils/String.js.map +1 -0
  90. package/dist/cjs/index.d.ts +10 -0
  91. package/dist/cjs/index.d.ts.map +1 -0
  92. package/dist/cjs/index.js +47 -0
  93. package/dist/cjs/index.js.map +1 -0
  94. package/dist/cjs/mergeExpansion.d.ts +3 -0
  95. package/dist/cjs/mergeExpansion.d.ts.map +1 -0
  96. package/dist/cjs/mergeExpansion.js +113 -0
  97. package/dist/cjs/mergeExpansion.js.map +1 -0
  98. package/dist/cjs/package.json +1 -0
  99. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  100. package/dist/esm/Datasworn.d.ts +5012 -0
  101. package/dist/esm/Datasworn.d.ts.map +1 -0
  102. package/dist/esm/Datasworn.js +2 -0
  103. package/dist/esm/Datasworn.js.map +1 -0
  104. package/dist/esm/DataswornSource.d.ts +5025 -0
  105. package/dist/esm/DataswornSource.d.ts.map +1 -0
  106. package/dist/esm/DataswornSource.js +2 -0
  107. package/dist/esm/DataswornSource.js.map +1 -0
  108. package/dist/esm/DataswornTree.d.ts +9 -0
  109. package/dist/esm/DataswornTree.d.ts.map +1 -0
  110. package/dist/esm/DataswornTree.js +21 -0
  111. package/dist/esm/DataswornTree.js.map +1 -0
  112. package/dist/esm/DataswornVersion.d.ts +8 -0
  113. package/dist/esm/DataswornVersion.d.ts.map +1 -0
  114. package/dist/esm/DataswornVersion.js +7 -0
  115. package/dist/esm/DataswornVersion.js.map +1 -0
  116. package/dist/esm/Errors.d.ts +5 -0
  117. package/dist/esm/Errors.d.ts.map +1 -0
  118. package/dist/esm/Errors.js +7 -0
  119. package/dist/esm/Errors.js.map +1 -0
  120. package/dist/esm/IdElements/CONST.d.ts +37 -0
  121. package/dist/esm/IdElements/CONST.d.ts.map +1 -0
  122. package/dist/esm/IdElements/CONST.js +23 -0
  123. package/dist/esm/IdElements/CONST.js.map +1 -0
  124. package/dist/esm/IdElements/PathKeys.d.ts +13 -0
  125. package/dist/esm/IdElements/PathKeys.d.ts.map +1 -0
  126. package/dist/esm/IdElements/PathKeys.js +2 -0
  127. package/dist/esm/IdElements/PathKeys.js.map +1 -0
  128. package/dist/esm/IdElements/Pattern.d.ts +13 -0
  129. package/dist/esm/IdElements/Pattern.d.ts.map +1 -0
  130. package/dist/esm/IdElements/Pattern.js +18 -0
  131. package/dist/esm/IdElements/Pattern.js.map +1 -0
  132. package/dist/esm/IdElements/TypeGuard.d.ts +25 -0
  133. package/dist/esm/IdElements/TypeGuard.d.ts.map +1 -0
  134. package/dist/esm/IdElements/TypeGuard.js +67 -0
  135. package/dist/esm/IdElements/TypeGuard.js.map +1 -0
  136. package/dist/esm/IdElements/TypeId.d.ts +114 -0
  137. package/dist/esm/IdElements/TypeId.d.ts.map +1 -0
  138. package/dist/esm/IdElements/TypeId.js +257 -0
  139. package/dist/esm/IdElements/TypeId.js.map +1 -0
  140. package/dist/esm/IdElements/index.d.ts +6 -0
  141. package/dist/esm/IdElements/index.d.ts.map +1 -0
  142. package/dist/esm/IdElements/index.js +6 -0
  143. package/dist/esm/IdElements/index.js.map +1 -0
  144. package/dist/esm/IdParser.d.ts +380 -0
  145. package/dist/esm/IdParser.d.ts.map +1 -0
  146. package/dist/esm/IdParser.js +1004 -0
  147. package/dist/esm/IdParser.js.map +1 -0
  148. package/dist/esm/Migrations/index.d.ts +2 -0
  149. package/dist/esm/Migrations/index.d.ts.map +1 -0
  150. package/dist/esm/Migrations/index.js +2 -0
  151. package/dist/esm/Migrations/index.js.map +1 -0
  152. package/dist/esm/Migrations/updateIds.d.ts +34 -0
  153. package/dist/esm/Migrations/updateIds.d.ts.map +1 -0
  154. package/dist/esm/Migrations/updateIds.js +135 -0
  155. package/dist/esm/Migrations/updateIds.js.map +1 -0
  156. package/dist/esm/StringId.d.ts +47 -0
  157. package/dist/esm/StringId.d.ts.map +1 -0
  158. package/dist/esm/StringId.js +2 -0
  159. package/dist/esm/StringId.js.map +1 -0
  160. package/dist/esm/Tree.d.ts +5 -0
  161. package/dist/esm/Tree.d.ts.map +1 -0
  162. package/dist/esm/Tree.js +2 -0
  163. package/dist/esm/Tree.js.map +1 -0
  164. package/dist/esm/TypeNode.d.ts +93 -0
  165. package/dist/esm/TypeNode.d.ts.map +1 -0
  166. package/dist/esm/TypeNode.js +2 -0
  167. package/dist/esm/TypeNode.js.map +1 -0
  168. package/dist/esm/Utils/Array.d.ts +16 -0
  169. package/dist/esm/Utils/Array.d.ts.map +1 -0
  170. package/dist/esm/Utils/Array.js +11 -0
  171. package/dist/esm/Utils/Array.js.map +1 -0
  172. package/dist/esm/Utils/Id.d.ts +75 -0
  173. package/dist/esm/Utils/Id.d.ts.map +1 -0
  174. package/dist/esm/Utils/Id.js +2 -0
  175. package/dist/esm/Utils/Id.js.map +1 -0
  176. package/dist/esm/Utils/Number.d.ts +5 -0
  177. package/dist/esm/Utils/Number.d.ts.map +1 -0
  178. package/dist/esm/Utils/Number.js +3 -0
  179. package/dist/esm/Utils/Number.js.map +1 -0
  180. package/dist/esm/Utils/Sort.d.ts +17 -0
  181. package/dist/esm/Utils/Sort.d.ts.map +1 -0
  182. package/dist/esm/Utils/Sort.js +267 -0
  183. package/dist/esm/Utils/Sort.js.map +1 -0
  184. package/dist/esm/Utils/String.d.ts +4 -0
  185. package/dist/esm/Utils/String.d.ts.map +1 -0
  186. package/dist/esm/Utils/String.js +2 -0
  187. package/dist/esm/Utils/String.js.map +1 -0
  188. package/dist/esm/index.d.ts +10 -0
  189. package/dist/esm/index.d.ts.map +1 -0
  190. package/dist/esm/index.js +7 -0
  191. package/dist/esm/index.js.map +1 -0
  192. package/dist/esm/mergeExpansion.d.ts +3 -0
  193. package/dist/esm/mergeExpansion.d.ts.map +1 -0
  194. package/dist/esm/mergeExpansion.js +107 -0
  195. package/dist/esm/mergeExpansion.js.map +1 -0
  196. package/dist/esm/package.json +1 -0
  197. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  198. package/json/datasworn-source.schema.json +11420 -0
  199. package/json/datasworn.schema.json +11354 -0
  200. package/migration/0.1.0/id_regex_map.json +21 -0
  201. package/package.json +52 -0
@@ -0,0 +1,380 @@
1
+ import { GlobstarString, IdKey, PathKeySep, PrefixSep, TypeSep, WildcardString } from './IdElements/CONST.js';
2
+ import { type PathKeys } from './IdElements/index.js';
3
+ import type { CollectableAncestorKeys, CollectionAncestorKeys } from './IdElements/PathKeys.js';
4
+ import TypeId from './IdElements/TypeId.js';
5
+ import type * as Datasworn from './Datasworn.js';
6
+ import type * as DataswornSource from './DataswornSource.js';
7
+ import type * as StringId from './StringId.js';
8
+ import type { Tree } from './Tree.js';
9
+ import type TypeNode from './TypeNode.js';
10
+ import type { DropFirst, Head, LastElementOf } from './Utils/Array.js';
11
+ import type { ExtractTypeId } from './Utils/Id.js';
12
+ import type { Join, Split } from './Utils/String.js';
13
+ type DictionaryLike<T> = Record<string, T> | Map<string, T>;
14
+ type UnknownNode = {
15
+ [IdKey]: string;
16
+ };
17
+ interface RecursiveId<TypeIds extends StringId.TypeIdParts = StringId.TypeIdParts, PathSegments extends string[] & {
18
+ length: TypeIds['length'];
19
+ } = string[] & {
20
+ length: TypeIds['length'];
21
+ }, Node extends UnknownNode = UnknownNode> extends IdParser<TypeIds, PathSegments, Node> {
22
+ /** The current collection recursion depth. */
23
+ get recursionDepth(): this['collectionAncestorKeys']['length'];
24
+ get collectionAncestorKeys(): string[];
25
+ get isRecursive(): true;
26
+ getCollectionIdParent(): CollectionId;
27
+ }
28
+ /** Performs parsing, validation, and construction of Datasworn IDs, and traverses the Datasworn hierarchy to retrieve matching node(s). */
29
+ declare abstract class IdParser<TypeIds extends StringId.TypeIdParts = StringId.TypeIdParts, PathSegments extends string[] & {
30
+ length: TypeIds['length'];
31
+ } = string[] & {
32
+ length: TypeIds['length'];
33
+ }, Node extends UnknownNode = UnknownNode> implements IdParser.Options<TypeIds, PathSegments> {
34
+ #private;
35
+ /** */
36
+ static get tree(): DictionaryLike<Datasworn.RulesPackage> | null;
37
+ static set tree(value: Map<string, Datasworn.RulesPackage> | Record<string, Datasworn.RulesPackage> | null);
38
+ /**
39
+ * The object used for log messages.
40
+ * @default console
41
+ */
42
+ static logger: Console;
43
+ get typeIds(): TypeIds;
44
+ protected set typeIds(value: TypeIds);
45
+ get pathSegments(): PathSegments;
46
+ protected set pathSegments(value: PathSegments);
47
+ /**
48
+ * This node's ancestor key on {@link Datasworn.RulesPackage}.
49
+ */
50
+ get typeBranchKey(): TypeId.BranchKey<TypeId.Primary>;
51
+ constructor(options: IdParser.Options<TypeIds, PathSegments>);
52
+ /**
53
+ * Returns a string representation of the ID.
54
+ */
55
+ toString(): string;
56
+ toJSON(): string;
57
+ /** The type ID of the target node. For primary IDs, this is the same as {@link IdParser.typeId}. */
58
+ get typeId(): string | undefined;
59
+ /** The type ID of the most recent primary node. For primary IDs, this is the same as {@link IdParser.typeId} */
60
+ get primaryTypeId(): TypeId.Primary;
61
+ get primaryPath(): string;
62
+ get primaryPathKeys(): string[];
63
+ /** The ID of the {@link RulesPackage} that contains this ID, or a wildcard to represent any RulesPackage. */
64
+ get rulesPackageId(): string;
65
+ /** The dot-separated, fully-qualified type ID. For primary types, this is the same as {@link IdParser.typeId} */
66
+ get compositeTypeId(): string;
67
+ /** The dot-separated, fully-qualified path. For primary type IDs, this is the same as {@link IdParser.primaryPath} */
68
+ get compositePath(): string;
69
+ /** Does this ID contain any wildcard ("*") or globstar ("**") elements? */
70
+ get isWildcard(): boolean;
71
+ /** Can this ID contain recursive elements in its path? */
72
+ abstract get isRecursive(): boolean;
73
+ /** Get an array of the types that are embeddable by this type. */
74
+ getEmbeddableTypes(): TypeId.Embeddable[];
75
+ /**
76
+ * Get a Datasworn node by its ID.
77
+ * @throws If the ID is a wildcard ID; if no Datasworn tree is provided (either in {@link IdParser.tree} or as an argument).
78
+ * @returns The identified node, or `undefined` if the node doesn't exist.
79
+ */
80
+ get(tree?: DictionaryLike<Datasworn.RulesPackage> | null): Node | undefined;
81
+ /**
82
+ * Get all Datasworn nodes that match this wildcard ID.
83
+ * @remarks Non-wildcard IDs work here too; technically they're valid as wildcard IDs.
84
+ * @param forEach Optional function to apply to each match. If it returns `true`, the matcher will exit early and return only the matches it has made so far.
85
+ * @returns A {@link Map}
86
+ */
87
+ getMatches(tree?: DictionaryLike<Datasworn.RulesPackage> | null, forEach?: (id: string, node: unknown) => boolean): Map<string, Node>;
88
+ /**
89
+ * Can the target ID be matched with this ID?
90
+ * @throws If `target` is a wildcard.
91
+ */
92
+ isMatch(target: IdParser | string): boolean;
93
+ /** Is this non-wildcard ID matched by at least one of the provided wildcard IDs?
94
+ * @throws If this instance is a wildcard ID; if it attempts a comparison with an invalid ID string
95
+ */
96
+ isMatchedBy(...wildcardIds: (IdParser | string)[]): boolean;
97
+ /** @internal */
98
+ _getPrefixRegExpSource(): string;
99
+ get pathRegExp(): RegExp;
100
+ get regExp(): RegExp;
101
+ /** @internal */
102
+ _flush(): void;
103
+ /** @internal */
104
+ _getPathRegExpSource(): string;
105
+ /** Assign `_id` strings in a Datasworn node.
106
+ * @param node The Datasworn
107
+ * @param recursive Should IDs be assigned to descendant objects too? (default: true)
108
+ * @param index A Map used to index items by their assigned ID.
109
+ * @returns The mutated object.
110
+ */
111
+ assignIdsIn(node: object, _recursive?: boolean, index?: Map<string, unknown>): object;
112
+ /**
113
+ * Get a Datasworn node by its ID.
114
+ * @throws If the ID is invalid; if the ID is a wildcard ID; if a path to the identified object can't be found; if no Datasworn tree is provided (either in {@link IdParser.tree} or as an argument).
115
+ */
116
+ static get<T extends StringId.Primary>(id: T, tree?: (typeof IdParser)['datasworn']): TypeNode.ByType<ExtractTypeId<T>>;
117
+ static get<T extends IdParser>(id: T, tree?: (typeof IdParser)['datasworn']): ReturnType<T['get']>;
118
+ static get<T extends string>(id: T, tree?: (typeof IdParser)['datasworn']): UnknownNode;
119
+ /**
120
+ * Get all Datasworn nodes that match the provided wildcard ID.
121
+ * @remarks Non-wildcard IDs work here too; technically they're valid as wildcard IDs. You'll just get one match (wrapped in an array).
122
+ * @returns An array of Datasworn nodes matching the wildcard ID.
123
+ */
124
+ static getMatches<T extends StringId.Primary>(id: T, tree: (typeof IdParser)['datasworn'], forEach?: (id: string, node: unknown) => boolean): Map<string, TypeNode.ByType<ExtractTypeId<T>>>;
125
+ static getMatches<T extends IdParser>(id: T, tree: (typeof IdParser)['datasworn'], forEach?: (id: string, node: unknown) => boolean): Map<string, ReturnType<T['get']>>;
126
+ static parse(id: string): CollectionId | CollectableId | NonCollectableId | EmbeddedId;
127
+ /**
128
+ * Recursively assigns IDs to all eligibile nodes within a given {@link DataswornSource.RulesPackage}.
129
+ * @param rulesPackage The rules package to assign IDs to. This function mutates the object.
130
+ * @param index If provided, nodes that receive IDs will be indexed in the map (with their ID as the key).
131
+ * @returns The mutated `rulesPackage`, which now satisfies the requirements for a complete {@link Datasworn.RulesPackage}
132
+ */
133
+ static assignIdsInRulesPackage<T extends DataswornSource.RulesPackage>(rulesPackage: T, index?: Map<string, unknown>): Extract<Datasworn.RulesPackage, Pick<T, 'type'>>;
134
+ protected static _validatePathSegments(typeIds: string[], pathSegments: unknown): pathSegments is string[];
135
+ protected static _validateEmbeddedPath(typeIds: [TypeId.Primary, ...string[]], path: string): boolean;
136
+ static _validateIndexKey(value: unknown): boolean;
137
+ /** @internal */
138
+ static _getPathKeyCount(typeId: TypeId.Primary): {
139
+ min: number;
140
+ max: number;
141
+ };
142
+ /**
143
+ * @throws If the typeId isn't a primary TypeId; if the path doesn't meet the minimum or maximum length for its type; or if any of the individual elements are invalid.
144
+ */
145
+ protected static _validatePrimaryPath(typeId: string, path: string): boolean;
146
+ /** @internal */
147
+ protected static _validateDictKey(key: unknown): key is DataswornSource.DictKey;
148
+ /** @internal */
149
+ protected static _getMatchesFrom<V>(record: Record<string, V>, matchKey: string): Map<string, V>;
150
+ protected static _getMatchesFrom<V>(array: Array<V>, matchKey: number | WildcardString | GlobstarString): Map<number, V>;
151
+ protected static _getMatchesFrom<V, K extends number | string>(map: Map<K, V>, matchKey: K | WildcardString | GlobstarString): Map<K, V>;
152
+ protected static _getMatchesFrom<V>(record: Record<string, V> | Map<string, V>, matchKey: string): Map<string, V>;
153
+ protected static _getMatchesFrom<V, TFrom extends Record<string, V> | Array<V> | Map<string, V>>(obj: TFrom, matchKey?: string | number): Map<string | number, V>;
154
+ /** An optional reference to the Datasworn tree object, shared by all subclasses. Used as the default value for several traversal methods. */
155
+ static datasworn: Tree | null;
156
+ static readonly RulesPackagePattern: RegExp;
157
+ static readonly DictKeyPattern: RegExp;
158
+ static readonly RecursiveDictKeyPattern: RegExp;
159
+ /** @internal */
160
+ protected _getRulesPackage(tree: (typeof IdParser)['tree']): Datasworn.RulesPackage | undefined;
161
+ /** @internal */
162
+ protected _getTypeBranch(tree: (typeof IdParser)['tree']): DictionaryLike<UnknownNode> | undefined;
163
+ /** @internal */
164
+ protected _getUnsafe(tree: (typeof IdParser)['tree']): Node;
165
+ /** @internal */
166
+ protected _matchRulesPackages(tree?: DictionaryLike<Datasworn.RulesPackage> | null): Map<string, Datasworn.RulesPackage>;
167
+ /**
168
+ * @param forEach Optional function to apply to each match. If it returns `true`, the matcher will exit early and return whatever results it currently has.
169
+ * @internal
170
+ */
171
+ _getMatchesUnsafe(tree: typeof IdParser.tree, forEach?: (id: string, node: unknown) => boolean): Map<string, Node>;
172
+ }
173
+ declare namespace IdParser {
174
+ type FormatType = 'collectable' | 'collection' | 'non_collectable';
175
+ type Options<TypeIds extends StringId.TypeIdParts = StringId.TypeIdParts, PathSegments extends string[] & {
176
+ length: TypeIds['length'];
177
+ } = string[] & {
178
+ length: TypeIds['length'];
179
+ }> = {
180
+ typeIds: TypeIds;
181
+ pathSegments: PathSegments;
182
+ };
183
+ }
184
+ declare abstract class EmbeddingId<TypeIds extends StringId.TypeIdParts = StringId.TypeIdParts, PathSegments extends string[] & {
185
+ length: TypeIds['length'];
186
+ } = string[] & {
187
+ length: TypeIds['length'];
188
+ }, Node extends UnknownNode = UnknownNode> extends IdParser<TypeIds, PathSegments, Node> {
189
+ #private;
190
+ /**
191
+ * Create a child EmbeddedId with a given type and key.
192
+ */
193
+ createEmbeddedIdChild(embeddedTypeId: TypeId.Embeddable, key: string): EmbeddedId;
194
+ get embeddableTypes(): string[];
195
+ assignIdsIn(node: object, recursive?: boolean, index?: Map<string, unknown>): object;
196
+ }
197
+ declare namespace EmbeddingId {
198
+ type EmbeddedIn<T extends EmbeddingId = EmbeddingId, TEmbedType extends TypeId.Embeddable = TypeId.Embeddable, K extends string = string> = T extends EmbeddingId ? EmbeddedId<EmbeddingId, TEmbedType, K> : never;
199
+ }
200
+ declare class NonCollectableId<TTypeId extends TypeId.NonCollectable = TypeId.NonCollectable, RulesPackage extends string = string, Key extends string = string> extends EmbeddingId<[
201
+ TTypeId
202
+ ], [
203
+ Join<[RulesPackage, Key]>
204
+ ], TypeNode.NonCollectable<TTypeId>> {
205
+ get isRecursive(): false;
206
+ constructor(typeId: TTypeId, rulesPackage: RulesPackage, key: Key);
207
+ }
208
+ interface NonCollectableId<TTypeId extends TypeId.NonCollectable = TypeId.NonCollectable, RulesPackage extends string = string, Key extends string = string> {
209
+ toString(): StringId.NonCollectable<TTypeId, RulesPackage, Key>;
210
+ get rulesPackageId(): RulesPackage;
211
+ get typeId(): TTypeId;
212
+ createEmbeddedIdChild<T extends TTypeId extends TypeId.Embedding ? TypeId.EmbeddableIn<TTypeId> : never, K extends string>(embeddedTypeId: T, key: string): TTypeId extends TypeId.Embedding ? EmbeddedId<this, T, K> : never;
213
+ /** @internal */
214
+ _getTypeBranch(tree: (typeof IdParser)['tree']): Map<string, TypeNode.NonCollectable<TTypeId>> | Record<string, TypeNode.NonCollectable<TTypeId>> | undefined;
215
+ get(tree: (typeof IdParser)['tree']): TypeNode.NonCollectable<TTypeId> | undefined;
216
+ getMatches(tree: (typeof IdParser)['tree'], forEach?: (id: string, node: unknown) => boolean): Map<string, TypeNode.NonCollectable<TTypeId>>;
217
+ /** @internal */
218
+ _getUnsafe(tree: (typeof IdParser)['tree']): TypeNode.NonCollectable<TTypeId>;
219
+ /** @internal */
220
+ _getMatchesUnsafe(tree: (typeof IdParser)['tree'], forEach?: (id: string, node: unknown) => boolean): Map<string, TypeNode.NonCollectable<TTypeId>>;
221
+ }
222
+ declare namespace NonCollectableId {
223
+ type FromString<T extends StringId.NonCollectable> = NonCollectableId<StringId.ExtractNonCollectableType<T>, StringId.ExtractPrimaryRulesPackage<T>, StringId.ExtractNonCollectableKey<T>>;
224
+ }
225
+ declare class CollectableId<TTypeId extends TypeId.Collectable = TypeId.Collectable, RulesPackage extends string = string, CollectableAncestorKeys extends PathKeys.CollectableAncestorKeys = PathKeys.CollectableAncestorKeys, Key extends string = string> extends EmbeddingId<[
226
+ TTypeId
227
+ ], [
228
+ Join<[RulesPackage, ...CollectableAncestorKeys, Key]>
229
+ ], TypeNode.Collectable<TTypeId>> implements RecursiveId<[
230
+ TTypeId
231
+ ], [
232
+ Join<[RulesPackage, ...CollectableAncestorKeys, Key]>
233
+ ], TypeNode.Collectable<TTypeId>> {
234
+ get isRecursive(): true;
235
+ get embeddableTypes(): TTypeId extends TypeId.Embedding ? [...TypeId.EmbeddableIn<TTypeId>[]] : [];
236
+ constructor(typeId: TTypeId, rulesPackage: RulesPackage, ...pathKeys: [...CollectableAncestorKeys, Key]);
237
+ get collectionAncestorKeys(): CollectableAncestorKeys;
238
+ get recursionDepth(): CollectableAncestorKeys['length'];
239
+ get parentTypeId(): TypeId.CollectionOf<TTypeId>;
240
+ getCollectionIdParent(): CollectionId<TypeId.CollectionOf<TTypeId>, RulesPackage, Head<CollectableAncestorKeys> & PathKeys.CollectionAncestorKeys, LastElementOf<CollectableAncestorKeys>>;
241
+ /** @internal */
242
+ _getUnsafe(tree: (typeof IdParser)['tree']): TypeNode.Collectable<TTypeId>;
243
+ /** @internal */
244
+ _getMatchesUnsafe(tree: typeof IdParser.tree, forEach?: (id: string, node: unknown) => boolean): Map<string, TypeNode.Collectable<TTypeId>>;
245
+ }
246
+ interface CollectableId<TTypeId extends TypeId.Collectable = TypeId.Collectable, RulesPackage extends string = string, CollectableAncestorKeys extends PathKeys.CollectableAncestorKeys = PathKeys.CollectableAncestorKeys, Key extends string = string> {
247
+ toString(): StringId.Collectable<TTypeId, RulesPackage, CollectableAncestorKeys, Key>;
248
+ createEmbeddedIdChild<T extends TTypeId extends TypeId.Embedding ? TypeId.EmbeddableIn<TTypeId> : never, K extends string>(embeddedTypeId: T, key: string): TTypeId extends TypeId.Embedding ? EmbeddedId<this, T, K> : never;
249
+ assignIdsIn<T extends TypeNode.CollectableSource<TTypeId>>(node: T, recursive?: boolean, index?: Map<string, unknown>): TypeNode.Collectable<TTypeId>;
250
+ get typeId(): TTypeId;
251
+ get primaryTypeId(): TTypeId;
252
+ get primaryPathKeys(): [RulesPackage, ...CollectableAncestorKeys, Key];
253
+ get isCollection(): false;
254
+ get isCollectable(): true;
255
+ get compositeTypeId(): TTypeId;
256
+ get rulesPackageId(): RulesPackage;
257
+ /** @internal */
258
+ _getTypeBranch(tree: (typeof IdParser)['tree']): Record<string, TypeNode.Collection<TypeId.CollectionOf<TTypeId>>> | Map<string, TypeNode.Collection<TypeId.CollectionOf<TTypeId>>> | undefined;
259
+ get(tree: (typeof IdParser)['tree']): TypeNode.Collectable<TTypeId> | undefined;
260
+ }
261
+ declare namespace CollectableId {
262
+ type FromString<T extends StringId.Collectable> = T extends `${infer TypeId extends TypeId.Collectable}${PrefixSep}${infer RulesPackage extends string}${PathKeySep}${infer AncestorKeys extends Join<CollectableAncestorKeys>}${PathKeySep}${infer Key extends string}` ? CollectableId<TypeId, RulesPackage, Split<AncestorKeys>, Key> : never;
263
+ }
264
+ declare class CollectionId<TTypeId extends TypeId.Collection = TypeId.Collection, RulesPackage extends string = string, CollectionAncestorKeys extends PathKeys.CollectionAncestorKeys = PathKeys.CollectionAncestorKeys, Key extends string = string> extends IdParser<[
265
+ TTypeId
266
+ ], [
267
+ Join<[RulesPackage, ...CollectionAncestorKeys, Key]>
268
+ ], TypeNode.Collection<TTypeId>> implements RecursiveId<[
269
+ TTypeId
270
+ ], [
271
+ Join<[RulesPackage, ...CollectionAncestorKeys, Key]>
272
+ ], TypeNode.Collection<TTypeId>> {
273
+ #private;
274
+ constructor(typeId: TTypeId, rulesPackage: RulesPackage, ...pathKeys: [...CollectionAncestorKeys, Key]);
275
+ get isRecursive(): true;
276
+ get recursionDepth(): CollectionAncestorKeys['length'];
277
+ get collectionAncestorKeys(): CollectionAncestorKeys;
278
+ /**
279
+ * Create an ID representing a {@link CollectableId} child of this CollectionId, using the provided key.
280
+ * @example
281
+ * ```typescript
282
+ * const collection = IdParser.parse('oracle_collection:starforged/core')
283
+ * const collectable = collection.createCollectableIdChild('action')
284
+ * console.log(collectable.toString()) // 'oracle_rollable:starforged/core/action'
285
+ * ```
286
+ */
287
+ createCollectableIdChild<ChildKey extends string>(key: ChildKey): CollectableId<TypeId.CollectableOf<TTypeId>, RulesPackage, [
288
+ ...CollectionAncestorKeys,
289
+ Key
290
+ ], ChildKey>;
291
+ /**
292
+ * Create an ID representing a Collection child of this CollectionId, using the provided key.
293
+ * @throws If a child collection ID can't be created because the maximum recursion depth has been reached.
294
+ * @see {@link COLLECTION_DEPTH_MAX}
295
+ * @example
296
+ * ```typescript
297
+ * const collection = IdParser.parse('oracle_collection:starforged/planet')
298
+ * const childCollection = collection.createCollectionIdChild('furnace')
299
+ * console.log(childCollection.toString()) // 'oracle_collection:starforged/planet/furnace'
300
+ * ```
301
+ */
302
+ createCollectionIdChild<ChildKey extends string>(key: ChildKey): CollectionId.ChildCollectionOf<this, ChildKey>;
303
+ assignIdsIn<T extends TypeNode.CollectionSource<TTypeId>>(node: T, recursive?: boolean, index?: Map<string, unknown>): TypeNode.Collection<TTypeId>;
304
+ /**
305
+ * Returns a CollectionId representing the parent collection of this ID.
306
+ * @throws If a parent collection ID isn't possible (because this ID doesn't have a parent collection.)
307
+ * @example
308
+ * ```typescript
309
+ * const collection = IdParser.parse('oracle_collection:starforged/planet/jungle/settlements')
310
+ * const parentCollection = collection.getCollectionIdParent()
311
+ * console.log(parentCollection.toString()) // 'oracle_collection:starforged/planet/jungle'
312
+ * ```
313
+ */
314
+ getCollectionIdParent(): CollectionId.ParentCollectionOf<this>;
315
+ /** @internal */
316
+ _getUnsafe(tree: Record<string, Datasworn.RulesPackage> | Map<string, Datasworn.RulesPackage>): TypeNode.Collection<TTypeId>;
317
+ /** @internal */
318
+ protected static _recurseMatches<T extends TypeNode.Collection>(from: T, currentPath: string[], nextPath: string[], matches?: Map<string, T>, forEach?: (id: string, node: unknown) => boolean, depth?: number): Map<string, T>;
319
+ /** @internal */
320
+ _getMatchesUnsafe(tree: typeof IdParser.tree, forEach?: (id: string, node: unknown) => boolean): Map<string, TypeNode.Collection<TTypeId>>;
321
+ }
322
+ interface CollectionId<TTypeId extends TypeId.Collection = TypeId.Collection, RulesPackage extends string = string, CollectionAncestorKeys extends PathKeys.CollectionAncestorKeys = PathKeys.CollectionAncestorKeys, Key extends string = string> {
323
+ get compositeTypeId(): TTypeId;
324
+ get rulesPackageId(): RulesPackage;
325
+ get typeId(): TTypeId;
326
+ get isCollectable(): false;
327
+ get isCollection(): true;
328
+ toString(): StringId.Collection<TTypeId, RulesPackage, CollectionAncestorKeys, Key>;
329
+ get primaryTypeId(): TTypeId;
330
+ get primaryPathKeys(): [RulesPackage, ...CollectionAncestorKeys, Key];
331
+ /** @internal */
332
+ _getTypeBranch(tree: (typeof IdParser)['tree']): Record<string, TypeNode.Collection<TTypeId>> | Map<string, TypeNode.Collection<TTypeId>> | undefined;
333
+ get(tree: (typeof IdParser)['tree']): TypeNode.Collection<TTypeId> | undefined;
334
+ }
335
+ declare namespace CollectionId {
336
+ type FromString<T extends StringId.Collection> = T extends `${infer TypeId extends TypeId.Collection}${PrefixSep}${infer RulesPackage extends string}${PathKeySep}${infer AncestorKeys extends Join<CollectionAncestorKeys>}${PathKeySep}${infer Key extends string}` ? CollectionId<TypeId, RulesPackage, Split<AncestorKeys>, Key> : never;
337
+ type ChildOf<T extends CollectionId, K extends string = string> = CollectableId<TypeId.CollectableOf<T['primaryTypeId']>, T['rulesPackageId'], T extends CollectionId<T['primaryTypeId'], T['rulesPackageId'], infer U extends CollectionAncestorKeys, infer K extends string> ? [...U, K] : never, K>;
338
+ type ChildCollectionOf<T extends CollectionId, K extends string = string> = DropFirst<T['primaryPathKeys']> extends CollectionAncestorKeys ? CollectionId<T['typeId'], T['rulesPackageId'], DropFirst<T['primaryPathKeys']>, K> : never;
339
+ type ParentCollectionOf<T extends CollectionId> = T['collectionAncestorKeys'] extends [infer K extends string] ? CollectionId<T['primaryTypeId'], T['rulesPackageId'], [], K> : T['collectionAncestorKeys'] extends [
340
+ infer U extends string,
341
+ infer K extends string
342
+ ] ? CollectionId<T['primaryTypeId'], T['rulesPackageId'], [U], K> : T['collectionAncestorKeys'] extends [
343
+ ...infer U extends PathKeys.CollectionAncestorKeys,
344
+ infer K extends string
345
+ ] ? CollectionId<T['primaryTypeId'], T['rulesPackageId'], U, K> : never;
346
+ }
347
+ declare class EmbeddedId<ParentId extends EmbeddingId = EmbeddingId, TTypeId extends TypeId.Embeddable = TypeId.Embeddable, Key extends string = string> extends EmbeddingId<[
348
+ ...ParentId['typeIds'],
349
+ TTypeId
350
+ ], [
351
+ ...ParentId['pathSegments'],
352
+ Key
353
+ ] & {
354
+ length: [...ParentId['typeIds'], TTypeId]['length'];
355
+ }, TypeNode.Embedded<TTypeId>> {
356
+ #private;
357
+ /**
358
+ * Returns the embedding ID parent of this ID.
359
+ */
360
+ getEmbeddingIdParent(): ParentId;
361
+ _getUnsafe(tree: (typeof IdParser)['tree']): TypeNode.Embedded<TTypeId>;
362
+ _getPathRegExpSource(): string;
363
+ /** @internal */
364
+ constructor(parent: ParentId, typeId: TTypeId, key: string);
365
+ constructor(parent: ParentId, typeId: TTypeId, index: number);
366
+ }
367
+ interface EmbeddedId<ParentId extends EmbeddingId = EmbeddingId, TTypeId extends TypeId.Embeddable = TypeId.Embeddable, Key extends string = string> {
368
+ toString(): `${this['compositeTypeId']}${PrefixSep}${Join<this['pathSegments'], TypeSep>}`;
369
+ get embeddableTypes(): TTypeId extends TypeId.EmbeddingWhenEmbeddedType ? [...TypeId.EmbeddableInEmbeddedType<TTypeId>[]] : [];
370
+ get(tree: (typeof IdParser)['tree']): TypeNode.Embedded<TTypeId>;
371
+ get typeId(): TTypeId;
372
+ get typeIds(): [...ParentId['typeIds'], TTypeId];
373
+ get pathSegments(): [...ParentId['pathSegments'], Key];
374
+ get primaryTypeId(): ParentId['primaryTypeId'];
375
+ get primaryPathKeys(): ParentId['primaryPathKeys'];
376
+ get isRecursive(): ParentId['isRecursive'];
377
+ get compositeTypeId(): `${ParentId['compositeTypeId']}${TypeSep}${TTypeId}`;
378
+ }
379
+ export { type CollectableId, CollectionId, EmbeddedId, IdParser, type NonCollectableId };
380
+ //# sourceMappingURL=IdParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdParser.d.ts","sourceRoot":"","sources":["../../src/IdParser.ts"],"names":[],"mappings":"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"}