@frictionless-ts/dataset 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/file/copy.d.ts +4 -0
- package/build/file/copy.js +7 -0
- package/build/file/copy.spec.d.ts +1 -0
- package/build/file/copy.spec.js +104 -0
- package/build/file/describe.d.ts +7 -0
- package/build/file/describe.js +9 -0
- package/build/file/fetch.d.ts +2 -0
- package/build/file/fetch.js +21 -0
- package/build/file/index.d.ts +9 -0
- package/build/file/index.js +10 -0
- package/build/file/infer.d.ts +10 -0
- package/build/file/infer.js +48 -0
- package/build/file/infer.spec.d.ts +1 -0
- package/build/file/infer.spec.js +141 -0
- package/build/file/load.d.ts +3 -0
- package/build/file/load.js +7 -0
- package/build/file/path.d.ts +2 -0
- package/build/file/path.js +17 -0
- package/build/file/save.d.ts +3 -0
- package/build/file/save.js +7 -0
- package/build/file/temp.d.ts +11 -0
- package/build/file/temp.js +23 -0
- package/build/file/validate.d.ts +6 -0
- package/build/file/validate.js +47 -0
- package/build/file/validate.spec.d.ts +1 -0
- package/build/file/validate.spec.js +180 -0
- package/build/folder/create.d.ts +1 -0
- package/build/folder/create.js +5 -0
- package/build/folder/index.d.ts +2 -0
- package/build/folder/index.js +3 -0
- package/build/folder/temp.d.ts +3 -0
- package/build/folder/temp.js +16 -0
- package/build/index.d.ts +36 -0
- package/build/index.js +35 -0
- package/build/package/index.d.ts +2 -0
- package/build/package/index.js +3 -0
- package/build/package/merge.d.ts +23 -0
- package/build/package/merge.js +12 -0
- package/build/package/path.d.ts +3 -0
- package/build/package/path.js +43 -0
- package/build/package/path.spec.d.ts +1 -0
- package/build/package/path.spec.js +56 -0
- package/build/plugin.d.ts +11 -0
- package/build/plugin.js +2 -0
- package/build/plugins/ckan/ckan/index.d.ts +1 -0
- package/build/plugins/ckan/ckan/index.js +2 -0
- package/build/plugins/ckan/ckan/request.d.ts +11 -0
- package/build/plugins/ckan/ckan/request.js +35 -0
- package/build/plugins/ckan/index.d.ts +4 -0
- package/build/plugins/ckan/index.js +5 -0
- package/build/plugins/ckan/package/Organization.d.ts +21 -0
- package/build/plugins/ckan/package/Organization.js +2 -0
- package/build/plugins/ckan/package/Package.d.ts +76 -0
- package/build/plugins/ckan/package/Package.js +2 -0
- package/build/plugins/ckan/package/Tag.d.ts +17 -0
- package/build/plugins/ckan/package/Tag.js +2 -0
- package/build/plugins/ckan/package/convert/fromCkan.d.ts +3 -0
- package/build/plugins/ckan/package/convert/fromCkan.js +63 -0
- package/build/plugins/ckan/package/convert/fromCkan.spec.d.ts +1 -0
- package/build/plugins/ckan/package/convert/fromCkan.spec.js +80 -0
- package/build/plugins/ckan/package/convert/toCkan.d.ts +22 -0
- package/build/plugins/ckan/package/convert/toCkan.js +51 -0
- package/build/plugins/ckan/package/convert/toCkan.spec.d.ts +1 -0
- package/build/plugins/ckan/package/convert/toCkan.spec.js +153 -0
- package/build/plugins/ckan/package/fixtures/ckan-package.json +308 -0
- package/build/plugins/ckan/package/index.d.ts +7 -0
- package/build/plugins/ckan/package/index.js +5 -0
- package/build/plugins/ckan/package/load.d.ts +21 -0
- package/build/plugins/ckan/package/load.js +74 -0
- package/build/plugins/ckan/package/load.spec.d.ts +1 -0
- package/build/plugins/ckan/package/load.spec.js +11 -0
- package/build/plugins/ckan/package/save.d.ts +10 -0
- package/build/plugins/ckan/package/save.js +83 -0
- package/build/plugins/ckan/package/save.spec.d.ts +1 -0
- package/build/plugins/ckan/package/save.spec.js +319 -0
- package/build/plugins/ckan/plugin.d.ts +19 -0
- package/build/plugins/ckan/plugin.js +18 -0
- package/build/plugins/ckan/plugin.spec.d.ts +1 -0
- package/build/plugins/ckan/plugin.spec.js +83 -0
- package/build/plugins/ckan/resource/Resource.d.ts +56 -0
- package/build/plugins/ckan/resource/Resource.js +2 -0
- package/build/plugins/ckan/resource/convert/fromCkan.d.ts +3 -0
- package/build/plugins/ckan/resource/convert/fromCkan.js +39 -0
- package/build/plugins/ckan/resource/convert/toCkan.d.ts +3 -0
- package/build/plugins/ckan/resource/convert/toCkan.js +20 -0
- package/build/plugins/ckan/resource/index.d.ts +3 -0
- package/build/plugins/ckan/resource/index.js +3 -0
- package/build/plugins/ckan/schema/Field.d.ts +34 -0
- package/build/plugins/ckan/schema/Field.js +2 -0
- package/build/plugins/ckan/schema/Schema.d.ts +10 -0
- package/build/plugins/ckan/schema/Schema.js +2 -0
- package/build/plugins/ckan/schema/convert/fixtures/ckan-schema.json +115 -0
- package/build/plugins/ckan/schema/convert/fromCkan.d.ts +3 -0
- package/build/plugins/ckan/schema/convert/fromCkan.js +47 -0
- package/build/plugins/ckan/schema/convert/fromCkan.spec.d.ts +1 -0
- package/build/plugins/ckan/schema/convert/fromCkan.spec.js +157 -0
- package/build/plugins/ckan/schema/convert/toCkan.d.ts +3 -0
- package/build/plugins/ckan/schema/convert/toCkan.js +50 -0
- package/build/plugins/ckan/schema/convert/toCkan.spec.d.ts +1 -0
- package/build/plugins/ckan/schema/convert/toCkan.spec.js +278 -0
- package/build/plugins/ckan/schema/index.d.ts +4 -0
- package/build/plugins/ckan/schema/index.js +3 -0
- package/build/plugins/datahub/index.d.ts +2 -0
- package/build/plugins/datahub/index.js +3 -0
- package/build/plugins/datahub/package/index.d.ts +1 -0
- package/build/plugins/datahub/package/index.js +2 -0
- package/build/plugins/datahub/package/load.d.ts +1 -0
- package/build/plugins/datahub/package/load.js +9 -0
- package/build/plugins/datahub/package/load.spec.d.ts +1 -0
- package/build/plugins/datahub/package/load.spec.js +11 -0
- package/build/plugins/datahub/plugin.d.ts +4 -0
- package/build/plugins/datahub/plugin.js +18 -0
- package/build/plugins/datahub/plugin.spec.d.ts +1 -0
- package/build/plugins/datahub/plugin.spec.js +78 -0
- package/build/plugins/descriptor/index.d.ts +1 -0
- package/build/plugins/descriptor/index.js +2 -0
- package/build/plugins/descriptor/plugin.d.ts +11 -0
- package/build/plugins/descriptor/plugin.js +29 -0
- package/build/plugins/descriptor/plugin.spec.d.ts +1 -0
- package/build/plugins/descriptor/plugin.spec.js +169 -0
- package/build/plugins/folder/index.d.ts +2 -0
- package/build/plugins/folder/index.js +3 -0
- package/build/plugins/folder/package/index.d.ts +2 -0
- package/build/plugins/folder/package/index.js +3 -0
- package/build/plugins/folder/package/load.d.ts +1 -0
- package/build/plugins/folder/package/load.js +6 -0
- package/build/plugins/folder/package/load.spec.d.ts +1 -0
- package/build/plugins/folder/package/load.spec.js +175 -0
- package/build/plugins/folder/package/save.d.ts +7 -0
- package/build/plugins/folder/package/save.js +35 -0
- package/build/plugins/folder/package/save.spec.d.ts +1 -0
- package/build/plugins/folder/package/save.spec.js +328 -0
- package/build/plugins/folder/plugin.d.ts +4 -0
- package/build/plugins/folder/plugin.js +19 -0
- package/build/plugins/folder/plugin.spec.d.ts +1 -0
- package/build/plugins/folder/plugin.spec.js +53 -0
- package/build/plugins/github/github/index.d.ts +1 -0
- package/build/plugins/github/github/index.js +2 -0
- package/build/plugins/github/github/path.d.ts +1 -0
- package/build/plugins/github/github/path.js +4 -0
- package/build/plugins/github/github/request.d.ts +15 -0
- package/build/plugins/github/github/request.js +43 -0
- package/build/plugins/github/index.d.ts +3 -0
- package/build/plugins/github/index.js +4 -0
- package/build/plugins/github/package/License.d.ts +21 -0
- package/build/plugins/github/package/License.js +2 -0
- package/build/plugins/github/package/Owner.d.ts +25 -0
- package/build/plugins/github/package/Owner.js +2 -0
- package/build/plugins/github/package/Package.d.ts +87 -0
- package/build/plugins/github/package/Package.js +2 -0
- package/build/plugins/github/package/convert/fromGithub.d.ts +3 -0
- package/build/plugins/github/package/convert/fromGithub.js +50 -0
- package/build/plugins/github/package/index.d.ts +6 -0
- package/build/plugins/github/package/index.js +4 -0
- package/build/plugins/github/package/load.d.ts +23 -0
- package/build/plugins/github/package/load.js +48 -0
- package/build/plugins/github/package/load.spec.d.ts +1 -0
- package/build/plugins/github/package/load.spec.js +15 -0
- package/build/plugins/github/package/save.d.ts +14 -0
- package/build/plugins/github/package/save.js +69 -0
- package/build/plugins/github/package/save.spec.d.ts +1 -0
- package/build/plugins/github/package/save.spec.js +566 -0
- package/build/plugins/github/plugin.d.ts +19 -0
- package/build/plugins/github/plugin.js +18 -0
- package/build/plugins/github/plugin.spec.d.ts +1 -0
- package/build/plugins/github/plugin.spec.js +73 -0
- package/build/plugins/github/resource/Resource.d.ts +29 -0
- package/build/plugins/github/resource/Resource.js +2 -0
- package/build/plugins/github/resource/convert/fromGithub.d.ts +5 -0
- package/build/plugins/github/resource/convert/fromGithub.js +24 -0
- package/build/plugins/github/resource/convert/toGithub.d.ts +3 -0
- package/build/plugins/github/resource/convert/toGithub.js +10 -0
- package/build/plugins/github/resource/index.d.ts +3 -0
- package/build/plugins/github/resource/index.js +3 -0
- package/build/plugins/zenodo/index.d.ts +3 -0
- package/build/plugins/zenodo/index.js +4 -0
- package/build/plugins/zenodo/package/Creator.d.ts +20 -0
- package/build/plugins/zenodo/package/Creator.js +2 -0
- package/build/plugins/zenodo/package/Package.d.ts +94 -0
- package/build/plugins/zenodo/package/Package.js +2 -0
- package/build/plugins/zenodo/package/convert/fromZenodo.d.ts +3 -0
- package/build/plugins/zenodo/package/convert/fromZenodo.js +43 -0
- package/build/plugins/zenodo/package/convert/toZenodo.d.ts +3 -0
- package/build/plugins/zenodo/package/convert/toZenodo.js +79 -0
- package/build/plugins/zenodo/package/index.d.ts +6 -0
- package/build/plugins/zenodo/package/index.js +5 -0
- package/build/plugins/zenodo/package/load.d.ts +23 -0
- package/build/plugins/zenodo/package/load.js +45 -0
- package/build/plugins/zenodo/package/load.spec.d.ts +1 -0
- package/build/plugins/zenodo/package/load.spec.js +15 -0
- package/build/plugins/zenodo/package/save.d.ts +13 -0
- package/build/plugins/zenodo/package/save.js +74 -0
- package/build/plugins/zenodo/package/save.spec.d.ts +1 -0
- package/build/plugins/zenodo/package/save.spec.js +524 -0
- package/build/plugins/zenodo/plugin.d.ts +19 -0
- package/build/plugins/zenodo/plugin.js +18 -0
- package/build/plugins/zenodo/plugin.spec.d.ts +1 -0
- package/build/plugins/zenodo/plugin.spec.js +78 -0
- package/build/plugins/zenodo/resource/Resource.d.ts +27 -0
- package/build/plugins/zenodo/resource/Resource.js +2 -0
- package/build/plugins/zenodo/resource/convert/fromZenodo.d.ts +10 -0
- package/build/plugins/zenodo/resource/convert/fromZenodo.js +18 -0
- package/build/plugins/zenodo/resource/convert/toZenodo.d.ts +3 -0
- package/build/plugins/zenodo/resource/convert/toZenodo.js +13 -0
- package/build/plugins/zenodo/resource/index.d.ts +3 -0
- package/build/plugins/zenodo/resource/index.js +3 -0
- package/build/plugins/zenodo/zenodo/index.d.ts +1 -0
- package/build/plugins/zenodo/zenodo/index.js +2 -0
- package/build/plugins/zenodo/zenodo/request.d.ts +12 -0
- package/build/plugins/zenodo/zenodo/request.js +36 -0
- package/build/plugins/zip/index.d.ts +2 -0
- package/build/plugins/zip/index.js +3 -0
- package/build/plugins/zip/package/index.d.ts +2 -0
- package/build/plugins/zip/package/index.js +3 -0
- package/build/plugins/zip/package/load.d.ts +1 -0
- package/build/plugins/zip/package/load.js +30 -0
- package/build/plugins/zip/package/load.spec.d.ts +1 -0
- package/build/plugins/zip/package/load.spec.js +173 -0
- package/build/plugins/zip/package/save.d.ts +5 -0
- package/build/plugins/zip/package/save.js +50 -0
- package/build/plugins/zip/package/save.spec.d.ts +1 -0
- package/build/plugins/zip/package/save.spec.js +287 -0
- package/build/plugins/zip/plugin.d.ts +11 -0
- package/build/plugins/zip/plugin.js +24 -0
- package/build/plugins/zip/plugin.spec.d.ts +1 -0
- package/build/plugins/zip/plugin.spec.js +158 -0
- package/build/resource/index.d.ts +1 -0
- package/build/resource/index.js +2 -0
- package/build/resource/save.d.ts +13 -0
- package/build/resource/save.js +53 -0
- package/build/resource/save.spec.d.ts +1 -0
- package/build/resource/save.spec.js +107 -0
- package/build/stream/concat.d.ts +3 -0
- package/build/stream/concat.js +5 -0
- package/build/stream/index.d.ts +3 -0
- package/build/stream/index.js +4 -0
- package/build/stream/load.d.ts +5 -0
- package/build/stream/load.js +46 -0
- package/build/stream/save.d.ts +5 -0
- package/build/stream/save.js +13 -0
- package/package.json +48 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { SetRequired } from "type-fest";
|
|
2
|
+
import type { CkanSchema } from "../schema/index.ts";
|
|
3
|
+
/**
|
|
4
|
+
* CKAN Resource interface
|
|
5
|
+
*/
|
|
6
|
+
export interface CkanResource {
|
|
7
|
+
/**
|
|
8
|
+
* Resource identifier
|
|
9
|
+
*/
|
|
10
|
+
id: string;
|
|
11
|
+
/**
|
|
12
|
+
* Resource URL
|
|
13
|
+
*/
|
|
14
|
+
url: string;
|
|
15
|
+
/**
|
|
16
|
+
* Resource name
|
|
17
|
+
*/
|
|
18
|
+
name: string;
|
|
19
|
+
/**
|
|
20
|
+
* Resource creation timestamp
|
|
21
|
+
*/
|
|
22
|
+
created: string;
|
|
23
|
+
/**
|
|
24
|
+
* Resource description
|
|
25
|
+
*/
|
|
26
|
+
description: string;
|
|
27
|
+
/**
|
|
28
|
+
* Resource format
|
|
29
|
+
*/
|
|
30
|
+
format: string;
|
|
31
|
+
/**
|
|
32
|
+
* Resource hash
|
|
33
|
+
*/
|
|
34
|
+
hash: string;
|
|
35
|
+
/**
|
|
36
|
+
* Resource last modification timestamp
|
|
37
|
+
*/
|
|
38
|
+
last_modified: string;
|
|
39
|
+
/**
|
|
40
|
+
* Resource metadata modification timestamp
|
|
41
|
+
*/
|
|
42
|
+
metadata_modified: string;
|
|
43
|
+
/**
|
|
44
|
+
* Resource MIME type
|
|
45
|
+
*/
|
|
46
|
+
mimetype: string;
|
|
47
|
+
/**
|
|
48
|
+
* Resource size in bytes
|
|
49
|
+
*/
|
|
50
|
+
size: number;
|
|
51
|
+
/**
|
|
52
|
+
* Resource schema
|
|
53
|
+
*/
|
|
54
|
+
schema?: CkanSchema;
|
|
55
|
+
}
|
|
56
|
+
export type NewCkanResource = SetRequired<Partial<CkanResource>, "url" | "name">;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW5zL2NrYW4vcmVzb3VyY2UvUmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2V0UmVxdWlyZWQgfSBmcm9tIFwidHlwZS1mZXN0XCJcbmltcG9ydCB0eXBlIHsgQ2thblNjaGVtYSB9IGZyb20gXCIuLi9zY2hlbWEvaW5kZXgudHNcIlxuXG4vKipcbiAqIENLQU4gUmVzb3VyY2UgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2thblJlc291cmNlIHtcbiAgLyoqXG4gICAqIFJlc291cmNlIGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2UgVVJMXG4gICAqL1xuICB1cmw6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBuYW1lXG4gICAqL1xuICBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2UgY3JlYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICBjcmVhdGVkOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2UgZGVzY3JpcHRpb25cbiAgICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2UgZm9ybWF0XG4gICAqL1xuICBmb3JtYXQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBoYXNoXG4gICAqL1xuICBoYXNoOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2UgbGFzdCBtb2RpZmljYXRpb24gdGltZXN0YW1wXG4gICAqL1xuICBsYXN0X21vZGlmaWVkOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2UgbWV0YWRhdGEgbW9kaWZpY2F0aW9uIHRpbWVzdGFtcFxuICAgKi9cbiAgbWV0YWRhdGFfbW9kaWZpZWQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBNSU1FIHR5cGVcbiAgICovXG4gIG1pbWV0eXBlOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVzb3VyY2Ugc2l6ZSBpbiBieXRlc1xuICAgKi9cbiAgc2l6ZTogbnVtYmVyXG5cbiAgLyoqXG4gICAqIFJlc291cmNlIHNjaGVtYVxuICAgKi9cbiAgc2NoZW1hPzogQ2thblNjaGVtYVxufVxuXG5leHBvcnQgdHlwZSBOZXdDa2FuUmVzb3VyY2UgPSBTZXRSZXF1aXJlZDxQYXJ0aWFsPENrYW5SZXNvdXJjZT4sIFwidXJsXCIgfCBcIm5hbWVcIj5cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getFilename } from "@frictionless-ts/metadata";
|
|
2
|
+
import { convertSchemaFromCkan } from "../../schema/index.js";
|
|
3
|
+
export function convertResourceFromCkan(ckanResource) {
|
|
4
|
+
const resource = {
|
|
5
|
+
name: convertName(ckanResource.name),
|
|
6
|
+
path: ckanResource.url,
|
|
7
|
+
"ckan:key": getFilename(ckanResource.url),
|
|
8
|
+
"ckan:url": ckanResource.url,
|
|
9
|
+
};
|
|
10
|
+
if (ckanResource.description) {
|
|
11
|
+
resource.description = ckanResource.description;
|
|
12
|
+
}
|
|
13
|
+
if (ckanResource.format) {
|
|
14
|
+
resource.format = ckanResource.format.toLowerCase();
|
|
15
|
+
}
|
|
16
|
+
if (ckanResource.mimetype) {
|
|
17
|
+
resource.mediatype = ckanResource.mimetype;
|
|
18
|
+
}
|
|
19
|
+
if (ckanResource.size) {
|
|
20
|
+
resource.bytes = ckanResource.size;
|
|
21
|
+
}
|
|
22
|
+
if (ckanResource.hash) {
|
|
23
|
+
resource.hash = ckanResource.hash;
|
|
24
|
+
}
|
|
25
|
+
if (ckanResource.schema) {
|
|
26
|
+
resource.type = "table";
|
|
27
|
+
resource.schema = convertSchemaFromCkan(ckanResource.schema);
|
|
28
|
+
}
|
|
29
|
+
return resource;
|
|
30
|
+
}
|
|
31
|
+
function convertName(name) {
|
|
32
|
+
return name
|
|
33
|
+
.replace(/[\s\.\(\)\/\\,]+/g, "_")
|
|
34
|
+
.toLowerCase()
|
|
35
|
+
.replace(/[^a-z0-9_\-]/g, "")
|
|
36
|
+
.replace(/^(\d)/, "_$1")
|
|
37
|
+
.slice(0, 100);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUNrYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wbHVnaW5zL2NrYW4vcmVzb3VyY2UvY29udmVydC9mcm9tQ2thbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFHN0QsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFlBQTBCO0lBQ2hFLE1BQU0sUUFBUSxHQUFhO1FBQ3pCLElBQUksRUFBRSxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNwQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUc7UUFDdEIsVUFBVSxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1FBQ3pDLFVBQVUsRUFBRSxZQUFZLENBQUMsR0FBRztLQUM3QixDQUFBO0lBRUQsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsUUFBUSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFBO0lBQ2pELENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QixRQUFRLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDckQsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQTtJQUM1QyxDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsUUFBUSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFBO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixRQUFRLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFBO1FBQ3ZCLFFBQVEsQ0FBQyxNQUFNLEdBQUcscUJBQXFCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQTtBQUNqQixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBWTtJQUMvQixPQUFPLElBQUk7U0FDUixPQUFPLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDO1NBQ2pDLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1NBQzVCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO1NBQ3ZCLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUmVzb3VyY2UgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgeyBnZXRGaWxlbmFtZSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB7IGNvbnZlcnRTY2hlbWFGcm9tQ2thbiB9IGZyb20gXCIuLi8uLi9zY2hlbWEvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBDa2FuUmVzb3VyY2UgfSBmcm9tIFwiLi4vUmVzb3VyY2UudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFJlc291cmNlRnJvbUNrYW4oY2thblJlc291cmNlOiBDa2FuUmVzb3VyY2UpOiBSZXNvdXJjZSB7XG4gIGNvbnN0IHJlc291cmNlOiBSZXNvdXJjZSA9IHtcbiAgICBuYW1lOiBjb252ZXJ0TmFtZShja2FuUmVzb3VyY2UubmFtZSksXG4gICAgcGF0aDogY2thblJlc291cmNlLnVybCxcbiAgICBcImNrYW46a2V5XCI6IGdldEZpbGVuYW1lKGNrYW5SZXNvdXJjZS51cmwpLFxuICAgIFwiY2thbjp1cmxcIjogY2thblJlc291cmNlLnVybCxcbiAgfVxuXG4gIGlmIChja2FuUmVzb3VyY2UuZGVzY3JpcHRpb24pIHtcbiAgICByZXNvdXJjZS5kZXNjcmlwdGlvbiA9IGNrYW5SZXNvdXJjZS5kZXNjcmlwdGlvblxuICB9XG5cbiAgaWYgKGNrYW5SZXNvdXJjZS5mb3JtYXQpIHtcbiAgICByZXNvdXJjZS5mb3JtYXQgPSBja2FuUmVzb3VyY2UuZm9ybWF0LnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIGlmIChja2FuUmVzb3VyY2UubWltZXR5cGUpIHtcbiAgICByZXNvdXJjZS5tZWRpYXR5cGUgPSBja2FuUmVzb3VyY2UubWltZXR5cGVcbiAgfVxuXG4gIGlmIChja2FuUmVzb3VyY2Uuc2l6ZSkge1xuICAgIHJlc291cmNlLmJ5dGVzID0gY2thblJlc291cmNlLnNpemVcbiAgfVxuXG4gIGlmIChja2FuUmVzb3VyY2UuaGFzaCkge1xuICAgIHJlc291cmNlLmhhc2ggPSBja2FuUmVzb3VyY2UuaGFzaFxuICB9XG5cbiAgaWYgKGNrYW5SZXNvdXJjZS5zY2hlbWEpIHtcbiAgICByZXNvdXJjZS50eXBlID0gXCJ0YWJsZVwiXG4gICAgcmVzb3VyY2Uuc2NoZW1hID0gY29udmVydFNjaGVtYUZyb21Da2FuKGNrYW5SZXNvdXJjZS5zY2hlbWEpXG4gIH1cblxuICByZXR1cm4gcmVzb3VyY2Vcbn1cblxuZnVuY3Rpb24gY29udmVydE5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWVcbiAgICAucmVwbGFjZSgvW1xcc1xcLlxcKFxcKVxcL1xcXFwsXSsvZywgXCJfXCIpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvW15hLXowLTlfXFwtXS9nLCBcIlwiKVxuICAgIC5yZXBsYWNlKC9eKFxcZCkvLCBcIl8kMVwiKVxuICAgIC5zbGljZSgwLCAxMDApXG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function convertResourceToCkan(resource) {
|
|
2
|
+
const ckanResource = {};
|
|
3
|
+
if (resource.description) {
|
|
4
|
+
ckanResource.description = resource.description;
|
|
5
|
+
}
|
|
6
|
+
if (resource.format) {
|
|
7
|
+
ckanResource.format = resource.format.toUpperCase();
|
|
8
|
+
}
|
|
9
|
+
if (resource.mediatype) {
|
|
10
|
+
ckanResource.mimetype = resource.mediatype;
|
|
11
|
+
}
|
|
12
|
+
if (resource.bytes) {
|
|
13
|
+
ckanResource.size = resource.bytes;
|
|
14
|
+
}
|
|
15
|
+
if (resource.hash) {
|
|
16
|
+
ckanResource.hash = resource.hash;
|
|
17
|
+
}
|
|
18
|
+
return ckanResource;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9Da2FuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGx1Z2lucy9ja2FuL3Jlc291cmNlL2NvbnZlcnQvdG9Da2FuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxRQUFrQjtJQUN0RCxNQUFNLFlBQVksR0FBMEIsRUFBRSxDQUFBO0lBRTlDLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pCLFlBQVksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsWUFBWSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3JELENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QixZQUFZLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUE7SUFDNUMsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25CLFlBQVksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQTtJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsWUFBWSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO0lBQ25DLENBQUM7SUFFRCxPQUFPLFlBQVksQ0FBQTtBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB0eXBlIHsgQ2thblJlc291cmNlIH0gZnJvbSBcIi4uL1Jlc291cmNlLnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRSZXNvdXJjZVRvQ2thbihyZXNvdXJjZTogUmVzb3VyY2UpIHtcbiAgY29uc3QgY2thblJlc291cmNlOiBQYXJ0aWFsPENrYW5SZXNvdXJjZT4gPSB7fVxuXG4gIGlmIChyZXNvdXJjZS5kZXNjcmlwdGlvbikge1xuICAgIGNrYW5SZXNvdXJjZS5kZXNjcmlwdGlvbiA9IHJlc291cmNlLmRlc2NyaXB0aW9uXG4gIH1cblxuICBpZiAocmVzb3VyY2UuZm9ybWF0KSB7XG4gICAgY2thblJlc291cmNlLmZvcm1hdCA9IHJlc291cmNlLmZvcm1hdC50b1VwcGVyQ2FzZSgpXG4gIH1cblxuICBpZiAocmVzb3VyY2UubWVkaWF0eXBlKSB7XG4gICAgY2thblJlc291cmNlLm1pbWV0eXBlID0gcmVzb3VyY2UubWVkaWF0eXBlXG4gIH1cblxuICBpZiAocmVzb3VyY2UuYnl0ZXMpIHtcbiAgICBja2FuUmVzb3VyY2Uuc2l6ZSA9IHJlc291cmNlLmJ5dGVzXG4gIH1cblxuICBpZiAocmVzb3VyY2UuaGFzaCkge1xuICAgIGNrYW5SZXNvdXJjZS5oYXNoID0gcmVzb3VyY2UuaGFzaFxuICB9XG5cbiAgcmV0dXJuIGNrYW5SZXNvdXJjZVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { convertResourceFromCkan } from "./convert/fromCkan.js";
|
|
2
|
+
export { convertResourceToCkan } from "./convert/toCkan.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW5zL2NrYW4vcmVzb3VyY2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IENrYW5SZXNvdXJjZSB9IGZyb20gXCIuL1Jlc291cmNlLnRzXCJcbmV4cG9ydCB7IGNvbnZlcnRSZXNvdXJjZUZyb21Da2FuIH0gZnJvbSBcIi4vY29udmVydC9mcm9tQ2thbi50c1wiXG5leHBvcnQgeyBjb252ZXJ0UmVzb3VyY2VUb0NrYW4gfSBmcm9tIFwiLi9jb252ZXJ0L3RvQ2thbi50c1wiXG4iXX0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CKAN Field interface
|
|
3
|
+
*/
|
|
4
|
+
export interface CkanField {
|
|
5
|
+
/**
|
|
6
|
+
* Field identifier
|
|
7
|
+
*/
|
|
8
|
+
id: string;
|
|
9
|
+
/**
|
|
10
|
+
* Field data type
|
|
11
|
+
*/
|
|
12
|
+
type: string;
|
|
13
|
+
/**
|
|
14
|
+
* Additional field information
|
|
15
|
+
*/
|
|
16
|
+
info?: CkanFieldInfo;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* CKAN Field Info interface
|
|
20
|
+
*/
|
|
21
|
+
export interface CkanFieldInfo {
|
|
22
|
+
/**
|
|
23
|
+
* Human-readable field label
|
|
24
|
+
*/
|
|
25
|
+
label: string;
|
|
26
|
+
/**
|
|
27
|
+
* Additional notes about the field
|
|
28
|
+
*/
|
|
29
|
+
notes: string;
|
|
30
|
+
/**
|
|
31
|
+
* Field type override
|
|
32
|
+
*/
|
|
33
|
+
type_override: string;
|
|
34
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW5zL2NrYW4vc2NoZW1hL0ZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENLQU4gRmllbGQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2thbkZpZWxkIHtcbiAgLyoqXG4gICAqIEZpZWxkIGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBzdHJpbmdcblxuICAvKipcbiAgICogRmllbGQgZGF0YSB0eXBlXG4gICAqL1xuICB0eXBlOiBzdHJpbmdcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBmaWVsZCBpbmZvcm1hdGlvblxuICAgKi9cbiAgaW5mbz86IENrYW5GaWVsZEluZm9cbn1cblxuLyoqXG4gKiBDS0FOIEZpZWxkIEluZm8gaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2thbkZpZWxkSW5mbyB7XG4gIC8qKlxuICAgKiBIdW1hbi1yZWFkYWJsZSBmaWVsZCBsYWJlbFxuICAgKi9cbiAgbGFiZWw6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIG5vdGVzIGFib3V0IHRoZSBmaWVsZFxuICAgKi9cbiAgbm90ZXM6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBGaWVsZCB0eXBlIG92ZXJyaWRlXG4gICAqL1xuICB0eXBlX292ZXJyaWRlOiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9ja2FuL3NjaGVtYS9TY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2thbkZpZWxkIH0gZnJvbSBcIi4vRmllbGQudHNcIlxuXG4vKipcbiAqIENLQU4gU2NoZW1hIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENrYW5TY2hlbWEge1xuICAvKipcbiAgICogTGlzdCBvZiBmaWVsZHNcbiAgICovXG4gIGZpZWxkczogQ2thbkZpZWxkW11cbn1cbiJdfQ==
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": [
|
|
3
|
+
{
|
|
4
|
+
"id": "id",
|
|
5
|
+
"type": "int",
|
|
6
|
+
"info": {
|
|
7
|
+
"label": "ID",
|
|
8
|
+
"notes": "Unique identifier",
|
|
9
|
+
"type_override": "int"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "name",
|
|
14
|
+
"type": "text",
|
|
15
|
+
"info": {
|
|
16
|
+
"label": "Name",
|
|
17
|
+
"notes": "Person's full name",
|
|
18
|
+
"type_override": "text"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "age",
|
|
23
|
+
"type": "int"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "score",
|
|
27
|
+
"type": "numeric",
|
|
28
|
+
"info": {
|
|
29
|
+
"label": "Score",
|
|
30
|
+
"notes": "Test score",
|
|
31
|
+
"type_override": "numeric"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "is_active",
|
|
36
|
+
"type": "bool"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "birth_date",
|
|
40
|
+
"type": "date",
|
|
41
|
+
"info": {
|
|
42
|
+
"label": "Birth Date",
|
|
43
|
+
"notes": "Date of birth",
|
|
44
|
+
"type_override": "date"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "start_time",
|
|
49
|
+
"type": "time"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "created_at",
|
|
53
|
+
"type": "timestamp",
|
|
54
|
+
"info": {
|
|
55
|
+
"label": "Created At",
|
|
56
|
+
"notes": "Timestamp when record was created",
|
|
57
|
+
"type_override": "timestamp"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "metadata",
|
|
62
|
+
"type": "json"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "tags",
|
|
66
|
+
"type": "array",
|
|
67
|
+
"info": {
|
|
68
|
+
"label": "Tags",
|
|
69
|
+
"notes": "List of tags",
|
|
70
|
+
"type_override": "array"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"id": "string_field",
|
|
75
|
+
"type": "string"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "integer_field",
|
|
79
|
+
"type": "integer"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "number_field",
|
|
83
|
+
"type": "number"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "float_field",
|
|
87
|
+
"type": "float"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "boolean_field",
|
|
91
|
+
"type": "boolean"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "datetime_field",
|
|
95
|
+
"type": "datetime"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"id": "object_field",
|
|
99
|
+
"type": "object"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "unknown_field",
|
|
103
|
+
"type": "unknown_type"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "override_field",
|
|
107
|
+
"type": "text",
|
|
108
|
+
"info": {
|
|
109
|
+
"label": "Override Field",
|
|
110
|
+
"notes": "Field with type override",
|
|
111
|
+
"type_override": "int"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function convertSchemaFromCkan(ckanSchema) {
|
|
2
|
+
const fields = ckanSchema.fields.map(convertField);
|
|
3
|
+
return { fields };
|
|
4
|
+
}
|
|
5
|
+
function convertField(ckanField) {
|
|
6
|
+
const { id, type, info } = ckanField;
|
|
7
|
+
const field = {
|
|
8
|
+
name: id,
|
|
9
|
+
};
|
|
10
|
+
if (info) {
|
|
11
|
+
if (info.label)
|
|
12
|
+
field.title = info.label;
|
|
13
|
+
if (info.notes)
|
|
14
|
+
field.description = info.notes;
|
|
15
|
+
}
|
|
16
|
+
const fieldType = (info?.type_override || type).toLowerCase();
|
|
17
|
+
switch (fieldType) {
|
|
18
|
+
case "text":
|
|
19
|
+
case "string":
|
|
20
|
+
return { ...field, type: "string" };
|
|
21
|
+
case "int":
|
|
22
|
+
case "integer":
|
|
23
|
+
return { ...field, type: "integer" };
|
|
24
|
+
case "numeric":
|
|
25
|
+
case "number":
|
|
26
|
+
case "float":
|
|
27
|
+
return { ...field, type: "number" };
|
|
28
|
+
case "bool":
|
|
29
|
+
case "boolean":
|
|
30
|
+
return { ...field, type: "boolean" };
|
|
31
|
+
case "date":
|
|
32
|
+
return { ...field, type: "date" };
|
|
33
|
+
case "time":
|
|
34
|
+
return { ...field, type: "time" };
|
|
35
|
+
case "timestamp":
|
|
36
|
+
case "datetime":
|
|
37
|
+
return { ...field, type: "datetime" };
|
|
38
|
+
case "json":
|
|
39
|
+
case "object":
|
|
40
|
+
return { ...field, type: "object" };
|
|
41
|
+
case "array":
|
|
42
|
+
return { ...field, type: "array" };
|
|
43
|
+
default:
|
|
44
|
+
return { ...field, type: "any" };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUNrYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wbHVnaW5zL2NrYW4vc2NoZW1hL2NvbnZlcnQvZnJvbUNrYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZUEsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFVBQXNCO0lBQzFELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRWxELE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQTtBQUNuQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsU0FBb0I7SUFDeEMsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFBO0lBRXBDLE1BQU0sS0FBSyxHQUFtQjtRQUM1QixJQUFJLEVBQUUsRUFBRTtLQUNULENBQUE7SUFFRCxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUN4QyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ2hELENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxhQUFhLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDN0QsUUFBUSxTQUFTLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssUUFBUTtZQUNYLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFpQixDQUFBO1FBQ3BELEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxTQUFTO1lBQ1osT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQWtCLENBQUE7UUFDdEQsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssT0FBTztZQUNWLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFpQixDQUFBO1FBQ3BELEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxTQUFTO1lBQ1osT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQWtCLENBQUE7UUFDdEQsS0FBSyxNQUFNO1lBQ1QsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQWUsQ0FBQTtRQUNoRCxLQUFLLE1BQU07WUFDVCxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBZSxDQUFBO1FBQ2hELEtBQUssV0FBVyxDQUFDO1FBQ2pCLEtBQUssVUFBVTtZQUNiLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFtQixDQUFBO1FBQ3hELEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxRQUFRO1lBQ1gsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWlCLENBQUE7UUFDcEQsS0FBSyxPQUFPO1lBQ1YsT0FBTyxFQUFFLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQWdCLENBQUE7UUFDbEQ7WUFDRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBVyxDQUFBO0lBQzdDLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWVsZCwgU2NoZW1hIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHR5cGUge1xuICBBcnJheUZpZWxkLFxuICBCb29sZWFuRmllbGQsXG4gIERhdGVGaWVsZCxcbiAgRGF0ZXRpbWVGaWVsZCxcbiAgSW50ZWdlckZpZWxkLFxuICBOdW1iZXJGaWVsZCxcbiAgT2JqZWN0RmllbGQsXG4gIFN0cmluZ0ZpZWxkLFxuICBUaW1lRmllbGQsXG59IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB0eXBlIHsgQ2thbkZpZWxkIH0gZnJvbSBcIi4uL0ZpZWxkLnRzXCJcbmltcG9ydCB0eXBlIHsgQ2thblNjaGVtYSB9IGZyb20gXCIuLi9TY2hlbWEudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFNjaGVtYUZyb21Da2FuKGNrYW5TY2hlbWE6IENrYW5TY2hlbWEpOiBTY2hlbWEge1xuICBjb25zdCBmaWVsZHMgPSBja2FuU2NoZW1hLmZpZWxkcy5tYXAoY29udmVydEZpZWxkKVxuXG4gIHJldHVybiB7IGZpZWxkcyB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGaWVsZChja2FuRmllbGQ6IENrYW5GaWVsZCkge1xuICBjb25zdCB7IGlkLCB0eXBlLCBpbmZvIH0gPSBja2FuRmllbGRcblxuICBjb25zdCBmaWVsZDogUGFydGlhbDxGaWVsZD4gPSB7XG4gICAgbmFtZTogaWQsXG4gIH1cblxuICBpZiAoaW5mbykge1xuICAgIGlmIChpbmZvLmxhYmVsKSBmaWVsZC50aXRsZSA9IGluZm8ubGFiZWxcbiAgICBpZiAoaW5mby5ub3RlcykgZmllbGQuZGVzY3JpcHRpb24gPSBpbmZvLm5vdGVzXG4gIH1cblxuICBjb25zdCBmaWVsZFR5cGUgPSAoaW5mbz8udHlwZV9vdmVycmlkZSB8fCB0eXBlKS50b0xvd2VyQ2FzZSgpXG4gIHN3aXRjaCAoZmllbGRUeXBlKSB7XG4gICAgY2FzZSBcInRleHRcIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogXCJzdHJpbmdcIiB9IGFzIFN0cmluZ0ZpZWxkXG4gICAgY2FzZSBcImludFwiOlxuICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogXCJpbnRlZ2VyXCIgfSBhcyBJbnRlZ2VyRmllbGRcbiAgICBjYXNlIFwibnVtZXJpY1wiOlxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiZmxvYXRcIjpcbiAgICAgIHJldHVybiB7IC4uLmZpZWxkLCB0eXBlOiBcIm51bWJlclwiIH0gYXMgTnVtYmVyRmllbGRcbiAgICBjYXNlIFwiYm9vbFwiOlxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogXCJib29sZWFuXCIgfSBhcyBCb29sZWFuRmllbGRcbiAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgcmV0dXJuIHsgLi4uZmllbGQsIHR5cGU6IFwiZGF0ZVwiIH0gYXMgRGF0ZUZpZWxkXG4gICAgY2FzZSBcInRpbWVcIjpcbiAgICAgIHJldHVybiB7IC4uLmZpZWxkLCB0eXBlOiBcInRpbWVcIiB9IGFzIFRpbWVGaWVsZFxuICAgIGNhc2UgXCJ0aW1lc3RhbXBcIjpcbiAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcbiAgICAgIHJldHVybiB7IC4uLmZpZWxkLCB0eXBlOiBcImRhdGV0aW1lXCIgfSBhcyBEYXRldGltZUZpZWxkXG4gICAgY2FzZSBcImpzb25cIjpcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogXCJvYmplY3RcIiB9IGFzIE9iamVjdEZpZWxkXG4gICAgY2FzZSBcImFycmF5XCI6XG4gICAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogXCJhcnJheVwiIH0gYXMgQXJyYXlGaWVsZFxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4geyAuLi5maWVsZCwgdHlwZTogXCJhbnlcIiB9IGFzIEZpZWxkXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import ckanSchemaFixture from "./fixtures/ckan-schema.json" with {
|
|
3
|
+
type: "json"
|
|
4
|
+
};
|
|
5
|
+
import { convertSchemaFromCkan } from "./fromCkan.js";
|
|
6
|
+
describe("convertSchemaFromCkan", () => {
|
|
7
|
+
it("converts a CKAN schema to a Frictionless schema", () => {
|
|
8
|
+
const ckanSchema = ckanSchemaFixture;
|
|
9
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
10
|
+
expect(result.fields).toHaveLength(ckanSchema.fields.length);
|
|
11
|
+
const idField = result.fields.find(f => f.name === "id");
|
|
12
|
+
expect(idField).toBeDefined();
|
|
13
|
+
if (idField) {
|
|
14
|
+
expect(idField.type).toEqual("integer");
|
|
15
|
+
expect(idField.title).toEqual("ID");
|
|
16
|
+
expect(idField.description).toEqual("Unique identifier");
|
|
17
|
+
}
|
|
18
|
+
const nameField = result.fields.find(f => f.name === "name");
|
|
19
|
+
expect(nameField).toBeDefined();
|
|
20
|
+
if (nameField) {
|
|
21
|
+
expect(nameField.type).toEqual("string");
|
|
22
|
+
expect(nameField.title).toEqual("Name");
|
|
23
|
+
expect(nameField.description).toEqual("Person's full name");
|
|
24
|
+
}
|
|
25
|
+
const ageField = result.fields.find(f => f.name === "age");
|
|
26
|
+
expect(ageField).toBeDefined();
|
|
27
|
+
if (ageField) {
|
|
28
|
+
expect(ageField.type).toEqual("integer");
|
|
29
|
+
expect(ageField.title).toBeUndefined();
|
|
30
|
+
expect(ageField.description).toBeUndefined();
|
|
31
|
+
}
|
|
32
|
+
const scoreField = result.fields.find(f => f.name === "score");
|
|
33
|
+
expect(scoreField).toBeDefined();
|
|
34
|
+
if (scoreField) {
|
|
35
|
+
expect(scoreField.type).toEqual("number");
|
|
36
|
+
expect(scoreField.title).toEqual("Score");
|
|
37
|
+
expect(scoreField.description).toEqual("Test score");
|
|
38
|
+
}
|
|
39
|
+
const isActiveField = result.fields.find(f => f.name === "is_active");
|
|
40
|
+
expect(isActiveField).toBeDefined();
|
|
41
|
+
if (isActiveField) {
|
|
42
|
+
expect(isActiveField.type).toEqual("boolean");
|
|
43
|
+
}
|
|
44
|
+
const birthDateField = result.fields.find(f => f.name === "birth_date");
|
|
45
|
+
expect(birthDateField).toBeDefined();
|
|
46
|
+
if (birthDateField) {
|
|
47
|
+
expect(birthDateField.type).toEqual("date");
|
|
48
|
+
expect(birthDateField.title).toEqual("Birth Date");
|
|
49
|
+
expect(birthDateField.description).toEqual("Date of birth");
|
|
50
|
+
}
|
|
51
|
+
const startTimeField = result.fields.find(f => f.name === "start_time");
|
|
52
|
+
expect(startTimeField).toBeDefined();
|
|
53
|
+
if (startTimeField) {
|
|
54
|
+
expect(startTimeField.type).toEqual("time");
|
|
55
|
+
}
|
|
56
|
+
const createdAtField = result.fields.find(f => f.name === "created_at");
|
|
57
|
+
expect(createdAtField).toBeDefined();
|
|
58
|
+
if (createdAtField) {
|
|
59
|
+
expect(createdAtField.type).toEqual("datetime");
|
|
60
|
+
expect(createdAtField.title).toEqual("Created At");
|
|
61
|
+
expect(createdAtField.description).toEqual("Timestamp when record was created");
|
|
62
|
+
}
|
|
63
|
+
const metadataField = result.fields.find(f => f.name === "metadata");
|
|
64
|
+
expect(metadataField).toBeDefined();
|
|
65
|
+
if (metadataField) {
|
|
66
|
+
expect(metadataField.type).toEqual("object");
|
|
67
|
+
}
|
|
68
|
+
const tagsField = result.fields.find(f => f.name === "tags");
|
|
69
|
+
expect(tagsField).toBeDefined();
|
|
70
|
+
if (tagsField) {
|
|
71
|
+
expect(tagsField.type).toEqual("array");
|
|
72
|
+
expect(tagsField.title).toEqual("Tags");
|
|
73
|
+
expect(tagsField.description).toEqual("List of tags");
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
it("converts CKAN type aliases to Frictionless types", () => {
|
|
77
|
+
const ckanSchema = ckanSchemaFixture;
|
|
78
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
79
|
+
const stringField = result.fields.find(f => f.name === "string_field");
|
|
80
|
+
expect(stringField?.type).toEqual("string");
|
|
81
|
+
const integerField = result.fields.find(f => f.name === "integer_field");
|
|
82
|
+
expect(integerField?.type).toEqual("integer");
|
|
83
|
+
const numberField = result.fields.find(f => f.name === "number_field");
|
|
84
|
+
expect(numberField?.type).toEqual("number");
|
|
85
|
+
const floatField = result.fields.find(f => f.name === "float_field");
|
|
86
|
+
expect(floatField?.type).toEqual("number");
|
|
87
|
+
const booleanField = result.fields.find(f => f.name === "boolean_field");
|
|
88
|
+
expect(booleanField?.type).toEqual("boolean");
|
|
89
|
+
const datetimeField = result.fields.find(f => f.name === "datetime_field");
|
|
90
|
+
expect(datetimeField?.type).toEqual("datetime");
|
|
91
|
+
const objectField = result.fields.find(f => f.name === "object_field");
|
|
92
|
+
expect(objectField?.type).toEqual("object");
|
|
93
|
+
});
|
|
94
|
+
it("handles unknown field types by converting to 'any'", () => {
|
|
95
|
+
const ckanSchema = ckanSchemaFixture;
|
|
96
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
97
|
+
const unknownField = result.fields.find(f => f.name === "unknown_field");
|
|
98
|
+
expect(unknownField).toBeDefined();
|
|
99
|
+
if (unknownField) {
|
|
100
|
+
expect(unknownField.type).toEqual("any");
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
it("respects type_override in field info", () => {
|
|
104
|
+
const ckanSchema = ckanSchemaFixture;
|
|
105
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
106
|
+
const overrideField = result.fields.find(f => f.name === "override_field");
|
|
107
|
+
expect(overrideField).toBeDefined();
|
|
108
|
+
if (overrideField) {
|
|
109
|
+
expect(overrideField.type).toEqual("integer");
|
|
110
|
+
expect(overrideField.title).toEqual("Override Field");
|
|
111
|
+
expect(overrideField.description).toEqual("Field with type override");
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
it("handles empty fields array", () => {
|
|
115
|
+
const ckanSchema = {
|
|
116
|
+
fields: [],
|
|
117
|
+
};
|
|
118
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
119
|
+
expect(result.fields).toEqual([]);
|
|
120
|
+
});
|
|
121
|
+
it("handles fields without info object", () => {
|
|
122
|
+
const ckanSchema = {
|
|
123
|
+
fields: [
|
|
124
|
+
{
|
|
125
|
+
id: "simple_field",
|
|
126
|
+
type: "text",
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
};
|
|
130
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
131
|
+
expect(result.fields).toHaveLength(1);
|
|
132
|
+
const field = result.fields[0];
|
|
133
|
+
expect(field).toBeDefined();
|
|
134
|
+
if (field) {
|
|
135
|
+
expect(field.name).toEqual("simple_field");
|
|
136
|
+
expect(field.type).toEqual("string");
|
|
137
|
+
expect(field.title).toBeUndefined();
|
|
138
|
+
expect(field.description).toBeUndefined();
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
it("handles case insensitivity in type conversion", () => {
|
|
142
|
+
const ckanSchema = {
|
|
143
|
+
fields: [
|
|
144
|
+
{ id: "field1", type: "TEXT" },
|
|
145
|
+
{ id: "field2", type: "INT" },
|
|
146
|
+
{ id: "field3", type: "BOOL" },
|
|
147
|
+
{ id: "field4", type: "TIMESTAMP" },
|
|
148
|
+
],
|
|
149
|
+
};
|
|
150
|
+
const result = convertSchemaFromCkan(ckanSchema);
|
|
151
|
+
expect(result.fields[0]?.type).toEqual("string");
|
|
152
|
+
expect(result.fields[1]?.type).toEqual("integer");
|
|
153
|
+
expect(result.fields[2]?.type).toEqual("boolean");
|
|
154
|
+
expect(result.fields[3]?.type).toEqual("datetime");
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUNrYW4uc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BsdWdpbnMvY2thbi9zY2hlbWEvY29udmVydC9mcm9tQ2thbi5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUU3QyxPQUFPLGlCQUFpQixNQUFNLDZCQUE2QixDQUFDO0lBQzFELElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQTtBQUNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVyRCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUcsaUJBQStCLENBQUE7UUFFbEQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUU1RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUE7UUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzdCLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNuQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdB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K0MsRUFBRSxHQUFHLEVBQUU7UUFDdkQsTUFBTSxVQUFVLEdBQWU7WUFDN0IsTUFBTSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtnQkFDN0IsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQzlCLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2FBQ3BDO1NBQ0YsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRWhELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNoRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNwRCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB0eXBlIHsgQ2thblNjaGVtYSB9IGZyb20gXCIuLi9TY2hlbWEudHNcIlxuaW1wb3J0IGNrYW5TY2hlbWFGaXh0dXJlIGZyb20gXCIuL2ZpeHR1cmVzL2NrYW4tc2NoZW1hLmpzb25cIiB3aXRoIHtcbiAgdHlwZTogXCJqc29uXCIsXG59XG5pbXBvcnQgeyBjb252ZXJ0U2NoZW1hRnJvbUNrYW4gfSBmcm9tIFwiLi9mcm9tQ2thbi50c1wiXG5cbmRlc2NyaWJlKFwiY29udmVydFNjaGVtYUZyb21Da2FuXCIsICgpID0+IHtcbiAgaXQoXCJjb252ZXJ0cyBhIENLQU4gc2NoZW1hIHRvIGEgRnJpY3Rpb25sZXNzIHNjaGVtYVwiLCAoKSA9PiB7XG4gICAgY29uc3QgY2thblNjaGVtYSA9IGNrYW5TY2hlbWFGaXh0dXJlIGFzIENrYW5TY2hlbWFcblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRTY2hlbWFGcm9tQ2thbihja2FuU2NoZW1hKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5maWVsZHMpLnRvSGF2ZUxlbmd0aChja2FuU2NoZW1hLmZpZWxkcy5sZW5ndGgpXG5cbiAgICBjb25zdCBpZEZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcImlkXCIpXG4gICAgZXhwZWN0KGlkRmllbGQpLnRvQmVEZWZpbmVkKClcbiAgICBpZiAoaWRGaWVsZCkge1xuICAgICAgZXhwZWN0KGlkRmllbGQudHlwZSkudG9FcXVhbChcImludGVnZXJcIilcbiAgICAgIGV4cGVjdChpZEZpZWxkLnRpdGxlKS50b0VxdWFsKFwiSURcIilcbiAgICAgIGV4cGVjdChpZEZpZWxkLmRlc2NyaXB0aW9uKS50b0VxdWFsKFwiVW5pcXVlIGlkZW50aWZpZXJcIilcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwibmFtZVwiKVxuICAgIGV4cGVjdChuYW1lRmllbGQpLnRvQmVEZWZpbmVkKClcbiAgICBpZiAobmFtZUZpZWxkKSB7XG4gICAgICBleHBlY3QobmFtZUZpZWxkLnR5cGUpLnRvRXF1YWwoXCJzdHJpbmdcIilcbiAgICAgIGV4cGVjdChuYW1lRmllbGQudGl0bGUpLnRvRXF1YWwoXCJOYW1lXCIpXG4gICAgICBleHBlY3QobmFtZUZpZWxkLmRlc2NyaXB0aW9uKS50b0VxdWFsKFwiUGVyc29uJ3MgZnVsbCBuYW1lXCIpXG4gICAgfVxuXG4gICAgY29uc3QgYWdlRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwiYWdlXCIpXG4gICAgZXhwZWN0KGFnZUZpZWxkKS50b0JlRGVmaW5lZCgpXG4gICAgaWYgKGFnZUZpZWxkKSB7XG4gICAgICBleHBlY3QoYWdlRmllbGQudHlwZSkudG9FcXVhbChcImludGVnZXJcIilcbiAgICAgIGV4cGVjdChhZ2VGaWVsZC50aXRsZSkudG9CZVVuZGVmaW5lZCgpXG4gICAgICBleHBlY3QoYWdlRmllbGQuZGVzY3JpcHRpb24pLnRvQmVVbmRlZmluZWQoKVxuICAgIH1cblxuICAgIGNvbnN0IHNjb3JlRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwic2NvcmVcIilcbiAgICBleHBlY3Qoc2NvcmVGaWVsZCkudG9CZURlZmluZWQoKVxuICAgIGlmIChzY29yZUZpZWxkKSB7XG4gICAgICBleHBlY3Qoc2NvcmVGaWVsZC50eXBlKS50b0VxdWFsKFwibnVtYmVyXCIpXG4gICAgICBleHBlY3Qoc2NvcmVGaWVsZC50aXRsZSkudG9FcXVhbChcIlNjb3JlXCIpXG4gICAgICBleHBlY3Qoc2NvcmVGaWVsZC5kZXNjcmlwdGlvbikudG9FcXVhbChcIlRlc3Qgc2NvcmVcIilcbiAgICB9XG5cbiAgICBjb25zdCBpc0FjdGl2ZUZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcImlzX2FjdGl2ZVwiKVxuICAgIGV4cGVjdChpc0FjdGl2ZUZpZWxkKS50b0JlRGVmaW5lZCgpXG4gICAgaWYgKGlzQWN0aXZlRmllbGQpIHtcbiAgICAgIGV4cGVjdChpc0FjdGl2ZUZpZWxkLnR5cGUpLnRvRXF1YWwoXCJib29sZWFuXCIpXG4gICAgfVxuXG4gICAgY29uc3QgYmlydGhEYXRlRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwiYmlydGhfZGF0ZVwiKVxuICAgIGV4cGVjdChiaXJ0aERhdGVGaWVsZCkudG9CZURlZmluZWQoKVxuICAgIGlmIChiaXJ0aERhdGVGaWVsZCkge1xuICAgICAgZXhwZWN0KGJpcnRoRGF0ZUZpZWxkLnR5cGUpLnRvRXF1YWwoXCJkYXRlXCIpXG4gICAgICBleHBlY3QoYmlydGhEYXRlRmllbGQudGl0bGUpLnRvRXF1YWwoXCJCaXJ0aCBEYXRlXCIpXG4gICAgICBleHBlY3QoYmlydGhEYXRlRmllbGQuZGVzY3JpcHRpb24pLnRvRXF1YWwoXCJEYXRlIG9mIGJpcnRoXCIpXG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRUaW1lRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwic3RhcnRfdGltZVwiKVxuICAgIGV4cGVjdChzdGFydFRpbWVGaWVsZCkudG9CZURlZmluZWQoKVxuICAgIGlmIChzdGFydFRpbWVGaWVsZCkge1xuICAgICAgZXhwZWN0KHN0YXJ0VGltZUZpZWxkLnR5cGUpLnRvRXF1YWwoXCJ0aW1lXCIpXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZEF0RmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwiY3JlYXRlZF9hdFwiKVxuICAgIGV4cGVjdChjcmVhdGVkQXRGaWVsZCkudG9CZURlZmluZWQoKVxuICAgIGlmIChjcmVhdGVkQXRGaWVsZCkge1xuICAgICAgZXhwZWN0KGNyZWF0ZWRBdEZpZWxkLnR5cGUpLnRvRXF1YWwoXCJkYXRldGltZVwiKVxuICAgICAgZXhwZWN0KGNyZWF0ZWRBdEZpZWxkLnRpdGxlKS50b0VxdWFsKFwiQ3JlYXRlZCBBdFwiKVxuICAgICAgZXhwZWN0KGNyZWF0ZWRBdEZpZWxkLmRlc2NyaXB0aW9uKS50b0VxdWFsKFxuICAgICAgICBcIlRpbWVzdGFtcCB3aGVuIHJlY29yZCB3YXMgY3JlYXRlZFwiLFxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwibWV0YWRhdGFcIilcbiAgICBleHBlY3QobWV0YWRhdGFGaWVsZCkudG9CZURlZmluZWQoKVxuICAgIGlmIChtZXRhZGF0YUZpZWxkKSB7XG4gICAgICBleHBlY3QobWV0YWRhdGFGaWVsZC50eXBlKS50b0VxdWFsKFwib2JqZWN0XCIpXG4gICAgfVxuXG4gICAgY29uc3QgdGFnc0ZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcInRhZ3NcIilcbiAgICBleHBlY3QodGFnc0ZpZWxkKS50b0JlRGVmaW5lZCgpXG4gICAgaWYgKHRhZ3NGaWVsZCkge1xuICAgICAgZXhwZWN0KHRhZ3NGaWVsZC50eXBlKS50b0VxdWFsKFwiYXJyYXlcIilcbiAgICAgIGV4cGVjdCh0YWdzRmllbGQudGl0bGUpLnRvRXF1YWwoXCJUYWdzXCIpXG4gICAgICBleHBlY3QodGFnc0ZpZWxkLmRlc2NyaXB0aW9uKS50b0VxdWFsKFwiTGlzdCBvZiB0YWdzXCIpXG4gICAgfVxuICB9KVxuXG4gIGl0KFwiY29udmVydHMgQ0tBTiB0eXBlIGFsaWFzZXMgdG8gRnJpY3Rpb25sZXNzIHR5cGVzXCIsICgpID0+IHtcbiAgICBjb25zdCBja2FuU2NoZW1hID0gY2thblNjaGVtYUZpeHR1cmUgYXMgQ2thblNjaGVtYVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydFNjaGVtYUZyb21Da2FuKGNrYW5TY2hlbWEpXG5cbiAgICBjb25zdCBzdHJpbmdGaWVsZCA9IHJlc3VsdC5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJzdHJpbmdfZmllbGRcIilcbiAgICBleHBlY3Qoc3RyaW5nRmllbGQ/LnR5cGUpLnRvRXF1YWwoXCJzdHJpbmdcIilcblxuICAgIGNvbnN0IGludGVnZXJGaWVsZCA9IHJlc3VsdC5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJpbnRlZ2VyX2ZpZWxkXCIpXG4gICAgZXhwZWN0KGludGVnZXJGaWVsZD8udHlwZSkudG9FcXVhbChcImludGVnZXJcIilcblxuICAgIGNvbnN0IG51bWJlckZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcIm51bWJlcl9maWVsZFwiKVxuICAgIGV4cGVjdChudW1iZXJGaWVsZD8udHlwZSkudG9FcXVhbChcIm51bWJlclwiKVxuXG4gICAgY29uc3QgZmxvYXRGaWVsZCA9IHJlc3VsdC5maWVsZHMuZmluZChmID0+IGYubmFtZSA9PT0gXCJmbG9hdF9maWVsZFwiKVxuICAgIGV4cGVjdChmbG9hdEZpZWxkPy50eXBlKS50b0VxdWFsKFwibnVtYmVyXCIpXG5cbiAgICBjb25zdCBib29sZWFuRmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwiYm9vbGVhbl9maWVsZFwiKVxuICAgIGV4cGVjdChib29sZWFuRmllbGQ/LnR5cGUpLnRvRXF1YWwoXCJib29sZWFuXCIpXG5cbiAgICBjb25zdCBkYXRldGltZUZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcImRhdGV0aW1lX2ZpZWxkXCIpXG4gICAgZXhwZWN0KGRhdGV0aW1lRmllbGQ/LnR5cGUpLnRvRXF1YWwoXCJkYXRldGltZVwiKVxuXG4gICAgY29uc3Qgb2JqZWN0RmllbGQgPSByZXN1bHQuZmllbGRzLmZpbmQoZiA9PiBmLm5hbWUgPT09IFwib2JqZWN0X2ZpZWxkXCIpXG4gICAgZXhwZWN0KG9iamVjdEZpZWxkPy50eXBlKS50b0VxdWFsKFwib2JqZWN0XCIpXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIHVua25vd24gZmllbGQgdHlwZXMgYnkgY29udmVydGluZyB0byAnYW55J1wiLCAoKSA9PiB7XG4gICAgY29uc3QgY2thblNjaGVtYSA9IGNrYW5TY2hlbWFGaXh0dXJlIGFzIENrYW5TY2hlbWFcblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRTY2hlbWFGcm9tQ2thbihja2FuU2NoZW1hKVxuXG4gICAgY29uc3QgdW5rbm93bkZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcInVua25vd25fZmllbGRcIilcbiAgICBleHBlY3QodW5rbm93bkZpZWxkKS50b0JlRGVmaW5lZCgpXG4gICAgaWYgKHVua25vd25GaWVsZCkge1xuICAgICAgZXhwZWN0KHVua25vd25GaWVsZC50eXBlKS50b0VxdWFsKFwiYW55XCIpXG4gICAgfVxuICB9KVxuXG4gIGl0KFwicmVzcGVjdHMgdHlwZV9vdmVycmlkZSBpbiBmaWVsZCBpbmZvXCIsICgpID0+IHtcbiAgICBjb25zdCBja2FuU2NoZW1hID0gY2thblNjaGVtYUZpeHR1cmUgYXMgQ2thblNjaGVtYVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydFNjaGVtYUZyb21Da2FuKGNrYW5TY2hlbWEpXG5cbiAgICBjb25zdCBvdmVycmlkZUZpZWxkID0gcmVzdWx0LmZpZWxkcy5maW5kKGYgPT4gZi5uYW1lID09PSBcIm92ZXJyaWRlX2ZpZWxkXCIpXG4gICAgZXhwZWN0KG92ZXJyaWRlRmllbGQpLnRvQmVEZWZpbmVkKClcbiAgICBpZiAob3ZlcnJpZGVGaWVsZCkge1xuICAgICAgZXhwZWN0KG92ZXJyaWRlRmllbGQudHlwZSkudG9FcXVhbChcImludGVnZXJcIilcbiAgICAgIGV4cGVjdChvdmVycmlkZUZpZWxkLnRpdGxlKS50b0VxdWFsKFwiT3ZlcnJpZGUgRmllbGRcIilcbiAgICAgIGV4cGVjdChvdmVycmlkZUZpZWxkLmRlc2NyaXB0aW9uKS50b0VxdWFsKFwiRmllbGQgd2l0aCB0eXBlIG92ZXJyaWRlXCIpXG4gICAgfVxuICB9KVxuXG4gIGl0KFwiaGFuZGxlcyBlbXB0eSBmaWVsZHMgYXJyYXlcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGNrYW5TY2hlbWE6IENrYW5TY2hlbWEgPSB7XG4gICAgICBmaWVsZHM6IFtdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRTY2hlbWFGcm9tQ2thbihja2FuU2NoZW1hKVxuXG4gICAgZXhwZWN0KHJlc3VsdC5maWVsZHMpLnRvRXF1YWwoW10pXG4gIH0pXG5cbiAgaXQoXCJoYW5kbGVzIGZpZWxkcyB3aXRob3V0IGluZm8gb2JqZWN0XCIsICgpID0+IHtcbiAgICBjb25zdCBja2FuU2NoZW1hOiBDa2FuU2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogXCJzaW1wbGVfZmllbGRcIixcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydFNjaGVtYUZyb21Da2FuKGNrYW5TY2hlbWEpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpZWxkcykudG9IYXZlTGVuZ3RoKDEpXG4gICAgY29uc3QgZmllbGQgPSByZXN1bHQuZmllbGRzWzBdXG4gICAgZXhwZWN0KGZpZWxkKS50b0JlRGVmaW5lZCgpXG4gICAgaWYgKGZpZWxkKSB7XG4gICAgICBleHBlY3QoZmllbGQubmFtZSkudG9FcXVhbChcInNpbXBsZV9maWVsZFwiKVxuICAgICAgZXhwZWN0KGZpZWxkLnR5cGUpLnRvRXF1YWwoXCJzdHJpbmdcIilcbiAgICAgIGV4cGVjdChmaWVsZC50aXRsZSkudG9CZVVuZGVmaW5lZCgpXG4gICAgICBleHBlY3QoZmllbGQuZGVzY3JpcHRpb24pLnRvQmVVbmRlZmluZWQoKVxuICAgIH1cbiAgfSlcblxuICBpdChcImhhbmRsZXMgY2FzZSBpbnNlbnNpdGl2aXR5IGluIHR5cGUgY29udmVyc2lvblwiLCAoKSA9PiB7XG4gICAgY29uc3QgY2thblNjaGVtYTogQ2thblNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IGlkOiBcImZpZWxkMVwiLCB0eXBlOiBcIlRFWFRcIiB9LFxuICAgICAgICB7IGlkOiBcImZpZWxkMlwiLCB0eXBlOiBcIklOVFwiIH0sXG4gICAgICAgIHsgaWQ6IFwiZmllbGQzXCIsIHR5cGU6IFwiQk9PTFwiIH0sXG4gICAgICAgIHsgaWQ6IFwiZmllbGQ0XCIsIHR5cGU6IFwiVElNRVNUQU1QXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydFNjaGVtYUZyb21Da2FuKGNrYW5TY2hlbWEpXG5cbiAgICBleHBlY3QocmVzdWx0LmZpZWxkc1swXT8udHlwZSkudG9FcXVhbChcInN0cmluZ1wiKVxuICAgIGV4cGVjdChyZXN1bHQuZmllbGRzWzFdPy50eXBlKS50b0VxdWFsKFwiaW50ZWdlclwiKVxuICAgIGV4cGVjdChyZXN1bHQuZmllbGRzWzJdPy50eXBlKS50b0VxdWFsKFwiYm9vbGVhblwiKVxuICAgIGV4cGVjdChyZXN1bHQuZmllbGRzWzNdPy50eXBlKS50b0VxdWFsKFwiZGF0ZXRpbWVcIilcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export function convertSchemaToCkan(schema) {
|
|
2
|
+
const fields = schema.fields.map(convertField);
|
|
3
|
+
return { fields };
|
|
4
|
+
}
|
|
5
|
+
function convertField(field) {
|
|
6
|
+
const { name, title, description, type } = field;
|
|
7
|
+
const ckanField = {
|
|
8
|
+
id: name,
|
|
9
|
+
type: convertType(type),
|
|
10
|
+
};
|
|
11
|
+
if (title || description) {
|
|
12
|
+
const fieldInfo = {};
|
|
13
|
+
if (title)
|
|
14
|
+
fieldInfo.label = title;
|
|
15
|
+
if (description)
|
|
16
|
+
fieldInfo.notes = description;
|
|
17
|
+
fieldInfo.type_override = convertType(type);
|
|
18
|
+
ckanField.info = fieldInfo;
|
|
19
|
+
}
|
|
20
|
+
return ckanField;
|
|
21
|
+
}
|
|
22
|
+
function convertType(type) {
|
|
23
|
+
switch (type) {
|
|
24
|
+
case "string":
|
|
25
|
+
return "text";
|
|
26
|
+
case "integer":
|
|
27
|
+
return "int";
|
|
28
|
+
case "number":
|
|
29
|
+
return "numeric";
|
|
30
|
+
case "boolean":
|
|
31
|
+
return "bool";
|
|
32
|
+
case "date":
|
|
33
|
+
return "date";
|
|
34
|
+
case "time":
|
|
35
|
+
return "time";
|
|
36
|
+
case "datetime":
|
|
37
|
+
return "timestamp";
|
|
38
|
+
case "object":
|
|
39
|
+
return "json";
|
|
40
|
+
case "array":
|
|
41
|
+
return "array";
|
|
42
|
+
case "geopoint":
|
|
43
|
+
return "geopoint";
|
|
44
|
+
case "geojson":
|
|
45
|
+
return "geojson";
|
|
46
|
+
default:
|
|
47
|
+
return "text";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9Da2FuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGx1Z2lucy9ja2FuL3NjaGVtYS9jb252ZXJ0L3RvQ2thbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBYztJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUU5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFDbkIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQVk7SUFDaEMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUVoRCxNQUFNLFNBQVMsR0FBYztRQUMzQixFQUFFLEVBQUUsSUFBSTtRQUNSLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDO0tBQ3hCLENBQUE7SUFFRCxJQUFJLEtBQUssSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBa0IsRUFBbUIsQ0FBQTtRQUVwRCxJQUFJLEtBQUs7WUFBRSxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQyxJQUFJLFdBQVc7WUFBRSxTQUFTLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQTtRQUU5QyxTQUFTLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUzQyxTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQTtJQUM1QixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQWE7SUFDaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssUUFBUTtZQUNYLE9BQU8sTUFBTSxDQUFBO1FBQ2YsS0FBSyxTQUFTO1lBQ1osT0FBTyxLQUFLLENBQUE7UUFDZCxLQUFLLFFBQVE7WUFDWCxPQUFPLFNBQVMsQ0FBQTtRQUNsQixLQUFLLFNBQVM7WUFDWixPQUFPLE1BQU0sQ0FBQTtRQUNmLEtBQUssTUFBTTtZQUNULE9BQU8sTUFBTSxDQUFBO1FBQ2YsS0FBSyxNQUFNO1lBQ1QsT0FBTyxNQUFNLENBQUE7UUFDZixLQUFLLFVBQVU7WUFDYixPQUFPLFdBQVcsQ0FBQTtRQUNwQixLQUFLLFFBQVE7WUFDWCxPQUFPLE1BQU0sQ0FBQTtRQUNmLEtBQUssT0FBTztZQUNWLE9BQU8sT0FBTyxDQUFBO1FBQ2hCLEtBQUssVUFBVTtZQUNiLE9BQU8sVUFBVSxDQUFBO1FBQ25CLEtBQUssU0FBUztZQUNaLE9BQU8sU0FBUyxDQUFBO1FBQ2xCO1lBQ0UsT0FBTyxNQUFNLENBQUE7SUFDakIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpZWxkLCBTY2hlbWEgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgdHlwZSB7IENrYW5GaWVsZCwgQ2thbkZpZWxkSW5mbyB9IGZyb20gXCIuLi9GaWVsZC50c1wiXG5pbXBvcnQgdHlwZSB7IENrYW5TY2hlbWEgfSBmcm9tIFwiLi4vU2NoZW1hLnRzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRTY2hlbWFUb0NrYW4oc2NoZW1hOiBTY2hlbWEpOiBDa2FuU2NoZW1hIHtcbiAgY29uc3QgZmllbGRzID0gc2NoZW1hLmZpZWxkcy5tYXAoY29udmVydEZpZWxkKVxuXG4gIHJldHVybiB7IGZpZWxkcyB9XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRGaWVsZChmaWVsZDogRmllbGQpOiBDa2FuRmllbGQge1xuICBjb25zdCB7IG5hbWUsIHRpdGxlLCBkZXNjcmlwdGlvbiwgdHlwZSB9ID0gZmllbGRcblxuICBjb25zdCBja2FuRmllbGQ6IENrYW5GaWVsZCA9IHtcbiAgICBpZDogbmFtZSxcbiAgICB0eXBlOiBjb252ZXJ0VHlwZSh0eXBlKSxcbiAgfVxuXG4gIGlmICh0aXRsZSB8fCBkZXNjcmlwdGlvbikge1xuICAgIGNvbnN0IGZpZWxkSW5mbzogQ2thbkZpZWxkSW5mbyA9IHt9IGFzIENrYW5GaWVsZEluZm9cblxuICAgIGlmICh0aXRsZSkgZmllbGRJbmZvLmxhYmVsID0gdGl0bGVcbiAgICBpZiAoZGVzY3JpcHRpb24pIGZpZWxkSW5mby5ub3RlcyA9IGRlc2NyaXB0aW9uXG5cbiAgICBmaWVsZEluZm8udHlwZV9vdmVycmlkZSA9IGNvbnZlcnRUeXBlKHR5cGUpXG5cbiAgICBja2FuRmllbGQuaW5mbyA9IGZpZWxkSW5mb1xuICB9XG5cbiAgcmV0dXJuIGNrYW5GaWVsZFxufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHlwZSh0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgcmV0dXJuIFwidGV4dFwiXG4gICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgIHJldHVybiBcImludFwiXG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgcmV0dXJuIFwibnVtZXJpY1wiXG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgIHJldHVybiBcImJvb2xcIlxuICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICByZXR1cm4gXCJkYXRlXCJcbiAgICBjYXNlIFwidGltZVwiOlxuICAgICAgcmV0dXJuIFwidGltZVwiXG4gICAgY2FzZSBcImRhdGV0aW1lXCI6XG4gICAgICByZXR1cm4gXCJ0aW1lc3RhbXBcIlxuICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIHJldHVybiBcImpzb25cIlxuICAgIGNhc2UgXCJhcnJheVwiOlxuICAgICAgcmV0dXJuIFwiYXJyYXlcIlxuICAgIGNhc2UgXCJnZW9wb2ludFwiOlxuICAgICAgcmV0dXJuIFwiZ2VvcG9pbnRcIlxuICAgIGNhc2UgXCJnZW9qc29uXCI6XG4gICAgICByZXR1cm4gXCJnZW9qc29uXCJcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwidGV4dFwiXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|