@datasworn-community/build-tools 0.2.9-experimental.19.d9bcc568c866 → 0.2.10
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 +32 -0
- package/dist/content-package-builder.d.ts.map +1 -1
- package/dist/content-package-builder.js +14 -3
- package/dist/content-package-builder.js.map +1 -1
- package/dist/in-memory-rules-package-builder.d.ts +39 -0
- package/dist/in-memory-rules-package-builder.d.ts.map +1 -0
- package/dist/in-memory-rules-package-builder.js +158 -0
- package/dist/in-memory-rules-package-builder.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/rules-package-builder.d.ts.map +1 -1
- package/dist/rules-package-builder.js +8 -26
- package/dist/rules-package-builder.js.map +1 -1
- package/dist/semantic-validators.d.ts +15 -0
- package/dist/semantic-validators.d.ts.map +1 -0
- package/dist/semantic-validators.js +88 -0
- package/dist/semantic-validators.js.map +1 -0
- package/package.json +6 -6
- package/schema-source/schema/RulesPackages.ts +0 -6
- package/schema-source/schema/Truths.ts +0 -24
package/README.md
CHANGED
|
@@ -24,6 +24,38 @@ packageOutDir: dist/packages
|
|
|
24
24
|
This writes flat `<package-id>.json` files, `manifest.json`, and `README.md`.
|
|
25
25
|
Do not edit those generated files by hand.
|
|
26
26
|
|
|
27
|
+
## In-memory builds
|
|
28
|
+
|
|
29
|
+
Embedded consumers such as Iron Vault can compile already-parsed fragments with
|
|
30
|
+
`RulesPackageBuilder`. Import it from `@datasworn-community/build-tools`, rather
|
|
31
|
+
than from a deep path in core, and initialize it with synchronous schema
|
|
32
|
+
validators before constructing a builder:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { RulesPackageBuilder } from '@datasworn-community/build-tools'
|
|
36
|
+
|
|
37
|
+
RulesPackageBuilder.init({ validator, sourceValidator })
|
|
38
|
+
|
|
39
|
+
const builder = new RulesPackageBuilder('my_ruleset', console)
|
|
40
|
+
builder.addFiles(
|
|
41
|
+
{ name: 'package.md', data: packageFragment },
|
|
42
|
+
{ name: 'oracles/characters.md', data: oracleFragment }
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
if (builder.errors.has('oracles/characters.md')) {
|
|
46
|
+
builder.files.delete('oracles/characters.md')
|
|
47
|
+
builder.errors.delete('oracles/characters.md')
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const data = builder.build().toJSON()
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`files` and `errors` are keyed by fragment name, so consumers can inspect or
|
|
54
|
+
remove individual inputs before rebuilding. Semantic oracle validation runs as
|
|
55
|
+
part of `build()`. ID-reference validation remains a separate exported operation:
|
|
56
|
+
call `validateIdRefs(data, tree)` when the assembled package and its dependency
|
|
57
|
+
tree are available.
|
|
58
|
+
|
|
27
59
|
The upstream TypeBox schema source is imported under `schema-source/` as source
|
|
28
60
|
material for the schema generation work. Runtime validation uses the generated
|
|
29
61
|
schemas shipped by core.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-package-builder.d.ts","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-package-builder.d.ts","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"AAUA,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,MAAM,4BAA4B,CAAA;AAKnC,UAAU,WAAW;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,UAAU,EAAE,iBAAiB,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC9C,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAA;IACV,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACzE,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,8BAA8B,EAAE,CAAA;IACtD;;;OAGG;IACH,sBAAsB,CAAC,EAAE,8BAA8B,EAAE,CAAA;IACzD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,GAAG;QAC1C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KACpB,CAAA;CACD;AAED,MAAM,WAAW,uBAAuB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,iBAAiB,CAAA;IAC7B,QAAQ,EAAE,yBAAyB,EAAE,CAAA;CACrC;AAED,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACzE,MAAM,EAAE,yBAAyB,CAAA;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,WAAW,CAAA;CACxB;AAED,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,yBAAyB,EAAE,CAAA;IACpC,UAAU,EAAE,MAAM,EAAE,CAAA;CACpB;AAqXD,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,uBAAuB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CAmDlC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { cp, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { DATASWORN_SCHEMA_VERSION } from '@datasworn-community/core';
|
|
4
|
+
import { DATASWORN_SCHEMA_VERSION, IdElements } from '@datasworn-community/core';
|
|
5
5
|
import { buildRulesPackage } from './rules-package-builder.js';
|
|
6
6
|
import { validateIdRefs } from './id-references.js';
|
|
7
7
|
const require = createRequire(import.meta.url);
|
|
@@ -33,6 +33,12 @@ function assertNoDuplicatePackageIds(packages) {
|
|
|
33
33
|
seen.add(config.id);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
+
function assertPackageIds(packages) {
|
|
37
|
+
for (const config of packages) {
|
|
38
|
+
if (!IdElements.TypeGuard.RulesPackageId(config.id))
|
|
39
|
+
throw new Error(`${config.id}: package ID must match ${IdElements.Pattern.RulesPackageId.toString()}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
36
42
|
function assertPackageRepository(repository) {
|
|
37
43
|
if (repository == null)
|
|
38
44
|
throw new Error('Multi-package content build config requires repository');
|
|
@@ -229,13 +235,17 @@ async function writePublishableArtifacts(config, result, builtPackages, packageO
|
|
|
229
235
|
const packageJson = packageJsonFor(config, dependencies, repository);
|
|
230
236
|
const packageDir = path.join(packageOutDir, config.id);
|
|
231
237
|
const jsonDir = path.join(packageDir, 'json');
|
|
238
|
+
const packageType = config.type === 'ruleset' ? 'Ruleset' : 'Expansion';
|
|
239
|
+
const namedExports = config.id === 'data' || config.id === 'default'
|
|
240
|
+
? 'export { data }'
|
|
241
|
+
: `export { data, data as ${config.id} }`;
|
|
232
242
|
await mkdir(jsonDir, { recursive: true });
|
|
233
243
|
await copyPackageAssets(config, packageDir, packageJson);
|
|
234
244
|
await copyPackageMigrationArtifacts(config, packageDir, packageJson);
|
|
235
245
|
await Promise.all([
|
|
236
246
|
writeFile(path.join(packageDir, 'package.json'), stableJson(packageJson)),
|
|
237
|
-
writeFile(path.join(packageDir, 'index.js'), `import data from './json/${config.id}.json' with { type: 'json' }\n\
|
|
238
|
-
writeFile(path.join(packageDir, 'index.d.ts'),
|
|
247
|
+
writeFile(path.join(packageDir, 'index.js'), `import data from './json/${config.id}.json' with { type: 'json' }\n\n${namedExports}\nexport default data\n`),
|
|
248
|
+
writeFile(path.join(packageDir, 'index.d.ts'), `import type { Datasworn } from '@datasworn-community/core'\n\ndeclare const data: Datasworn.${packageType}\n${namedExports}\nexport default data\n`),
|
|
239
249
|
writeFile(path.join(jsonDir, `${config.id}.json`), stableJson(result.data))
|
|
240
250
|
]);
|
|
241
251
|
return { ...result, config, packageDir, packageJson };
|
|
@@ -245,6 +255,7 @@ export async function buildContentPackages(config) {
|
|
|
245
255
|
const outDir = config.outDir ?? 'datasworn';
|
|
246
256
|
const publicJsonOutDir = config.publicJsonOutDir;
|
|
247
257
|
const packageOutDir = config.packageOutDir ?? 'dist/packages';
|
|
258
|
+
assertPackageIds(config.packages);
|
|
248
259
|
const ordered = topologicalPackageOrder(config.packages);
|
|
249
260
|
const builtPackages = new Map();
|
|
250
261
|
const results = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-package-builder.js","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"content-package-builder.js","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EACN,wBAAwB,EACxB,UAAU,EAEV,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACN,iBAAiB,EAGjB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AA4G9C,SAAS,iBAAiB;IACzB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1D,OAAO,GAAG,KAAK,IAAI,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IAC1C,OAAO,IAAI,UAAU,IAAI,CAAA;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,MAAiC;IACxD,OAAO,MAAM,CAAC,OAAO,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,CAAA;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAiC;IAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,EAAE,mCAAmC,CAAC,CAAA;IAEjE,MAAM,gBAAgB,GAAG,iBAAiB,EAAE,CAAA;IAC5C,IAAI,MAAM,CAAC,UAAU,KAAK,gBAAgB;QACzC,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,EAAE,gBAAgB,MAAM,CAAC,UAAU,8CAA8C,gBAAgB,EAAE,CAC7G,CAAA;IAEF,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC;QAC/C,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,EAAE,qBAAqB,OAAO,6BAA6B,MAAM,CAAC,UAAU,EAAE,CACxF,CAAA;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,QAA8C;IAClF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;QAC9E,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACpB,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA8C;IACvE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,EAAE,2BAA2B,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CACrF,CAAA;IACH,CAAC;AACF,CAAC;AAED,SAAS,uBAAuB,CAC/B,UAAyC;IAEzC,IAAI,UAAU,IAAI,IAAI;QACrB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAE1E,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IAElF,IAAI,OAAO,UAAU,CAAC,GAAG,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAEjF,IACC,UAAU,CAAC,SAAS,IAAI,IAAI;QAC5B,OAAO,UAAU,CAAC,SAAS,KAAK,QAAQ;QAExC,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,uBAAuB,CAC/B,QAA8C;IAE9C,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,MAAM,OAAO,GAAgC,EAAE,CAAA;IAE/C,SAAS,KAAK,CAAC,MAAiC,EAAE,QAAkB;QACnE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAAE,OAAM;QAClC,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAEzF,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACvB,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YACzC,IAAI,UAAU,IAAI,IAAI;gBAAE,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACpE,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACtB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,QAAQ;QAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAChD,OAAO,OAAO,CAAA;AACf,CAAC;AAED,SAAS,kBAAkB,CAC1B,MAAiC,EACjC,aAA8B;IAE9B,MAAM,QAAQ,GAAG,IAAI,GAAG,CACvB,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QACtD,UAAU,CAAC,EAAE;QACb,UAAU;KACV,CAAC,CACF,CAAA;IAED,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,KAAK,IAAI,IAAI;YAChB,OAAO;gBACN,EAAE,EAAE,YAAY;gBAChB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;gBACrC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;aACnC,CAAA;QAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,UAAU,IAAI,IAAI;YACrB,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,EAAE,gBAAgB,YAAY,kEAAkE,CAC1G,CAAA;QACF,OAAO,UAAU,CAAA;IAClB,CAAC,CAAC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACrC,UAA0C;IAE1C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAC/B,GAAG,UAAU,CAAC,WAAW,SAAS,UAAU,CAAC,EAAE,OAAO,EACtD,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAC1B,CAAA;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAA2B,CAAA;AAC9E,CAAC;AAED,KAAK,UAAU,4BAA4B,CAC1C,MAAiC,EACjC,aAA8B;IAE9B,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAE9E,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,sBAAsB,IAAI,EAAE;QAC3D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;IAEpC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;AAC1B,CAAC;AAED,KAAK,UAAU,qBAAqB,CACnC,MAAiC,EACjC,aAA8B;IAE9B,MAAM,YAAY,GAA6B,EAAE,CAAA;IAEjD,KAAK,MAAM,UAAU,IAAI,MAAM,4BAA4B,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;QACpF,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAC9C,YAAY,CAAC,IAAI,CAChB,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAC1D,CAAA;IACF,CAAC;IAED,OAAO,YAAY,CAAA;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,MAAiC;IACnD,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAA;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,MAAiC;IACvD,OAAO,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;AACzD,CAAC;AAED,SAAS,cAAc,CACtB,MAAiC,EACjC,YAAuD,EACvD,UAA6B;IAE7B,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAC7C;QACC,CAAC,2BAA2B,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YACnC,UAAU,CAAC,WAAW;YACtB,eAAe,CAAC,UAAU,CAAC,UAAU,CAAC;SACtC,CAAC;KACF,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAC/D,CAAA;IAED,OAAO;QACN,IAAI,EAAE,MAAM,CAAC,WAAW;QACxB,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE;YACR,GAAG,EAAE;gBACJ,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,YAAY;aACrB;YACD,UAAU,EAAE,UAAU;YACtB,gBAAgB,EAAE,gBAAgB;SAClC;QACD,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC;QACzC,YAAY,EAAE,mBAAmB;QACjC,UAAU,EAAE,EAAE,GAAG,UAAU,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;KACvB,CAAA;AACF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IACjC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAA;AAClD,CAAC;AAED,SAAS,iBAAiB,CACzB,OAA6C;IAE7C,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAClC,OAAO;SACL,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAChB,MAAM,CAAC,MAAM,CAAC,EAAE;QAChB;YACC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;YACxB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;YACpC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW;YACtC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO;YAChC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW;YACtC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;YAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY;SACxC;KACgD,CAAC;SAClD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAC/D,CAAA;IAED,OAAO;QACN,iBAAiB,EAAE,wBAAwB;QAC3C,QAAQ;KACR,CAAA;AACF,CAAC;AAED,SAAS,eAAe;IACvB,OAAO;;;;;;;;;;CAUP,CAAA;AACD,CAAC;AAED,KAAK,UAAU,2BAA2B,CACzC,OAA6C,EAC7C,gBAAwB;IAExB,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,MAAM,KAAK,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAElD,MAAM,OAAO,CAAC,GAAG,CAAC;QACjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;QACtE,SAAS,CACR,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,EAC5C,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CACtC;QACD,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACnD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAA;QAC/E,CAAC,CAAC;KACF,CAAC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC/B,MAAiC,EACjC,UAAkB,EAClB,WAAwB;IAExB,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAEhD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE;YACxB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,WAAW;SAC/D,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/E,WAAW,CAAC,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,GAAG,KAAK,UAAU,IAAI,CAAA;IAC/D,CAAC;IAED,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC3C,MAAiC,EACjC,UAAkB,EAClB,WAAwB;IAExB,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE;YACxB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,WAAW;SAC/D,CAAC,CAAA;IACH,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACjF,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IACtD,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,KAAK,UAAU,yBAAyB,CACvC,MAAiC,EACjC,MAA+B,EAC/B,aAA8B,EAC9B,aAAqB,EACrB,UAA6B;IAE7B,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAA;IACvE,MAAM,YAAY,GACjB,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;QAC9C,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,0BAA0B,MAAM,CAAC,EAAE,IAAI,CAAA;IAE3C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,MAAM,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACxD,MAAM,6BAA6B,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACpE,MAAM,OAAO,CAAC,GAAG,CAAC;QACjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;QACzE,SAAS,CACR,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EACjC,4BAA4B,MAAM,CAAC,EAAE,mCAAmC,YAAY,yBAAyB,CAC7G;QACD,SAAS,CACR,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EACnC,+FAA+F,WAAW,KAAK,YAAY,yBAAyB,CACpJ;QACD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC3E,CAAC,CAAA;IAEF,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,MAA+B;IAE/B,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,WAAW,CAAA;IAC3C,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAA;IAChD,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,eAAe,CAAA;IAC7D,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACjC,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACxD,MAAM,aAAa,GAAoB,IAAI,GAAG,EAAE,CAAA;IAChD,MAAM,OAAO,GAAgC,EAAE,CAAA;IAC/C,MAAM,cAAc,GAA2C,EAAE,CAAA;IAEjE,KAAK,MAAM,aAAa,IAAI,OAAO,EAAE,CAAC;QACrC,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE;YACrD,MAAM;YACN,cAAc,EAAE,KAAK;SACrB,CAAC,CAAA;QACF,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QAC9C,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAClD,aAAa,EACb,MAAM,EACN,aAAa,EACb,aAAa,EACb,MAAM,CAAC,UAAU,CACjB,CAAA;QACD,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,cAAc,GAA2C;YAC9D,GAAG,cAAc;SACjB,CAAA;QACD,KAAK,MAAM,UAAU,IAAI,MAAM,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;YACjF,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAA;QAE5C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAC1D,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;QAC7D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;YACxB,MAAM,IAAI,KAAK,CACd,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,UAAU,CAAC,MAAM,mCAAmC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CACrG,CAAA;IACH,CAAC;IAED,IAAI,gBAAgB,IAAI,IAAI;QAC3B,MAAM,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAE7D,OAAO;QACN,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;KAC5D,CAAA;AACF,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type Datasworn, type DataswornSource } from '@datasworn-community/core';
|
|
2
|
+
import type { DataswornValidators, SchemaValidator } from './validators.js';
|
|
3
|
+
export interface NamedRulesPackageSource<TSource extends DataswornSource.RulesPackage = DataswornSource.RulesPackage> {
|
|
4
|
+
name: string;
|
|
5
|
+
data: TSource;
|
|
6
|
+
}
|
|
7
|
+
export interface RulesPackageMetadata {
|
|
8
|
+
id: string;
|
|
9
|
+
type?: Datasworn.RulesPackage['type'];
|
|
10
|
+
}
|
|
11
|
+
export interface AssembledRulesPackage<TTarget extends Datasworn.RulesPackage = Datasworn.RulesPackage> {
|
|
12
|
+
data: TTarget;
|
|
13
|
+
index: Map<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export type Logger = Record<'warn' | 'info' | 'debug' | 'error', (message?: unknown, ...optionalParams: unknown[]) => unknown>;
|
|
16
|
+
/** Assemble already-parsed source fragments without doing filesystem work. */
|
|
17
|
+
export declare function assembleRulesPackage<TTarget extends Datasworn.RulesPackage = Datasworn.RulesPackage, TSource extends DataswornSource.RulesPackage = DataswornSource.RulesPackage>(namedSources: readonly NamedRulesPackageSource<TSource>[], validators: DataswornValidators<TTarget, TSource>, expected: RulesPackageMetadata): AssembledRulesPackage<TTarget>;
|
|
18
|
+
/** Iron Vault-compatible stateful adapter around the in-memory assembler. */
|
|
19
|
+
export declare class RulesPackageBuilder<TSource extends DataswornSource.RulesPackage = DataswornSource.RulesPackage, TTarget extends Datasworn.RulesPackage = Datasworn.RulesPackage> {
|
|
20
|
+
#private;
|
|
21
|
+
static init({ validator, sourceValidator }: {
|
|
22
|
+
validator: SchemaValidator<Datasworn.RulesPackage>;
|
|
23
|
+
sourceValidator: SchemaValidator<DataswornSource.RulesPackage>;
|
|
24
|
+
}): typeof RulesPackageBuilder;
|
|
25
|
+
static get schemaValidator(): SchemaValidator<Datasworn.RulesPackage>;
|
|
26
|
+
static get sourceSchemaValidator(): SchemaValidator<DataswornSource.RulesPackage>;
|
|
27
|
+
static get isInitialized(): boolean;
|
|
28
|
+
readonly files: Map<string, NamedRulesPackageSource<TSource>>;
|
|
29
|
+
readonly errors: Map<string, unknown>;
|
|
30
|
+
readonly index: Map<string, unknown>;
|
|
31
|
+
readonly logger: Logger;
|
|
32
|
+
readonly id: string;
|
|
33
|
+
constructor(id: string, logger: Logger);
|
|
34
|
+
get packageType(): Datasworn.RulesPackage['type'] | undefined;
|
|
35
|
+
addFiles(...files: NamedRulesPackageSource<TSource>[]): this;
|
|
36
|
+
build(): this;
|
|
37
|
+
toJSON(): TTarget;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=in-memory-rules-package-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-rules-package-builder.d.ts","sourceRoot":"","sources":["../src/in-memory-rules-package-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,MAAM,2BAA2B,CAAA;AAGlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAI3E,MAAM,WAAW,uBAAuB,CACvC,OAAO,SAAS,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY;IAE3E,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,OAAO,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,qBAAqB,CACrC,OAAO,SAAS,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY;IAE/D,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3B;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAC1B,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EACnC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,OAAO,CAC5D,CAAA;AAiED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CACnC,OAAO,SAAS,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,EAC/D,OAAO,SAAS,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY,EAE3E,YAAY,EAAE,SAAS,uBAAuB,CAAC,OAAO,CAAC,EAAE,EACzD,UAAU,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,EACjD,QAAQ,EAAE,oBAAoB,GAC5B,qBAAqB,CAAC,OAAO,CAAC,CA6BhC;AAED,6EAA6E;AAC7E,qBAAa,mBAAmB,CAC/B,OAAO,SAAS,eAAe,CAAC,YAAY,GAAG,eAAe,CAAC,YAAY,EAC3E,OAAO,SAAS,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY;;IAK/D,MAAM,CAAC,IAAI,CAAC,EACX,SAAS,EACT,eAAe,EACf,EAAE;QACF,SAAS,EAAE,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAClD,eAAe,EAAE,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;KAC9D,GAAG,OAAO,mBAAmB;IAM9B,MAAM,KAAK,eAAe,IAAI,eAAe,CAAC,SAAS,CAAC,YAAY,CAAC,CAIpE;IAED,MAAM,KAAK,qBAAqB,IAAI,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,CAIhF;IAED,MAAM,KAAK,aAAa,IAAI,OAAO,CAKlC;IAED,QAAQ,CAAC,KAAK,gDAAsD;IACpE,QAAQ,CAAC,MAAM,uBAA6B;IAC5C,QAAQ,CAAC,KAAK,uBAA6B;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;gBAGP,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAStC,IAAI,WAAW,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAG5D;IAED,QAAQ,CAAC,GAAG,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI;IAqB5D,KAAK,IAAI,IAAI;IAsBb,MAAM,IAAI,OAAO;CAGjB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { DATASWORN_SCHEMA_VERSION, IdParser } from '@datasworn-community/core';
|
|
2
|
+
import { Validators } from './semantic-validators.js';
|
|
3
|
+
function isObject(value) {
|
|
4
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
5
|
+
}
|
|
6
|
+
function cloneJsonValue(value) {
|
|
7
|
+
return JSON.parse(JSON.stringify(value));
|
|
8
|
+
}
|
|
9
|
+
function mergeInto(target, source) {
|
|
10
|
+
for (const [key, value] of Object.entries(source)) {
|
|
11
|
+
if (isObject(value)) {
|
|
12
|
+
const current = target[key];
|
|
13
|
+
if (!isObject(current))
|
|
14
|
+
target[key] = {};
|
|
15
|
+
mergeInto(target[key], value);
|
|
16
|
+
}
|
|
17
|
+
else
|
|
18
|
+
target[key] = cloneJsonValue(value);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function validateMetadata(name, source, expected) {
|
|
22
|
+
if (source._id != null && source._id !== expected.id)
|
|
23
|
+
throw new Error(`${name}: package _id ${source._id} does not match configured id ${expected.id}`);
|
|
24
|
+
if (expected.type != null && source.type != null && source.type !== expected.type)
|
|
25
|
+
throw new Error(`${name}: package type ${source.type} does not match configured type ${expected.type}`);
|
|
26
|
+
}
|
|
27
|
+
function validateSource(name, data, validator) {
|
|
28
|
+
try {
|
|
29
|
+
if (validator(data))
|
|
30
|
+
return;
|
|
31
|
+
throw new Error("doesn't match the DataswornSource schema");
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
throw new Error(`${name}: source validation failed: ${String(error)}`, {
|
|
35
|
+
cause: error
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function validateSemantics(index) {
|
|
40
|
+
for (const [id, node] of index) {
|
|
41
|
+
if (!isObject(node) || typeof node.type !== 'string')
|
|
42
|
+
continue;
|
|
43
|
+
const validator = Validators[node.type];
|
|
44
|
+
if (validator == null)
|
|
45
|
+
continue;
|
|
46
|
+
try {
|
|
47
|
+
validator(node);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new Error(`<${id}> ${String(error)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Assemble already-parsed source fragments without doing filesystem work. */
|
|
55
|
+
export function assembleRulesPackage(namedSources, validators, expected) {
|
|
56
|
+
const sources = namedSources
|
|
57
|
+
.map(({ name, data }) => ({ name, data: cloneJsonValue(data) }))
|
|
58
|
+
.sort((left, right) => left.name.localeCompare(right.name, 'en-US'));
|
|
59
|
+
const inferredType = expected.type ?? sources.find(({ data }) => data.type != null)?.data.type;
|
|
60
|
+
const metadata = { ...expected, type: inferredType };
|
|
61
|
+
const merged = {
|
|
62
|
+
_id: expected.id,
|
|
63
|
+
...(inferredType == null ? {} : { type: inferredType }),
|
|
64
|
+
datasworn_version: DATASWORN_SCHEMA_VERSION
|
|
65
|
+
};
|
|
66
|
+
for (const { name, data } of sources) {
|
|
67
|
+
validateSource(name, data, validators.source);
|
|
68
|
+
validateMetadata(name, data, metadata);
|
|
69
|
+
mergeInto(merged, data);
|
|
70
|
+
}
|
|
71
|
+
const index = new Map();
|
|
72
|
+
IdParser.assignIdsInRulesPackage(merged, index);
|
|
73
|
+
const data = merged;
|
|
74
|
+
if (!validators.output(data))
|
|
75
|
+
throw new Error('Datasworn schema validation failed');
|
|
76
|
+
validateSemantics(index);
|
|
77
|
+
return { data, index };
|
|
78
|
+
}
|
|
79
|
+
/** Iron Vault-compatible stateful adapter around the in-memory assembler. */
|
|
80
|
+
export class RulesPackageBuilder {
|
|
81
|
+
static #schemaValidator;
|
|
82
|
+
static #sourceSchemaValidator;
|
|
83
|
+
static init({ validator, sourceValidator }) {
|
|
84
|
+
RulesPackageBuilder.#schemaValidator = validator;
|
|
85
|
+
RulesPackageBuilder.#sourceSchemaValidator = sourceValidator;
|
|
86
|
+
return RulesPackageBuilder;
|
|
87
|
+
}
|
|
88
|
+
static get schemaValidator() {
|
|
89
|
+
if (RulesPackageBuilder.#schemaValidator == null)
|
|
90
|
+
throw new Error('RulesPackageBuilder has not been initialized');
|
|
91
|
+
return RulesPackageBuilder.#schemaValidator;
|
|
92
|
+
}
|
|
93
|
+
static get sourceSchemaValidator() {
|
|
94
|
+
if (RulesPackageBuilder.#sourceSchemaValidator == null)
|
|
95
|
+
throw new Error('RulesPackageBuilder has not been initialized');
|
|
96
|
+
return RulesPackageBuilder.#sourceSchemaValidator;
|
|
97
|
+
}
|
|
98
|
+
static get isInitialized() {
|
|
99
|
+
return (RulesPackageBuilder.#schemaValidator != null &&
|
|
100
|
+
RulesPackageBuilder.#sourceSchemaValidator != null);
|
|
101
|
+
}
|
|
102
|
+
files = new Map();
|
|
103
|
+
errors = new Map();
|
|
104
|
+
index = new Map();
|
|
105
|
+
logger;
|
|
106
|
+
id;
|
|
107
|
+
#result = {};
|
|
108
|
+
constructor(id, logger) {
|
|
109
|
+
if (!RulesPackageBuilder.isInitialized)
|
|
110
|
+
throw new Error('RulesPackageBuilder constructor is missing validator functions. Set them with RulesPackageBuilder.init before creating an instance.');
|
|
111
|
+
this.id = id;
|
|
112
|
+
this.logger = logger;
|
|
113
|
+
}
|
|
114
|
+
get packageType() {
|
|
115
|
+
for (const { data } of this.files.values())
|
|
116
|
+
if (data.type != null)
|
|
117
|
+
return data.type;
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
addFiles(...files) {
|
|
121
|
+
for (const file of files) {
|
|
122
|
+
this.files.set(file.name, file);
|
|
123
|
+
this.errors.delete(file.name);
|
|
124
|
+
try {
|
|
125
|
+
validateSource(file.name, file.data, RulesPackageBuilder.sourceSchemaValidator);
|
|
126
|
+
validateMetadata(file.name, file.data, {
|
|
127
|
+
id: this.id,
|
|
128
|
+
type: this.packageType
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
this.errors.set(file.name, error);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
build() {
|
|
138
|
+
if (this.errors.size > 0) {
|
|
139
|
+
const details = [...this.errors]
|
|
140
|
+
.map(([name, error]) => `"${name}" failed validation: ${String(error)}`)
|
|
141
|
+
.join('\n');
|
|
142
|
+
throw new Error(`Couldn't build "${this.id}". ${details}`);
|
|
143
|
+
}
|
|
144
|
+
const result = assembleRulesPackage([...this.files.values()], {
|
|
145
|
+
output: RulesPackageBuilder.schemaValidator,
|
|
146
|
+
source: RulesPackageBuilder.sourceSchemaValidator
|
|
147
|
+
}, { id: this.id, type: this.packageType });
|
|
148
|
+
this.#result = result.data;
|
|
149
|
+
this.index.clear();
|
|
150
|
+
for (const [id, node] of result.index)
|
|
151
|
+
this.index.set(id, node);
|
|
152
|
+
return this;
|
|
153
|
+
}
|
|
154
|
+
toJSON() {
|
|
155
|
+
return this.#result;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=in-memory-rules-package-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory-rules-package-builder.js","sourceRoot":"","sources":["../src/in-memory-rules-package-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,5 +2,7 @@ export { buildRulesPackage, type BuildRulesPackageOptions, type RulesPackageBuil
|
|
|
2
2
|
export { buildContentPackages, type ContentPackageBuildConfig, type ContentPackageBuildResult, type ContentPackageDependencyConfig, type MultiPackageBuildConfig, type MultiPackageBuildResult, type PackageRepository } from './content-package-builder.js';
|
|
3
3
|
export { loadCoreSchema, loadCoreSchemas, resolveCoreSchemaPath, type CoreSchemaFileName } from './schema.js';
|
|
4
4
|
export { createDataswornValidator, createDataswornValidators, type SchemaValidator } from './validators.js';
|
|
5
|
+
export { RulesPackageBuilder, type Logger, type NamedRulesPackageSource } from './in-memory-rules-package-builder.js';
|
|
6
|
+
export { Validators, validateDiceRange, validateOracleCollection, validateOracleRollable, validateOracleRollableRow } from './semantic-validators.js';
|
|
5
7
|
export { extractIdRefs, validateIdRefs, type IdRefReport } from './id-references.js';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACN,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,eAAe,EACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,aAAa,EACb,cAAc,EACd,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACN,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,eAAe,EACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,uBAAuB,EAC5B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACN,aAAa,EACb,cAAc,EACd,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,5 +2,7 @@ export { buildRulesPackage } from './rules-package-builder.js';
|
|
|
2
2
|
export { buildContentPackages } from './content-package-builder.js';
|
|
3
3
|
export { loadCoreSchema, loadCoreSchemas, resolveCoreSchemaPath } from './schema.js';
|
|
4
4
|
export { createDataswornValidator, createDataswornValidators } from './validators.js';
|
|
5
|
+
export { RulesPackageBuilder } from './in-memory-rules-package-builder.js';
|
|
6
|
+
export { Validators, validateDiceRange, validateOracleCollection, validateOracleRollable, validateOracleRollableRow } from './semantic-validators.js';
|
|
5
7
|
export { extractIdRefs, validateIdRefs } from './id-references.js';
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAIjB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACN,oBAAoB,EAOpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,cAAc,EACd,eAAe,EACf,qBAAqB,EAErB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EAEzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,aAAa,EACb,cAAc,EAEd,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EAIjB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACN,oBAAoB,EAOpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,cAAc,EACd,eAAe,EACf,qBAAqB,EAErB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EAEzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACN,mBAAmB,EAGnB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACN,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACN,aAAa,EACb,cAAc,EAEd,MAAM,oBAAoB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-package-builder.d.ts","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"rules-package-builder.d.ts","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,MAAM,2BAA2B,CAAA;AAOlC,OAAO,EAEN,KAAK,WAAW,EAChB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAEN,KAAK,mBAAmB,EACxB,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,uBAAuB;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAA;KACd,CAAA;IACD;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,mBAAmB,CAC/B,SAAS,CAAC,YAAY,EACtB,eAAe,CAAC,YAAY,CAC5B,CAAA;IACD;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,SAAS,CAAC,YAAY,EAAE,CAAA;IAChD;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,EAAE,SAAS,CAAC,YAAY,CAAA;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,MAAM,EAAE,WAAW,CAAA;CACnB;AA8DD,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,GAAE,wBAA6B,GACpC,OAAO,CAAC,uBAAuB,CAAC,CA8ClC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { DATASWORN_SCHEMA_VERSION
|
|
3
|
+
import { DATASWORN_SCHEMA_VERSION } from '@datasworn-community/core';
|
|
4
4
|
import YAML from 'yaml';
|
|
5
|
+
import { assembleRulesPackage } from './in-memory-rules-package-builder.js';
|
|
5
6
|
import { validateIdRefs } from './id-references.js';
|
|
6
7
|
import { createDataswornValidators } from './validators.js';
|
|
7
8
|
const sourceExtensions = new Set(['.json', '.yaml', '.yml']);
|
|
@@ -11,20 +12,6 @@ function isObject(value) {
|
|
|
11
12
|
function cloneJsonValue(value) {
|
|
12
13
|
return JSON.parse(JSON.stringify(value));
|
|
13
14
|
}
|
|
14
|
-
function mergeInto(target, source) {
|
|
15
|
-
for (const [key, value] of Object.entries(source)) {
|
|
16
|
-
if (isObject(value)) {
|
|
17
|
-
const nextTarget = target[key];
|
|
18
|
-
if (!isObject(nextTarget))
|
|
19
|
-
target[key] = {};
|
|
20
|
-
mergeInto(target[key], value);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
target[key] = value;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return target;
|
|
27
|
-
}
|
|
28
15
|
function sortValue(value) {
|
|
29
16
|
if (Array.isArray(value))
|
|
30
17
|
return value.map(sortValue);
|
|
@@ -68,20 +55,15 @@ export async function buildRulesPackage(config, options = {}) {
|
|
|
68
55
|
(await createDataswornValidators());
|
|
69
56
|
const outDir = options.outDir ?? normalizedConfig.outDir ?? 'datasworn';
|
|
70
57
|
const files = await collectSourceFiles(normalizedConfig.source);
|
|
71
|
-
const
|
|
72
|
-
const merged = {
|
|
73
|
-
_id: normalizedConfig.id,
|
|
74
|
-
type: normalizedConfig.type,
|
|
75
|
-
datasworn_version: DATASWORN_SCHEMA_VERSION
|
|
76
|
-
};
|
|
58
|
+
const sources = [];
|
|
77
59
|
for (const filePath of files) {
|
|
78
60
|
const source = await readSourceFile(filePath);
|
|
79
|
-
|
|
80
|
-
mergeInto(merged, source);
|
|
61
|
+
sources.push({ name: filePath, data: source });
|
|
81
62
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
63
|
+
const { data } = assembleRulesPackage(sources, validators, {
|
|
64
|
+
id: normalizedConfig.id,
|
|
65
|
+
type: normalizedConfig.type
|
|
66
|
+
});
|
|
85
67
|
// Validate ID references against a tree of this package plus any preloaded
|
|
86
68
|
// dependencies. This catches cross-package references (e.g. an expansion
|
|
87
69
|
// pointing at its ruleset) that AJV structural validation cannot.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-package-builder.js","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EACN,wBAAwB,
|
|
1
|
+
{"version":3,"file":"rules-package-builder.js","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Datasworn } from '@datasworn-community/core';
|
|
2
|
+
/** Ensure a dice range is ordered from its minimum to its maximum. */
|
|
3
|
+
export declare function validateDiceRange(range: Datasworn.DiceRange): true;
|
|
4
|
+
/** Validate the optional roll range on one oracle row. */
|
|
5
|
+
export declare function validateOracleRollableRow(row: Datasworn.OracleRollableRow): true;
|
|
6
|
+
/** Validate dice bounds and adjacency of the numbered rows in an oracle. */
|
|
7
|
+
export declare function validateOracleRollable(oracle: Datasworn.OracleRollable): true;
|
|
8
|
+
/** Validate the parallel columns represented by a shared oracle collection. */
|
|
9
|
+
export declare function validateOracleCollection(collection: Datasworn.OracleCollection): true;
|
|
10
|
+
/** Semantic validators applied after a package passes output-schema validation. */
|
|
11
|
+
export declare const Validators: {
|
|
12
|
+
readonly oracle_rollable: typeof validateOracleRollable;
|
|
13
|
+
readonly oracle_collection: typeof validateOracleCollection;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=semantic-validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-validators.d.ts","sourceRoot":"","sources":["../src/semantic-validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAK1D,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,GAAG,IAAI,CAMlE;AAED,0DAA0D;AAC1D,wBAAgB,yBAAyB,CACxC,GAAG,EAAE,SAAS,CAAC,iBAAiB,GAC9B,IAAI,CAGN;AAgBD,4EAA4E;AAC5E,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,SAAS,CAAC,cAAc,GAC9B,IAAI,CA6BN;AAuCD,+EAA+E;AAC/E,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,SAAS,CAAC,gBAAgB,GACpC,IAAI,CAqBN;AAED,mFAAmF;AACnF,eAAO,MAAM,UAAU;;;CAGb,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
const diceExpressionPattern = /^(?<count>[1-9][0-9]*)d(?<sides>[1-9][0-9]*)(?<modifier>[+-][1-9][0-9]*)?$/;
|
|
2
|
+
/** Ensure a dice range is ordered from its minimum to its maximum. */
|
|
3
|
+
export function validateDiceRange(range) {
|
|
4
|
+
if (range.max < range.min)
|
|
5
|
+
throw new Error(`DiceRange min (${range.min}) is greater than max (${range.max})`);
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
/** Validate the optional roll range on one oracle row. */
|
|
9
|
+
export function validateOracleRollableRow(row) {
|
|
10
|
+
if (row.roll != null)
|
|
11
|
+
validateDiceRange(row.roll);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
function diceRange(expression) {
|
|
15
|
+
const groups = diceExpressionPattern.exec(expression)?.groups;
|
|
16
|
+
if (groups == null)
|
|
17
|
+
throw new Error(`Could not parse ${expression} as a dice expression.`);
|
|
18
|
+
const count = Number(groups.count);
|
|
19
|
+
const sides = Number(groups.sides);
|
|
20
|
+
const modifier = groups.modifier == null ? 0 : Number(groups.modifier);
|
|
21
|
+
return {
|
|
22
|
+
min: count + modifier,
|
|
23
|
+
max: count * sides + modifier
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Validate dice bounds and adjacency of the numbered rows in an oracle. */
|
|
27
|
+
export function validateOracleRollable(oracle) {
|
|
28
|
+
const possible = diceRange(oracle.dice);
|
|
29
|
+
const numberedRows = oracle.rows
|
|
30
|
+
.map((row, index) => ({ row, index }))
|
|
31
|
+
.filter((entry) => entry.row.roll != null);
|
|
32
|
+
for (let position = 0; position < numberedRows.length; position++) {
|
|
33
|
+
const { row, index } = numberedRows[position];
|
|
34
|
+
validateOracleRollableRow(row);
|
|
35
|
+
if (row.roll.min < possible.min)
|
|
36
|
+
throw new Error(`@ index ${index}: roll.min (${row.roll.min}) is less than the minimum possible roll of ${oracle.dice} (${possible.min})`);
|
|
37
|
+
if (row.roll.max > possible.max)
|
|
38
|
+
throw new Error(`@ index ${index}: roll.max (${row.roll.max}) is greater than the maximum possible roll of ${oracle.dice} (${possible.max})`);
|
|
39
|
+
const previous = numberedRows[position - 1]?.row;
|
|
40
|
+
if (previous != null && row.roll.min !== previous.roll.max + 1)
|
|
41
|
+
throw new Error(`@ index ${index}: Roll range (${row.roll.min}-${row.roll.max}) is not sequential with previous numbered row (${previous.roll.min}-${previous.roll.max}).`);
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
function compareParallelRows(contents, equal, description) {
|
|
46
|
+
const entries = Object.entries(contents);
|
|
47
|
+
if (entries.length < 2)
|
|
48
|
+
return;
|
|
49
|
+
const [primaryKey, primary] = entries[0];
|
|
50
|
+
for (const [secondaryKey, secondary] of entries.slice(1)) {
|
|
51
|
+
if (secondary.rows.length !== primary.rows.length)
|
|
52
|
+
throw new Error(`${description}: <${secondaryKey}> has ${secondary.rows.length} rows; expected ${primary.rows.length} to match <${primaryKey}>`);
|
|
53
|
+
for (let index = 0; index < primary.rows.length; index++) {
|
|
54
|
+
if (!equal(primary.rows[index], secondary.rows[index]))
|
|
55
|
+
throw new Error(`${description}: row ${index} of <${secondaryKey}> does not match <${primaryKey}>`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function rowsHaveSameRoll(left, right) {
|
|
60
|
+
return left.roll?.min === right.roll?.min && left.roll?.max === right.roll?.max;
|
|
61
|
+
}
|
|
62
|
+
const textProperties = ['text', 'text2', 'text3'];
|
|
63
|
+
function rowsHaveSameText(left, right) {
|
|
64
|
+
const leftRecord = left;
|
|
65
|
+
const rightRecord = right;
|
|
66
|
+
return textProperties.every((key) => leftRecord[key] === rightRecord[key]);
|
|
67
|
+
}
|
|
68
|
+
/** Validate the parallel columns represented by a shared oracle collection. */
|
|
69
|
+
export function validateOracleCollection(collection) {
|
|
70
|
+
const contents = collection.contents ?? {};
|
|
71
|
+
switch (collection.oracle_type) {
|
|
72
|
+
case 'table_shared_rolls':
|
|
73
|
+
compareParallelRows(contents, rowsHaveSameRoll, 'table_shared_rolls child OracleRollables must have the same roll ranges in their rows, in the same order');
|
|
74
|
+
break;
|
|
75
|
+
case 'table_shared_text':
|
|
76
|
+
case 'table_shared_text2':
|
|
77
|
+
case 'table_shared_text3':
|
|
78
|
+
compareParallelRows(contents, rowsHaveSameText, `${collection.oracle_type} child OracleRollables must have the same text content in their rows, in the same order`);
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
/** Semantic validators applied after a package passes output-schema validation. */
|
|
84
|
+
export const Validators = {
|
|
85
|
+
oracle_rollable: validateOracleRollable,
|
|
86
|
+
oracle_collection: validateOracleCollection
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=semantic-validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-validators.js","sourceRoot":"","sources":["../src/semantic-validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datasworn-community/build-tools",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "Build and migration tools for Datasworn source packages.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -42,20 +42,20 @@
|
|
|
42
42
|
],
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@sinclair/typebox": "0.34.
|
|
45
|
+
"@sinclair/typebox": "0.34.52",
|
|
46
46
|
"ajv": "^8.20.0",
|
|
47
47
|
"ajv-formats": "^3.0.1",
|
|
48
48
|
"lodash-es": "^4.18.1",
|
|
49
49
|
"yaml": "^2.9.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@datasworn-community/core": "0.2.
|
|
52
|
+
"@datasworn-community/core": "0.2.10"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@datasworn-community/core": "0.2.
|
|
55
|
+
"@datasworn-community/core": "0.2.10",
|
|
56
56
|
"json-schema": "^0.4.0",
|
|
57
|
-
"json-schema-library": "^11.
|
|
58
|
-
"type-fest": "^5.
|
|
57
|
+
"json-schema-library": "^11.6.2",
|
|
58
|
+
"type-fest": "^5.8.0"
|
|
59
59
|
},
|
|
60
60
|
"bugs": {
|
|
61
61
|
"url": "https://github.com/datasworn-community/datasworn/issues"
|
|
@@ -59,12 +59,6 @@ const RulesPackageBase = Type.Object({
|
|
|
59
59
|
description: 'A dictionary object of truth categories.'
|
|
60
60
|
})
|
|
61
61
|
),
|
|
62
|
-
worlds: Type.Optional(
|
|
63
|
-
Generic.Dictionary(Type.Ref('World'), {
|
|
64
|
-
description:
|
|
65
|
-
'A dictionary object of named worlds and their associated setting truths.'
|
|
66
|
-
})
|
|
67
|
-
),
|
|
68
62
|
rarities: Type.Optional(
|
|
69
63
|
Generic.Dictionary(Type.Ref('Rarity'), {
|
|
70
64
|
description:
|
|
@@ -6,30 +6,6 @@ import { EntityPrompt } from './entities/EntityPrompt.js'
|
|
|
6
6
|
import * as Generic from './Generic.js'
|
|
7
7
|
import { EmbeddedOracleRollable } from './oracles/EmbeddedOracleRollable.js'
|
|
8
8
|
|
|
9
|
-
export const World = Type.Object(
|
|
10
|
-
{
|
|
11
|
-
name: Type.Ref(Text.Label, {
|
|
12
|
-
description: 'The player-facing name of this world.',
|
|
13
|
-
examples: ['The Ironlands', 'The Forge']
|
|
14
|
-
}),
|
|
15
|
-
description: Type.Optional(
|
|
16
|
-
Type.Ref(Text.MarkdownString, {
|
|
17
|
-
description: 'A player-facing description of this world.'
|
|
18
|
-
})
|
|
19
|
-
),
|
|
20
|
-
truths: Type.Array(Type.Ref('TruthId'), {
|
|
21
|
-
minItems: 1,
|
|
22
|
-
uniqueItems: true
|
|
23
|
-
})
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
$id: 'World',
|
|
27
|
-
description: 'A named world and its associated set of setting truths.'
|
|
28
|
-
}
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
export type World = Static<typeof World>
|
|
32
|
-
|
|
33
9
|
export type TruthOption = Static<typeof TruthOption>
|
|
34
10
|
|
|
35
11
|
export const TruthOption = Generic.IdNode(
|