@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.
- package/README.md +11 -0
- package/dist/cjs/Datasworn.d.ts +5012 -0
- package/dist/cjs/Datasworn.d.ts.map +1 -0
- package/dist/cjs/Datasworn.js +3 -0
- package/dist/cjs/Datasworn.js.map +1 -0
- package/dist/cjs/DataswornSource.d.ts +5025 -0
- package/dist/cjs/DataswornSource.d.ts.map +1 -0
- package/dist/cjs/DataswornSource.js +3 -0
- package/dist/cjs/DataswornSource.js.map +1 -0
- package/dist/cjs/DataswornTree.d.ts +9 -0
- package/dist/cjs/DataswornTree.d.ts.map +1 -0
- package/dist/cjs/DataswornTree.js +25 -0
- package/dist/cjs/DataswornTree.js.map +1 -0
- package/dist/cjs/DataswornVersion.d.ts +8 -0
- package/dist/cjs/DataswornVersion.d.ts.map +1 -0
- package/dist/cjs/DataswornVersion.js +10 -0
- package/dist/cjs/DataswornVersion.js.map +1 -0
- package/dist/cjs/Errors.d.ts +5 -0
- package/dist/cjs/Errors.d.ts.map +1 -0
- package/dist/cjs/Errors.js +11 -0
- package/dist/cjs/Errors.js.map +1 -0
- package/dist/cjs/IdElements/CONST.d.ts +37 -0
- package/dist/cjs/IdElements/CONST.d.ts.map +1 -0
- package/dist/cjs/IdElements/CONST.js +26 -0
- package/dist/cjs/IdElements/CONST.js.map +1 -0
- package/dist/cjs/IdElements/PathKeys.d.ts +13 -0
- package/dist/cjs/IdElements/PathKeys.d.ts.map +1 -0
- package/dist/cjs/IdElements/PathKeys.js +3 -0
- package/dist/cjs/IdElements/PathKeys.js.map +1 -0
- package/dist/cjs/IdElements/Pattern.d.ts +13 -0
- package/dist/cjs/IdElements/Pattern.d.ts.map +1 -0
- package/dist/cjs/IdElements/Pattern.js +20 -0
- package/dist/cjs/IdElements/Pattern.js.map +1 -0
- package/dist/cjs/IdElements/TypeGuard.d.ts +25 -0
- package/dist/cjs/IdElements/TypeGuard.d.ts.map +1 -0
- package/dist/cjs/IdElements/TypeGuard.js +72 -0
- package/dist/cjs/IdElements/TypeGuard.js.map +1 -0
- package/dist/cjs/IdElements/TypeId.d.ts +114 -0
- package/dist/cjs/IdElements/TypeId.d.ts.map +1 -0
- package/dist/cjs/IdElements/TypeId.js +259 -0
- package/dist/cjs/IdElements/TypeId.js.map +1 -0
- package/dist/cjs/IdElements/index.d.ts +6 -0
- package/dist/cjs/IdElements/index.d.ts.map +1 -0
- package/dist/cjs/IdElements/index.js +48 -0
- package/dist/cjs/IdElements/index.js.map +1 -0
- package/dist/cjs/IdParser.d.ts +380 -0
- package/dist/cjs/IdParser.d.ts.map +1 -0
- package/dist/cjs/IdParser.js +1012 -0
- package/dist/cjs/IdParser.js.map +1 -0
- package/dist/cjs/Migrations/index.d.ts +2 -0
- package/dist/cjs/Migrations/index.d.ts.map +1 -0
- package/dist/cjs/Migrations/index.js +18 -0
- package/dist/cjs/Migrations/index.js.map +1 -0
- package/dist/cjs/Migrations/updateIds.d.ts +34 -0
- package/dist/cjs/Migrations/updateIds.d.ts.map +1 -0
- package/dist/cjs/Migrations/updateIds.js +141 -0
- package/dist/cjs/Migrations/updateIds.js.map +1 -0
- package/dist/cjs/StringId.d.ts +47 -0
- package/dist/cjs/StringId.d.ts.map +1 -0
- package/dist/cjs/StringId.js +3 -0
- package/dist/cjs/StringId.js.map +1 -0
- package/dist/cjs/Tree.d.ts +5 -0
- package/dist/cjs/Tree.d.ts.map +1 -0
- package/dist/cjs/Tree.js +3 -0
- package/dist/cjs/Tree.js.map +1 -0
- package/dist/cjs/TypeNode.d.ts +93 -0
- package/dist/cjs/TypeNode.d.ts.map +1 -0
- package/dist/cjs/TypeNode.js +3 -0
- package/dist/cjs/TypeNode.js.map +1 -0
- package/dist/cjs/Utils/Array.d.ts +16 -0
- package/dist/cjs/Utils/Array.d.ts.map +1 -0
- package/dist/cjs/Utils/Array.js +14 -0
- package/dist/cjs/Utils/Array.js.map +1 -0
- package/dist/cjs/Utils/Id.d.ts +75 -0
- package/dist/cjs/Utils/Id.d.ts.map +1 -0
- package/dist/cjs/Utils/Id.js +3 -0
- package/dist/cjs/Utils/Id.js.map +1 -0
- package/dist/cjs/Utils/Number.d.ts +5 -0
- package/dist/cjs/Utils/Number.d.ts.map +1 -0
- package/dist/cjs/Utils/Number.js +4 -0
- package/dist/cjs/Utils/Number.js.map +1 -0
- package/dist/cjs/Utils/Sort.d.ts +17 -0
- package/dist/cjs/Utils/Sort.d.ts.map +1 -0
- package/dist/cjs/Utils/Sort.js +277 -0
- package/dist/cjs/Utils/Sort.js.map +1 -0
- package/dist/cjs/Utils/String.d.ts +4 -0
- package/dist/cjs/Utils/String.d.ts.map +1 -0
- package/dist/cjs/Utils/String.js +3 -0
- package/dist/cjs/Utils/String.js.map +1 -0
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +47 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mergeExpansion.d.ts +3 -0
- package/dist/cjs/mergeExpansion.d.ts.map +1 -0
- package/dist/cjs/mergeExpansion.js +113 -0
- package/dist/cjs/mergeExpansion.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Datasworn.d.ts +5012 -0
- package/dist/esm/Datasworn.d.ts.map +1 -0
- package/dist/esm/Datasworn.js +2 -0
- package/dist/esm/Datasworn.js.map +1 -0
- package/dist/esm/DataswornSource.d.ts +5025 -0
- package/dist/esm/DataswornSource.d.ts.map +1 -0
- package/dist/esm/DataswornSource.js +2 -0
- package/dist/esm/DataswornSource.js.map +1 -0
- package/dist/esm/DataswornTree.d.ts +9 -0
- package/dist/esm/DataswornTree.d.ts.map +1 -0
- package/dist/esm/DataswornTree.js +21 -0
- package/dist/esm/DataswornTree.js.map +1 -0
- package/dist/esm/DataswornVersion.d.ts +8 -0
- package/dist/esm/DataswornVersion.d.ts.map +1 -0
- package/dist/esm/DataswornVersion.js +7 -0
- package/dist/esm/DataswornVersion.js.map +1 -0
- package/dist/esm/Errors.d.ts +5 -0
- package/dist/esm/Errors.d.ts.map +1 -0
- package/dist/esm/Errors.js +7 -0
- package/dist/esm/Errors.js.map +1 -0
- package/dist/esm/IdElements/CONST.d.ts +37 -0
- package/dist/esm/IdElements/CONST.d.ts.map +1 -0
- package/dist/esm/IdElements/CONST.js +23 -0
- package/dist/esm/IdElements/CONST.js.map +1 -0
- package/dist/esm/IdElements/PathKeys.d.ts +13 -0
- package/dist/esm/IdElements/PathKeys.d.ts.map +1 -0
- package/dist/esm/IdElements/PathKeys.js +2 -0
- package/dist/esm/IdElements/PathKeys.js.map +1 -0
- package/dist/esm/IdElements/Pattern.d.ts +13 -0
- package/dist/esm/IdElements/Pattern.d.ts.map +1 -0
- package/dist/esm/IdElements/Pattern.js +18 -0
- package/dist/esm/IdElements/Pattern.js.map +1 -0
- package/dist/esm/IdElements/TypeGuard.d.ts +25 -0
- package/dist/esm/IdElements/TypeGuard.d.ts.map +1 -0
- package/dist/esm/IdElements/TypeGuard.js +67 -0
- package/dist/esm/IdElements/TypeGuard.js.map +1 -0
- package/dist/esm/IdElements/TypeId.d.ts +114 -0
- package/dist/esm/IdElements/TypeId.d.ts.map +1 -0
- package/dist/esm/IdElements/TypeId.js +257 -0
- package/dist/esm/IdElements/TypeId.js.map +1 -0
- package/dist/esm/IdElements/index.d.ts +6 -0
- package/dist/esm/IdElements/index.d.ts.map +1 -0
- package/dist/esm/IdElements/index.js +6 -0
- package/dist/esm/IdElements/index.js.map +1 -0
- package/dist/esm/IdParser.d.ts +380 -0
- package/dist/esm/IdParser.d.ts.map +1 -0
- package/dist/esm/IdParser.js +1004 -0
- package/dist/esm/IdParser.js.map +1 -0
- package/dist/esm/Migrations/index.d.ts +2 -0
- package/dist/esm/Migrations/index.d.ts.map +1 -0
- package/dist/esm/Migrations/index.js +2 -0
- package/dist/esm/Migrations/index.js.map +1 -0
- package/dist/esm/Migrations/updateIds.d.ts +34 -0
- package/dist/esm/Migrations/updateIds.d.ts.map +1 -0
- package/dist/esm/Migrations/updateIds.js +135 -0
- package/dist/esm/Migrations/updateIds.js.map +1 -0
- package/dist/esm/StringId.d.ts +47 -0
- package/dist/esm/StringId.d.ts.map +1 -0
- package/dist/esm/StringId.js +2 -0
- package/dist/esm/StringId.js.map +1 -0
- package/dist/esm/Tree.d.ts +5 -0
- package/dist/esm/Tree.d.ts.map +1 -0
- package/dist/esm/Tree.js +2 -0
- package/dist/esm/Tree.js.map +1 -0
- package/dist/esm/TypeNode.d.ts +93 -0
- package/dist/esm/TypeNode.d.ts.map +1 -0
- package/dist/esm/TypeNode.js +2 -0
- package/dist/esm/TypeNode.js.map +1 -0
- package/dist/esm/Utils/Array.d.ts +16 -0
- package/dist/esm/Utils/Array.d.ts.map +1 -0
- package/dist/esm/Utils/Array.js +11 -0
- package/dist/esm/Utils/Array.js.map +1 -0
- package/dist/esm/Utils/Id.d.ts +75 -0
- package/dist/esm/Utils/Id.d.ts.map +1 -0
- package/dist/esm/Utils/Id.js +2 -0
- package/dist/esm/Utils/Id.js.map +1 -0
- package/dist/esm/Utils/Number.d.ts +5 -0
- package/dist/esm/Utils/Number.d.ts.map +1 -0
- package/dist/esm/Utils/Number.js +3 -0
- package/dist/esm/Utils/Number.js.map +1 -0
- package/dist/esm/Utils/Sort.d.ts +17 -0
- package/dist/esm/Utils/Sort.d.ts.map +1 -0
- package/dist/esm/Utils/Sort.js +267 -0
- package/dist/esm/Utils/Sort.js.map +1 -0
- package/dist/esm/Utils/String.d.ts +4 -0
- package/dist/esm/Utils/String.d.ts.map +1 -0
- package/dist/esm/Utils/String.js +2 -0
- package/dist/esm/Utils/String.js.map +1 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mergeExpansion.d.ts +3 -0
- package/dist/esm/mergeExpansion.d.ts.map +1 -0
- package/dist/esm/mergeExpansion.js +107 -0
- package/dist/esm/mergeExpansion.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/json/datasworn-source.schema.json +11420 -0
- package/json/datasworn.schema.json +11354 -0
- package/migration/0.1.0/id_regex_map.json +21 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Number.d.ts","sourceRoot":"","sources":["../../../src/Utils/Number.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,CACb,CAAC,SAAS,MAAM,EAChB,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IACtB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GACxB,GAAG,CAAC,MAAM,CAAC,GACX,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAExC,uDAAuD;AACvD,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,OAAO,CAC9D,SAAS,CAAC,CAAC,CAAC,EACZ,SAAS,CAAC,CAAC,CAAC,CACZ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Number.js","sourceRoot":"","sources":["../../../src/Utils/Number.ts"],"names":[],"mappings":"AAAA,uKAAuK"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const unsortableKeys: readonly ["columns", "controls", "contents", "options", "collections", "choices"];
|
|
2
|
+
export declare const idKeys: readonly ["_id", "_key", "_index"];
|
|
3
|
+
export declare const relationshipKeys: readonly ["replaces", "enhances", "oracle", "asset", "region", "theme", "domain", "name_oracle", "npc", "extra_card"];
|
|
4
|
+
export declare const discriminatorKeys: readonly ["type", "category", "field_type", "roll_type", "choice_type", "oracle_type", "value_type", "using"];
|
|
5
|
+
export declare const usageKeys: readonly ["auto", "duplicates", "number_of_rolls", "by", "method", "roll_options", "ally", "player", "is_impact", "disables_asset"];
|
|
6
|
+
export declare const shortDescriptionKeys: readonly ["result", "summary", "detail", "requirement", "features", "dangers", "drives", "tactics"];
|
|
7
|
+
export declare const longDescriptionKeys: readonly ["text", "text2", "text3", "description", "your_character"];
|
|
8
|
+
export declare const longArrayKeys: readonly ["denizens", "enhance_moves", "rows", "table"];
|
|
9
|
+
export declare const numericKeys: readonly ["min", "max", "value", "rank"];
|
|
10
|
+
export declare const rulesKeys: readonly ["condition_meters", "stats", "impacts", "special_tracks", "rollable", "prevents_recovery", "permanent", "optional", "control", "option", "condition_meter", "stat", "tracks", "conditions", "recover", "suffer", "choices", "xp_cost"];
|
|
11
|
+
export declare const sourceMetadataKeys: ["email", "authors", "date", "license", "page", "title", "url"];
|
|
12
|
+
export declare const dataswornKeyOrder: ["_id", "_key", "_index", "datasworn_version", "type", "ruleset", "title", "name", "canonical_name", "label", "type", "category", "field_type", "roll_type", "choice_type", "oracle_type", "value_type", "using", "email", "authors", "date", "license", "page", "title", "url", "rules", "condition_meters", "stats", "impacts", "special_tracks", "rollable", "prevents_recovery", "permanent", "optional", "control", "option", "condition_meter", "stat", "tracks", "conditions", "recover", "suffer", "choices", "xp_cost", "replaces", "enhances", "oracle", "asset", "region", "theme", "domain", "name_oracle", "npc", "extra_card", "min", "max", "value", "rank", "nature", "color", "icon", "images", "track", "dice", "enabled", "frequency", "options", "count_as_impact", "auto", "duplicates", "number_of_rolls", "by", "method", "roll_options", "ally", "player", "is_impact", "disables_asset", "shared", "attachments", "trigger", "roll", "result", "summary", "detail", "requirement", "features", "dangers", "drives", "tactics", "strong_hit", "weak_hit", "miss", "variants", "text", "text2", "text3", "description", "your_character", "abilities", "template", "rolls", "contents", "collections", "outcomes", "quest_starter", "your_truth", "controls", "date", "page", "authors", "license", "url", "embed_table", "match", "recommended_rolls", "oracles", "suggestions", "enhance_asset", "oracle_rolls", "tags", "_comment", "column_labels", "denizens", "enhance_moves", "rows", "table", "assets", "atlas", "moves", "npcs", "rarities", "delve_sites", "site_domains", "site_themes", "truths", "_source", "_i18n"];
|
|
13
|
+
export declare function compareObjectKeys(a: string, b: string, keyOrder?: Readonly<string[]>, unsortableKeys?: Set<string>): number;
|
|
14
|
+
export declare function sortDataswornKeys(value: Record<string, unknown>): Record<string, unknown>;
|
|
15
|
+
export declare function sortJson(key: string | number, value: unknown): unknown;
|
|
16
|
+
export declare function sortObjectKeys<T extends Record<string, unknown>>(object: T, keyOrder: Readonly<string[]>): T;
|
|
17
|
+
//# sourceMappingURL=Sort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sort.d.ts","sourceRoot":"","sources":["../../../src/Utils/Sort.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,mFAOjB,CAAA;AAEV,eAAO,MAAM,MAAM,oCAAqC,CAAA;AAExD,eAAO,MAAM,gBAAgB,uHAWnB,CAAA;AAGV,eAAO,MAAM,iBAAiB,+GASpB,CAAA;AAEV,eAAO,MAAM,SAAS,qIAWZ,CAAA;AAEV,eAAO,MAAM,oBAAoB,qGASvB,CAAA;AACV,eAAO,MAAM,mBAAmB,sEAMtB,CAAA;AACV,eAAO,MAAM,aAAa,yDAKhB,CAAA;AACV,eAAO,MAAM,WAAW,0CAA2C,CAAA;AACnE,eAAO,MAAM,SAAS,kPAuBZ,CAAA;AACV,eAAO,MAAM,kBAAkB,iEAW5B,CAAA;AAEH,eAAO,MAAM,iBAAiB,0jDA6ED,CAAA;AAE7B,wBAAgB,iBAAiB,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,GAAE,QAAQ,CAAC,MAAM,EAAE,CAAM,EACjC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,UAmB5B;AACD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2BAE/D;AA8DD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,OAAO,WAM5D;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAKU,CAAC,CACvC"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { CollectionsKey, ContentsKey, EnhancesKey, IdKey, ReplacesKey } from '../IdElements/CONST.js';
|
|
2
|
+
import Pattern from '../IdElements/Pattern.js';
|
|
3
|
+
export const unsortableKeys = [
|
|
4
|
+
'columns',
|
|
5
|
+
'controls',
|
|
6
|
+
ContentsKey,
|
|
7
|
+
'options',
|
|
8
|
+
CollectionsKey,
|
|
9
|
+
'choices'
|
|
10
|
+
];
|
|
11
|
+
export const idKeys = [IdKey, '_key', '_index'];
|
|
12
|
+
export const relationshipKeys = [
|
|
13
|
+
ReplacesKey,
|
|
14
|
+
EnhancesKey,
|
|
15
|
+
'oracle',
|
|
16
|
+
'asset',
|
|
17
|
+
'region',
|
|
18
|
+
'theme',
|
|
19
|
+
'domain',
|
|
20
|
+
'name_oracle',
|
|
21
|
+
'npc',
|
|
22
|
+
'extra_card'
|
|
23
|
+
];
|
|
24
|
+
// TODO: this could be done programmatically by looking at the appropriate symbol key on DiscriminatedUnion schemas
|
|
25
|
+
export const discriminatorKeys = [
|
|
26
|
+
'type',
|
|
27
|
+
'category',
|
|
28
|
+
'field_type',
|
|
29
|
+
'roll_type',
|
|
30
|
+
'choice_type',
|
|
31
|
+
'oracle_type',
|
|
32
|
+
'value_type',
|
|
33
|
+
'using'
|
|
34
|
+
];
|
|
35
|
+
export const usageKeys = [
|
|
36
|
+
'auto',
|
|
37
|
+
'duplicates',
|
|
38
|
+
'number_of_rolls',
|
|
39
|
+
'by',
|
|
40
|
+
'method',
|
|
41
|
+
'roll_options',
|
|
42
|
+
'ally',
|
|
43
|
+
'player',
|
|
44
|
+
'is_impact',
|
|
45
|
+
'disables_asset'
|
|
46
|
+
];
|
|
47
|
+
export const shortDescriptionKeys = [
|
|
48
|
+
'result',
|
|
49
|
+
'summary',
|
|
50
|
+
'detail',
|
|
51
|
+
'requirement',
|
|
52
|
+
'features',
|
|
53
|
+
'dangers',
|
|
54
|
+
'drives',
|
|
55
|
+
'tactics'
|
|
56
|
+
];
|
|
57
|
+
export const longDescriptionKeys = [
|
|
58
|
+
'text',
|
|
59
|
+
'text2',
|
|
60
|
+
'text3',
|
|
61
|
+
'description',
|
|
62
|
+
'your_character'
|
|
63
|
+
];
|
|
64
|
+
export const longArrayKeys = [
|
|
65
|
+
'denizens',
|
|
66
|
+
'enhance_moves',
|
|
67
|
+
'rows',
|
|
68
|
+
'table'
|
|
69
|
+
];
|
|
70
|
+
export const numericKeys = ['min', 'max', 'value', 'rank'];
|
|
71
|
+
export const rulesKeys = [
|
|
72
|
+
// top level
|
|
73
|
+
'condition_meters',
|
|
74
|
+
'stats',
|
|
75
|
+
'impacts',
|
|
76
|
+
'special_tracks',
|
|
77
|
+
// properties
|
|
78
|
+
'rollable',
|
|
79
|
+
'prevents_recovery',
|
|
80
|
+
'permanent',
|
|
81
|
+
'optional',
|
|
82
|
+
'control',
|
|
83
|
+
'option',
|
|
84
|
+
'condition_meter',
|
|
85
|
+
'stat',
|
|
86
|
+
'tracks',
|
|
87
|
+
'conditions',
|
|
88
|
+
'recover',
|
|
89
|
+
'suffer',
|
|
90
|
+
'choices',
|
|
91
|
+
'xp_cost'
|
|
92
|
+
];
|
|
93
|
+
export const sourceMetadataKeys = [
|
|
94
|
+
'email',
|
|
95
|
+
'authors',
|
|
96
|
+
'date',
|
|
97
|
+
'license',
|
|
98
|
+
'page',
|
|
99
|
+
'title',
|
|
100
|
+
'url'
|
|
101
|
+
];
|
|
102
|
+
export const dataswornKeyOrder = [
|
|
103
|
+
...idKeys,
|
|
104
|
+
'datasworn_version',
|
|
105
|
+
'type',
|
|
106
|
+
'ruleset',
|
|
107
|
+
'title',
|
|
108
|
+
'name',
|
|
109
|
+
'canonical_name',
|
|
110
|
+
'label',
|
|
111
|
+
...discriminatorKeys,
|
|
112
|
+
...sourceMetadataKeys,
|
|
113
|
+
'rules',
|
|
114
|
+
...rulesKeys,
|
|
115
|
+
...relationshipKeys,
|
|
116
|
+
...numericKeys,
|
|
117
|
+
'nature',
|
|
118
|
+
'color',
|
|
119
|
+
'icon',
|
|
120
|
+
'images',
|
|
121
|
+
'track',
|
|
122
|
+
'dice',
|
|
123
|
+
'enabled',
|
|
124
|
+
'frequency',
|
|
125
|
+
'options',
|
|
126
|
+
'count_as_impact',
|
|
127
|
+
...usageKeys,
|
|
128
|
+
'shared',
|
|
129
|
+
'attachments',
|
|
130
|
+
'trigger',
|
|
131
|
+
'roll',
|
|
132
|
+
...shortDescriptionKeys,
|
|
133
|
+
'strong_hit',
|
|
134
|
+
'weak_hit',
|
|
135
|
+
'miss',
|
|
136
|
+
'variants',
|
|
137
|
+
...longDescriptionKeys,
|
|
138
|
+
'abilities',
|
|
139
|
+
'template',
|
|
140
|
+
'rolls',
|
|
141
|
+
ContentsKey,
|
|
142
|
+
CollectionsKey,
|
|
143
|
+
'outcomes',
|
|
144
|
+
'quest_starter',
|
|
145
|
+
'your_truth',
|
|
146
|
+
'controls',
|
|
147
|
+
'date',
|
|
148
|
+
'page',
|
|
149
|
+
'authors',
|
|
150
|
+
'license',
|
|
151
|
+
'url',
|
|
152
|
+
'embed_table',
|
|
153
|
+
'match',
|
|
154
|
+
'recommended_rolls',
|
|
155
|
+
// relationships
|
|
156
|
+
'oracles',
|
|
157
|
+
'suggestions',
|
|
158
|
+
'enhance_asset',
|
|
159
|
+
'oracle_rolls',
|
|
160
|
+
'tags',
|
|
161
|
+
'_comment',
|
|
162
|
+
// so it appears immediately above rows
|
|
163
|
+
'column_labels',
|
|
164
|
+
// very long content
|
|
165
|
+
...longArrayKeys,
|
|
166
|
+
'assets',
|
|
167
|
+
'atlas',
|
|
168
|
+
'moves',
|
|
169
|
+
'npcs',
|
|
170
|
+
'rarities',
|
|
171
|
+
'delve_sites',
|
|
172
|
+
'site_domains',
|
|
173
|
+
'site_themes',
|
|
174
|
+
'truths',
|
|
175
|
+
'_source',
|
|
176
|
+
'_i18n'
|
|
177
|
+
];
|
|
178
|
+
export function compareObjectKeys(a, b, keyOrder = [], unsortableKeys) {
|
|
179
|
+
const [indexA, indexB] = [a, b].map((key) => {
|
|
180
|
+
const index = keyOrder.indexOf(key);
|
|
181
|
+
if (unsortableKeys != null && index === -1)
|
|
182
|
+
// logger.warn(`key ${key} has not been assigned a sort order.`)
|
|
183
|
+
unsortableKeys.add(key);
|
|
184
|
+
return index;
|
|
185
|
+
});
|
|
186
|
+
// this shouldn't happen; but if a and b are the same, fall back to alphabetical order.
|
|
187
|
+
if (indexA === indexB)
|
|
188
|
+
return a.localeCompare(b, 'en-US');
|
|
189
|
+
// if one key lacks an explicit sort, place it last
|
|
190
|
+
if (indexA === -1)
|
|
191
|
+
return 1;
|
|
192
|
+
if (indexB === -1)
|
|
193
|
+
return -1;
|
|
194
|
+
return indexA - indexB;
|
|
195
|
+
}
|
|
196
|
+
export function sortDataswornKeys(value) {
|
|
197
|
+
return sortObjectKeys(value, dataswornKeyOrder);
|
|
198
|
+
}
|
|
199
|
+
function _isPOJO(value) {
|
|
200
|
+
if (typeof value !== 'object')
|
|
201
|
+
return false;
|
|
202
|
+
if (value === null)
|
|
203
|
+
return false;
|
|
204
|
+
if (Array.isArray(value))
|
|
205
|
+
return false;
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
function _isIdNode(value) {
|
|
209
|
+
if (!_isPOJO(value))
|
|
210
|
+
return false;
|
|
211
|
+
if (!(IdKey in value))
|
|
212
|
+
return false;
|
|
213
|
+
const id = value[IdKey];
|
|
214
|
+
return typeof id === 'string';
|
|
215
|
+
}
|
|
216
|
+
function _isDictionaryOfPOJOs(value) {
|
|
217
|
+
if (!_isPOJO(value))
|
|
218
|
+
return false;
|
|
219
|
+
for (const k in value) {
|
|
220
|
+
if (!Pattern.DictKey.test(k))
|
|
221
|
+
return false;
|
|
222
|
+
const dict_entry = value[k];
|
|
223
|
+
if (!_isPOJO(dict_entry))
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
function _isDictionaryOfIdNodes(value) {
|
|
229
|
+
if (!_isPOJO(value))
|
|
230
|
+
return false;
|
|
231
|
+
for (const k in value) {
|
|
232
|
+
if (!Pattern.DictKey.test(k))
|
|
233
|
+
return false;
|
|
234
|
+
const dict_entry = value[k];
|
|
235
|
+
if (!_isIdNode(dict_entry))
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
function _sortObject(key, value) {
|
|
241
|
+
if (_isDictionaryOfPOJOs(value))
|
|
242
|
+
return value;
|
|
243
|
+
}
|
|
244
|
+
const sortBlacklist = [
|
|
245
|
+
'options',
|
|
246
|
+
'controls',
|
|
247
|
+
'contents',
|
|
248
|
+
'collections',
|
|
249
|
+
'oracles',
|
|
250
|
+
'assets',
|
|
251
|
+
'moves',
|
|
252
|
+
'variants'
|
|
253
|
+
];
|
|
254
|
+
export function sortJson(key, value) {
|
|
255
|
+
if (sortBlacklist.includes(key))
|
|
256
|
+
return value;
|
|
257
|
+
if (!_isPOJO(value))
|
|
258
|
+
return value;
|
|
259
|
+
if (_isDictionaryOfIdNodes(value))
|
|
260
|
+
return value;
|
|
261
|
+
return sortDataswornKeys(value);
|
|
262
|
+
}
|
|
263
|
+
export function sortObjectKeys(object, keyOrder) {
|
|
264
|
+
const entries = Object.entries(object).sort(([a], [b]) => compareObjectKeys(a, b, keyOrder));
|
|
265
|
+
return Object.fromEntries(entries);
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=Sort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sort.js","sourceRoot":"","sources":["../../../src/Utils/Sort.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type * as IdElements from '../IdElements/index.js';
|
|
2
|
+
export type Split<S extends string, Delimiter extends string = IdElements.CONST.PathKeySep> = S extends `${infer Head}${Delimiter}${infer Tail}` ? [Head, ...Split<Tail, Delimiter>] : S extends Delimiter ? [] : [S];
|
|
3
|
+
export type Join<Strings extends string[], Delimiter extends string = IdElements.CONST.PathKeySep> = Strings extends [infer U extends string] ? U : Strings extends [infer Head extends string, ...infer Tail extends string[]] ? `${Head}${Delimiter}${Join<Tail, Delimiter>}` : never;
|
|
4
|
+
//# sourceMappingURL=String.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.d.ts","sourceRoot":"","sources":["../../../src/Utils/String.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAA;AAIzD,MAAM,MAAM,KAAK,CAChB,CAAC,SAAS,MAAM,EAChB,SAAS,SAAS,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,IACnD,CAAC,SAAS,GAAG,MAAM,IAAI,GAAG,SAAS,GAAG,MAAM,IAAI,EAAE,GACnD,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GACjC,CAAC,SAAS,SAAS,GAClB,EAAE,GACF,CAAC,CAAC,CAAC,CAAA;AAEP,MAAM,MAAM,IAAI,CACf,OAAO,SAAS,MAAM,EAAE,EACxB,SAAS,SAAS,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,IACnD,OAAO,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACzC,CAAC,GACD,OAAO,SAAS,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,GAC1E,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,GAC7C,KAAK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"String.js","sourceRoot":"","sources":["../../../src/Utils/String.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type * as Datasworn from './Datasworn.js';
|
|
2
|
+
export type * as DataswornSource from './DataswornSource.js';
|
|
3
|
+
export { DataswornTree } from './DataswornTree.js';
|
|
4
|
+
export * from './DataswornVersion.js';
|
|
5
|
+
export * from './IdParser.js';
|
|
6
|
+
export * as Migrations from './Migrations/index.js';
|
|
7
|
+
export * as StringId from './StringId.js';
|
|
8
|
+
export type { Primary as PrimaryStringId } from './StringId.js';
|
|
9
|
+
export * from './mergeExpansion.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAChD,YAAY,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,YAAY,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/D,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { DataswornTree } from './DataswornTree.js';
|
|
2
|
+
export * from './DataswornVersion.js';
|
|
3
|
+
export * from './IdParser.js';
|
|
4
|
+
export * as Migrations from './Migrations/index.js';
|
|
5
|
+
export * as StringId from './StringId.js';
|
|
6
|
+
export * from './mergeExpansion.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,cAAc,uBAAuB,CAAA;AACrC,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeExpansion.d.ts","sourceRoot":"","sources":["../../src/mergeExpansion.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAiIhD,wBAAgB,cAAc,CAC7B,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,SAAS,EAAE,SAAS,CAAC,SAAS,EAC9B,MAAM,UAAO,qBA0Cb"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { CollectionsKey, ContentsKey, EnhancesKey, ReplacesKey } from './IdElements/CONST.js';
|
|
2
|
+
import TypeId from './IdElements/TypeId.js';
|
|
3
|
+
import { IdParser } from './IdParser.js';
|
|
4
|
+
/**
|
|
5
|
+
* Applies overrides to Datasworn collection from another Datasworn collection.
|
|
6
|
+
* Mutates `target`.
|
|
7
|
+
* @param target The collection object to be enhanced.
|
|
8
|
+
* @param source The changes to be applied to `target`
|
|
9
|
+
* @returns The mutated `target`
|
|
10
|
+
* @throws If the `source` is missing a matching wildcardId.
|
|
11
|
+
* @experimental
|
|
12
|
+
*/
|
|
13
|
+
function enhanceCollection(target, source) {
|
|
14
|
+
const err = new Error(`Expected source <${source._id}> "${EnhancesKey}" property to include a wildcard matching target <${target._id}>, but got ${JSON.stringify(source[EnhancesKey])}.`);
|
|
15
|
+
if (!(EnhancesKey in source))
|
|
16
|
+
throw err;
|
|
17
|
+
if (!Array.isArray(source[EnhancesKey]))
|
|
18
|
+
throw err;
|
|
19
|
+
const targetId = IdParser.parse(target._id);
|
|
20
|
+
if (!targetId.isMatchedBy(...source[EnhancesKey]))
|
|
21
|
+
throw err;
|
|
22
|
+
target[ContentsKey] = applyDictionaryReplacements(target[ContentsKey], source[ContentsKey]);
|
|
23
|
+
target[CollectionsKey] =
|
|
24
|
+
applyDictionaryEnhancements(target[CollectionsKey], source[CollectionsKey]);
|
|
25
|
+
return target;
|
|
26
|
+
}
|
|
27
|
+
function applyDictionaryEnhancements(targetDictionary, sourceDictionary) {
|
|
28
|
+
// Handle undefined dictionaries (e.g., when a collection has no nested collections)
|
|
29
|
+
if (sourceDictionary == null)
|
|
30
|
+
return targetDictionary;
|
|
31
|
+
if (targetDictionary == null)
|
|
32
|
+
return sourceDictionary;
|
|
33
|
+
const targetMap = targetDictionary instanceof Map
|
|
34
|
+
? targetDictionary
|
|
35
|
+
: new Map(Object.entries(targetDictionary));
|
|
36
|
+
const sourceMap = sourceDictionary instanceof Map
|
|
37
|
+
? sourceDictionary
|
|
38
|
+
: new Map(Object.entries(sourceDictionary));
|
|
39
|
+
for (const [key, source] of sourceMap) {
|
|
40
|
+
if (!targetMap.has(key)) {
|
|
41
|
+
targetMap.set(key, source);
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (!(EnhancesKey in source))
|
|
45
|
+
continue;
|
|
46
|
+
const target = targetMap.get(key);
|
|
47
|
+
targetMap.set(key, enhanceCollection(target, source));
|
|
48
|
+
}
|
|
49
|
+
const result = targetDictionary instanceof Map ? targetMap : Object.fromEntries(targetMap);
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
function applyDictionaryReplacements(targetDictionary, sourceDictionary) {
|
|
53
|
+
const targetMap = targetDictionary instanceof Map
|
|
54
|
+
? targetDictionary
|
|
55
|
+
: new Map(Object.entries(targetDictionary));
|
|
56
|
+
const sourceMap = sourceDictionary instanceof Map
|
|
57
|
+
? sourceDictionary
|
|
58
|
+
: new Map(Object.entries(sourceDictionary));
|
|
59
|
+
for (const [key, source] of sourceMap) {
|
|
60
|
+
if (!targetMap.has(key)) {
|
|
61
|
+
targetMap.set(key, source);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (!(ReplacesKey in source))
|
|
65
|
+
continue;
|
|
66
|
+
const target = targetMap.get(key);
|
|
67
|
+
const err = new Error(`Expected source <${source._id}> "${ReplacesKey}" property to include a wildcard matching target <${target._id}>, but got ${JSON.stringify(source[ReplacesKey])}`);
|
|
68
|
+
if (!(ReplacesKey in source))
|
|
69
|
+
throw err;
|
|
70
|
+
if (!Array.isArray(source[ReplacesKey]))
|
|
71
|
+
throw err;
|
|
72
|
+
const targetValueId = IdParser.parse(target._id);
|
|
73
|
+
if (!targetValueId.isMatchedBy(...source[ReplacesKey]))
|
|
74
|
+
throw err;
|
|
75
|
+
targetMap.set(key, source);
|
|
76
|
+
}
|
|
77
|
+
const result = targetDictionary instanceof Map ? targetMap : Object.fromEntries(targetMap);
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
export function mergeExpansion(ruleset, expansion, strict = true) {
|
|
81
|
+
if (strict && ruleset._id !== expansion.ruleset)
|
|
82
|
+
throw new Error(`Can only merge to the expansion's matching ruleset "${expansion.ruleset}" in strict mode, but got ruleset "${ruleset._id}".`);
|
|
83
|
+
const collections = TypeId.Collectable.map(TypeId.getBranchKey);
|
|
84
|
+
for (const branchKey of collections) {
|
|
85
|
+
if (!(branchKey in expansion))
|
|
86
|
+
continue;
|
|
87
|
+
const expansionBranch = expansion[branchKey];
|
|
88
|
+
if (!(branchKey in ruleset))
|
|
89
|
+
// @ts-expect-error
|
|
90
|
+
ruleset[branchKey] = expansionBranch;
|
|
91
|
+
else {
|
|
92
|
+
const rulesetBranch = ruleset[branchKey];
|
|
93
|
+
if (expansionBranch &&
|
|
94
|
+
typeof expansionBranch === 'object' &&
|
|
95
|
+
ReplacesKey in expansionBranch) {
|
|
96
|
+
// @ts-expect-error
|
|
97
|
+
ruleset[branchKey] = applyDictionaryReplacements(rulesetBranch, expansionBranch);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// @ts-expect-error
|
|
101
|
+
ruleset[branchKey] = applyDictionaryEnhancements(rulesetBranch, expansionBranch);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return ruleset;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=mergeExpansion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeExpansion.js","sourceRoot":"","sources":["../../src/mergeExpansion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|