@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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { inspectJsonValue } from "./value.js";
|
|
3
|
+
describe("inspectJsonValue", () => {
|
|
4
|
+
it("returns empty array for valid value", async () => {
|
|
5
|
+
const value = {
|
|
6
|
+
name: "test-package",
|
|
7
|
+
version: "1.0.0",
|
|
8
|
+
description: "A test package",
|
|
9
|
+
};
|
|
10
|
+
const jsonSchema = {
|
|
11
|
+
type: "object",
|
|
12
|
+
required: ["name", "version"],
|
|
13
|
+
properties: {
|
|
14
|
+
name: { type: "string" },
|
|
15
|
+
version: { type: "string" },
|
|
16
|
+
description: { type: "string" },
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
const errors = await inspectJsonValue(value, { jsonSchema });
|
|
20
|
+
expect(errors).toEqual([]);
|
|
21
|
+
});
|
|
22
|
+
it("returns validation errors for invalid value", async () => {
|
|
23
|
+
const jsonSchema = {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
name: { type: "string" },
|
|
27
|
+
version: { type: "string" },
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
const value = {
|
|
31
|
+
name: "test-package",
|
|
32
|
+
version: 123,
|
|
33
|
+
};
|
|
34
|
+
const errors = await inspectJsonValue(value, { jsonSchema });
|
|
35
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
36
|
+
expect(errors[0]?.pointer).toBe("/version");
|
|
37
|
+
expect(errors[0]?.message).toContain("string");
|
|
38
|
+
});
|
|
39
|
+
it("returns errors when required fields are missing", async () => {
|
|
40
|
+
const jsonSchema = {
|
|
41
|
+
type: "object",
|
|
42
|
+
required: ["name", "version", "required_field"],
|
|
43
|
+
properties: {
|
|
44
|
+
name: { type: "string" },
|
|
45
|
+
version: { type: "string" },
|
|
46
|
+
required_field: { type: "string" },
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
const value = {
|
|
50
|
+
name: "test-package",
|
|
51
|
+
version: "1.0.0",
|
|
52
|
+
};
|
|
53
|
+
const errors = await inspectJsonValue(value, { jsonSchema });
|
|
54
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
55
|
+
expect(errors[0]?.pointer).toBe("");
|
|
56
|
+
expect(errors[0]?.message).toContain("required_field");
|
|
57
|
+
});
|
|
58
|
+
it("validates nested objects in the value", async () => {
|
|
59
|
+
const jsonSchema = {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {
|
|
62
|
+
name: { type: "string" },
|
|
63
|
+
version: { type: "string" },
|
|
64
|
+
author: {
|
|
65
|
+
type: "object",
|
|
66
|
+
properties: {
|
|
67
|
+
name: { type: "string" },
|
|
68
|
+
email: {
|
|
69
|
+
type: "string",
|
|
70
|
+
pattern: "^[^@]+@[^@]+\\.[^@]+$",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
const value = {
|
|
77
|
+
name: "test-package",
|
|
78
|
+
version: "1.0.0",
|
|
79
|
+
author: {
|
|
80
|
+
name: "Test Author",
|
|
81
|
+
email: "invalid-email",
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
const errors = await inspectJsonValue(value, { jsonSchema });
|
|
85
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
86
|
+
expect(errors.some(error => error.pointer === "/author/email" &&
|
|
87
|
+
error.message.includes("pattern"))).toBe(true);
|
|
88
|
+
});
|
|
89
|
+
it("returns multiple errors for value with multiple issues", async () => {
|
|
90
|
+
const jsonSchema = {
|
|
91
|
+
type: "object",
|
|
92
|
+
required: ["license"],
|
|
93
|
+
additionalProperties: false,
|
|
94
|
+
properties: {
|
|
95
|
+
name: { type: "string", minLength: 3 },
|
|
96
|
+
version: { type: "string", pattern: "^\\d+\\.\\d+\\.\\d+$" },
|
|
97
|
+
license: { type: "string" },
|
|
98
|
+
description: { type: "string" },
|
|
99
|
+
keywords: {
|
|
100
|
+
type: "array",
|
|
101
|
+
items: { type: "string" },
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
const value = {
|
|
106
|
+
name: "ab",
|
|
107
|
+
version: "not-a-version",
|
|
108
|
+
description: 123,
|
|
109
|
+
keywords: ["valid", 456, "another"],
|
|
110
|
+
extra_field: "should not be here",
|
|
111
|
+
};
|
|
112
|
+
const errors = await inspectJsonValue(value, { jsonSchema });
|
|
113
|
+
expect(errors.length).toBeGreaterThan(3);
|
|
114
|
+
const errorPointers = errors.map(err => err.pointer);
|
|
115
|
+
expect(errorPointers).toContain("");
|
|
116
|
+
expect(errorPointers).toContain("/name");
|
|
117
|
+
expect(errorPointers).toContain("/version");
|
|
118
|
+
expect(errorPointers).toContain("/description");
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2pzb24vaW5zcGVjdC92YWx1ZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0MsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxFQUFFLENBQUMscUNBQXFDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbkQsTUFBTSxLQUFLLEdBQUc7WUFDWixJQUFJLEVBQUUsY0FBYztZQUNwQixPQUFPLEVBQUUsT0FBTztZQUNoQixXQUFXLEVBQUUsZ0JBQWdCO1NBQzlCLENBQUE7UUFFRCxNQUFNLFVBQVUsR0FBRztZQUNqQixJQUFJLEVBQUUsUUFBUTtZQUNkLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7WUFDN0IsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQ3hCLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7Z0JBQzNCLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7YUFDaEM7U0FDRixDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBRTVELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNkNBQTZDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDM0QsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLFFBQVE7WUFDZCxVQUFVLEVBQUU7Z0JBQ1YsSUFB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Q0FBQTtRQUU1RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUV4QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN4QyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzNDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDakQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBpbnNwZWN0SnNvblZhbHVlIH0gZnJvbSBcIi4vdmFsdWUudHNcIlxuXG5kZXNjcmliZShcImluc3BlY3RKc29uVmFsdWVcIiwgKCkgPT4ge1xuICBpdChcInJldHVybnMgZW1wdHkgYXJyYXkgZm9yIHZhbGlkIHZhbHVlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJBIHRlc3QgcGFja2FnZVwiLFxuICAgIH1cblxuICAgIGNvbnN0IGpzb25TY2hlbWEgPSB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgcmVxdWlyZWQ6IFtcIm5hbWVcIiwgXCJ2ZXJzaW9uXCJdLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgdmVyc2lvbjogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gYXdhaXQgaW5zcGVjdEpzb25WYWx1ZSh2YWx1ZSwgeyBqc29uU2NoZW1hIH0pXG5cbiAgICBleHBlY3QoZXJyb3JzKS50b0VxdWFsKFtdKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyB2YWxpZGF0aW9uIGVycm9ycyBmb3IgaW52YWxpZCB2YWx1ZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QganNvblNjaGVtYSA9IHtcbiAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB2ZXJzaW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB7XG4gICAgICBuYW1lOiBcInRlc3QtcGFja2FnZVwiLFxuICAgICAgdmVyc2lvbjogMTIzLFxuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUodmFsdWUsIHsganNvblNjaGVtYSB9KVxuXG4gICAgZXhwZWN0KGVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKVxuICAgIGV4cGVjdChlcnJvcnNbMF0/LnBvaW50ZXIpLnRvQmUoXCIvdmVyc2lvblwiKVxuICAgIGV4cGVjdChlcnJvcnNbMF0/Lm1lc3NhZ2UpLnRvQ29udGFpbihcInN0cmluZ1wiKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBlcnJvcnMgd2hlbiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmdcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGpzb25TY2hlbWEgPSB7XG4gICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgcmVxdWlyZWQ6IFtcIm5hbWVcIiwgXCJ2ZXJzaW9uXCIsIFwicmVxdWlyZWRfZmllbGRcIl0sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB2ZXJzaW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgcmVxdWlyZWRfZmllbGQ6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JzID0gYXdhaXQgaW5zcGVjdEpzb25WYWx1ZSh2YWx1ZSwgeyBqc29uU2NoZW1hIH0pXG5cbiAgICBleHBlY3QoZXJyb3JzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApXG4gICAgZXhwZWN0KGVycm9yc1swXT8ucG9pbnRlcikudG9CZShcIlwiKVxuICAgIGV4cGVjdChlcnJvcnNbMF0/Lm1lc3NhZ2UpLnRvQ29udGFpbihcInJlcXVpcmVkX2ZpZWxkXCIpXG4gIH0pXG5cbiAgaXQoXCJ2YWxpZGF0ZXMgbmVzdGVkIG9iamVjdHMgaW4gdGhlIHZhbHVlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBqc29uU2NoZW1hID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgbmFtZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIHZlcnNpb246IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBhdXRob3I6IHtcbiAgICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG5hbWU6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICAgICAgZW1haWw6IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgcGF0dGVybjogXCJeW15AXStAW15AXStcXFxcLlteQF0rJFwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1wYWNrYWdlXCIsXG4gICAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXG4gICAgICBhdXRob3I6IHtcbiAgICAgICAgbmFtZTogXCJUZXN0IEF1dGhvclwiLFxuICAgICAgICBlbWFpbDogXCJpbnZhbGlkLWVtYWlsXCIsXG4gICAgICB9LFxuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUodmFsdWUsIHsganNvblNjaGVtYSB9KVxuXG4gICAgZXhwZWN0KGVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKVxuICAgIGV4cGVjdChcbiAgICAgIGVycm9ycy5zb21lKFxuICAgICAgICBlcnJvciA9PlxuICAgICAgICAgIGVycm9yLnBvaW50ZXIgPT09IFwiL2F1dGhvci9lbWFpbFwiICYmXG4gICAgICAgICAgZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhcInBhdHRlcm5cIiksXG4gICAgICApLFxuICAgICkudG9CZSh0cnVlKVxuICB9KVxuXG4gIGl0KFwicmV0dXJucyBtdWx0aXBsZSBlcnJvcnMgZm9yIHZhbHVlIHdpdGggbXVsdGlwbGUgaXNzdWVzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBqc29uU2NoZW1hID0ge1xuICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgIHJlcXVpcmVkOiBbXCJsaWNlbnNlXCJdLFxuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBuYW1lOiB7IHR5cGU6IFwic3RyaW5nXCIsIG1pbkxlbmd0aDogMyB9LFxuICAgICAgICB2ZXJzaW9uOiB7IHR5cGU6IFwic3RyaW5nXCIsIHBhdHRlcm46IFwiXlxcXFxkK1xcXFwuXFxcXGQrXFxcXC5cXFxcZCskXCIgfSxcbiAgICAgICAgbGljZW5zZTogeyB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICB0eXBlOiBcImFycmF5XCIsXG4gICAgICAgICAgaXRlbXM6IHsgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHtcbiAgICAgIG5hbWU6IFwiYWJcIixcbiAgICAgIHZlcnNpb246IFwibm90LWEtdmVyc2lvblwiLFxuICAgICAgZGVzY3JpcHRpb246IDEyMyxcbiAgICAgIGtleXdvcmRzOiBbXCJ2YWxpZFwiLCA0NTYsIFwiYW5vdGhlclwiXSxcbiAgICAgIGV4dHJhX2ZpZWxkOiBcInNob3VsZCBub3QgYmUgaGVyZVwiLFxuICAgIH1cblxuICAgIGNvbnN0IGVycm9ycyA9IGF3YWl0IGluc3BlY3RKc29uVmFsdWUodmFsdWUsIHsganNvblNjaGVtYSB9KVxuXG4gICAgZXhwZWN0KGVycm9ycy5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigzKVxuXG4gICAgY29uc3QgZXJyb3JQb2ludGVycyA9IGVycm9ycy5tYXAoZXJyID0+IGVyci5wb2ludGVyKVxuICAgIGV4cGVjdChlcnJvclBvaW50ZXJzKS50b0NvbnRhaW4oXCJcIilcbiAgICBleHBlY3QoZXJyb3JQb2ludGVycykudG9Db250YWluKFwiL25hbWVcIilcbiAgICBleHBlY3QoZXJyb3JQb2ludGVycykudG9Db250YWluKFwiL3ZlcnNpb25cIilcbiAgICBleHBlY3QoZXJyb3JQb2ludGVycykudG9Db250YWluKFwiL2Rlc2NyaXB0aW9uXCIpXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { loadDescriptor } from "../descriptor/index.js";
|
|
2
|
+
import { cache } from "./cache.js";
|
|
3
|
+
import { assertJsonSchema } from "./assert.js";
|
|
4
|
+
export async function loadJsonSchema(path, options) {
|
|
5
|
+
let jsonSchema = cache.get(path);
|
|
6
|
+
if (!jsonSchema) {
|
|
7
|
+
const descriptor = await loadDescriptor(path, options);
|
|
8
|
+
jsonSchema = await assertJsonSchema(descriptor);
|
|
9
|
+
cache.set(path, jsonSchema);
|
|
10
|
+
}
|
|
11
|
+
return jsonSchema;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2pzb24vbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFOUMsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLElBQVksRUFDWixPQUFrQztJQUVsQyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRWhDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLFVBQVUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDdEQsVUFBVSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDL0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkRGVzY3JpcHRvciB9IGZyb20gXCIuLi9kZXNjcmlwdG9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGNhY2hlIH0gZnJvbSBcIi4vY2FjaGUudHNcIlxuaW1wb3J0IHsgYXNzZXJ0SnNvblNjaGVtYSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkSnNvblNjaGVtYShcbiAgcGF0aDogc3RyaW5nLFxuICBvcHRpb25zPzogeyBvbmx5UmVtb3RlPzogYm9vbGVhbiB9LFxuKSB7XG4gIGxldCBqc29uU2NoZW1hID0gY2FjaGUuZ2V0KHBhdGgpXG5cbiAgaWYgKCFqc29uU2NoZW1hKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGF3YWl0IGxvYWREZXNjcmlwdG9yKHBhdGgsIG9wdGlvbnMpXG4gICAganNvblNjaGVtYSA9IGF3YWl0IGFzc2VydEpzb25TY2hlbWEoZGVzY3JpcHRvcilcbiAgICBjYWNoZS5zZXQocGF0aCwganNvblNjaGVtYSlcbiAgfVxuXG4gIHJldHVybiBqc29uU2NoZW1hXG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { loadJsonSchema } from "./load.js";
|
|
2
|
+
export async function resolveJsonSchema(jsonSchema) {
|
|
3
|
+
if (!jsonSchema) {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
if (typeof jsonSchema !== "string") {
|
|
7
|
+
return jsonSchema;
|
|
8
|
+
}
|
|
9
|
+
return await loadJsonSchema(jsonSchema);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2pzb24vcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRTFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsVUFBZ0M7SUFDdEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFFRCxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sVUFBVSxDQUFBO0lBQ25CLENBQUM7SUFFRCxPQUFPLE1BQU0sY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tIFwiLi9TY2hlbWEudHNcIlxuaW1wb3J0IHsgbG9hZEpzb25TY2hlbWEgfSBmcm9tIFwiLi9sb2FkLnRzXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc29sdmVKc29uU2NoZW1hKGpzb25TY2hlbWE/OiBKc29uU2NoZW1hIHwgc3RyaW5nKSB7XG4gIGlmICghanNvblNjaGVtYSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGlmICh0eXBlb2YganNvblNjaGVtYSAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBqc29uU2NoZW1hXG4gIH1cblxuICByZXR1cm4gYXdhaXQgbG9hZEpzb25TY2hlbWEoanNvblNjaGVtYSlcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tZXRhZGF0YS9NZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIC8qKlxuICAgKiBDdXN0b20gcHJvcGVydGllc1xuICAgKi9cbiAgW2tleSBpbiBgJHtzdHJpbmd9OiR7c3RyaW5nfWBdPzogYW55XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { Metadata } from "./Metadata.ts";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9tZXRhZGF0YS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCIuL01ldGFkYXRhLnRzXCJcbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contributor information
|
|
3
|
+
*/
|
|
4
|
+
export interface Contributor {
|
|
5
|
+
/**
|
|
6
|
+
* Full name of the contributor
|
|
7
|
+
*/
|
|
8
|
+
title: string;
|
|
9
|
+
/**
|
|
10
|
+
* Email address of the contributor
|
|
11
|
+
*/
|
|
12
|
+
email?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Path to relevant contributor information
|
|
15
|
+
*/
|
|
16
|
+
path?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Role of the contributor
|
|
19
|
+
*/
|
|
20
|
+
role?: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJpYnV0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL0NvbnRyaWJ1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRyaWJ1dG9yIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJpYnV0b3Ige1xuICAvKipcbiAgICogRnVsbCBuYW1lIG9mIHRoZSBjb250cmlidXRvclxuICAgKi9cbiAgdGl0bGU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBFbWFpbCBhZGRyZXNzIG9mIHRoZSBjb250cmlidXRvclxuICAgKi9cbiAgZW1haWw/OiBzdHJpbmdcblxuICAvKipcbiAgICogUGF0aCB0byByZWxldmFudCBjb250cmlidXRvciBpbmZvcm1hdGlvblxuICAgKi9cbiAgcGF0aD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBSb2xlIG9mIHRoZSBjb250cmlidXRvclxuICAgKi9cbiAgcm9sZT86IHN0cmluZ1xufVxuIl19
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Metadata } from "../metadata/index.ts";
|
|
2
|
+
import type { License, Resource, Source } from "../resource/index.ts";
|
|
3
|
+
import type { Contributor } from "./Contributor.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Data Package interface built on top of the Frictionless Data specification
|
|
6
|
+
* @see https://datapackage.org/standard/data-package/
|
|
7
|
+
*/
|
|
8
|
+
export interface Package extends Metadata {
|
|
9
|
+
/**
|
|
10
|
+
* URL of profile (optional)
|
|
11
|
+
*/
|
|
12
|
+
$schema?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Data resources in this package (required)
|
|
15
|
+
*/
|
|
16
|
+
resources: Resource[];
|
|
17
|
+
/**
|
|
18
|
+
* Unique package identifier
|
|
19
|
+
* Should use lowercase alphanumeric characters, periods, hyphens, and underscores
|
|
20
|
+
*/
|
|
21
|
+
name?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Human-readable title
|
|
24
|
+
*/
|
|
25
|
+
title?: string;
|
|
26
|
+
/**
|
|
27
|
+
* A description of the package
|
|
28
|
+
*/
|
|
29
|
+
description?: string;
|
|
30
|
+
/**
|
|
31
|
+
* A URL for the home page of the package
|
|
32
|
+
*/
|
|
33
|
+
homepage?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Version of the package using SemVer
|
|
36
|
+
* @example "1.0.0"
|
|
37
|
+
*/
|
|
38
|
+
version?: string;
|
|
39
|
+
/**
|
|
40
|
+
* License information
|
|
41
|
+
*/
|
|
42
|
+
licenses?: License[];
|
|
43
|
+
/**
|
|
44
|
+
* List of contributors
|
|
45
|
+
*/
|
|
46
|
+
contributors?: Contributor[];
|
|
47
|
+
/**
|
|
48
|
+
* Data sources for this package
|
|
49
|
+
*/
|
|
50
|
+
sources?: Source[];
|
|
51
|
+
/**
|
|
52
|
+
* Keywords for the package
|
|
53
|
+
*/
|
|
54
|
+
keywords?: string[];
|
|
55
|
+
/**
|
|
56
|
+
* Create time of the package
|
|
57
|
+
* @format ISO 8601 format
|
|
58
|
+
*/
|
|
59
|
+
created?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Package image
|
|
62
|
+
*/
|
|
63
|
+
image?: string;
|
|
64
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2UvUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNZXRhZGF0YSB9IGZyb20gXCIuLi9tZXRhZGF0YS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IExpY2Vuc2UsIFJlc291cmNlLCBTb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2UvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBDb250cmlidXRvciB9IGZyb20gXCIuL0NvbnRyaWJ1dG9yLnRzXCJcblxuLyoqXG4gKiBEYXRhIFBhY2thZ2UgaW50ZXJmYWNlIGJ1aWx0IG9uIHRvcCBvZiB0aGUgRnJpY3Rpb25sZXNzIERhdGEgc3BlY2lmaWNhdGlvblxuICogQHNlZSBodHRwczovL2RhdGFwYWNrYWdlLm9yZy9zdGFuZGFyZC9kYXRhLXBhY2thZ2UvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFja2FnZSBleHRlbmRzIE1ldGFkYXRhIHtcbiAgLyoqXG4gICAqIFVSTCBvZiBwcm9maWxlIChvcHRpb25hbClcbiAgICovXG4gICRzY2hlbWE/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGF0YSByZXNvdXJjZXMgaW4gdGhpcyBwYWNrYWdlIChyZXF1aXJlZClcbiAgICovXG4gIHJlc291cmNlczogUmVzb3VyY2VbXVxuXG4gIC8qKlxuICAgKiBVbmlxdWUgcGFja2FnZSBpZGVudGlmaWVyXG4gICAqIFNob3VsZCB1c2UgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLCBwZXJpb2RzLCBoeXBoZW5zLCBhbmQgdW5kZXJzY29yZXNcbiAgICovXG4gIG5hbWU/OiBzdHJpbmdcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgdGl0bGVcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIHBhY2thZ2VcbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEEgVVJMIGZvciB0aGUgaG9tZSBwYWdlIG9mIHRoZSBwYWNrYWdlXG4gICAqL1xuICBob21lcGFnZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHVzaW5nIFNlbVZlclxuICAgKiBAZXhhbXBsZSBcIjEuMC4wXCJcbiAgICovXG4gIHZlcnNpb24/OiBzdHJpbmdcblxuICAvKipcbiAgICogTGljZW5zZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgbGljZW5zZXM/OiBMaWNlbnNlW11cblxuICAvKipcbiAgICogTGlzdCBvZiBjb250cmlidXRvcnNcbiAgICovXG4gIGNvbnRyaWJ1dG9ycz86IENvbnRyaWJ1dG9yW11cblxuICAvKipcbiAgICogRGF0YSBzb3VyY2VzIGZvciB0aGlzIHBhY2thZ2VcbiAgICovXG4gIHNvdXJjZXM/OiBTb3VyY2VbXVxuXG4gIC8qKlxuICAgKiBLZXl3b3JkcyBmb3IgdGhlIHBhY2thZ2VcbiAgICovXG4gIGtleXdvcmRzPzogc3RyaW5nW11cblxuICAvKipcbiAgICogQ3JlYXRlIHRpbWUgb2YgdGhlIHBhY2thZ2VcbiAgICogQGZvcm1hdCBJU08gODYwMSBmb3JtYXRcbiAgICovXG4gIGNyZWF0ZWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICogUGFja2FnZSBpbWFnZVxuICAgKi9cbiAgaW1hZ2U/OiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Descriptor } from "../descriptor/index.ts";
|
|
2
|
+
import type { Package } from "./Package.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Assert a Package descriptor (JSON Object) against its profile
|
|
5
|
+
*/
|
|
6
|
+
export declare function assertPackage(source: Descriptor | Package, options?: {
|
|
7
|
+
basepath?: string;
|
|
8
|
+
}): Promise<Package>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { validatePackageMetadata } from "./validate.js";
|
|
2
|
+
/**
|
|
3
|
+
* Assert a Package descriptor (JSON Object) against its profile
|
|
4
|
+
*/
|
|
5
|
+
export async function assertPackage(source, options) {
|
|
6
|
+
const report = await validatePackageMetadata(source, options);
|
|
7
|
+
if (!report.dataPackage) {
|
|
8
|
+
throw new Error(`Package "${JSON.stringify(source).slice(0, 100)}" is not valid`);
|
|
9
|
+
}
|
|
10
|
+
return report.dataPackage;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcGFja2FnZS9hc3NlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLE1BQTRCLEVBQzVCLE9BRUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUU3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLGdCQUFnQixDQUNqRSxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQTtBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZXNjcmlwdG9yIH0gZnJvbSBcIi4uL2Rlc2NyaXB0b3IvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlIH0gZnJvbSBcIi4vUGFja2FnZS50c1wiXG5pbXBvcnQgeyB2YWxpZGF0ZVBhY2thZ2VNZXRhZGF0YSB9IGZyb20gXCIuL3ZhbGlkYXRlLnRzXCJcblxuLyoqXG4gKiBBc3NlcnQgYSBQYWNrYWdlIGRlc2NyaXB0b3IgKEpTT04gT2JqZWN0KSBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhc3NlcnRQYWNrYWdlKFxuICBzb3VyY2U6IERlc2NyaXB0b3IgfCBQYWNrYWdlLFxuICBvcHRpb25zPzoge1xuICAgIGJhc2VwYXRoPzogc3RyaW5nXG4gIH0sXG4pIHtcbiAgY29uc3QgcmVwb3J0ID0gYXdhaXQgdmFsaWRhdGVQYWNrYWdlTWV0YWRhdGEoc291cmNlLCBvcHRpb25zKVxuXG4gIGlmICghcmVwb3J0LmRhdGFQYWNrYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFBhY2thZ2UgXCIke0pTT04uc3RyaW5naWZ5KHNvdXJjZSkuc2xpY2UoMCwgMTAwKX1cIiBpcyBub3QgdmFsaWRgLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiByZXBvcnQuZGF0YVBhY2thZ2Vcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { describe, expect, expectTypeOf, it } from "vitest";
|
|
2
|
+
import { assertPackage } from "./assert.js";
|
|
3
|
+
describe("assertPackage", () => {
|
|
4
|
+
it("returns typed package when valid", async () => {
|
|
5
|
+
const descriptor = {
|
|
6
|
+
name: "example-package",
|
|
7
|
+
resources: [
|
|
8
|
+
{
|
|
9
|
+
name: "resource-1",
|
|
10
|
+
path: "data.csv",
|
|
11
|
+
},
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
const datapackage = await assertPackage(descriptor);
|
|
15
|
+
expectTypeOf(datapackage).toEqualTypeOf();
|
|
16
|
+
expect(datapackage).toEqual(descriptor);
|
|
17
|
+
});
|
|
18
|
+
it("throws Error when package is invalid", async () => {
|
|
19
|
+
const descriptor = {
|
|
20
|
+
name: 123,
|
|
21
|
+
resources: "not-an-array",
|
|
22
|
+
};
|
|
23
|
+
await expect(assertPackage(descriptor)).rejects.toThrow(Error);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL2Fzc2VydC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUUzQyxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtJQUM3QixFQUFFLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEQsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxVQUFVO2lCQUNqQjthQUNGO1NBQ0YsQ0FBQTtRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRW5ELFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLEVBQVcsQ0FBQTtRQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3BELE1BQU0sVUFBVSxHQUFHO1lBQ2pCLElBQUksRUFBRSxHQUFHO1lBQ1QsU0FBUyxFQUFFLGNBQWM7U0FDMUIsQ0FBQTtRQUVELE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGV4cGVjdFR5cGVPZiwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UudHNcIlxuaW1wb3J0IHsgYXNzZXJ0UGFja2FnZSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbmRlc2NyaWJlKFwiYXNzZXJ0UGFja2FnZVwiLCAoKSA9PiB7XG4gIGl0KFwicmV0dXJucyB0eXBlZCBwYWNrYWdlIHdoZW4gdmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSB7XG4gICAgICBuYW1lOiBcImV4YW1wbGUtcGFja2FnZVwiLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInJlc291cmNlLTFcIixcbiAgICAgICAgICBwYXRoOiBcImRhdGEuY3N2XCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgYXNzZXJ0UGFja2FnZShkZXNjcmlwdG9yKVxuXG4gICAgZXhwZWN0VHlwZU9mKGRhdGFwYWNrYWdlKS50b0VxdWFsVHlwZU9mPFBhY2thZ2U+KClcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UpLnRvRXF1YWwoZGVzY3JpcHRvcilcbiAgfSlcblxuICBpdChcInRocm93cyBFcnJvciB3aGVuIHBhY2thZ2UgaXMgaW52YWxpZFwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAgIG5hbWU6IDEyMyxcbiAgICAgIHJlc291cmNlczogXCJub3QtYW4tYXJyYXlcIixcbiAgICB9XG5cbiAgICBhd2FpdCBleHBlY3QoYXNzZXJ0UGFja2FnZShkZXNjcmlwdG9yKSkucmVqZWN0cy50b1Rocm93KEVycm9yKVxuICB9KVxufSlcbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isRemotePath } from "../../path/index.js";
|
|
2
|
+
import { convertResourceFromDescriptor } from "../../resource/index.js";
|
|
3
|
+
export function convertPackageFromDescriptor(descriptor, options) {
|
|
4
|
+
descriptor = globalThis.structuredClone(descriptor);
|
|
5
|
+
convertProfile(descriptor);
|
|
6
|
+
convertResources(descriptor, options);
|
|
7
|
+
convertContributors(descriptor);
|
|
8
|
+
return descriptor;
|
|
9
|
+
}
|
|
10
|
+
function convertProfile(descriptor) {
|
|
11
|
+
const remoteProfile = typeof descriptor.profile === "string" && isRemotePath(descriptor.profile)
|
|
12
|
+
? descriptor.profile
|
|
13
|
+
: undefined;
|
|
14
|
+
descriptor.$schema = descriptor.$schema ?? remoteProfile;
|
|
15
|
+
}
|
|
16
|
+
function convertResources(descriptor, options) {
|
|
17
|
+
if (Array.isArray(descriptor.resources)) {
|
|
18
|
+
descriptor.resources = descriptor.resources.map((resource) => convertResourceFromDescriptor(resource, { basepath: options.basepath }));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function convertContributors(descriptor) {
|
|
22
|
+
const contributors = descriptor.contributors;
|
|
23
|
+
if (!contributors) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(contributors)) {
|
|
27
|
+
for (const contributor of contributors) {
|
|
28
|
+
const role = contributor.role;
|
|
29
|
+
if (role) {
|
|
30
|
+
contributor.roles = [role];
|
|
31
|
+
contributor.role = undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbURlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlL2NvbnZlcnQvZnJvbURlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2xELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRXZFLE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsVUFBc0IsRUFDdEIsT0FFQztJQUVELFVBQVUsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRW5ELGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMxQixnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDckMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFL0IsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLFVBQXNCO0lBQzVDLE1BQU0sYUFBYSxHQUNqQixPQUFPLFVBQVUsQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNwQixDQUFDLENBQUMsU0FBUyxDQUFBO0lBRWYsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQTtBQUMxRCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsVUFBc0IsRUFDdEIsT0FFQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUN4QyxVQUFVLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBb0IsRUFBRSxFQUFFLENBQ3ZFLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDeEUsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxVQUFzQjtJQUNqRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO0lBQzVDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ2hDLEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQTtZQUM3QixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULFdBQVcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDMUIsV0FBVyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUE7WUFDOUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVzY3JpcHRvciB9IGZyb20gXCIuLi8uLi9kZXNjcmlwdG9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGlzUmVtb3RlUGF0aCB9IGZyb20gXCIuLi8uLi9wYXRoL2luZGV4LnRzXCJcbmltcG9ydCB7IGNvbnZlcnRSZXNvdXJjZUZyb21EZXNjcmlwdG9yIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlL2luZGV4LnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRQYWNrYWdlRnJvbURlc2NyaXB0b3IoXG4gIGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsXG4gIG9wdGlvbnM6IHtcbiAgICBiYXNlcGF0aD86IHN0cmluZ1xuICB9LFxuKSB7XG4gIGRlc2NyaXB0b3IgPSBnbG9iYWxUaGlzLnN0cnVjdHVyZWRDbG9uZShkZXNjcmlwdG9yKVxuXG4gIGNvbnZlcnRQcm9maWxlKGRlc2NyaXB0b3IpXG4gIGNvbnZlcnRSZXNvdXJjZXMoZGVzY3JpcHRvciwgb3B0aW9ucylcbiAgY29udmVydENvbnRyaWJ1dG9ycyhkZXNjcmlwdG9yKVxuXG4gIHJldHVybiBkZXNjcmlwdG9yXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQcm9maWxlKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IpIHtcbiAgY29uc3QgcmVtb3RlUHJvZmlsZSA9XG4gICAgdHlwZW9mIGRlc2NyaXB0b3IucHJvZmlsZSA9PT0gXCJzdHJpbmdcIiAmJiBpc1JlbW90ZVBhdGgoZGVzY3JpcHRvci5wcm9maWxlKVxuICAgICAgPyBkZXNjcmlwdG9yLnByb2ZpbGVcbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgZGVzY3JpcHRvci4kc2NoZW1hID0gZGVzY3JpcHRvci4kc2NoZW1hID8/IHJlbW90ZVByb2ZpbGVcbn1cblxuZnVuY3Rpb24gY29udmVydFJlc291cmNlcyhcbiAgZGVzY3JpcHRvcjogRGVzY3JpcHRvcixcbiAgb3B0aW9uczoge1xuICAgIGJhc2VwYXRoPzogc3RyaW5nXG4gIH0sXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZGVzY3JpcHRvci5yZXNvdXJjZXMpKSB7XG4gICAgZGVzY3JpcHRvci5yZXNvdXJjZXMgPSBkZXNjcmlwdG9yLnJlc291cmNlcy5tYXAoKHJlc291cmNlOiBEZXNjcmlwdG9yKSA9PlxuICAgICAgY29udmVydFJlc291cmNlRnJvbURlc2NyaXB0b3IocmVzb3VyY2UsIHsgYmFzZXBhdGg6IG9wdGlvbnMuYmFzZXBhdGggfSksXG4gICAgKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDb250cmlidXRvcnMoZGVzY3JpcHRvcjogRGVzY3JpcHRvcikge1xuICBjb25zdCBjb250cmlidXRvcnMgPSBkZXNjcmlwdG9yLmNvbnRyaWJ1dG9yc1xuICBpZiAoIWNvbnRyaWJ1dG9ycykge1xuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJpYnV0b3JzKSkge1xuICAgIGZvciAoY29uc3QgY29udHJpYnV0b3Igb2YgY29udHJpYnV0b3JzKSB7XG4gICAgICBjb25zdCByb2xlID0gY29udHJpYnV0b3Iucm9sZVxuICAgICAgaWYgKHJvbGUpIHtcbiAgICAgICAgY29udHJpYnV0b3Iucm9sZXMgPSBbcm9sZV1cbiAgICAgICAgY29udHJpYnV0b3Iucm9sZSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { convertResourceToDescriptor } from "../../resource/index.js";
|
|
2
|
+
export function convertPackageToDescriptor(dataPackage, options) {
|
|
3
|
+
dataPackage = globalThis.structuredClone(dataPackage);
|
|
4
|
+
const resources = dataPackage.resources.map((resource) => convertResourceToDescriptor(resource, { basepath: options?.basepath }));
|
|
5
|
+
return { ...dataPackage, resources };
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9EZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZS9jb252ZXJ0L3RvRGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUdyRSxNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFdBQW9CLEVBQ3BCLE9BRUM7SUFFRCxXQUFXLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUVyRCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQzVELDJCQUEyQixDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FDdkUsQ0FBQTtJQUVELE9BQU8sRUFBRSxHQUFHLFdBQVcsRUFBRSxTQUFTLEVBQWdCLENBQUE7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGVzY3JpcHRvciB9IGZyb20gXCIuLi8uLi9kZXNjcmlwdG9yL2luZGV4LnRzXCJcbmltcG9ydCB7IGNvbnZlcnRSZXNvdXJjZVRvRGVzY3JpcHRvciB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tIFwiLi4vUGFja2FnZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFja2FnZVRvRGVzY3JpcHRvcihcbiAgZGF0YVBhY2thZ2U6IFBhY2thZ2UsXG4gIG9wdGlvbnM/OiB7XG4gICAgYmFzZXBhdGg/OiBzdHJpbmdcbiAgfSxcbikge1xuICBkYXRhUGFja2FnZSA9IGdsb2JhbFRoaXMuc3RydWN0dXJlZENsb25lKGRhdGFQYWNrYWdlKVxuXG4gIGNvbnN0IHJlc291cmNlcyA9IGRhdGFQYWNrYWdlLnJlc291cmNlcy5tYXAoKHJlc291cmNlOiBhbnkpID0+XG4gICAgY29udmVydFJlc291cmNlVG9EZXNjcmlwdG9yKHJlc291cmNlLCB7IGJhc2VwYXRoOiBvcHRpb25zPy5iYXNlcGF0aCB9KSxcbiAgKVxuXG4gIHJldHVybiB7IC4uLmRhdGFQYWNrYWdlLCByZXNvdXJjZXMgfSBhcyBEZXNjcmlwdG9yXG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { Package } from "./Package.ts";
|
|
2
|
+
export { assertPackage } from "./assert.ts";
|
|
3
|
+
export { loadPackageDescriptor } from "./load.ts";
|
|
4
|
+
export { savePackageDescriptor } from "./save.ts";
|
|
5
|
+
export { validatePackageMetadata } from "./validate.ts";
|
|
6
|
+
export { convertPackageFromDescriptor } from "./convert/fromDescriptor.ts";
|
|
7
|
+
export { convertPackageToDescriptor } from "./convert/toDescriptor.ts";
|
|
8
|
+
export type { Contributor } from "./Contributor.ts";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { assertPackage } from "./assert.js";
|
|
2
|
+
export { loadPackageDescriptor } from "./load.js";
|
|
3
|
+
export { savePackageDescriptor } from "./save.js";
|
|
4
|
+
export { validatePackageMetadata } from "./validate.js";
|
|
5
|
+
export { convertPackageFromDescriptor } from "./convert/fromDescriptor.js";
|
|
6
|
+
export { convertPackageToDescriptor } from "./convert/toDescriptor.js";
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9wYWNrYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDdkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDMUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkJBQTJCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IFBhY2thZ2UgfSBmcm9tIFwiLi9QYWNrYWdlLnRzXCJcbmV4cG9ydCB7IGFzc2VydFBhY2thZ2UgfSBmcm9tIFwiLi9hc3NlcnQudHNcIlxuZXhwb3J0IHsgbG9hZFBhY2thZ2VEZXNjcmlwdG9yIH0gZnJvbSBcIi4vbG9hZC50c1wiXG5leHBvcnQgeyBzYXZlUGFja2FnZURlc2NyaXB0b3IgfSBmcm9tIFwiLi9zYXZlLnRzXCJcbmV4cG9ydCB7IHZhbGlkYXRlUGFja2FnZU1ldGFkYXRhIH0gZnJvbSBcIi4vdmFsaWRhdGUudHNcIlxuZXhwb3J0IHsgY29udmVydFBhY2thZ2VGcm9tRGVzY3JpcHRvciB9IGZyb20gXCIuL2NvbnZlcnQvZnJvbURlc2NyaXB0b3IudHNcIlxuZXhwb3J0IHsgY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IgfSBmcm9tIFwiLi9jb252ZXJ0L3RvRGVzY3JpcHRvci50c1wiXG5leHBvcnQgdHlwZSB7IENvbnRyaWJ1dG9yIH0gZnJvbSBcIi4vQ29udHJpYnV0b3IudHNcIlxuIl19
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { loadDescriptor } from "../descriptor/index.js";
|
|
2
|
+
import { resolveBasepath } from "../path/index.js";
|
|
3
|
+
import { assertPackage } from "./assert.js";
|
|
4
|
+
/**
|
|
5
|
+
* Load a Package descriptor (JSON Object) from a file or URL
|
|
6
|
+
* Ensures the descriptor is valid against its profile
|
|
7
|
+
*/
|
|
8
|
+
export async function loadPackageDescriptor(path) {
|
|
9
|
+
const basepath = await resolveBasepath(path);
|
|
10
|
+
const descriptor = await loadDescriptor(path);
|
|
11
|
+
const dataPackage = await assertPackage(descriptor, { basepath });
|
|
12
|
+
return dataPackage;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2UvbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxJQUFZO0lBQ3RELE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sVUFBVSxHQUFHLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzdDLE1BQU0sV0FBVyxHQUFHLE1BQU0sYUFBYSxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDakUsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWREZXNjcmlwdG9yIH0gZnJvbSBcIi4uL2Rlc2NyaXB0b3IvaW5kZXgudHNcIlxuaW1wb3J0IHsgcmVzb2x2ZUJhc2VwYXRoIH0gZnJvbSBcIi4uL3BhdGgvaW5kZXgudHNcIlxuaW1wb3J0IHsgYXNzZXJ0UGFja2FnZSB9IGZyb20gXCIuL2Fzc2VydC50c1wiXG5cbi8qKlxuICogTG9hZCBhIFBhY2thZ2UgZGVzY3JpcHRvciAoSlNPTiBPYmplY3QpIGZyb20gYSBmaWxlIG9yIFVSTFxuICogRW5zdXJlcyB0aGUgZGVzY3JpcHRvciBpcyB2YWxpZCBhZ2FpbnN0IGl0cyBwcm9maWxlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUGFja2FnZURlc2NyaXB0b3IocGF0aDogc3RyaW5nKSB7XG4gIGNvbnN0IGJhc2VwYXRoID0gYXdhaXQgcmVzb2x2ZUJhc2VwYXRoKHBhdGgpXG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBhd2FpdCBsb2FkRGVzY3JpcHRvcihwYXRoKVxuICBjb25zdCBkYXRhUGFja2FnZSA9IGF3YWl0IGFzc2VydFBhY2thZ2UoZGVzY3JpcHRvciwgeyBiYXNlcGF0aCB9KVxuICByZXR1cm4gZGF0YVBhY2thZ2Vcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { join, relative } from "node:path";
|
|
2
|
+
import { describe, expect, expectTypeOf, it } from "vitest";
|
|
3
|
+
import { loadPackageDescriptor } from "./load.js";
|
|
4
|
+
describe("loadPackageDescriptor", async () => {
|
|
5
|
+
const getFixturePath = (name) => relative(process.cwd(), join(import.meta.dirname, "fixtures", name));
|
|
6
|
+
it("loads a package from a local file path", async () => {
|
|
7
|
+
const datapackage = await loadPackageDescriptor(getFixturePath("package.json"));
|
|
8
|
+
expectTypeOf(datapackage).toEqualTypeOf();
|
|
9
|
+
expect(datapackage.name).toBe("name");
|
|
10
|
+
expect(datapackage.resources.length).toBeGreaterThan(0);
|
|
11
|
+
const resource = datapackage.resources[0];
|
|
12
|
+
expect(resource).toBeDefined();
|
|
13
|
+
if (resource) {
|
|
14
|
+
expect(resource).toEqual({
|
|
15
|
+
type: "table",
|
|
16
|
+
name: "name",
|
|
17
|
+
format: "csv",
|
|
18
|
+
path: getFixturePath("table.csv"),
|
|
19
|
+
dialect: getFixturePath("dialect.json"),
|
|
20
|
+
schema: getFixturePath("schema.json"),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
it("throws an error when package is invalid", async () => {
|
|
25
|
+
await expect(loadPackageDescriptor(getFixturePath("package-invalid.json"))).rejects.toThrow();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vcGFja2FnZS9sb2FkLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUUzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFakQsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzNDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDdEMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7SUFFdEUsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RELE1BQU0sV0FBVyxHQUFHLE1BQU0scUJBQXFCLENBQzdDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FDL0IsQ0FBQTtRQUVELFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLEVBQVcsQ0FBQTtRQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNyQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFdkQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6QyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFOUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxLQUFLO2dCQUNiLElBQUksRUFBRSxjQUFjLENBQUMsV0FBVyxDQUFDO2dCQUNqQyxPQUFPLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQztnQkFDdkMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxhQUFhLENBQUM7YUFDdEMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZELE1BQU0sTUFBTSxDQUNWLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQzlELENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3JCLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luLCByZWxhdGl2ZSB9IGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgZXhwZWN0VHlwZU9mLCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHR5cGUgeyBQYWNrYWdlIH0gZnJvbSBcIi4vUGFja2FnZS50c1wiXG5pbXBvcnQgeyBsb2FkUGFja2FnZURlc2NyaXB0b3IgfSBmcm9tIFwiLi9sb2FkLnRzXCJcblxuZGVzY3JpYmUoXCJsb2FkUGFja2FnZURlc2NyaXB0b3JcIiwgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBnZXRGaXh0dXJlUGF0aCA9IChuYW1lOiBzdHJpbmcpID0+XG4gICAgcmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwgam9pbihpbXBvcnQubWV0YS5kaXJuYW1lLCBcImZpeHR1cmVzXCIsIG5hbWUpKVxuXG4gIGl0KFwibG9hZHMgYSBwYWNrYWdlIGZyb20gYSBsb2NhbCBmaWxlIHBhdGhcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgbG9hZFBhY2thZ2VEZXNjcmlwdG9yKFxuICAgICAgZ2V0Rml4dHVyZVBhdGgoXCJwYWNrYWdlLmpzb25cIiksXG4gICAgKVxuXG4gICAgZXhwZWN0VHlwZU9mKGRhdGFwYWNrYWdlKS50b0VxdWFsVHlwZU9mPFBhY2thZ2U+KClcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UubmFtZSkudG9CZShcIm5hbWVcIilcbiAgICBleHBlY3QoZGF0YXBhY2thZ2UucmVzb3VyY2VzLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApXG5cbiAgICBjb25zdCByZXNvdXJjZSA9IGRhdGFwYWNrYWdlLnJlc291cmNlc1swXVxuICAgIGV4cGVjdChyZXNvdXJjZSkudG9CZURlZmluZWQoKVxuXG4gICAgaWYgKHJlc291cmNlKSB7XG4gICAgICBleHBlY3QocmVzb3VyY2UpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiBcInRhYmxlXCIsXG4gICAgICAgIG5hbWU6IFwibmFtZVwiLFxuICAgICAgICBmb3JtYXQ6IFwiY3N2XCIsXG4gICAgICAgIHBhdGg6IGdldEZpeHR1cmVQYXRoKFwidGFibGUuY3N2XCIpLFxuICAgICAgICBkaWFsZWN0OiBnZXRGaXh0dXJlUGF0aChcImRpYWxlY3QuanNvblwiKSxcbiAgICAgICAgc2NoZW1hOiBnZXRGaXh0dXJlUGF0aChcInNjaGVtYS5qc29uXCIpLFxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgaXQoXCJ0aHJvd3MgYW4gZXJyb3Igd2hlbiBwYWNrYWdlIGlzIGludmFsaWRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIGxvYWRQYWNrYWdlRGVzY3JpcHRvcihnZXRGaXh0dXJlUGF0aChcInBhY2thZ2UtaW52YWxpZC5qc29uXCIpKSxcbiAgICApLnJlamVjdHMudG9UaHJvdygpXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Package } from "./Package.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Save a Package to a file path
|
|
4
|
+
* Works in Node.js environments
|
|
5
|
+
*/
|
|
6
|
+
export declare function savePackageDescriptor(dataPackage: Package, options: {
|
|
7
|
+
path: string;
|
|
8
|
+
overwrite?: boolean;
|
|
9
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { saveDescriptor } from "../descriptor/index.js";
|
|
2
|
+
import { getBasepath } from "../path/index.js";
|
|
3
|
+
import { convertPackageToDescriptor } from "./convert/toDescriptor.js";
|
|
4
|
+
const CURRENT_PROFILE = "https://datapackage.org/profiles/2.0/datapackage.json";
|
|
5
|
+
/**
|
|
6
|
+
* Save a Package to a file path
|
|
7
|
+
* Works in Node.js environments
|
|
8
|
+
*/
|
|
9
|
+
export async function savePackageDescriptor(dataPackage, options) {
|
|
10
|
+
const basepath = getBasepath(options.path);
|
|
11
|
+
const descriptor = convertPackageToDescriptor(dataPackage, { basepath });
|
|
12
|
+
descriptor.$schema = descriptor.$schema ?? CURRENT_PROFILE;
|
|
13
|
+
await saveDescriptor(descriptor, {
|
|
14
|
+
path: options.path,
|
|
15
|
+
overwrite: options.overwrite,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3BhY2thZ2Uvc2F2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBRXRFLE1BQU0sZUFBZSxHQUFHLHVEQUF1RCxDQUFBO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLFdBQW9CLEVBQ3BCLE9BR0M7SUFFRCxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTFDLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7SUFDeEUsVUFBVSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQTtJQUUxRCxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUU7UUFDL0IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztLQUM3QixDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2F2ZURlc2NyaXB0b3IgfSBmcm9tIFwiLi4vZGVzY3JpcHRvci9pbmRleC50c1wiXG5pbXBvcnQgeyBnZXRCYXNlcGF0aCB9IGZyb20gXCIuLi9wYXRoL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UudHNcIlxuaW1wb3J0IHsgY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IgfSBmcm9tIFwiLi9jb252ZXJ0L3RvRGVzY3JpcHRvci50c1wiXG5cbmNvbnN0IENVUlJFTlRfUFJPRklMRSA9IFwiaHR0cHM6Ly9kYXRhcGFja2FnZS5vcmcvcHJvZmlsZXMvMi4wL2RhdGFwYWNrYWdlLmpzb25cIlxuXG4vKipcbiAqIFNhdmUgYSBQYWNrYWdlIHRvIGEgZmlsZSBwYXRoXG4gKiBXb3JrcyBpbiBOb2RlLmpzIGVudmlyb25tZW50c1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2F2ZVBhY2thZ2VEZXNjcmlwdG9yKFxuICBkYXRhUGFja2FnZTogUGFja2FnZSxcbiAgb3B0aW9uczoge1xuICAgIHBhdGg6IHN0cmluZ1xuICAgIG92ZXJ3cml0ZT86IGJvb2xlYW5cbiAgfSxcbikge1xuICBjb25zdCBiYXNlcGF0aCA9IGdldEJhc2VwYXRoKG9wdGlvbnMucGF0aClcblxuICBjb25zdCBkZXNjcmlwdG9yID0gY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IoZGF0YVBhY2thZ2UsIHsgYmFzZXBhdGggfSlcbiAgZGVzY3JpcHRvci4kc2NoZW1hID0gZGVzY3JpcHRvci4kc2NoZW1hID8/IENVUlJFTlRfUFJPRklMRVxuXG4gIGF3YWl0IHNhdmVEZXNjcmlwdG9yKGRlc2NyaXB0b3IsIHtcbiAgICBwYXRoOiBvcHRpb25zLnBhdGgsXG4gICAgb3ZlcndyaXRlOiBvcHRpb25zLm92ZXJ3cml0ZSxcbiAgfSlcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|