@datasworn-community/build-tools 0.2.4 → 0.2.5
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/dist/content-package-builder.d.ts +13 -0
- package/dist/content-package-builder.d.ts.map +1 -1
- package/dist/content-package-builder.js +43 -4
- package/dist/content-package-builder.js.map +1 -1
- package/dist/rules-package-builder.d.ts +6 -0
- package/dist/rules-package-builder.d.ts.map +1 -1
- package/dist/rules-package-builder.js +13 -4
- package/dist/rules-package-builder.js.map +1 -1
- package/dist/validators.d.ts +2 -1
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +4 -3
- package/dist/validators.js.map +1 -1
- package/package.json +3 -3
|
@@ -34,6 +34,19 @@ export interface ContentPackageBuildConfig extends RulesPackageBuildConfig {
|
|
|
34
34
|
dependencies?: string[];
|
|
35
35
|
/** Metadata for dependencies that may be published as sibling packages. */
|
|
36
36
|
publishDependencies?: ContentPackageDependencyConfig[];
|
|
37
|
+
/**
|
|
38
|
+
* Additional packages to load for ID-reference validation without declaring
|
|
39
|
+
* them as publish-time package dependencies.
|
|
40
|
+
*/
|
|
41
|
+
validationDependencies?: ContentPackageDependencyConfig[];
|
|
42
|
+
/**
|
|
43
|
+
* Asset directories to copy into the generated publishable package, for
|
|
44
|
+
* example `source_data/starforged/icons`.
|
|
45
|
+
*/
|
|
46
|
+
assets?: string[];
|
|
47
|
+
paths?: RulesPackageBuildConfig['paths'] & {
|
|
48
|
+
assets?: string[];
|
|
49
|
+
};
|
|
37
50
|
}
|
|
38
51
|
export interface MultiPackageBuildConfig {
|
|
39
52
|
outDir?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-package-builder.d.ts","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"AAMA,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"content-package-builder.d.ts","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"AAMA,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,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB;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,KAAK,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,GAAG;QAC1C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KACjB,CAAA;CACD;AAED,MAAM,WAAW,uBAAuB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,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;AAyOD,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,uBAAuB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CA4ClC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { cp, mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { DATASWORN_SCHEMA_VERSION } from '@datasworn-community/core';
|
|
5
5
|
import { buildRulesPackage } from './rules-package-builder.js';
|
|
6
|
+
import { validateIdRefs } from './id-references.js';
|
|
6
7
|
const require = createRequire(import.meta.url);
|
|
7
8
|
function currentSchemaLine() {
|
|
8
9
|
const [major, minor] = DATASWORN_SCHEMA_VERSION.split('.');
|
|
@@ -80,14 +81,24 @@ async function loadInstalledDependency(dependency) {
|
|
|
80
81
|
const jsonPath = require.resolve(`${dependency.packageName}/json/${dependency.id}.json`, { paths: [process.cwd()] });
|
|
81
82
|
return JSON.parse(await readFile(jsonPath, 'utf8'));
|
|
82
83
|
}
|
|
84
|
+
async function validationDependencyMetadata(config, builtPackages) {
|
|
85
|
+
const publish = dependencyMetadata(config, builtPackages);
|
|
86
|
+
const byId = new Map(publish.map((dependency) => [dependency.id, dependency]));
|
|
87
|
+
for (const dependency of config.validationDependencies ?? [])
|
|
88
|
+
byId.set(dependency.id, dependency);
|
|
89
|
+
return [...byId.values()];
|
|
90
|
+
}
|
|
83
91
|
async function preloadedDependencies(config, builtPackages) {
|
|
84
92
|
const dependencies = [];
|
|
85
|
-
for (const dependency of
|
|
93
|
+
for (const dependency of await validationDependencyMetadata(config, builtPackages)) {
|
|
86
94
|
const built = builtPackages.get(dependency.id);
|
|
87
95
|
dependencies.push(built?.data ?? (await loadInstalledDependency(dependency)));
|
|
88
96
|
}
|
|
89
97
|
return dependencies;
|
|
90
98
|
}
|
|
99
|
+
function assetDirs(config) {
|
|
100
|
+
return config.assets ?? config.paths?.assets ?? [];
|
|
101
|
+
}
|
|
91
102
|
function packageJsonFor(config, dependencies) {
|
|
92
103
|
const packageDependencies = Object.fromEntries([
|
|
93
104
|
['@datasworn-community/core', dependencyRange(config.schemaLine)],
|
|
@@ -120,12 +131,28 @@ function packageJsonFor(config, dependencies) {
|
|
|
120
131
|
function stableJson(value) {
|
|
121
132
|
return `${JSON.stringify(value, undefined, 2)}\n`;
|
|
122
133
|
}
|
|
134
|
+
async function copyPackageAssets(config, packageDir, packageJson) {
|
|
135
|
+
for (const source of assetDirs(config)) {
|
|
136
|
+
const targetName = path.basename(source);
|
|
137
|
+
const target = path.join(packageDir, targetName);
|
|
138
|
+
await cp(source, target, {
|
|
139
|
+
recursive: true,
|
|
140
|
+
force: true,
|
|
141
|
+
filter: (entryPath) => path.basename(entryPath) !== '.DS_Store'
|
|
142
|
+
});
|
|
143
|
+
if (!packageJson.files.includes(targetName))
|
|
144
|
+
packageJson.files.push(targetName);
|
|
145
|
+
packageJson.exports[`./${targetName}/*`] = `./${targetName}/*`;
|
|
146
|
+
}
|
|
147
|
+
packageJson.files.sort((left, right) => left.localeCompare(right, 'en-US'));
|
|
148
|
+
}
|
|
123
149
|
async function writePublishableArtifacts(config, result, builtPackages, packageOutDir) {
|
|
124
150
|
const dependencies = dependencyMetadata(config, builtPackages);
|
|
125
151
|
const packageJson = packageJsonFor(config, dependencies);
|
|
126
152
|
const packageDir = path.join(packageOutDir, config.id);
|
|
127
153
|
const jsonDir = path.join(packageDir, 'json');
|
|
128
154
|
await mkdir(jsonDir, { recursive: true });
|
|
155
|
+
await copyPackageAssets(config, packageDir, packageJson);
|
|
129
156
|
await Promise.all([
|
|
130
157
|
writeFile(path.join(packageDir, 'package.json'), stableJson(packageJson)),
|
|
131
158
|
writeFile(path.join(packageDir, 'index.js'), `import data from './json/${config.id}.json' with { type: 'json' }\n\nexport { data }\nexport default data\n`),
|
|
@@ -140,17 +167,29 @@ export async function buildContentPackages(config) {
|
|
|
140
167
|
const ordered = topologicalPackageOrder(config.packages);
|
|
141
168
|
const builtPackages = new Map();
|
|
142
169
|
const results = [];
|
|
170
|
+
const validationTree = {};
|
|
143
171
|
for (const packageConfig of ordered) {
|
|
144
172
|
assertSchemaLine(packageConfig);
|
|
145
|
-
const dependencies = await preloadedDependencies(packageConfig, builtPackages);
|
|
146
173
|
const result = await buildRulesPackage(packageConfig, {
|
|
147
174
|
outDir,
|
|
148
|
-
|
|
175
|
+
validateIdRefs: false
|
|
149
176
|
});
|
|
177
|
+
validationTree[packageConfig.id] = result.data;
|
|
150
178
|
const publishable = await writePublishableArtifacts(packageConfig, result, builtPackages, packageOutDir);
|
|
151
179
|
builtPackages.set(packageConfig.id, publishable);
|
|
152
180
|
results.push(publishable);
|
|
153
181
|
}
|
|
182
|
+
for (const result of results) {
|
|
183
|
+
const dependencyTree = {
|
|
184
|
+
...validationTree
|
|
185
|
+
};
|
|
186
|
+
for (const dependency of await preloadedDependencies(result.config, builtPackages))
|
|
187
|
+
dependencyTree[dependency._id] = dependency;
|
|
188
|
+
const idRefs = validateIdRefs(result.data, dependencyTree);
|
|
189
|
+
const unresolved = [...idRefs.invalid, ...idRefs.unreachable];
|
|
190
|
+
if (unresolved.length > 0)
|
|
191
|
+
throw new Error(`${result.config.id}: ${unresolved.length} unresolved ID reference(s):\n ${unresolved.join('\n ')}`);
|
|
192
|
+
}
|
|
154
193
|
return {
|
|
155
194
|
results,
|
|
156
195
|
buildOrder: ordered.map((packageConfig) => packageConfig.id)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-package-builder.js","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"content-package-builder.js","sourceRoot":"","sources":["../src/content-package-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,12 @@ export interface BuildRulesPackageOptions {
|
|
|
24
24
|
* validation tree, so references from this package into them resolve.
|
|
25
25
|
*/
|
|
26
26
|
dependencies?: readonly Datasworn.RulesPackage[];
|
|
27
|
+
/**
|
|
28
|
+
* Validate ID references immediately against this package and dependencies.
|
|
29
|
+
* Multi-package content builds disable this and validate once against the
|
|
30
|
+
* complete in-repo tree, which supports optional cross-package references.
|
|
31
|
+
*/
|
|
32
|
+
validateIdRefs?: boolean;
|
|
27
33
|
}
|
|
28
34
|
export interface RulesPackageBuildResult {
|
|
29
35
|
data: Datasworn.RulesPackage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-package-builder.d.ts","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,MAAM,2BAA2B,CAAA;AAGlC,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;
|
|
1
|
+
{"version":3,"file":"rules-package-builder.d.ts","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAGN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,MAAM,2BAA2B,CAAA;AAGlC,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;AA4ED,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,GAAE,wBAA6B,GACpC,OAAO,CAAC,uBAAuB,CAAC,CAwDlC"}
|
|
@@ -8,6 +8,9 @@ const sourceExtensions = new Set(['.json', '.yaml', '.yml']);
|
|
|
8
8
|
function isObject(value) {
|
|
9
9
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
10
10
|
}
|
|
11
|
+
function cloneJsonValue(value) {
|
|
12
|
+
return JSON.parse(JSON.stringify(value));
|
|
13
|
+
}
|
|
11
14
|
function mergeInto(target, source) {
|
|
12
15
|
for (const [key, value] of Object.entries(source)) {
|
|
13
16
|
if (isObject(value)) {
|
|
@@ -45,9 +48,12 @@ async function collectSourceFiles(sourceDir) {
|
|
|
45
48
|
async function readSourceFile(filePath) {
|
|
46
49
|
const text = await readFile(filePath, 'utf8');
|
|
47
50
|
const ext = path.extname(filePath);
|
|
48
|
-
const value = ext === '.json'
|
|
51
|
+
const value = ext === '.json'
|
|
52
|
+
? JSON.parse(text)
|
|
53
|
+
: cloneJsonValue(YAML.parse(text, { maxAliasCount: -1, merge: true }));
|
|
49
54
|
if (!isObject(value))
|
|
50
55
|
throw new Error(`${filePath} did not parse to an object`);
|
|
56
|
+
value.datasworn_version = DATASWORN_SCHEMA_VERSION;
|
|
51
57
|
return value;
|
|
52
58
|
}
|
|
53
59
|
function normalizeConfig(config) {
|
|
@@ -71,9 +77,9 @@ export async function buildRulesPackage(config, options = {}) {
|
|
|
71
77
|
for (const filePath of files) {
|
|
72
78
|
const source = await readSourceFile(filePath);
|
|
73
79
|
validators.source(source);
|
|
74
|
-
IdParser.assignIdsInRulesPackage(source, index);
|
|
75
80
|
mergeInto(merged, source);
|
|
76
81
|
}
|
|
82
|
+
IdParser.assignIdsInRulesPackage(merged, index);
|
|
77
83
|
const data = merged;
|
|
78
84
|
validators.output(data);
|
|
79
85
|
// Validate ID references against a tree of this package plus any preloaded
|
|
@@ -84,9 +90,12 @@ export async function buildRulesPackage(config, options = {}) {
|
|
|
84
90
|
};
|
|
85
91
|
for (const dependency of options.dependencies ?? [])
|
|
86
92
|
tree[dependency._id] = dependency;
|
|
87
|
-
const
|
|
93
|
+
const shouldValidateIdRefs = options.validateIdRefs ?? true;
|
|
94
|
+
const idRefs = shouldValidateIdRefs
|
|
95
|
+
? validateIdRefs(data, tree)
|
|
96
|
+
: { valid: new Set(), invalid: new Set(), unreachable: new Set() };
|
|
88
97
|
const unresolved = [...idRefs.invalid, ...idRefs.unreachable];
|
|
89
|
-
if (unresolved.length > 0)
|
|
98
|
+
if (shouldValidateIdRefs && unresolved.length > 0)
|
|
90
99
|
throw new Error(`${normalizedConfig.id}: ${unresolved.length} unresolved ID reference(s):\n ${unresolved.join('\n ')}`);
|
|
91
100
|
const packageOutDir = path.join(outDir, normalizedConfig.id);
|
|
92
101
|
const outFile = path.join(packageOutDir, `${normalizedConfig.id}.json`);
|
|
@@ -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,EACxB,QAAQ,EAGR,MAAM,2BAA2B,CAAA;AAClC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,EACN,cAAc,EAEd,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACN,yBAAyB,EAEzB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"rules-package-builder.js","sourceRoot":"","sources":["../src/rules-package-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/validators.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { Options } from 'ajv/dist/core.js';
|
|
1
2
|
export type SchemaValidator<TTarget> = (data: unknown) => data is TTarget;
|
|
2
3
|
export interface DataswornValidators<TOutput, TSource> {
|
|
3
4
|
output: SchemaValidator<TOutput>;
|
|
4
5
|
source: SchemaValidator<TSource>;
|
|
5
6
|
}
|
|
6
|
-
export declare function createDataswornValidator<TTarget>(schema: Record<string, unknown>, name: string): SchemaValidator<TTarget>;
|
|
7
|
+
export declare function createDataswornValidator<TTarget>(schema: Record<string, unknown>, name: string, options?: Options): SchemaValidator<TTarget>;
|
|
7
8
|
export declare function createDataswornValidators<TOutput, TSource>(): Promise<DataswornValidators<TOutput, TSource>>;
|
|
8
9
|
//# sourceMappingURL=validators.d.ts.map
|
package/dist/validators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAK/C,MAAM,MAAM,eAAe,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,CAAA;AAEzE,MAAM,WAAW,mBAAmB,CAAC,OAAO,EAAE,OAAO;IACpD,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;IAChC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;CAChC;AAeD,wBAAgB,wBAAwB,CAAC,OAAO,EAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,OAAY,GACnB,eAAe,CAAC,OAAO,CAAC,CAkB1B;AAED,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAC3E,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CACrC,CAWA"}
|
package/dist/validators.js
CHANGED
|
@@ -9,11 +9,12 @@ function formatErrors(validate) {
|
|
|
9
9
|
schemaPath
|
|
10
10
|
})) ?? [], undefined, 2);
|
|
11
11
|
}
|
|
12
|
-
export function createDataswornValidator(schema, name) {
|
|
12
|
+
export function createDataswornValidator(schema, name, options = {}) {
|
|
13
13
|
const ajv = new Ajv({
|
|
14
14
|
allErrors: true,
|
|
15
15
|
allowUnionTypes: true,
|
|
16
|
-
strict: false
|
|
16
|
+
strict: false,
|
|
17
|
+
...options
|
|
17
18
|
});
|
|
18
19
|
const addFormats = addFormatsModule;
|
|
19
20
|
addFormats(ajv);
|
|
@@ -29,7 +30,7 @@ export async function createDataswornValidators() {
|
|
|
29
30
|
const schemas = await loadCoreSchemas();
|
|
30
31
|
return {
|
|
31
32
|
output: createDataswornValidator(schemas.datasworn, 'Datasworn'),
|
|
32
|
-
source: createDataswornValidator(schemas.source, 'Datasworn source')
|
|
33
|
+
source: createDataswornValidator(schemas.source, 'Datasworn source', { useDefaults: 'empty' })
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
//# sourceMappingURL=validators.js.map
|
package/dist/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAyB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAyB,MAAM,iBAAiB,CAAA;AAE5D,OAAO,gBAAgB,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAS7C,SAAS,YAAY,CAAC,QAA0B;IAC/C,OAAO,IAAI,CAAC,SAAS,CACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,YAAY;QACZ,OAAO;QACP,MAAM;QACN,UAAU;KACV,CAAC,CAAC,IAAI,EAAE,EACT,SAAS,EACT,CAAC,CACD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,MAA+B,EAC/B,IAAY,EACZ,UAAmB,EAAE;IAErB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QACnB,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI;QACrB,MAAM,EAAE,KAAK;QACb,GAAG,OAAO;KACV,CAAC,CAAA;IACF,MAAM,UAAU,GAAG,gBAAoD,CAAA;IACvE,UAAU,CAAC,GAAG,CAAC,CAAA;IACf,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAE/B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEpC,OAAO,CAAC,IAAa,EAAmB,EAAE;QACzC,IAAI,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAE/B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/E,CAAC,CAAA;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAG9C,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAA;IAEvC,OAAO;QACN,MAAM,EAAE,wBAAwB,CAAU,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;QACzE,MAAM,EAAE,wBAAwB,CAC/B,OAAO,CAAC,MAAM,EACd,kBAAkB,EAClB,EAAE,WAAW,EAAE,OAAO,EAAE,CACxB;KACD,CAAA;AACF,CAAC"}
|
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.5",
|
|
4
4
|
"description": "Build and migration tools for Datasworn source packages.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -49,10 +49,10 @@
|
|
|
49
49
|
"yaml": "^2.9.0"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@datasworn-community/core": "0.2.
|
|
52
|
+
"@datasworn-community/core": "0.2.5"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@datasworn-community/core": "0.2.
|
|
55
|
+
"@datasworn-community/core": "0.2.5",
|
|
56
56
|
"json-schema": "^0.4.0",
|
|
57
57
|
"json-schema-library": "^11.4.1",
|
|
58
58
|
"type-fest": "^5.6.0"
|