@frictionless-ts/metadata 1.0.1
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 +3 -0
- package/build/assets/dialect-1.0.json +58 -0
- package/build/assets/dialect-2.0.json +98 -0
- package/build/assets/package-1.0.json +1517 -0
- package/build/assets/package-2.0.json +2168 -0
- package/build/assets/resource-1.0.json +1353 -0
- package/build/assets/resource-2.0.json +1987 -0
- package/build/assets/schema-1.0.json +1126 -0
- package/build/assets/schema-2.0.json +1715 -0
- package/build/descriptor/Descriptor.d.ts +2 -0
- package/build/descriptor/Descriptor.js +4 -0
- package/build/descriptor/index.d.ts +6 -0
- package/build/descriptor/index.js +6 -0
- package/build/descriptor/load.d.ts +8 -0
- package/build/descriptor/load.js +36 -0
- package/build/descriptor/load.spec.d.ts +1 -0
- package/build/descriptor/load.spec.js +44 -0
- package/build/descriptor/process/parse.d.ts +2 -0
- package/build/descriptor/process/parse.js +8 -0
- package/build/descriptor/process/stringify.d.ts +2 -0
- package/build/descriptor/process/stringify.js +4 -0
- package/build/descriptor/save.d.ts +9 -0
- package/build/descriptor/save.js +19 -0
- package/build/descriptor/save.spec.d.ts +1 -0
- package/build/descriptor/save.spec.js +99 -0
- package/build/dialect/Dialect.d.ts +89 -0
- package/build/dialect/Dialect.js +2 -0
- package/build/dialect/assert.d.ts +6 -0
- package/build/dialect/assert.js +12 -0
- package/build/dialect/assert.spec.d.ts +1 -0
- package/build/dialect/assert.spec.js +22 -0
- package/build/dialect/convert/fromDescriptor.d.ts +2 -0
- package/build/dialect/convert/fromDescriptor.js +20 -0
- package/build/dialect/convert/toDescriptor.d.ts +3 -0
- package/build/dialect/convert/toDescriptor.js +5 -0
- package/build/dialect/index.d.ts +8 -0
- package/build/dialect/index.js +8 -0
- package/build/dialect/load.d.ts +5 -0
- package/build/dialect/load.js +12 -0
- package/build/dialect/load.spec.d.ts +1 -0
- package/build/dialect/load.spec.js +18 -0
- package/build/dialect/resolve.d.ts +2 -0
- package/build/dialect/resolve.js +11 -0
- package/build/dialect/save.d.ts +9 -0
- package/build/dialect/save.js +16 -0
- package/build/dialect/save.spec.d.ts +1 -0
- package/build/dialect/save.spec.js +52 -0
- package/build/dialect/validate.d.ts +10 -0
- package/build/dialect/validate.js +25 -0
- package/build/dialect/validate.spec.d.ts +1 -0
- package/build/dialect/validate.spec.js +28 -0
- package/build/error/Bound.d.ts +4 -0
- package/build/error/Bound.js +2 -0
- package/build/error/Error.d.ts +3 -0
- package/build/error/Error.js +2 -0
- package/build/error/Unbound.d.ts +6 -0
- package/build/error/Unbound.js +2 -0
- package/build/error/index.d.ts +16 -0
- package/build/error/index.js +2 -0
- package/build/error/types/Base.d.ts +3 -0
- package/build/error/types/Base.js +2 -0
- package/build/error/types/Bytes.d.ts +6 -0
- package/build/error/types/Bytes.js +2 -0
- package/build/error/types/Cell.d.ts +56 -0
- package/build/error/types/Cell.js +2 -0
- package/build/error/types/Data.d.ts +5 -0
- package/build/error/types/Data.js +2 -0
- package/build/error/types/Document.d.ts +7 -0
- package/build/error/types/Document.js +2 -0
- package/build/error/types/Encoding.d.ts +6 -0
- package/build/error/types/Encoding.js +2 -0
- package/build/error/types/Field.d.ts +15 -0
- package/build/error/types/Field.js +2 -0
- package/build/error/types/Fields.d.ts +11 -0
- package/build/error/types/Fields.js +2 -0
- package/build/error/types/File.d.ts +4 -0
- package/build/error/types/File.js +2 -0
- package/build/error/types/ForeignKey.d.ts +7 -0
- package/build/error/types/ForeignKey.js +2 -0
- package/build/error/types/Hash.d.ts +6 -0
- package/build/error/types/Hash.js +2 -0
- package/build/error/types/Metadata.d.ts +9 -0
- package/build/error/types/Metadata.js +2 -0
- package/build/error/types/Row.d.ts +9 -0
- package/build/error/types/Row.js +2 -0
- package/build/error/types/Table.d.ts +6 -0
- package/build/error/types/Table.js +2 -0
- package/build/field/Field.d.ts +5 -0
- package/build/field/Field.js +2 -0
- package/build/field/Type.d.ts +2 -0
- package/build/field/Type.js +2 -0
- package/build/field/convert/fromDescriptor.d.ts +2 -0
- package/build/field/convert/fromDescriptor.js +61 -0
- package/build/field/convert/fromDescriptor.spec.d.ts +1 -0
- package/build/field/convert/fromDescriptor.spec.js +241 -0
- package/build/field/convert/toDescriptor.d.ts +3 -0
- package/build/field/convert/toDescriptor.js +5 -0
- package/build/field/convert/toDescriptor.spec.d.ts +1 -0
- package/build/field/convert/toDescriptor.spec.js +291 -0
- package/build/field/index.d.ts +5 -0
- package/build/field/index.js +3 -0
- package/build/field/types/Any.d.ts +20 -0
- package/build/field/types/Any.js +2 -0
- package/build/field/types/Array.d.ts +32 -0
- package/build/field/types/Array.js +2 -0
- package/build/field/types/Base.d.ts +60 -0
- package/build/field/types/Base.js +2 -0
- package/build/field/types/Boolean.d.ts +28 -0
- package/build/field/types/Boolean.js +2 -0
- package/build/field/types/Date.d.ts +43 -0
- package/build/field/types/Date.js +2 -0
- package/build/field/types/Datetime.d.ts +43 -0
- package/build/field/types/Datetime.js +2 -0
- package/build/field/types/Duration.d.ts +28 -0
- package/build/field/types/Duration.js +2 -0
- package/build/field/types/Geojson.d.ts +30 -0
- package/build/field/types/Geojson.js +2 -0
- package/build/field/types/Geopoint.d.ts +27 -0
- package/build/field/types/Geopoint.js +2 -0
- package/build/field/types/Integer.d.ts +57 -0
- package/build/field/types/Integer.js +2 -0
- package/build/field/types/List.d.ts +36 -0
- package/build/field/types/List.js +2 -0
- package/build/field/types/Number.d.ts +48 -0
- package/build/field/types/Number.js +2 -0
- package/build/field/types/Object.d.ts +32 -0
- package/build/field/types/Object.js +2 -0
- package/build/field/types/String.d.ts +51 -0
- package/build/field/types/String.js +2 -0
- package/build/field/types/Time.d.ts +43 -0
- package/build/field/types/Time.js +2 -0
- package/build/field/types/Year.d.ts +36 -0
- package/build/field/types/Year.js +2 -0
- package/build/field/types/Yearmonth.d.ts +36 -0
- package/build/field/types/Yearmonth.js +2 -0
- package/build/field/types/index.d.ts +16 -0
- package/build/field/types/index.js +17 -0
- package/build/index.d.ts +112 -0
- package/build/index.js +32 -0
- package/build/json/Schema.d.ts +2 -0
- package/build/json/Schema.js +2 -0
- package/build/json/Value.d.ts +1 -0
- package/build/json/Value.js +2 -0
- package/build/json/ajv.d.ts +2 -0
- package/build/json/ajv.js +10 -0
- package/build/json/assert.d.ts +2 -0
- package/build/json/assert.js +10 -0
- package/build/json/cache.d.ts +2 -0
- package/build/json/cache.js +5 -0
- package/build/json/index.d.ts +5 -0
- package/build/json/index.js +4 -0
- package/build/json/inspect/schema.d.ts +4 -0
- package/build/json/inspect/schema.js +10 -0
- package/build/json/inspect/schema.spec.d.ts +1 -0
- package/build/json/inspect/schema.spec.js +132 -0
- package/build/json/inspect/value.d.ts +11 -0
- package/build/json/inspect/value.js +21 -0
- package/build/json/inspect/value.spec.d.ts +1 -0
- package/build/json/inspect/value.spec.js +121 -0
- package/build/json/load.d.ts +3 -0
- package/build/json/load.js +13 -0
- package/build/json/resolve.d.ts +2 -0
- package/build/json/resolve.js +11 -0
- package/build/metadata/Metadata.d.ts +3 -0
- package/build/metadata/Metadata.js +2 -0
- package/build/metadata/index.d.ts +1 -0
- package/build/metadata/index.js +2 -0
- package/build/package/Contributor.d.ts +21 -0
- package/build/package/Contributor.js +2 -0
- package/build/package/Package.d.ts +64 -0
- package/build/package/Package.js +2 -0
- package/build/package/assert.d.ts +8 -0
- package/build/package/assert.js +12 -0
- package/build/package/assert.spec.d.ts +1 -0
- package/build/package/assert.spec.js +26 -0
- package/build/package/convert/fromDescriptor.d.ts +4 -0
- package/build/package/convert/fromDescriptor.js +36 -0
- package/build/package/convert/toDescriptor.d.ts +5 -0
- package/build/package/convert/toDescriptor.js +7 -0
- package/build/package/index.d.ts +8 -0
- package/build/package/index.js +7 -0
- package/build/package/load.d.ts +5 -0
- package/build/package/load.js +14 -0
- package/build/package/load.spec.d.ts +1 -0
- package/build/package/load.spec.js +28 -0
- package/build/package/save.d.ts +9 -0
- package/build/package/save.js +18 -0
- package/build/package/save.spec.d.ts +1 -0
- package/build/package/save.spec.js +311 -0
- package/build/package/validate.d.ts +12 -0
- package/build/package/validate.js +27 -0
- package/build/package/validate.spec.d.ts +1 -0
- package/build/package/validate.spec.js +41 -0
- package/build/path/basepath.d.ts +2 -0
- package/build/path/basepath.js +25 -0
- package/build/path/basepath.spec.d.ts +1 -0
- package/build/path/basepath.spec.js +55 -0
- package/build/path/denormalize.d.ts +3 -0
- package/build/path/denormalize.js +29 -0
- package/build/path/denormalize.spec.d.ts +1 -0
- package/build/path/denormalize.spec.js +45 -0
- package/build/path/index.d.ts +5 -0
- package/build/path/index.js +6 -0
- package/build/path/normalize.d.ts +6 -0
- package/build/path/normalize.js +54 -0
- package/build/path/normalize.spec.d.ts +1 -0
- package/build/path/normalize.spec.js +71 -0
- package/build/path/path.d.ts +5 -0
- package/build/path/path.js +48 -0
- package/build/path/path.spec.d.ts +1 -0
- package/build/path/path.spec.js +111 -0
- package/build/platform/index.d.ts +1 -0
- package/build/platform/index.js +2 -0
- package/build/platform/node.d.ts +130 -0
- package/build/platform/node.js +10 -0
- package/build/platform/node.spec.d.ts +1 -0
- package/build/platform/node.spec.js +16 -0
- package/build/profile/@minify.d.ts +1 -0
- package/build/profile/@minify.js +58 -0
- package/build/profile/Profile.d.ts +9 -0
- package/build/profile/Profile.js +2 -0
- package/build/profile/assert.d.ts +6 -0
- package/build/profile/assert.js +36 -0
- package/build/profile/assert.spec.d.ts +1 -0
- package/build/profile/assert.spec.js +115 -0
- package/build/profile/index.d.ts +2 -0
- package/build/profile/index.js +2 -0
- package/build/profile/load.d.ts +4 -0
- package/build/profile/load.js +12 -0
- package/build/profile/registry.d.ts +2 -0
- package/build/profile/registry.js +83 -0
- package/build/profile/resolve.d.ts +2 -0
- package/build/profile/resolve.js +8 -0
- package/build/profile/validate.d.ts +9 -0
- package/build/profile/validate.js +12 -0
- package/build/report/Report.d.ts +5 -0
- package/build/report/Report.js +2 -0
- package/build/report/create.d.ts +7 -0
- package/build/report/create.js +6 -0
- package/build/report/index.d.ts +2 -0
- package/build/report/index.js +2 -0
- package/build/resource/License.d.ts +18 -0
- package/build/resource/License.js +2 -0
- package/build/resource/Resource.d.ts +93 -0
- package/build/resource/Resource.js +2 -0
- package/build/resource/Source.d.ts +17 -0
- package/build/resource/Source.js +2 -0
- package/build/resource/assert.d.ts +8 -0
- package/build/resource/assert.js +12 -0
- package/build/resource/assert.spec.d.ts +1 -0
- package/build/resource/assert.spec.js +23 -0
- package/build/resource/convert/fromDescriptor.d.ts +4 -0
- package/build/resource/convert/fromDescriptor.js +69 -0
- package/build/resource/convert/toDescriptor.d.ts +5 -0
- package/build/resource/convert/toDescriptor.js +36 -0
- package/build/resource/helpers.d.ts +2 -0
- package/build/resource/helpers.js +6 -0
- package/build/resource/index.d.ts +11 -0
- package/build/resource/index.js +9 -0
- package/build/resource/infer.d.ts +3 -0
- package/build/resource/infer.js +35 -0
- package/build/resource/infer.spec.d.ts +1 -0
- package/build/resource/infer.spec.js +103 -0
- package/build/resource/load.d.ts +5 -0
- package/build/resource/load.js +14 -0
- package/build/resource/load.spec.d.ts +1 -0
- package/build/resource/load.spec.js +22 -0
- package/build/resource/save.d.ts +9 -0
- package/build/resource/save.js +18 -0
- package/build/resource/save.spec.d.ts +1 -0
- package/build/resource/save.spec.js +170 -0
- package/build/resource/validate.d.ts +13 -0
- package/build/resource/validate.js +57 -0
- package/build/resource/validate.spec.d.ts +1 -0
- package/build/resource/validate.spec.js +30 -0
- package/build/schema/ForeignKey.d.ts +23 -0
- package/build/schema/ForeignKey.js +2 -0
- package/build/schema/Schema.d.ts +56 -0
- package/build/schema/Schema.js +2 -0
- package/build/schema/assert.d.ts +6 -0
- package/build/schema/assert.js +12 -0
- package/build/schema/assert.spec.d.ts +1 -0
- package/build/schema/assert.spec.js +34 -0
- package/build/schema/convert/fromDescriptor.d.ts +2 -0
- package/build/schema/convert/fromDescriptor.js +70 -0
- package/build/schema/convert/fromJsonSchema.d.ts +3 -0
- package/build/schema/convert/fromJsonSchema.js +105 -0
- package/build/schema/convert/fromJsonSchema.spec.d.ts +1 -0
- package/build/schema/convert/fromJsonSchema.spec.js +156 -0
- package/build/schema/convert/toDescriptor.d.ts +3 -0
- package/build/schema/convert/toDescriptor.js +5 -0
- package/build/schema/convert/toJsonSchema.d.ts +3 -0
- package/build/schema/convert/toJsonSchema.js +173 -0
- package/build/schema/convert/toJsonSchema.spec.d.ts +1 -0
- package/build/schema/convert/toJsonSchema.spec.js +403 -0
- package/build/schema/index.d.ts +11 -0
- package/build/schema/index.js +10 -0
- package/build/schema/load.d.ts +5 -0
- package/build/schema/load.js +12 -0
- package/build/schema/load.spec.d.ts +1 -0
- package/build/schema/load.spec.js +55 -0
- package/build/schema/resolve.d.ts +2 -0
- package/build/schema/resolve.js +11 -0
- package/build/schema/save.d.ts +9 -0
- package/build/schema/save.js +16 -0
- package/build/schema/save.spec.d.ts +1 -0
- package/build/schema/save.spec.js +58 -0
- package/build/schema/validate.d.ts +10 -0
- package/build/schema/validate.js +25 -0
- package/build/schema/validate.spec.d.ts +1 -0
- package/build/schema/validate.spec.js +41 -0
- package/package.json +37 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const assetsDir = join(import.meta.dirname, "..", "assets");
|
|
5
|
+
const files = (await fs.readdir(assetsDir)).filter(file => file.endsWith(".json"));
|
|
6
|
+
console.log(`Found ${files.length} JSON files in the assets directory`);
|
|
7
|
+
for (const file of files) {
|
|
8
|
+
const filePath = join(assetsDir, file);
|
|
9
|
+
console.log(`Processing ${file}...`);
|
|
10
|
+
const content = await readFile(filePath, "utf8");
|
|
11
|
+
const profile = JSON.parse(content);
|
|
12
|
+
let modified = false;
|
|
13
|
+
const pruneProperties = (obj) => {
|
|
14
|
+
if ("description" in obj) {
|
|
15
|
+
if (!isObject(obj.description)) {
|
|
16
|
+
obj.description = undefined;
|
|
17
|
+
modified = true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if ("context" in obj) {
|
|
21
|
+
if (!isObject(obj.context)) {
|
|
22
|
+
obj.context = undefined;
|
|
23
|
+
modified = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if ("examples" in obj) {
|
|
27
|
+
if (!isObject(obj.examples)) {
|
|
28
|
+
obj.examples = undefined;
|
|
29
|
+
modified = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
for (const key in obj) {
|
|
33
|
+
if (isObject(obj[key])) {
|
|
34
|
+
pruneProperties(obj[key]);
|
|
35
|
+
}
|
|
36
|
+
else if (Array.isArray(obj[key])) {
|
|
37
|
+
for (const item of obj[key]) {
|
|
38
|
+
if (isObject(item)) {
|
|
39
|
+
pruneProperties(item);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
pruneProperties(profile);
|
|
46
|
+
if (modified) {
|
|
47
|
+
await writeFile(filePath, JSON.stringify(profile, null, 2), "utf8");
|
|
48
|
+
console.log(`Updated ${file} - removed non-object descriptions and examples`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
console.log(`No changes needed for ${file}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
console.log("Pruning completed successfully!");
|
|
55
|
+
function isObject(value) {
|
|
56
|
+
return !!(value && typeof value === "object" && !Array.isArray(value));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQG1pbmlmeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2ZpbGUvQG1pbmlmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFaEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUMzRCxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUN2QixDQUFBO0FBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssQ0FBQyxNQUFNLHFDQUFxQyxDQUFDLENBQUE7QUFFdkUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUN6QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQyxDQUFBO0lBRXBDLE1BQU0sT0FBTyxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRW5DLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQTtJQUVwQixNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQTRCLEVBQVEsRUFBRTtRQUM3RCxJQUFJLGFBQWEsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO2dCQUMvQixHQUFHLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQTtnQkFDM0IsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUNqQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksU0FBUyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzNCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFBO2dCQUN2QixRQUFRLEdBQUcsSUFBSSxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsR0FBRyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUE7Z0JBQ3hCLFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDakIsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUE0QixDQUFDLENBQUE7WUFDdEQsQ0FBQztpQkFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDbkIsZUFBZSxDQUFDLElBQStCLENBQUMsQ0FBQTtvQkFDbEQsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFeEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNiLE1BQU0sU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbkUsT0FBTyxDQUFDLEdBQUcsQ0FDVCxXQUFXLElBQUksaURBQWlELENBQ2pFLENBQUE7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLElBQUksRUFBRSxDQUFDLENBQUE7SUFDOUMsQ0FBQztBQUNILENBQUM7QUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7QUFFOUMsU0FBUyxRQUFRLENBQUMsS0FBVTtJQUMxQixPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiXG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIlxuXG5jb25zdCBhc3NldHNEaXIgPSBqb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi5cIiwgXCJhc3NldHNcIilcbmNvbnN0IGZpbGVzID0gKGF3YWl0IGZzLnJlYWRkaXIoYXNzZXRzRGlyKSkuZmlsdGVyKGZpbGUgPT5cbiAgZmlsZS5lbmRzV2l0aChcIi5qc29uXCIpLFxuKVxuXG5jb25zb2xlLmxvZyhgRm91bmQgJHtmaWxlcy5sZW5ndGh9IEpTT04gZmlsZXMgaW4gdGhlIGFzc2V0cyBkaXJlY3RvcnlgKVxuXG5mb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgY29uc3QgZmlsZVBhdGggPSBqb2luKGFzc2V0c0RpciwgZmlsZSlcbiAgY29uc29sZS5sb2coYFByb2Nlc3NpbmcgJHtmaWxlfS4uLmApXG5cbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoLCBcInV0ZjhcIilcbiAgY29uc3QgcHJvZmlsZSA9IEpTT04ucGFyc2UoY29udGVudClcblxuICBsZXQgbW9kaWZpZWQgPSBmYWxzZVxuXG4gIGNvbnN0IHBydW5lUHJvcGVydGllcyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG4gICAgaWYgKFwiZGVzY3JpcHRpb25cIiBpbiBvYmopIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqLmRlc2NyaXB0aW9uKSkge1xuICAgICAgICBvYmouZGVzY3JpcHRpb24gPSB1bmRlZmluZWRcbiAgICAgICAgbW9kaWZpZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFwiY29udGV4dFwiIGluIG9iaikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmouY29udGV4dCkpIHtcbiAgICAgICAgb2JqLmNvbnRleHQgPSB1bmRlZmluZWRcbiAgICAgICAgbW9kaWZpZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFwiZXhhbXBsZXNcIiBpbiBvYmopIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqLmV4YW1wbGVzKSkge1xuICAgICAgICBvYmouZXhhbXBsZXMgPSB1bmRlZmluZWRcbiAgICAgICAgbW9kaWZpZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoaXNPYmplY3Qob2JqW2tleV0pKSB7XG4gICAgICAgIHBydW5lUHJvcGVydGllcyhvYmpba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIG9ialtrZXldKSB7XG4gICAgICAgICAgaWYgKGlzT2JqZWN0KGl0ZW0pKSB7XG4gICAgICAgICAgICBwcnVuZVByb3BlcnRpZXMoaXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcnVuZVByb3BlcnRpZXMocHJvZmlsZSlcblxuICBpZiAobW9kaWZpZWQpIHtcbiAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHByb2ZpbGUsIG51bGwsIDIpLCBcInV0ZjhcIilcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBVcGRhdGVkICR7ZmlsZX0gLSByZW1vdmVkIG5vbi1vYmplY3QgZGVzY3JpcHRpb25zIGFuZCBleGFtcGxlc2AsXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGBObyBjaGFuZ2VzIG5lZWRlZCBmb3IgJHtmaWxlfWApXG4gIH1cbn1cblxuY29uc29sZS5sb2coXCJQcnVuaW5nIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhXCIpXG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuICEhKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG59XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { JsonSchema } from "../json/index.ts";
|
|
2
|
+
export type Profile = JsonSchema;
|
|
3
|
+
export type ProfileType = "dialect" | "package" | "resource" | "schema";
|
|
4
|
+
export type ProfileRegistry = {
|
|
5
|
+
type: ProfileType;
|
|
6
|
+
path: string;
|
|
7
|
+
version: string;
|
|
8
|
+
profile: Profile;
|
|
9
|
+
}[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2ZpbGUvUHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBKc29uU2NoZW1hIH0gZnJvbSBcIi4uL2pzb24vaW5kZXgudHNcIlxuXG5leHBvcnQgdHlwZSBQcm9maWxlID0gSnNvblNjaGVtYVxuZXhwb3J0IHR5cGUgUHJvZmlsZVR5cGUgPSBcImRpYWxlY3RcIiB8IFwicGFja2FnZVwiIHwgXCJyZXNvdXJjZVwiIHwgXCJzY2hlbWFcIlxuZXhwb3J0IHR5cGUgUHJvZmlsZVJlZ2lzdHJ5ID0ge1xuICB0eXBlOiBQcm9maWxlVHlwZVxuICBwYXRoOiBzdHJpbmdcbiAgdmVyc2lvbjogc3RyaW5nXG4gIHByb2ZpbGU6IFByb2ZpbGVcbn1bXVxuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { profileRegistry } from "./registry.js";
|
|
2
|
+
// TODO: It should narrow to JSON Schema
|
|
3
|
+
export async function assertProfile(jsonSchema, options) {
|
|
4
|
+
const errors = [];
|
|
5
|
+
if (!checkProfileType(jsonSchema, options)) {
|
|
6
|
+
errors.push({
|
|
7
|
+
message: `Profile at ${options?.path} is not a valid ${options?.type} profile`,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
// TODO: Improve consolidated error message
|
|
11
|
+
if (errors.length) {
|
|
12
|
+
throw new Error(`Profile at path ${options?.path} is invalid`);
|
|
13
|
+
}
|
|
14
|
+
return jsonSchema;
|
|
15
|
+
}
|
|
16
|
+
function checkProfileType(jsonSchema, options) {
|
|
17
|
+
if (!options?.path || !options?.type) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
// This type official profiles
|
|
21
|
+
const typeProfiles = Object.values(profileRegistry).filter(profile => profile.type === options.type);
|
|
22
|
+
for (const typeProfile of typeProfiles) {
|
|
23
|
+
// The profile itself is from the official registry
|
|
24
|
+
if (options.path === typeProfile.path)
|
|
25
|
+
return true;
|
|
26
|
+
// The profile extends one of the official profiles
|
|
27
|
+
if (Array.isArray(jsonSchema.allOf)) {
|
|
28
|
+
for (const ref of Object.values(jsonSchema.allOf)) {
|
|
29
|
+
if (ref === typeProfile.path)
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcHJvZmlsZS9hc3NlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUUvQyx3Q0FBd0M7QUFFeEMsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLFVBQXNCLEVBQ3RCLE9BR0M7SUFFRCxNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFBO0lBRXhDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsT0FBTyxFQUFFLGNBQWMsT0FBTyxFQUFFLElBQUksbUJBQW1CLE9BQU8sRUFBRSxJQUFJLFVBQVU7U0FDL0UsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELDJDQUEyQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixPQUFPLEVBQUUsSUFBSSxhQUFhLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsT0FBTyxVQUFxQixDQUFBO0FBQzlCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUN2QixVQUFzQixFQUN0QixPQUdDO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsOEJBQThCO0lBQzlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxDQUN4RCxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksQ0FDekMsQ0FBQTtJQUVELEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsbURBQW1EO1FBQ25ELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRWxELG1EQUFtRDtRQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLEdBQUcsS0FBSyxXQUFXLENBQUMsSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQTtZQUMzQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tIFwiLi4vanNvbi9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFByb2ZpbGUgfSBmcm9tIFwiLi9Qcm9maWxlLnRzXCJcbmltcG9ydCB0eXBlIHsgUHJvZmlsZVR5cGUgfSBmcm9tIFwiLi9Qcm9maWxlLnRzXCJcbmltcG9ydCB7IHByb2ZpbGVSZWdpc3RyeSB9IGZyb20gXCIuL3JlZ2lzdHJ5LnRzXCJcblxuLy8gVE9ETzogSXQgc2hvdWxkIG5hcnJvdyB0byBKU09OIFNjaGVtYVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXNzZXJ0UHJvZmlsZShcbiAganNvblNjaGVtYTogSnNvblNjaGVtYSxcbiAgb3B0aW9ucz86IHtcbiAgICBwYXRoPzogc3RyaW5nXG4gICAgdHlwZT86IFByb2ZpbGVUeXBlXG4gIH0sXG4pIHtcbiAgY29uc3QgZXJyb3JzOiB7IG1lc3NhZ2U6IHN0cmluZyB9W10gPSBbXVxuXG4gIGlmICghY2hlY2tQcm9maWxlVHlwZShqc29uU2NoZW1hLCBvcHRpb25zKSkge1xuICAgIGVycm9ycy5wdXNoKHtcbiAgICAgIG1lc3NhZ2U6IGBQcm9maWxlIGF0ICR7b3B0aW9ucz8ucGF0aH0gaXMgbm90IGEgdmFsaWQgJHtvcHRpb25zPy50eXBlfSBwcm9maWxlYCxcbiAgICB9KVxuICB9XG5cbiAgLy8gVE9ETzogSW1wcm92ZSBjb25zb2xpZGF0ZWQgZXJyb3IgbWVzc2FnZVxuICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUHJvZmlsZSBhdCBwYXRoICR7b3B0aW9ucz8ucGF0aH0gaXMgaW52YWxpZGApXG4gIH1cblxuICByZXR1cm4ganNvblNjaGVtYSBhcyBQcm9maWxlXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvZmlsZVR5cGUoXG4gIGpzb25TY2hlbWE6IEpzb25TY2hlbWEsXG4gIG9wdGlvbnM/OiB7XG4gICAgcGF0aD86IHN0cmluZ1xuICAgIHR5cGU/OiBQcm9maWxlVHlwZVxuICB9LFxuKSB7XG4gIGlmICghb3B0aW9ucz8ucGF0aCB8fCAhb3B0aW9ucz8udHlwZSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBUaGlzIHR5cGUgb2ZmaWNpYWwgcHJvZmlsZXNcbiAgY29uc3QgdHlwZVByb2ZpbGVzID0gT2JqZWN0LnZhbHVlcyhwcm9maWxlUmVnaXN0cnkpLmZpbHRlcihcbiAgICBwcm9maWxlID0+IHByb2ZpbGUudHlwZSA9PT0gb3B0aW9ucy50eXBlLFxuICApXG5cbiAgZm9yIChjb25zdCB0eXBlUHJvZmlsZSBvZiB0eXBlUHJvZmlsZXMpIHtcbiAgICAvLyBUaGUgcHJvZmlsZSBpdHNlbGYgaXMgZnJvbSB0aGUgb2ZmaWNpYWwgcmVnaXN0cnlcbiAgICBpZiAob3B0aW9ucy5wYXRoID09PSB0eXBlUHJvZmlsZS5wYXRoKSByZXR1cm4gdHJ1ZVxuXG4gICAgLy8gVGhlIHByb2ZpbGUgZXh0ZW5kcyBvbmUgb2YgdGhlIG9mZmljaWFsIHByb2ZpbGVzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoanNvblNjaGVtYS5hbGxPZikpIHtcbiAgICAgIGZvciAoY29uc3QgcmVmIG9mIE9iamVjdC52YWx1ZXMoanNvblNjaGVtYS5hbGxPZikpIHtcbiAgICAgICAgaWYgKHJlZiA9PT0gdHlwZVByb2ZpbGUucGF0aCkgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { assertProfile } from "./assert.js";
|
|
3
|
+
describe("assertProfile", () => {
|
|
4
|
+
it("returns profile for valid descriptor without options", async () => {
|
|
5
|
+
const descriptor = {
|
|
6
|
+
name: "test",
|
|
7
|
+
};
|
|
8
|
+
const profile = await assertProfile(descriptor);
|
|
9
|
+
expect(profile).toEqual(descriptor);
|
|
10
|
+
});
|
|
11
|
+
it("throws error for custom profile path with mismatched type", async () => {
|
|
12
|
+
const descriptor = {
|
|
13
|
+
name: "test",
|
|
14
|
+
};
|
|
15
|
+
await expect(assertProfile(descriptor, {
|
|
16
|
+
path: "custom-profile.json",
|
|
17
|
+
type: "package",
|
|
18
|
+
})).rejects.toThrow("Profile at path custom-profile.json is invalid");
|
|
19
|
+
});
|
|
20
|
+
it("returns profile for official profile path", async () => {
|
|
21
|
+
const descriptor = {
|
|
22
|
+
name: "test",
|
|
23
|
+
};
|
|
24
|
+
const profile = await assertProfile(descriptor, {
|
|
25
|
+
path: "https://datapackage.org/profiles/1.0/datapackage.json",
|
|
26
|
+
type: "package",
|
|
27
|
+
});
|
|
28
|
+
expect(profile).toEqual(descriptor);
|
|
29
|
+
});
|
|
30
|
+
it("returns profile when path matches alternate official profile", async () => {
|
|
31
|
+
const descriptor = {
|
|
32
|
+
name: "test",
|
|
33
|
+
};
|
|
34
|
+
const profile = await assertProfile(descriptor, {
|
|
35
|
+
path: "https://specs.frictionlessdata.io/schemas/data-package.json",
|
|
36
|
+
type: "package",
|
|
37
|
+
});
|
|
38
|
+
expect(profile).toEqual(descriptor);
|
|
39
|
+
});
|
|
40
|
+
it("throws error when profile path does not match the specified type", async () => {
|
|
41
|
+
const descriptor = {
|
|
42
|
+
name: "test",
|
|
43
|
+
};
|
|
44
|
+
await expect(assertProfile(descriptor, {
|
|
45
|
+
path: "https://datapackage.org/profiles/1.0/tableschema.json",
|
|
46
|
+
type: "package",
|
|
47
|
+
})).rejects.toThrow("Profile at path https://datapackage.org/profiles/1.0/tableschema.json is invalid");
|
|
48
|
+
});
|
|
49
|
+
it("returns profile when only path is provided", async () => {
|
|
50
|
+
const descriptor = {
|
|
51
|
+
name: "test",
|
|
52
|
+
};
|
|
53
|
+
const profile = await assertProfile(descriptor, {
|
|
54
|
+
path: "custom-profile.json",
|
|
55
|
+
});
|
|
56
|
+
expect(profile).toEqual(descriptor);
|
|
57
|
+
});
|
|
58
|
+
it("returns profile when only type is provided", async () => {
|
|
59
|
+
const descriptor = {
|
|
60
|
+
name: "test",
|
|
61
|
+
};
|
|
62
|
+
const profile = await assertProfile(descriptor, {
|
|
63
|
+
type: "package",
|
|
64
|
+
});
|
|
65
|
+
expect(profile).toEqual(descriptor);
|
|
66
|
+
});
|
|
67
|
+
it("returns profile when descriptor extends official profile via allOf", async () => {
|
|
68
|
+
const descriptor = {
|
|
69
|
+
name: "test",
|
|
70
|
+
allOf: ["https://datapackage.org/profiles/1.0/datapackage.json"],
|
|
71
|
+
};
|
|
72
|
+
const profile = await assertProfile(descriptor, {
|
|
73
|
+
path: "custom-profile.json",
|
|
74
|
+
type: "package",
|
|
75
|
+
});
|
|
76
|
+
expect(profile).toEqual(descriptor);
|
|
77
|
+
});
|
|
78
|
+
it("throws error when custom profile does not extend matching official profile", async () => {
|
|
79
|
+
const descriptor = {
|
|
80
|
+
name: "test",
|
|
81
|
+
allOf: ["https://datapackage.org/profiles/1.0/tableschema.json"],
|
|
82
|
+
};
|
|
83
|
+
await expect(assertProfile(descriptor, {
|
|
84
|
+
path: "custom-profile.json",
|
|
85
|
+
type: "package",
|
|
86
|
+
})).rejects.toThrow("Profile at path custom-profile.json is invalid");
|
|
87
|
+
});
|
|
88
|
+
it("validates different profile types correctly", async () => {
|
|
89
|
+
const descriptorDialect = {
|
|
90
|
+
delimiter: ",",
|
|
91
|
+
};
|
|
92
|
+
const profileDialect = await assertProfile(descriptorDialect, {
|
|
93
|
+
path: "https://datapackage.org/profiles/1.0/tabledialect.json",
|
|
94
|
+
type: "dialect",
|
|
95
|
+
});
|
|
96
|
+
expect(profileDialect).toEqual(descriptorDialect);
|
|
97
|
+
const descriptorResource = {
|
|
98
|
+
name: "test-resource",
|
|
99
|
+
};
|
|
100
|
+
const profileResource = await assertProfile(descriptorResource, {
|
|
101
|
+
path: "https://datapackage.org/profiles/1.0/dataresource.json",
|
|
102
|
+
type: "resource",
|
|
103
|
+
});
|
|
104
|
+
expect(profileResource).toEqual(descriptorResource);
|
|
105
|
+
const descriptorSchema = {
|
|
106
|
+
fields: [],
|
|
107
|
+
};
|
|
108
|
+
const profileSchema = await assertProfile(descriptorSchema, {
|
|
109
|
+
path: "https://datapackage.org/profiles/1.0/tableschema.json",
|
|
110
|
+
type: "schema",
|
|
111
|
+
});
|
|
112
|
+
expect(profileSchema).toEqual(descriptorSchema);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9maWxlL2Fzc2VydC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRTNDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO0lBQzdCLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNwRSxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUUvQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3pFLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUNWLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQ0gsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDckUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFBO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksRUFBRSx1REFBdUQ7WUFDN0QsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFBO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUM1RSxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDOUMsSUFBSSxFQUFFLDZEQUE2RDtZQUNuRSxJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUE7UUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hGLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUNWLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsSUFBSSxFQUFFLHVEQUF1RDtZQUM3RCxJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQ0gsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNmLGtGQUFrRixDQUNuRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNENBQTRDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDMUQsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLE1BQU07U0FDYixDQUFBO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQzlDLElBQUksRUFBRSxxQkFBcUI7U0FDNUIsQ0FBQyxDQUFBO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMxRCxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDOUMsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFBO1FBRUYsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNyQyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyxvRUFBb0UsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNsRixNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsTUFBTTtZQUNaLEtBQUssRUFBRSxDQUFDLHVEQUF1RCxDQUFDO1NBQ2pFLENBQUE7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDOUMsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQUE7UUFFRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDRFQUE0RSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFGLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLENBQUMsdURBQXVELENBQUM7U0FDakUsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUNWLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDeEIsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDLENBQ0gsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7SUFDckUsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxpQkFBaUIsR0FBRztZQUN4QixTQUFTLEVBQUUsR0FBRztTQUNmLENBQUE7UUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRTtZQUM1RCxJQUFJLEVBQUUsd0RBQXdEO1lBQzlELElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUVqRCxNQUFNLGtCQUFrQixHQUFHO1lBQ3pCLElBQUksRUFBRSxlQUFlO1NBQ3RCLENBQUE7UUFFRCxNQUFNLGVBQWUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRTtZQUM5RCxJQUFJLEVBQUUsd0RBQXdEO1lBQzlELElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQTtRQUVGLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUVuRCxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQTtRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sYUFBYSxDQUFDLGdCQUFnQixFQUFFO1lBQzFELElBQUksRUFBRSx1REFBdUQ7WUFDN0QsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDLENBQUE7UUFFRixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7SUFDakQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBhc3NlcnRQcm9maWxlIH0gZnJvbSBcIi4vYXNzZXJ0LnRzXCJcblxuZGVzY3JpYmUoXCJhc3NlcnRQcm9maWxlXCIsICgpID0+IHtcbiAgaXQoXCJyZXR1cm5zIHByb2ZpbGUgZm9yIHZhbGlkIGRlc2NyaXB0b3Igd2l0aG91dCBvcHRpb25zXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGFzc2VydFByb2ZpbGUoZGVzY3JpcHRvcilcblxuICAgIGV4cGVjdChwcm9maWxlKS50b0VxdWFsKGRlc2NyaXB0b3IpXG4gIH0pXG5cbiAgaXQoXCJ0aHJvd3MgZXJyb3IgZm9yIGN1c3RvbSBwcm9maWxlIHBhdGggd2l0aCBtaXNtYXRjaGVkIHR5cGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB7XG4gICAgICBuYW1lOiBcInRlc3RcIixcbiAgICB9XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBhc3NlcnRQcm9maWxlKGRlc2NyaXB0b3IsIHtcbiAgICAgICAgcGF0aDogXCJjdXN0b20tcHJvZmlsZS5qc29uXCIsXG4gICAgICAgIHR5cGU6IFwicGFja2FnZVwiLFxuICAgICAgfSksXG4gICAgKS5yZWplY3RzLnRvVGhyb3coXCJQcm9maWxlIGF0IHBhdGggY3VzdG9tLXByb2ZpbGUuanNvbiBpcyBpbnZhbGlkXCIpXG4gIH0pXG5cbiAgaXQoXCJyZXR1cm5zIHByb2ZpbGUgZm9yIG9mZmljaWFsIHByb2ZpbGUgcGF0aFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIG5hbWU6IFwidGVzdFwiLFxuICAgIH1cblxuICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCBhc3NlcnRQcm9maWxlKGRlc2NyaXB0b3IsIHtcbiAgICAgIHBhdGg6IFwiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMS4wL2RhdGFwYWNrYWdlLmpzb25cIixcbiAgICAgIHR5cGU6IFwicGFja2FnZVwiLFxuICAgIH0pXG5cbiAgICBleHBlY3QocHJvZmlsZSkudG9FcXVhbChkZXNjcmlwdG9yKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBwcm9maWxlIHdoZW4gcGF0aCBtYXRjaGVzIGFsdGVybmF0ZSBvZmZpY2lhbCBwcm9maWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgfVxuXG4gICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGFzc2VydFByb2ZpbGUoZGVzY3JpcHRvciwge1xuICAgICAgcGF0aDogXCJodHRwczovL3NwZWNzLmZyaWN0aW9ubGVzc2RhdGEuaW8vc2NoZW1hcy9kYXRhLXBhY2thZ2UuanNvblwiLFxuICAgICAgdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgfSlcblxuICAgIGV4cGVjdChwcm9maWxlKS50b0VxdWFsKGRlc2NyaXB0b3IpXG4gIH0pXG5cbiAgaXQoXCJ0aHJvd3MgZXJyb3Igd2hlbiBwcm9maWxlIHBhdGggZG9lcyBub3QgbWF0Y2ggdGhlIHNwZWNpZmllZCB0eXBlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgfVxuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgYXNzZXJ0UHJvZmlsZShkZXNjcmlwdG9yLCB7XG4gICAgICAgIHBhdGg6IFwiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMS4wL3RhYmxlc2NoZW1hLmpzb25cIixcbiAgICAgICAgdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdyhcbiAgICAgIFwiUHJvZmlsZSBhdCBwYXRoIGh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzEuMC90YWJsZXNjaGVtYS5qc29uIGlzIGludmFsaWRcIixcbiAgICApXG4gIH0pXG5cbiAgaXQoXCJyZXR1cm5zIHByb2ZpbGUgd2hlbiBvbmx5IHBhdGggaXMgcHJvdmlkZWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB7XG4gICAgICBuYW1lOiBcInRlc3RcIixcbiAgICB9XG5cbiAgICBjb25zdCBwcm9maWxlID0gYXdhaXQgYXNzZXJ0UHJvZmlsZShkZXNjcmlwdG9yLCB7XG4gICAgICBwYXRoOiBcImN1c3RvbS1wcm9maWxlLmpzb25cIixcbiAgICB9KVxuXG4gICAgZXhwZWN0KHByb2ZpbGUpLnRvRXF1YWwoZGVzY3JpcHRvcilcbiAgfSlcblxuICBpdChcInJldHVybnMgcHJvZmlsZSB3aGVuIG9ubHkgdHlwZSBpcyBwcm92aWRlZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIG5hbWU6IFwidGVzdFwiLFxuICAgIH1cblxuICAgIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCBhc3NlcnRQcm9maWxlKGRlc2NyaXB0b3IsIHtcbiAgICAgIHR5cGU6IFwicGFja2FnZVwiLFxuICAgIH0pXG5cbiAgICBleHBlY3QocHJvZmlsZSkudG9FcXVhbChkZXNjcmlwdG9yKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBwcm9maWxlIHdoZW4gZGVzY3JpcHRvciBleHRlbmRzIG9mZmljaWFsIHByb2ZpbGUgdmlhIGFsbE9mXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgICBhbGxPZjogW1wiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMS4wL2RhdGFwYWNrYWdlLmpzb25cIl0sXG4gICAgfVxuXG4gICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IGFzc2VydFByb2ZpbGUoZGVzY3JpcHRvciwge1xuICAgICAgcGF0aDogXCJjdXN0b20tcHJvZmlsZS5qc29uXCIsXG4gICAgICB0eXBlOiBcInBhY2thZ2VcIixcbiAgICB9KVxuXG4gICAgZXhwZWN0KHByb2ZpbGUpLnRvRXF1YWwoZGVzY3JpcHRvcilcbiAgfSlcblxuICBpdChcInRocm93cyBlcnJvciB3aGVuIGN1c3RvbSBwcm9maWxlIGRvZXMgbm90IGV4dGVuZCBtYXRjaGluZyBvZmZpY2lhbCBwcm9maWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgICBhbGxPZjogW1wiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMS4wL3RhYmxlc2NoZW1hLmpzb25cIl0sXG4gICAgfVxuXG4gICAgYXdhaXQgZXhwZWN0KFxuICAgICAgYXNzZXJ0UHJvZmlsZShkZXNjcmlwdG9yLCB7XG4gICAgICAgIHBhdGg6IFwiY3VzdG9tLXByb2ZpbGUuanNvblwiLFxuICAgICAgICB0eXBlOiBcInBhY2thZ2VcIixcbiAgICAgIH0pLFxuICAgICkucmVqZWN0cy50b1Rocm93KFwiUHJvZmlsZSBhdCBwYXRoIGN1c3RvbS1wcm9maWxlLmpzb24gaXMgaW52YWxpZFwiKVxuICB9KVxuXG4gIGl0KFwidmFsaWRhdGVzIGRpZmZlcmVudCBwcm9maWxlIHR5cGVzIGNvcnJlY3RseVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvckRpYWxlY3QgPSB7XG4gICAgICBkZWxpbWl0ZXI6IFwiLFwiLFxuICAgIH1cblxuICAgIGNvbnN0IHByb2ZpbGVEaWFsZWN0ID0gYXdhaXQgYXNzZXJ0UHJvZmlsZShkZXNjcmlwdG9yRGlhbGVjdCwge1xuICAgICAgcGF0aDogXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8xLjAvdGFibGVkaWFsZWN0Lmpzb25cIixcbiAgICAgIHR5cGU6IFwiZGlhbGVjdFwiLFxuICAgIH0pXG5cbiAgICBleHBlY3QocHJvZmlsZURpYWxlY3QpLnRvRXF1YWwoZGVzY3JpcHRvckRpYWxlY3QpXG5cbiAgICBjb25zdCBkZXNjcmlwdG9yUmVzb3VyY2UgPSB7XG4gICAgICBuYW1lOiBcInRlc3QtcmVzb3VyY2VcIixcbiAgICB9XG5cbiAgICBjb25zdCBwcm9maWxlUmVzb3VyY2UgPSBhd2FpdCBhc3NlcnRQcm9maWxlKGRlc2NyaXB0b3JSZXNvdXJjZSwge1xuICAgICAgcGF0aDogXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8xLjAvZGF0YXJlc291cmNlLmpzb25cIixcbiAgICAgIHR5cGU6IFwicmVzb3VyY2VcIixcbiAgICB9KVxuXG4gICAgZXhwZWN0KHByb2ZpbGVSZXNvdXJjZSkudG9FcXVhbChkZXNjcmlwdG9yUmVzb3VyY2UpXG5cbiAgICBjb25zdCBkZXNjcmlwdG9yU2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbXSxcbiAgICB9XG5cbiAgICBjb25zdCBwcm9maWxlU2NoZW1hID0gYXdhaXQgYXNzZXJ0UHJvZmlsZShkZXNjcmlwdG9yU2NoZW1hLCB7XG4gICAgICBwYXRoOiBcImh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzEuMC90YWJsZXNjaGVtYS5qc29uXCIsXG4gICAgICB0eXBlOiBcInNjaGVtYVwiLFxuICAgIH0pXG5cbiAgICBleHBlY3QocHJvZmlsZVNjaGVtYSkudG9FcXVhbChkZXNjcmlwdG9yU2NoZW1hKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { validateDescriptor } from "./validate.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9maWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgUHJvZmlsZSB9IGZyb20gXCIuL1Byb2ZpbGUudHNcIlxuZXhwb3J0IHsgdmFsaWRhdGVEZXNjcmlwdG9yIH0gZnJvbSBcIi4vdmFsaWRhdGUudHNcIlxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { loadJsonSchema } from "../json/index.js";
|
|
2
|
+
import { assertProfile } from "./assert.js";
|
|
3
|
+
import { profileRegistry } from "./registry.js";
|
|
4
|
+
export async function loadProfile(path, options) {
|
|
5
|
+
const profile = profileRegistry.find(profile => profile.path === path)?.profile;
|
|
6
|
+
if (profile) {
|
|
7
|
+
return profile;
|
|
8
|
+
}
|
|
9
|
+
const jsonSchema = await loadJsonSchema(path, { onlyRemote: true });
|
|
10
|
+
return await assertProfile(jsonSchema, { path, type: options?.type });
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2ZpbGUvbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRS9DLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixJQUFZLEVBQ1osT0FBZ0M7SUFFaEMsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFBO0lBQy9FLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDbkUsT0FBTyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkSnNvblNjaGVtYSB9IGZyb20gXCIuLi9qc29uL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgUHJvZmlsZVR5cGUgfSBmcm9tIFwiLi9Qcm9maWxlLnRzXCJcbmltcG9ydCB7IGFzc2VydFByb2ZpbGUgfSBmcm9tIFwiLi9hc3NlcnQudHNcIlxuaW1wb3J0IHsgcHJvZmlsZVJlZ2lzdHJ5IH0gZnJvbSBcIi4vcmVnaXN0cnkudHNcIlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFByb2ZpbGUoXG4gIHBhdGg6IHN0cmluZyxcbiAgb3B0aW9ucz86IHsgdHlwZT86IFByb2ZpbGVUeXBlIH0sXG4pIHtcbiAgY29uc3QgcHJvZmlsZSA9IHByb2ZpbGVSZWdpc3RyeS5maW5kKHByb2ZpbGUgPT4gcHJvZmlsZS5wYXRoID09PSBwYXRoKT8ucHJvZmlsZVxuICBpZiAocHJvZmlsZSkge1xuICAgIHJldHVybiBwcm9maWxlXG4gIH1cblxuICBjb25zdCBqc29uU2NoZW1hID0gYXdhaXQgbG9hZEpzb25TY2hlbWEocGF0aCwgeyBvbmx5UmVtb3RlOiB0cnVlIH0pXG4gIHJldHVybiBhd2FpdCBhc3NlcnRQcm9maWxlKGpzb25TY2hlbWEsIHsgcGF0aCwgdHlwZTogb3B0aW9ucz8udHlwZSB9KVxufVxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import dialect_1_0 from "../assets/dialect-1.0.json" with { type: "json" };
|
|
2
|
+
import dialect_2_0 from "../assets/dialect-2.0.json" with { type: "json" };
|
|
3
|
+
import package_1_0 from "../assets/package-1.0.json" with { type: "json" };
|
|
4
|
+
import package_2_0 from "../assets/package-2.0.json" with { type: "json" };
|
|
5
|
+
import resource_1_0 from "../assets/resource-1.0.json" with { type: "json" };
|
|
6
|
+
import resource_2_0 from "../assets/resource-2.0.json" with { type: "json" };
|
|
7
|
+
import schema_1_0 from "../assets/schema-1.0.json" with { type: "json" };
|
|
8
|
+
import schema_2_0 from "../assets/schema-2.0.json" with { type: "json" };
|
|
9
|
+
export const profileRegistry = [
|
|
10
|
+
{
|
|
11
|
+
type: "dialect",
|
|
12
|
+
path: "https://specs.frictionlessdata.io/schemas/csv-dialect.json",
|
|
13
|
+
version: "1.0",
|
|
14
|
+
profile: dialect_1_0,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
type: "dialect",
|
|
18
|
+
path: "https://datapackage.org/profiles/1.0/tabledialect.json",
|
|
19
|
+
version: "1.0",
|
|
20
|
+
profile: dialect_1_0,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: "dialect",
|
|
24
|
+
path: "https://datapackage.org/profiles/2.0/tabledialect.json",
|
|
25
|
+
version: "2.0",
|
|
26
|
+
profile: dialect_2_0,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: "package",
|
|
30
|
+
path: "https://specs.frictionlessdata.io/schemas/data-package.json",
|
|
31
|
+
version: "1.0",
|
|
32
|
+
profile: package_1_0,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
type: "package",
|
|
36
|
+
path: "https://datapackage.org/profiles/1.0/datapackage.json",
|
|
37
|
+
version: "1.0",
|
|
38
|
+
profile: package_1_0,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: "package",
|
|
42
|
+
path: "https://datapackage.org/profiles/2.0/datapackage.json",
|
|
43
|
+
version: "2.0",
|
|
44
|
+
profile: package_2_0,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: "resource",
|
|
48
|
+
path: "https://specs.frictionlessdata.io/schemas/data-resource.json",
|
|
49
|
+
version: "1.0",
|
|
50
|
+
profile: resource_1_0,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "resource",
|
|
54
|
+
path: "https://datapackage.org/profiles/1.0/dataresource.json",
|
|
55
|
+
version: "1.0",
|
|
56
|
+
profile: resource_1_0,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: "resource",
|
|
60
|
+
path: "https://datapackage.org/profiles/2.0/dataresource.json",
|
|
61
|
+
version: "2.0",
|
|
62
|
+
profile: resource_2_0,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
type: "schema",
|
|
66
|
+
path: "https://specs.frictionlessdata.io/schemas/table-schema.json",
|
|
67
|
+
version: "1.0",
|
|
68
|
+
profile: schema_1_0,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: "schema",
|
|
72
|
+
path: "https://datapackage.org/profiles/1.0/tableschema.json",
|
|
73
|
+
version: "1.0",
|
|
74
|
+
profile: schema_1_0,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: "schema",
|
|
78
|
+
path: "https://datapackage.org/profiles/2.0/tableschema.json",
|
|
79
|
+
version: "2.0",
|
|
80
|
+
profile: schema_2_0,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9maWxlL3JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sV0FBVyxNQUFNLDRCQUE0QixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzFFLE9BQU8sV0FBVyxNQUFNLDRCQUE0QixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzFFLE9BQU8sV0FBVyxNQUFNLDRCQUE0QixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzFFLE9BQU8sV0FBVyxNQUFNLDRCQUE0QixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzFFLE9BQU8sWUFBWSxNQUFNLDZCQUE2QixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzVFLE9BQU8sWUFBWSxNQUFNLDZCQUE2QixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzVFLE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQ3hFLE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDLE9BQU8sSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBR3hFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBb0I7SUFDOUM7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLElBQUksRUFBRSw0REFBNEQ7UUFDbEUsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsV0FBVztLQUNyQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixJQUFJLEVBQUUsd0RBQXdEO1FBQzlELE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLFdBQVc7S0FDckI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLHdEQUF3RDtRQUM5RCxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxXQUFXO0tBQ3JCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsU0FBUztRQUNmLElBQUksRUFBRSw2REFBNkQ7UUFDbkUsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsV0FBVztLQUNyQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixJQUFJLEVBQUUsdURBQXVEO1FBQzdELE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLFdBQVc7S0FDckI7SUFDRDtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLHVEQUF1RDtRQUM3RCxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxXQUFXO0tBQ3JCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsVUFBVTtRQUNoQixJQUFJLEVBQUUsOERBQThEO1FBQ3BFLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLFlBQVk7S0FDdEI7SUFDRDtRQUNFLElBQUksRUFBRSxVQUFVO1FBQ2hCLElBQUksRUFBRSx3REFBd0Q7UUFDOUQsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsWUFBWTtLQUN0QjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFVBQVU7UUFDaEIsSUFBSSxFQUFFLHdEQUF3RDtRQUM5RCxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxZQUFZO0tBQ3RCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSw2REFBNkQ7UUFDbkUsT0FBTyxFQUFFLEtBQUs7UUFDZCxPQUFPLEVBQUUsVUFBVTtLQUNwQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsdURBQXVEO1FBQzdELE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLFVBQVU7S0FDcEI7SUFDRDtRQUNFLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLHVEQUF1RDtRQUM3RCxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxVQUFVO0tBQ3BCO0NBQ0YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkaWFsZWN0XzFfMCBmcm9tIFwiLi4vYXNzZXRzL2RpYWxlY3QtMS4wLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfVxuaW1wb3J0IGRpYWxlY3RfMl8wIGZyb20gXCIuLi9hc3NldHMvZGlhbGVjdC0yLjAuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9XG5pbXBvcnQgcGFja2FnZV8xXzAgZnJvbSBcIi4uL2Fzc2V0cy9wYWNrYWdlLTEuMC5qc29uXCIgd2l0aCB7IHR5cGU6IFwianNvblwiIH1cbmltcG9ydCBwYWNrYWdlXzJfMCBmcm9tIFwiLi4vYXNzZXRzL3BhY2thZ2UtMi4wLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfVxuaW1wb3J0IHJlc291cmNlXzFfMCBmcm9tIFwiLi4vYXNzZXRzL3Jlc291cmNlLTEuMC5qc29uXCIgd2l0aCB7IHR5cGU6IFwianNvblwiIH1cbmltcG9ydCByZXNvdXJjZV8yXzAgZnJvbSBcIi4uL2Fzc2V0cy9yZXNvdXJjZS0yLjAuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9XG5pbXBvcnQgc2NoZW1hXzFfMCBmcm9tIFwiLi4vYXNzZXRzL3NjaGVtYS0xLjAuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9XG5pbXBvcnQgc2NoZW1hXzJfMCBmcm9tIFwiLi4vYXNzZXRzL3NjaGVtYS0yLjAuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9XG5pbXBvcnQgdHlwZSB7IFByb2ZpbGVSZWdpc3RyeSB9IGZyb20gXCIuL1Byb2ZpbGUudHNcIlxuXG5leHBvcnQgY29uc3QgcHJvZmlsZVJlZ2lzdHJ5OiBQcm9maWxlUmVnaXN0cnkgPSBbXG4gIHtcbiAgICB0eXBlOiBcImRpYWxlY3RcIixcbiAgICBwYXRoOiBcImh0dHBzOi8vc3BlY3MuZnJpY3Rpb25sZXNzZGF0YS5pby9zY2hlbWFzL2Nzdi1kaWFsZWN0Lmpzb25cIixcbiAgICB2ZXJzaW9uOiBcIjEuMFwiLFxuICAgIHByb2ZpbGU6IGRpYWxlY3RfMV8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJkaWFsZWN0XCIsXG4gICAgcGF0aDogXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8xLjAvdGFibGVkaWFsZWN0Lmpzb25cIixcbiAgICB2ZXJzaW9uOiBcIjEuMFwiLFxuICAgIHByb2ZpbGU6IGRpYWxlY3RfMV8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJkaWFsZWN0XCIsXG4gICAgcGF0aDogXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8yLjAvdGFibGVkaWFsZWN0Lmpzb25cIixcbiAgICB2ZXJzaW9uOiBcIjIuMFwiLFxuICAgIHByb2ZpbGU6IGRpYWxlY3RfMl8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJwYWNrYWdlXCIsXG4gICAgcGF0aDogXCJodHRwczovL3NwZWNzLmZyaWN0aW9ubGVzc2RhdGEuaW8vc2NoZW1hcy9kYXRhLXBhY2thZ2UuanNvblwiLFxuICAgIHZlcnNpb246IFwiMS4wXCIsXG4gICAgcHJvZmlsZTogcGFja2FnZV8xXzAsXG4gIH0sXG4gIHtcbiAgICB0eXBlOiBcInBhY2thZ2VcIixcbiAgICBwYXRoOiBcImh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzEuMC9kYXRhcGFja2FnZS5qc29uXCIsXG4gICAgdmVyc2lvbjogXCIxLjBcIixcbiAgICBwcm9maWxlOiBwYWNrYWdlXzFfMCxcbiAgfSxcbiAge1xuICAgIHR5cGU6IFwicGFja2FnZVwiLFxuICAgIHBhdGg6IFwiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMi4wL2RhdGFwYWNrYWdlLmpzb25cIixcbiAgICB2ZXJzaW9uOiBcIjIuMFwiLFxuICAgIHByb2ZpbGU6IHBhY2thZ2VfMl8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJyZXNvdXJjZVwiLFxuICAgIHBhdGg6IFwiaHR0cHM6Ly9zcGVjcy5mcmljdGlvbmxlc3NkYXRhLmlvL3NjaGVtYXMvZGF0YS1yZXNvdXJjZS5qc29uXCIsXG4gICAgdmVyc2lvbjogXCIxLjBcIixcbiAgICBwcm9maWxlOiByZXNvdXJjZV8xXzAsXG4gIH0sXG4gIHtcbiAgICB0eXBlOiBcInJlc291cmNlXCIsXG4gICAgcGF0aDogXCJodHRwczovL2RhdGFwYWNrYWdlLm9yZy9wcm9maWxlcy8xLjAvZGF0YXJlc291cmNlLmpzb25cIixcbiAgICB2ZXJzaW9uOiBcIjEuMFwiLFxuICAgIHByb2ZpbGU6IHJlc291cmNlXzFfMCxcbiAgfSxcbiAge1xuICAgIHR5cGU6IFwicmVzb3VyY2VcIixcbiAgICBwYXRoOiBcImh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzIuMC9kYXRhcmVzb3VyY2UuanNvblwiLFxuICAgIHZlcnNpb246IFwiMi4wXCIsXG4gICAgcHJvZmlsZTogcmVzb3VyY2VfMl8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJzY2hlbWFcIixcbiAgICBwYXRoOiBcImh0dHBzOi8vc3BlY3MuZnJpY3Rpb25sZXNzZGF0YS5pby9zY2hlbWFzL3RhYmxlLXNjaGVtYS5qc29uXCIsXG4gICAgdmVyc2lvbjogXCIxLjBcIixcbiAgICBwcm9maWxlOiBzY2hlbWFfMV8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJzY2hlbWFcIixcbiAgICBwYXRoOiBcImh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzEuMC90YWJsZXNjaGVtYS5qc29uXCIsXG4gICAgdmVyc2lvbjogXCIxLjBcIixcbiAgICBwcm9maWxlOiBzY2hlbWFfMV8wLFxuICB9LFxuICB7XG4gICAgdHlwZTogXCJzY2hlbWFcIixcbiAgICBwYXRoOiBcImh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3Byb2ZpbGVzLzIuMC90YWJsZXNjaGVtYS5qc29uXCIsXG4gICAgdmVyc2lvbjogXCIyLjBcIixcbiAgICBwcm9maWxlOiBzY2hlbWFfMl8wLFxuICB9LFxuXVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { loadProfile } from "./load.js";
|
|
2
|
+
export async function resolveProfile(profile) {
|
|
3
|
+
if (typeof profile !== "string") {
|
|
4
|
+
return profile;
|
|
5
|
+
}
|
|
6
|
+
return await loadProfile(profile);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Byb2ZpbGUvcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRXZDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLE9BQXlCO0lBQzVELElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELE9BQU8sTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvZmlsZSB9IGZyb20gXCIuL1Byb2ZpbGUudHNcIlxuaW1wb3J0IHsgbG9hZFByb2ZpbGUgfSBmcm9tIFwiLi9sb2FkLnRzXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVQcm9maWxlKHByb2ZpbGU6IFByb2ZpbGUgfCBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBwcm9maWxlICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHByb2ZpbGVcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBsb2FkUHJvZmlsZShwcm9maWxlKVxufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Descriptor } from "../descriptor/index.ts";
|
|
2
|
+
import type { MetadataError } from "../error/index.ts";
|
|
3
|
+
import type { Profile } from "./Profile.ts";
|
|
4
|
+
export declare function validateDescriptor(descriptor: Descriptor, options: {
|
|
5
|
+
profile: Profile | string;
|
|
6
|
+
}): Promise<{
|
|
7
|
+
errors: MetadataError[];
|
|
8
|
+
valid: boolean;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { inspectJsonValue } from "../json/index.js";
|
|
2
|
+
import { createReport } from "../report/index.js";
|
|
3
|
+
import { resolveProfile } from "./resolve.js";
|
|
4
|
+
export async function validateDescriptor(descriptor, options) {
|
|
5
|
+
const profile = await resolveProfile(options.profile);
|
|
6
|
+
const errors = await inspectJsonValue(descriptor, { jsonSchema: profile });
|
|
7
|
+
return createReport(errors.map(error => ({
|
|
8
|
+
type: "metadata",
|
|
9
|
+
...error,
|
|
10
|
+
})));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wcm9maWxlL3ZhbGlkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTdDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLFVBQXNCLEVBQ3RCLE9BRUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUUxRSxPQUFPLFlBQVksQ0FDakIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsR0FBRyxLQUFLO0tBQ1QsQ0FBQyxDQUFDLENBQ0osQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERlc2NyaXB0b3IgfSBmcm9tIFwiLi4vZGVzY3JpcHRvci9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IE1ldGFkYXRhRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvaW5kZXgudHNcIlxuaW1wb3J0IHsgaW5zcGVjdEpzb25WYWx1ZSB9IGZyb20gXCIuLi9qc29uL2luZGV4LnRzXCJcbmltcG9ydCB7IGNyZWF0ZVJlcG9ydCB9IGZyb20gXCIuLi9yZXBvcnQvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBQcm9maWxlIH0gZnJvbSBcIi4vUHJvZmlsZS50c1wiXG5pbXBvcnQgeyByZXNvbHZlUHJvZmlsZSB9IGZyb20gXCIuL3Jlc29sdmUudHNcIlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVEZXNjcmlwdG9yKFxuICBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLFxuICBvcHRpb25zOiB7XG4gICAgcHJvZmlsZTogUHJvZmlsZSB8IHN0cmluZ1xuICB9LFxuKSB7XG4gIGNvbnN0IHByb2ZpbGUgPSBhd2FpdCByZXNvbHZlUHJvZmlsZShvcHRpb25zLnByb2ZpbGUpXG4gIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUoZGVzY3JpcHRvciwgeyBqc29uU2NoZW1hOiBwcm9maWxlIH0pXG5cbiAgcmV0dXJuIGNyZWF0ZVJlcG9ydDxNZXRhZGF0YUVycm9yPihcbiAgICBlcnJvcnMubWFwKGVycm9yID0+ICh7XG4gICAgICB0eXBlOiBcIm1ldGFkYXRhXCIsXG4gICAgICAuLi5lcnJvcixcbiAgICB9KSksXG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcmVwb3J0L1JlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGcmljdGlvbmxlc3NFcnJvciB9IGZyb20gXCIuLi9lcnJvci9pbmRleC50c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0PFQgZXh0ZW5kcyBGcmljdGlvbmxlc3NFcnJvciA9IEZyaWN0aW9ubGVzc0Vycm9yPiB7XG4gIHZhbGlkOiBib29sZWFuXG4gIGVycm9yczogVFtdXG59XG4iXX0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export function createReport(errors, options) {
|
|
2
|
+
errors = (errors ?? []).slice(0, options?.maxErrors);
|
|
3
|
+
const valid = errors.length === 0;
|
|
4
|
+
return { errors, valid };
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcmVwb3J0L2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsWUFBWSxDQUMxQixNQUFZLEVBQ1osT0FBZ0M7SUFFaEMsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO0lBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUE7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRnJpY3Rpb25sZXNzRXJyb3IgfSBmcm9tIFwiLi4vZXJyb3IvaW5kZXgudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVwb3J0PFQgPSBGcmljdGlvbmxlc3NFcnJvcj4oXG4gIGVycm9ycz86IFRbXSxcbiAgb3B0aW9ucz86IHsgbWF4RXJyb3JzPzogbnVtYmVyIH0sXG4pIHtcbiAgZXJyb3JzID0gKGVycm9ycyA/PyBbXSkuc2xpY2UoMCwgb3B0aW9ucz8ubWF4RXJyb3JzKVxuICBjb25zdCB2YWxpZCA9IGVycm9ycy5sZW5ndGggPT09IDBcblxuICByZXR1cm4geyBlcnJvcnMsIHZhbGlkIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { createReport } from "./create.js";
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXBvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgUmVwb3J0IH0gZnJvbSBcIi4vUmVwb3J0LnRzXCJcbmV4cG9ydCB7IGNyZWF0ZVJlcG9ydCB9IGZyb20gXCIuL2NyZWF0ZS50c1wiXG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* License information
|
|
3
|
+
*/
|
|
4
|
+
export interface License {
|
|
5
|
+
/**
|
|
6
|
+
* The name of the license
|
|
7
|
+
* @example "MIT", "Apache-2.0"
|
|
8
|
+
*/
|
|
9
|
+
name?: string;
|
|
10
|
+
/**
|
|
11
|
+
* A URL to the license text
|
|
12
|
+
*/
|
|
13
|
+
path?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Human-readable title of the license
|
|
16
|
+
*/
|
|
17
|
+
title?: string;
|
|
18
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGljZW5zZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Jlc291cmNlL0xpY2Vuc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTGljZW5zZSBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpY2Vuc2Uge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxpY2Vuc2VcbiAgICogQGV4YW1wbGUgXCJNSVRcIiwgXCJBcGFjaGUtMi4wXCJcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcblxuICAvKipcbiAgICogQSBVUkwgdG8gdGhlIGxpY2Vuc2UgdGV4dFxuICAgKi9cbiAgcGF0aD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSB0aXRsZSBvZiB0aGUgbGljZW5zZVxuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { Dialect } from "../dialect/index.ts";
|
|
2
|
+
import type { Metadata } from "../metadata/index.ts";
|
|
3
|
+
import type { Profile } from "../profile/index.ts";
|
|
4
|
+
import type { Schema } from "../schema/index.ts";
|
|
5
|
+
import type { License } from "./License.ts";
|
|
6
|
+
import type { Source } from "./Source.ts";
|
|
7
|
+
/**
|
|
8
|
+
* Data Resource interface built on top of the Data Package standard and Polars DataFrames
|
|
9
|
+
* @see https://datapackage.org/standard/data-resource/
|
|
10
|
+
*/
|
|
11
|
+
export interface Resource extends Metadata {
|
|
12
|
+
/**
|
|
13
|
+
* JSON schema profile URL for validation
|
|
14
|
+
*/
|
|
15
|
+
$schema?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Unique resource identifier
|
|
18
|
+
* Should use lowercase alphanumeric characters, periods, hyphens, and underscores
|
|
19
|
+
*/
|
|
20
|
+
name: string;
|
|
21
|
+
/**
|
|
22
|
+
* A reference to the data itself, can be a path URL or array of paths
|
|
23
|
+
* Either path or data must be provided
|
|
24
|
+
*/
|
|
25
|
+
path?: string | string[];
|
|
26
|
+
/**
|
|
27
|
+
* Inline data content instead of referencing an external file
|
|
28
|
+
* Either path or data must be provided
|
|
29
|
+
*/
|
|
30
|
+
data?: unknown | unknown[][] | Record<string, unknown>[];
|
|
31
|
+
/**
|
|
32
|
+
* The resource type
|
|
33
|
+
* @example "table"
|
|
34
|
+
*/
|
|
35
|
+
type?: "table";
|
|
36
|
+
/**
|
|
37
|
+
* The file format
|
|
38
|
+
* @example "csv", "json", "xlsx"
|
|
39
|
+
*/
|
|
40
|
+
format?: string;
|
|
41
|
+
/**
|
|
42
|
+
* The media type of the resource
|
|
43
|
+
* @example "text/csv", "application/json"
|
|
44
|
+
*/
|
|
45
|
+
mediatype?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Character encoding of the resource
|
|
48
|
+
* @default "utf-8"
|
|
49
|
+
*/
|
|
50
|
+
encoding?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Human-readable title
|
|
53
|
+
*/
|
|
54
|
+
title?: string;
|
|
55
|
+
/**
|
|
56
|
+
* A description of the resource
|
|
57
|
+
*/
|
|
58
|
+
description?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Size of the file in bytes
|
|
61
|
+
*/
|
|
62
|
+
bytes?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Hash of the resource data
|
|
65
|
+
*/
|
|
66
|
+
hash?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Data sources
|
|
69
|
+
*/
|
|
70
|
+
sources?: Source[];
|
|
71
|
+
/**
|
|
72
|
+
* License information
|
|
73
|
+
*/
|
|
74
|
+
licenses?: License[];
|
|
75
|
+
/**
|
|
76
|
+
* Table dialect specification
|
|
77
|
+
* Describes delimiters, quote characters, etc.
|
|
78
|
+
* @see https://datapackage.org/standard/table-dialect/
|
|
79
|
+
*/
|
|
80
|
+
dialect?: string | Dialect;
|
|
81
|
+
/**
|
|
82
|
+
* Schema for the tabular data
|
|
83
|
+
* Describes fields in the table, constraints, etc.
|
|
84
|
+
* @see https://datapackage.org/standard/table-schema/
|
|
85
|
+
*/
|
|
86
|
+
schema?: string | Schema;
|
|
87
|
+
/**
|
|
88
|
+
* Schema for the json data
|
|
89
|
+
* Describes fields in the json, constraints, etc.
|
|
90
|
+
* @see https://json-schema.org/
|
|
91
|
+
*/
|
|
92
|
+
jsonSchema?: string | Profile;
|
|
93
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9yZXNvdXJjZS9SZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaWFsZWN0IH0gZnJvbSBcIi4uL2RpYWxlY3QvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFByb2ZpbGUgfSBmcm9tIFwiLi4vcHJvZmlsZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFNjaGVtYSB9IGZyb20gXCIuLi9zY2hlbWEvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBMaWNlbnNlIH0gZnJvbSBcIi4vTGljZW5zZS50c1wiXG5pbXBvcnQgdHlwZSB7IFNvdXJjZSB9IGZyb20gXCIuL1NvdXJjZS50c1wiXG5cbi8qKlxuICogRGF0YSBSZXNvdXJjZSBpbnRlcmZhY2UgYnVpbHQgb24gdG9wIG9mIHRoZSBEYXRhIFBhY2thZ2Ugc3RhbmRhcmQgYW5kIFBvbGFycyBEYXRhRnJhbWVzXG4gKiBAc2VlIGh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3N0YW5kYXJkL2RhdGEtcmVzb3VyY2UvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2UgZXh0ZW5kcyBNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBKU09OIHNjaGVtYSBwcm9maWxlIFVSTCBmb3IgdmFsaWRhdGlvblxuICAgKi9cbiAgJHNjaGVtYT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgcmVzb3VyY2UgaWRlbnRpZmllclxuICAgKiBTaG91bGQgdXNlIGxvd2VyY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgcGVyaW9kcywgaHlwaGVucywgYW5kIHVuZGVyc2NvcmVzXG4gICAqL1xuICBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogQSByZWZlcmVuY2UgdG8gdGhlIGRhdGEgaXRzZWxmLCBjYW4gYmUgYSBwYXRoIFVSTCBvciBhcnJheSBvZiBwYXRoc1xuICAgKiBFaXRoZXIgcGF0aCBvciBkYXRhIG11c3QgYmUgcHJvdmlkZWRcbiAgICovXG4gIHBhdGg/OiBzdHJpbmcgfCBzdHJpbmdbXVxuXG4gIC8qKlxuICAgKiBJbmxpbmUgZGF0YSBjb250ZW50IGluc3RlYWQgb2YgcmVmZXJlbmNpbmcgYW4gZXh0ZXJuYWwgZmlsZVxuICAgKiBFaXRoZXIgcGF0aCBvciBkYXRhIG11c3QgYmUgcHJvdmlkZWRcbiAgICovXG4gIGRhdGE/OiB1bmtub3duIHwgdW5rbm93bltdW10gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdXG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSB0eXBlXG4gICAqIEBleGFtcGxlIFwidGFibGVcIlxuICAgKi9cbiAgdHlwZT86IFwidGFibGVcIlxuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSBmb3JtYXRcbiAgICogQGV4YW1wbGUgXCJjc3ZcIiwgXCJqc29uXCIsIFwieGxzeFwiXG4gICAqL1xuICBmb3JtYXQ/OiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIG1lZGlhIHR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqIEBleGFtcGxlIFwidGV4dC9jc3ZcIiwgXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICovXG4gIG1lZGlhdHlwZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBDaGFyYWN0ZXIgZW5jb2Rpbmcgb2YgdGhlIHJlc291cmNlXG4gICAqIEBkZWZhdWx0IFwidXRmLThcIlxuICAgKi9cbiAgZW5jb2Rpbmc/OiBzdHJpbmdcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgdGl0bGVcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBTaXplIG9mIHRoZSBmaWxlIGluIGJ5dGVzXG4gICAqL1xuICBieXRlcz86IG51bWJlclxuXG4gIC8qKlxuICAgKiBIYXNoIG9mIHRoZSByZXNvdXJjZSBkYXRhXG4gICAqL1xuICBoYXNoPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIERhdGEgc291cmNlc1xuICAgKi9cbiAgc291cmNlcz86IFNvdXJjZVtdXG5cbiAgLyoqXG4gICAqIExpY2Vuc2UgaW5mb3JtYXRpb25cbiAgICovXG4gIGxpY2Vuc2VzPzogTGljZW5zZVtdXG5cbiAgLyoqXG4gICAqIFRhYmxlIGRpYWxlY3Qgc3BlY2lmaWNhdGlvblxuICAgKiBEZXNjcmliZXMgZGVsaW1pdGVycywgcXVvdGUgY2hhcmFjdGVycywgZXRjLlxuICAgKiBAc2VlIGh0dHBzOi8vZGF0YXBhY2thZ2Uub3JnL3N0YW5kYXJkL3RhYmxlLWRpYWxlY3QvXG4gICAqL1xuICBkaWFsZWN0Pzogc3RyaW5nIHwgRGlhbGVjdFxuXG4gIC8qKlxuICAgKiBTY2hlbWEgZm9yIHRoZSB0YWJ1bGFyIGRhdGFcbiAgICogRGVzY3JpYmVzIGZpZWxkcyBpbiB0aGUgdGFibGUsIGNvbnN0cmFpbnRzLCBldGMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvc3RhbmRhcmQvdGFibGUtc2NoZW1hL1xuICAgKi9cbiAgc2NoZW1hPzogc3RyaW5nIHwgU2NoZW1hXG5cbiAgLyoqXG4gICAqIFNjaGVtYSBmb3IgdGhlIGpzb24gZGF0YVxuICAgKiBEZXNjcmliZXMgZmllbGRzIGluIHRoZSBqc29uLCBjb25zdHJhaW50cywgZXRjLlxuICAgKiBAc2VlIGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL1xuICAgKi9cbiAganNvblNjaGVtYT86IHN0cmluZyB8IFByb2ZpbGVcbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source information
|
|
3
|
+
*/
|
|
4
|
+
export interface Source {
|
|
5
|
+
/**
|
|
6
|
+
* Human-readable title of the source
|
|
7
|
+
*/
|
|
8
|
+
title?: string;
|
|
9
|
+
/**
|
|
10
|
+
* URL or path to the source
|
|
11
|
+
*/
|
|
12
|
+
path?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Email contact for the source
|
|
15
|
+
*/
|
|
16
|
+
email?: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcmVzb3VyY2UvU291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNvdXJjZSBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZSB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSB0aXRsZSBvZiB0aGUgc291cmNlXG4gICAqL1xuICB0aXRsZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBVUkwgb3IgcGF0aCB0byB0aGUgc291cmNlXG4gICAqL1xuICBwYXRoPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEVtYWlsIGNvbnRhY3QgZm9yIHRoZSBzb3VyY2VcbiAgICovXG4gIGVtYWlsPzogc3RyaW5nXG59XG4iXX0=
|