@cratis/scene.engine 4.24.0 → 4.25.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/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/templateApplicability.js.map +1 -1
- package/dist/cjs/templates/TemplateReferenceResolution.js +15 -0
- package/dist/cjs/templates/TemplateReferenceResolution.js.map +1 -0
- package/dist/cjs/templates/applicableTemplates.js +199 -0
- package/dist/cjs/templates/applicableTemplates.js.map +1 -0
- package/dist/cjs/templates/describeTemplateCatalog.js +11 -6
- package/dist/cjs/templates/describeTemplateCatalog.js.map +1 -1
- package/dist/cjs/templates/resolveTemplateReference.js +89 -0
- package/dist/cjs/templates/resolveTemplateReference.js.map +1 -0
- package/dist/cjs/templates/validateTemplateMetadata.js +9 -0
- package/dist/cjs/templates/validateTemplateMetadata.js.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/templateApplicability.d.ts +1 -2
- package/dist/esm/templateApplicability.d.ts.map +1 -1
- package/dist/esm/templateApplicability.js.map +1 -1
- package/dist/esm/templates/ApplicableTemplateSet.d.ts +27 -0
- package/dist/esm/templates/ApplicableTemplateSet.d.ts.map +1 -0
- package/dist/esm/templates/ApplicableTemplateSet.js +2 -0
- package/dist/esm/templates/ApplicableTemplateSet.js.map +1 -0
- package/dist/esm/templates/TemplateCatalogEntry.d.ts +3 -1
- package/dist/esm/templates/TemplateCatalogEntry.d.ts.map +1 -1
- package/dist/esm/templates/TemplateLibrary.d.ts +6 -0
- package/dist/esm/templates/TemplateLibrary.d.ts.map +1 -0
- package/dist/esm/templates/TemplateLibrary.js +2 -0
- package/dist/esm/templates/TemplateLibrary.js.map +1 -0
- package/dist/esm/templates/TemplateReferenceResolution.d.ts +16 -0
- package/dist/esm/templates/TemplateReferenceResolution.d.ts.map +1 -0
- package/dist/esm/templates/TemplateReferenceResolution.js +13 -0
- package/dist/esm/templates/TemplateReferenceResolution.js.map +1 -0
- package/dist/esm/templates/TemplateTarget.d.ts +9 -0
- package/dist/esm/templates/TemplateTarget.d.ts.map +1 -0
- package/dist/esm/templates/TemplateTarget.js +2 -0
- package/dist/esm/templates/TemplateTarget.js.map +1 -0
- package/dist/esm/templates/applicableTemplates.d.ts +9 -0
- package/dist/esm/templates/applicableTemplates.d.ts.map +1 -0
- package/dist/esm/templates/applicableTemplates.js +194 -0
- package/dist/esm/templates/applicableTemplates.js.map +1 -0
- package/dist/esm/templates/describeTemplateCatalog.d.ts.map +1 -1
- package/dist/esm/templates/describeTemplateCatalog.js +12 -7
- package/dist/esm/templates/describeTemplateCatalog.js.map +1 -1
- package/dist/esm/templates/index.d.ts +6 -0
- package/dist/esm/templates/index.d.ts.map +1 -1
- package/dist/esm/templates/index.js +6 -0
- package/dist/esm/templates/index.js.map +1 -1
- package/dist/esm/templates/resolveTemplateReference.d.ts +5 -0
- package/dist/esm/templates/resolveTemplateReference.d.ts.map +1 -0
- package/dist/esm/templates/resolveTemplateReference.js +87 -0
- package/dist/esm/templates/resolveTemplateReference.js.map +1 -0
- package/dist/esm/templates/validateTemplateMetadata.d.ts +2 -0
- package/dist/esm/templates/validateTemplateMetadata.d.ts.map +1 -1
- package/dist/esm/templates/validateTemplateMetadata.js +8 -1
- package/dist/esm/templates/validateTemplateMetadata.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/templateApplicability.ts +2 -1
- package/templates/ApplicableTemplateSet.ts +54 -0
- package/templates/TemplateCatalogEntry.ts +5 -1
- package/templates/TemplateLibrary.ts +16 -0
- package/templates/TemplateReferenceResolution.ts +35 -0
- package/templates/TemplateTarget.ts +23 -0
- package/templates/applicableTemplates.ts +148 -0
- package/templates/describeTemplateCatalog.ts +11 -7
- package/templates/index.ts +6 -0
- package/templates/resolveTemplateReference.ts +79 -0
- package/templates/validateTemplateMetadata.ts +11 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../templates/index.ts"],"names":[],"mappings":"AAGA,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../templates/index.ts"],"names":[],"mappings":"AAGA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TemplateReference } from '@cratis/scene.model';
|
|
2
|
+
import { TemplateLibrary } from './TemplateLibrary';
|
|
3
|
+
import { TemplateReferenceResolution } from './TemplateReferenceResolution';
|
|
4
|
+
export declare function resolveTemplateReference(reference: TemplateReference, library: TemplateLibrary): TemplateReferenceResolution;
|
|
5
|
+
//# sourceMappingURL=resolveTemplateReference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTemplateReference.d.ts","sourceRoot":"","sources":["../../../templates/resolveTemplateReference.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAC;AAGjF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAA2B,MAAM,+BAA+B,CAAC;AAQrG,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,GAAG,2BAA2B,CAsC5H"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { TemplateReferenceSource } from '@cratis/scene.model';
|
|
2
|
+
import { isValidVersionRange, isVersionSatisfiedBy } from '../packageVersionRange.js';
|
|
3
|
+
import { TemplateCatalogKind } from './TemplateCatalogKind.js';
|
|
4
|
+
import { TemplateReferenceStatus } from './TemplateReferenceResolution.js';
|
|
5
|
+
|
|
6
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
7
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
8
|
+
/**
|
|
9
|
+
* Resolves a template reference against the templates that exist, including the blueprint version pin. The C#
|
|
10
|
+
* engine (`TemplateReferenceResolver.Resolve`) reports the same outcomes and messages; both are asserted against
|
|
11
|
+
* `template-applicability-fixtures.json`.
|
|
12
|
+
*/ function resolveTemplateReference(reference, library) {
|
|
13
|
+
if (!reference.id?.trim()) {
|
|
14
|
+
return {
|
|
15
|
+
status: TemplateReferenceStatus.Malformed,
|
|
16
|
+
message: 'A template reference must name a template'
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (reference.source === TemplateReferenceSource.Own) {
|
|
20
|
+
if (reference.blueprint !== undefined || reference.version !== undefined) {
|
|
21
|
+
return {
|
|
22
|
+
status: TemplateReferenceStatus.Malformed,
|
|
23
|
+
message: `Own template reference '${reference.id}' must not name a blueprint or a version`
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return library.own ? find(reference.id, library.own, reference) : unknown(reference, undefined);
|
|
27
|
+
}
|
|
28
|
+
if (!reference.blueprint?.trim()) {
|
|
29
|
+
return {
|
|
30
|
+
status: TemplateReferenceStatus.Malformed,
|
|
31
|
+
message: `Blueprint template reference '${reference.id}' must name its blueprint`
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const blueprint = library.blueprints.find((source)=>source.manifest.name === reference.blueprint);
|
|
35
|
+
if (!blueprint) {
|
|
36
|
+
return {
|
|
37
|
+
status: TemplateReferenceStatus.UnknownBlueprint,
|
|
38
|
+
message: `Blueprint '${reference.blueprint}' referenced by template '${reference.id}' is not available`
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const installed = blueprint.manifest.version;
|
|
42
|
+
if (reference.version !== undefined) {
|
|
43
|
+
if (!isValidVersionRange(reference.version)) {
|
|
44
|
+
return {
|
|
45
|
+
status: TemplateReferenceStatus.Malformed,
|
|
46
|
+
package: blueprint.manifest.name,
|
|
47
|
+
packageVersion: installed,
|
|
48
|
+
message: `Template reference '${reference.id}' declares an invalid version range '${reference.version}'`
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (!isVersionSatisfiedBy(installed, reference.version)) {
|
|
52
|
+
return {
|
|
53
|
+
status: TemplateReferenceStatus.VersionNotSatisfied,
|
|
54
|
+
package: blueprint.manifest.name,
|
|
55
|
+
packageVersion: installed,
|
|
56
|
+
message: `Template '${reference.id}' was chosen from blueprint '${blueprint.manifest.name}' ${reference.version} but version ${installed} is installed`
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return find(reference.id, blueprint, reference);
|
|
61
|
+
}
|
|
62
|
+
function find(name, source, reference) {
|
|
63
|
+
const kind = kindOf(name, source);
|
|
64
|
+
return kind === undefined ? unknown(reference, source) : {
|
|
65
|
+
status: TemplateReferenceStatus.Resolved,
|
|
66
|
+
package: source.manifest.name,
|
|
67
|
+
packageVersion: source.manifest.version,
|
|
68
|
+
kind
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function unknown(reference, source) {
|
|
72
|
+
return {
|
|
73
|
+
status: TemplateReferenceStatus.UnknownTemplate,
|
|
74
|
+
package: source?.manifest.name,
|
|
75
|
+
packageVersion: source?.manifest.version,
|
|
76
|
+
message: reference.source === TemplateReferenceSource.Own ? `Own template '${reference.id}' does not exist` : `Blueprint '${reference.blueprint}' has no template '${reference.id}'`
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function kindOf(name, source) {
|
|
80
|
+
if (source.screenTemplates?.some((template)=>template.name === name)) return TemplateCatalogKind.ScreenTemplate;
|
|
81
|
+
if (source.dialogTemplates?.some((template)=>template.name === name)) return TemplateCatalogKind.DialogTemplate;
|
|
82
|
+
if (source.layouts?.some((layout)=>layout.name === name)) return TemplateCatalogKind.Layout;
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export { resolveTemplateReference };
|
|
87
|
+
//# sourceMappingURL=resolveTemplateReference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveTemplateReference.js","sources":["../../../templates/resolveTemplateReference.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { TemplateReference, TemplateReferenceSource } from '@cratis/scene.model';\nimport { isValidVersionRange, isVersionSatisfiedBy } from '../packageVersionRange';\nimport { TemplateCatalogKind } from './TemplateCatalogKind';\nimport { TemplateLibrary } from './TemplateLibrary';\nimport { TemplateReferenceResolution, TemplateReferenceStatus } from './TemplateReferenceResolution';\nimport { TemplateSource } from './TemplateSource';\n\n/**\n * Resolves a template reference against the templates that exist, including the blueprint version pin. The C#\n * engine (`TemplateReferenceResolver.Resolve`) reports the same outcomes and messages; both are asserted against\n * `template-applicability-fixtures.json`.\n */\nexport function resolveTemplateReference(reference: TemplateReference, library: TemplateLibrary): TemplateReferenceResolution {\n if (!reference.id?.trim()) {\n return { status: TemplateReferenceStatus.Malformed, message: 'A template reference must name a template' };\n }\n\n if (reference.source === TemplateReferenceSource.Own) {\n if (reference.blueprint !== undefined || reference.version !== undefined) {\n return { status: TemplateReferenceStatus.Malformed, message: `Own template reference '${reference.id}' must not name a blueprint or a version` };\n }\n return library.own ? find(reference.id, library.own, reference) : unknown(reference, undefined);\n }\n\n if (!reference.blueprint?.trim()) {\n return { status: TemplateReferenceStatus.Malformed, message: `Blueprint template reference '${reference.id}' must name its blueprint` };\n }\n\n const blueprint = library.blueprints.find(source => source.manifest.name === reference.blueprint);\n if (!blueprint) {\n return { status: TemplateReferenceStatus.UnknownBlueprint, message: `Blueprint '${reference.blueprint}' referenced by template '${reference.id}' is not available` };\n }\n\n const installed = blueprint.manifest.version;\n if (reference.version !== undefined) {\n if (!isValidVersionRange(reference.version)) {\n return {\n status: TemplateReferenceStatus.Malformed, package: blueprint.manifest.name, packageVersion: installed,\n message: `Template reference '${reference.id}' declares an invalid version range '${reference.version}'`,\n };\n }\n if (!isVersionSatisfiedBy(installed, reference.version)) {\n return {\n status: TemplateReferenceStatus.VersionNotSatisfied, package: blueprint.manifest.name, packageVersion: installed,\n message: `Template '${reference.id}' was chosen from blueprint '${blueprint.manifest.name}' ${reference.version} but version ${installed} is installed`,\n };\n }\n }\n\n return find(reference.id, blueprint, reference);\n}\n\nfunction find(name: string, source: TemplateSource, reference: TemplateReference): TemplateReferenceResolution {\n const kind = kindOf(name, source);\n return kind === undefined\n ? unknown(reference, source)\n : { status: TemplateReferenceStatus.Resolved, package: source.manifest.name, packageVersion: source.manifest.version, kind };\n}\n\nfunction unknown(reference: TemplateReference, source: TemplateSource | undefined): TemplateReferenceResolution {\n return {\n status: TemplateReferenceStatus.UnknownTemplate,\n package: source?.manifest.name,\n packageVersion: source?.manifest.version,\n message: reference.source === TemplateReferenceSource.Own\n ? `Own template '${reference.id}' does not exist`\n : `Blueprint '${reference.blueprint}' has no template '${reference.id}'`,\n };\n}\n\nfunction kindOf(name: string, source: TemplateSource): TemplateCatalogKind | undefined {\n if (source.screenTemplates?.some(template => template.name === name)) return TemplateCatalogKind.ScreenTemplate;\n if (source.dialogTemplates?.some(template => template.name === name)) return TemplateCatalogKind.DialogTemplate;\n if (source.layouts?.some(layout => layout.name === name)) return TemplateCatalogKind.Layout;\n return undefined;\n}\n"],"names":["resolveTemplateReference","reference","library","id","trim","status","TemplateReferenceStatus","Malformed","message","source","TemplateReferenceSource","Own","blueprint","undefined","version","own","find","unknown","blueprints","manifest","name","UnknownBlueprint","installed","isValidVersionRange","package","packageVersion","isVersionSatisfiedBy","VersionNotSatisfied","kind","kindOf","Resolved","UnknownTemplate","screenTemplates","some","template","TemplateCatalogKind","ScreenTemplate","dialogTemplates","DialogTemplate","layouts","layout","Layout"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { TemplateMetadata } from '@cratis/scene.model';
|
|
2
2
|
export declare function validateTemplateMetadata(name: string, metadata: TemplateMetadata | undefined): string[];
|
|
3
|
+
export declare const templateCategoryMissingCode = "templateCategoryMissing";
|
|
4
|
+
export declare function validateTemplateCategory(name: string, metadata: TemplateMetadata | undefined): string | undefined;
|
|
3
5
|
//# sourceMappingURL=validateTemplateMetadata.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTemplateMetadata.d.ts","sourceRoot":"","sources":["../../../templates/validateTemplateMetadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,EAAE,CA0CvG"}
|
|
1
|
+
{"version":3,"file":"validateTemplateMetadata.d.ts","sourceRoot":"","sources":["../../../templates/validateTemplateMetadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,EAAE,CA0CvG;AAMD,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAGrE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEjH"}
|
|
@@ -43,6 +43,13 @@ import { isAbsoluteHttpsUrl, isSpdxExpression } from './templateMetadataRules.js
|
|
|
43
43
|
}
|
|
44
44
|
return problems;
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* The diagnostic code reported for a template without a category. Category is required for blueprint templates
|
|
48
|
+
* (an error) and recommended for own templates (a warning).
|
|
49
|
+
*/ const templateCategoryMissingCode = 'templateCategoryMissing';
|
|
50
|
+
/** Checks that a template declares a browse category; returns the problem, or undefined when it does. */ function validateTemplateCategory(name, metadata) {
|
|
51
|
+
return metadata?.category?.trim() ? undefined : `Template '${name}' declares no category`;
|
|
52
|
+
}
|
|
46
53
|
|
|
47
|
-
export { validateTemplateMetadata };
|
|
54
|
+
export { templateCategoryMissingCode, validateTemplateCategory, validateTemplateMetadata };
|
|
48
55
|
//# sourceMappingURL=validateTemplateMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTemplateMetadata.js","sources":["../../../templates/validateTemplateMetadata.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { TemplateMetadata } from '@cratis/scene.model';\nimport { isValidVersionRange } from '../packageVersionRange';\nimport { isAbsoluteHttpsUrl, isSpdxExpression } from './templateMetadataRules';\n\n/**\n * Checks that a template carries the compatibility, attribution and license metadata every shipped template\n * needs, and that each value is well formed. The C# engine (`TemplateMetadataValidation.Validate`) reports the\n * same problems in the same order; both are asserted against `template-metadata-fixtures.json`.\n */\nexport function validateTemplateMetadata(name: string, metadata: TemplateMetadata | undefined): string[] {\n const problems: string[] = [];\n const compatibility = metadata?.compatibility;\n\n if (!compatibility) {\n problems.push(`Template '${name}' declares no compatibility`);\n } else {\n if (!compatibility.scene?.trim()) {\n problems.push(`Template '${name}' declares no Scene version range`);\n } else if (!isValidVersionRange(compatibility.scene)) {\n problems.push(`Template '${name}' declares an invalid Scene version range '${compatibility.scene}'`);\n }\n\n for (const requirement of compatibility.packages ?? []) {\n if (!requirement.name?.trim()) {\n problems.push(`Template '${name}' declares a package requirement without a name`);\n } else if (!isValidVersionRange(requirement.versionRange)) {\n problems.push(`Template '${name}' declares an invalid version range '${requirement.versionRange}' for package '${requirement.name}'`);\n }\n }\n }\n\n const attribution = metadata?.attribution;\n if (!attribution?.author?.trim()) {\n problems.push(`Template '${name}' declares no author`);\n }\n\n if (attribution?.url !== undefined && !isAbsoluteHttpsUrl(attribution.url)) {\n problems.push(`Template '${name}' declares an attribution URL '${attribution.url}' that is not an absolute https URL`);\n }\n\n if (!metadata?.license?.trim()) {\n problems.push(`Template '${name}' declares no license`);\n } else if (!isSpdxExpression(metadata.license)) {\n problems.push(`Template '${name}' declares '${metadata.license}', which is not an SPDX license expression`);\n }\n\n if (metadata?.licenseUrl !== undefined && !isAbsoluteHttpsUrl(metadata.licenseUrl)) {\n problems.push(`Template '${name}' declares a license URL '${metadata.licenseUrl}' that is not an absolute https URL`);\n }\n\n return problems;\n}\n"],"names":["validateTemplateMetadata","name","metadata","problems","compatibility","push","scene","trim","isValidVersionRange","requirement","packages","versionRange","attribution","author","url","undefined","isAbsoluteHttpsUrl","license","isSpdxExpression","licenseUrl"],"mappings":";;;AAAA;AACA;AAMA;;;;AAIC,IACM,SAASA,wBAAAA,CAAyBC,IAAY,EAAEC,QAAsC,EAAA;AACzF,IAAA,MAAMC,WAAqB,EAAE;AAC7B,IAAA,MAAMC,gBAAgBF,QAAAA,EAAUE,aAAAA;AAEhC,IAAA,IAAI,CAACA,aAAAA,EAAe;AAChBD,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,2BAA2B,CAAC,CAAA;IAChE,CAAA,MAAO;AACH,QAAA,IAAI,CAACG,aAAAA,CAAcE,KAAK,EAAEC,IAAAA,EAAAA,EAAQ;AAC9BJ,YAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,iCAAiC,CAAC,CAAA;AACtE,QAAA,CAAA,MAAO,IAAI,CAACO,mBAAAA,CAAoBJ,aAAAA,CAAcE,KAAK,CAAA,EAAG;AAClDH,YAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,2CAA2C,EAAEG,aAAAA,CAAcE,KAAK,CAAC,CAAC,CAAC,CAAA;AACvG,QAAA;AAEA,QAAA,KAAK,MAAMG,WAAAA,IAAeL,aAAAA,CAAcM,QAAQ,IAAI,EAAE,CAAE;AACpD,YAAA,IAAI,CAACD,WAAAA,CAAYR,IAAI,EAAEM,IAAAA,EAAAA,EAAQ;AAC3BJ,gBAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,+CAA+C,CAAC,CAAA;AACpF,YAAA,CAAA,MAAO,IAAI,CAACO,mBAAAA,CAAoBC,WAAAA,CAAYE,YAAY,CAAA,EAAG;AACvDR,gBAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,KAAK,qCAAqC,EAAEQ,WAAAA,CAAYE,YAAY,CAAC,eAAe,EAAEF,YAAYR,IAAI,CAAC,CAAC,CAAC,CAAA;AACxI,YAAA;AACJ,QAAA;AACJ,IAAA;AAEA,IAAA,MAAMW,cAAcV,QAAAA,EAAUU,WAAAA;IAC9B,IAAI,CAACA,WAAAA,EAAaC,MAAAA,EAAQN,IAAAA,EAAAA,EAAQ;AAC9BJ,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,oBAAoB,CAAC,CAAA;AACzD,IAAA;AAEA,IAAA,IAAIW,aAAaE,GAAAA,KAAQC,SAAAA,IAAa,CAACC,kBAAAA,CAAmBJ,WAAAA,CAAYE,GAAG,CAAA,EAAG;AACxEX,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,+BAA+B,EAAEW,WAAAA,CAAYE,GAAG,CAAC,mCAAmC,CAAC,CAAA;AACzH,IAAA;IAEA,IAAI,CAACZ,QAAAA,EAAUe,OAAAA,EAASV,IAAAA,EAAAA,EAAQ;AAC5BJ,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,qBAAqB,CAAC,CAAA;AAC1D,IAAA,CAAA,MAAO,IAAI,CAACiB,gBAAAA,CAAiBhB,QAAAA,CAASe,OAAO,CAAA,EAAG;AAC5Cd,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,YAAY,EAAEC,QAAAA,CAASe,OAAO,CAAC,0CAA0C,CAAC,CAAA;AAC9G,IAAA;AAEA,IAAA,IAAIf,UAAUiB,UAAAA,KAAeJ,SAAAA,IAAa,CAACC,kBAAAA,CAAmBd,QAAAA,CAASiB,UAAU,CAAA,EAAG;AAChFhB,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,0BAA0B,EAAEC,QAAAA,CAASiB,UAAU,CAAC,mCAAmC,CAAC,CAAA;AACxH,IAAA;IAEA,OAAOhB,QAAAA;AACX;;"}
|
|
1
|
+
{"version":3,"file":"validateTemplateMetadata.js","sources":["../../../templates/validateTemplateMetadata.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { TemplateMetadata } from '@cratis/scene.model';\nimport { isValidVersionRange } from '../packageVersionRange';\nimport { isAbsoluteHttpsUrl, isSpdxExpression } from './templateMetadataRules';\n\n/**\n * Checks that a template carries the compatibility, attribution and license metadata every shipped template\n * needs, and that each value is well formed. The C# engine (`TemplateMetadataValidation.Validate`) reports the\n * same problems in the same order; both are asserted against `template-metadata-fixtures.json`.\n */\nexport function validateTemplateMetadata(name: string, metadata: TemplateMetadata | undefined): string[] {\n const problems: string[] = [];\n const compatibility = metadata?.compatibility;\n\n if (!compatibility) {\n problems.push(`Template '${name}' declares no compatibility`);\n } else {\n if (!compatibility.scene?.trim()) {\n problems.push(`Template '${name}' declares no Scene version range`);\n } else if (!isValidVersionRange(compatibility.scene)) {\n problems.push(`Template '${name}' declares an invalid Scene version range '${compatibility.scene}'`);\n }\n\n for (const requirement of compatibility.packages ?? []) {\n if (!requirement.name?.trim()) {\n problems.push(`Template '${name}' declares a package requirement without a name`);\n } else if (!isValidVersionRange(requirement.versionRange)) {\n problems.push(`Template '${name}' declares an invalid version range '${requirement.versionRange}' for package '${requirement.name}'`);\n }\n }\n }\n\n const attribution = metadata?.attribution;\n if (!attribution?.author?.trim()) {\n problems.push(`Template '${name}' declares no author`);\n }\n\n if (attribution?.url !== undefined && !isAbsoluteHttpsUrl(attribution.url)) {\n problems.push(`Template '${name}' declares an attribution URL '${attribution.url}' that is not an absolute https URL`);\n }\n\n if (!metadata?.license?.trim()) {\n problems.push(`Template '${name}' declares no license`);\n } else if (!isSpdxExpression(metadata.license)) {\n problems.push(`Template '${name}' declares '${metadata.license}', which is not an SPDX license expression`);\n }\n\n if (metadata?.licenseUrl !== undefined && !isAbsoluteHttpsUrl(metadata.licenseUrl)) {\n problems.push(`Template '${name}' declares a license URL '${metadata.licenseUrl}' that is not an absolute https URL`);\n }\n\n return problems;\n}\n\n/**\n * The diagnostic code reported for a template without a category. Category is required for blueprint templates\n * (an error) and recommended for own templates (a warning).\n */\nexport const templateCategoryMissingCode = 'templateCategoryMissing';\n\n/** Checks that a template declares a browse category; returns the problem, or undefined when it does. */\nexport function validateTemplateCategory(name: string, metadata: TemplateMetadata | undefined): string | undefined {\n return metadata?.category?.trim() ? undefined : `Template '${name}' declares no category`;\n}\n"],"names":["validateTemplateMetadata","name","metadata","problems","compatibility","push","scene","trim","isValidVersionRange","requirement","packages","versionRange","attribution","author","url","undefined","isAbsoluteHttpsUrl","license","isSpdxExpression","licenseUrl","templateCategoryMissingCode","validateTemplateCategory","category"],"mappings":";;;AAAA;AACA;AAMA;;;;AAIC,IACM,SAASA,wBAAAA,CAAyBC,IAAY,EAAEC,QAAsC,EAAA;AACzF,IAAA,MAAMC,WAAqB,EAAE;AAC7B,IAAA,MAAMC,gBAAgBF,QAAAA,EAAUE,aAAAA;AAEhC,IAAA,IAAI,CAACA,aAAAA,EAAe;AAChBD,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,2BAA2B,CAAC,CAAA;IAChE,CAAA,MAAO;AACH,QAAA,IAAI,CAACG,aAAAA,CAAcE,KAAK,EAAEC,IAAAA,EAAAA,EAAQ;AAC9BJ,YAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,iCAAiC,CAAC,CAAA;AACtE,QAAA,CAAA,MAAO,IAAI,CAACO,mBAAAA,CAAoBJ,aAAAA,CAAcE,KAAK,CAAA,EAAG;AAClDH,YAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,2CAA2C,EAAEG,aAAAA,CAAcE,KAAK,CAAC,CAAC,CAAC,CAAA;AACvG,QAAA;AAEA,QAAA,KAAK,MAAMG,WAAAA,IAAeL,aAAAA,CAAcM,QAAQ,IAAI,EAAE,CAAE;AACpD,YAAA,IAAI,CAACD,WAAAA,CAAYR,IAAI,EAAEM,IAAAA,EAAAA,EAAQ;AAC3BJ,gBAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,+CAA+C,CAAC,CAAA;AACpF,YAAA,CAAA,MAAO,IAAI,CAACO,mBAAAA,CAAoBC,WAAAA,CAAYE,YAAY,CAAA,EAAG;AACvDR,gBAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,KAAK,qCAAqC,EAAEQ,WAAAA,CAAYE,YAAY,CAAC,eAAe,EAAEF,YAAYR,IAAI,CAAC,CAAC,CAAC,CAAA;AACxI,YAAA;AACJ,QAAA;AACJ,IAAA;AAEA,IAAA,MAAMW,cAAcV,QAAAA,EAAUU,WAAAA;IAC9B,IAAI,CAACA,WAAAA,EAAaC,MAAAA,EAAQN,IAAAA,EAAAA,EAAQ;AAC9BJ,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,oBAAoB,CAAC,CAAA;AACzD,IAAA;AAEA,IAAA,IAAIW,aAAaE,GAAAA,KAAQC,SAAAA,IAAa,CAACC,kBAAAA,CAAmBJ,WAAAA,CAAYE,GAAG,CAAA,EAAG;AACxEX,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,+BAA+B,EAAEW,WAAAA,CAAYE,GAAG,CAAC,mCAAmC,CAAC,CAAA;AACzH,IAAA;IAEA,IAAI,CAACZ,QAAAA,EAAUe,OAAAA,EAASV,IAAAA,EAAAA,EAAQ;AAC5BJ,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,qBAAqB,CAAC,CAAA;AAC1D,IAAA,CAAA,MAAO,IAAI,CAACiB,gBAAAA,CAAiBhB,QAAAA,CAASe,OAAO,CAAA,EAAG;AAC5Cd,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,YAAY,EAAEC,QAAAA,CAASe,OAAO,CAAC,0CAA0C,CAAC,CAAA;AAC9G,IAAA;AAEA,IAAA,IAAIf,UAAUiB,UAAAA,KAAeJ,SAAAA,IAAa,CAACC,kBAAAA,CAAmBd,QAAAA,CAASiB,UAAU,CAAA,EAAG;AAChFhB,QAAAA,QAAAA,CAASE,IAAI,CAAC,CAAC,UAAU,EAAEJ,IAAAA,CAAK,0BAA0B,EAAEC,QAAAA,CAASiB,UAAU,CAAC,mCAAmC,CAAC,CAAA;AACxH,IAAA;IAEA,OAAOhB,QAAAA;AACX;AAEA;;;IAIO,MAAMiB,2BAAAA,GAA8B;AAE3C,0GACO,SAASC,wBAAAA,CAAyBpB,IAAY,EAAEC,QAAsC,EAAA;IACzF,OAAOA,QAAAA,EAAUoB,UAAUf,IAAAA,EAAAA,GAASQ,SAAAA,GAAY,CAAC,UAAU,EAAEd,IAAAA,CAAK,sBAAsB,CAAC;AAC7F;;"}
|