@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,87 @@
|
|
|
1
|
+
import type { GithubResource } from "../resource/index.ts";
|
|
2
|
+
import type { GithubLicense } from "./License.ts";
|
|
3
|
+
import type { GithubOwner } from "./Owner.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Github repository as a package
|
|
6
|
+
*/
|
|
7
|
+
export interface GithubPackage {
|
|
8
|
+
/**
|
|
9
|
+
* Repository identifier
|
|
10
|
+
*/
|
|
11
|
+
id: number;
|
|
12
|
+
/**
|
|
13
|
+
* Repository name
|
|
14
|
+
*/
|
|
15
|
+
name: string;
|
|
16
|
+
/**
|
|
17
|
+
* Repository full name (owner/name)
|
|
18
|
+
*/
|
|
19
|
+
full_name: string;
|
|
20
|
+
/**
|
|
21
|
+
* Repository owner
|
|
22
|
+
*/
|
|
23
|
+
owner: GithubOwner;
|
|
24
|
+
/**
|
|
25
|
+
* Repository description
|
|
26
|
+
*/
|
|
27
|
+
description: string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Repository creation date
|
|
30
|
+
*/
|
|
31
|
+
created_at: string;
|
|
32
|
+
/**
|
|
33
|
+
* Repository update date
|
|
34
|
+
*/
|
|
35
|
+
updated_at: string;
|
|
36
|
+
/**
|
|
37
|
+
* Repository homepage URL
|
|
38
|
+
*/
|
|
39
|
+
homepage: string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Repository size in KB
|
|
42
|
+
*/
|
|
43
|
+
size: number;
|
|
44
|
+
/**
|
|
45
|
+
* Repository stars count
|
|
46
|
+
*/
|
|
47
|
+
stargazers_count: number;
|
|
48
|
+
/**
|
|
49
|
+
* Repository watchers count
|
|
50
|
+
*/
|
|
51
|
+
watchers_count: number;
|
|
52
|
+
/**
|
|
53
|
+
* Repository language
|
|
54
|
+
*/
|
|
55
|
+
language: string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Repository license
|
|
58
|
+
*/
|
|
59
|
+
license: GithubLicense | null;
|
|
60
|
+
/**
|
|
61
|
+
* Repository default branch
|
|
62
|
+
*/
|
|
63
|
+
default_branch: string;
|
|
64
|
+
/**
|
|
65
|
+
* Repository topics
|
|
66
|
+
*/
|
|
67
|
+
topics: string[];
|
|
68
|
+
/**
|
|
69
|
+
* Repository is private
|
|
70
|
+
*/
|
|
71
|
+
private: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Repository is archived
|
|
74
|
+
*/
|
|
75
|
+
archived: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Repository URLs
|
|
78
|
+
*/
|
|
79
|
+
html_url: string;
|
|
80
|
+
git_url: string;
|
|
81
|
+
ssh_url: string;
|
|
82
|
+
clone_url: string;
|
|
83
|
+
/**
|
|
84
|
+
* Repository resources
|
|
85
|
+
*/
|
|
86
|
+
resources?: GithubResource[];
|
|
87
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvZ2l0aHViL3BhY2thZ2UvUGFja2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBHaXRodWJSZXNvdXJjZSB9IGZyb20gXCIuLi9yZXNvdXJjZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IEdpdGh1YkxpY2Vuc2UgfSBmcm9tIFwiLi9MaWNlbnNlLnRzXCJcbmltcG9ydCB0eXBlIHsgR2l0aHViT3duZXIgfSBmcm9tIFwiLi9Pd25lci50c1wiXG5cbi8qKlxuICogR2l0aHViIHJlcG9zaXRvcnkgYXMgYSBwYWNrYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2l0aHViUGFja2FnZSB7XG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IGlkZW50aWZpZXJcbiAgICovXG4gIGlkOiBudW1iZXJcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBuYW1lXG4gICAqL1xuICBuYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBmdWxsIG5hbWUgKG93bmVyL25hbWUpXG4gICAqL1xuICBmdWxsX25hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IG93bmVyXG4gICAqL1xuICBvd25lcjogR2l0aHViT3duZXJcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBkZXNjcmlwdGlvblxuICAgKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGxcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBjcmVhdGlvbiBkYXRlXG4gICAqL1xuICBjcmVhdGVkX2F0OiBzdHJpbmdcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSB1cGRhdGUgZGF0ZVxuICAgKi9cbiAgdXBkYXRlZF9hdDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgaG9tZXBhZ2UgVVJMXG4gICAqL1xuICBob21lcGFnZTogc3RyaW5nIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IHNpemUgaW4gS0JcbiAgICovXG4gIHNpemU6IG51bWJlclxuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IHN0YXJzIGNvdW50XG4gICAqL1xuICBzdGFyZ2F6ZXJzX2NvdW50OiBudW1iZXJcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSB3YXRjaGVycyBjb3VudFxuICAgKi9cbiAgd2F0Y2hlcnNfY291bnQ6IG51bWJlclxuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IGxhbmd1YWdlXG4gICAqL1xuICBsYW5ndWFnZTogc3RyaW5nIHwgbnVsbFxuXG4gIC8qKlxuICAgKiBSZXBvc2l0b3J5IGxpY2Vuc2VcbiAgICovXG4gIGxpY2Vuc2U6IEdpdGh1YkxpY2Vuc2UgfCBudWxsXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgZGVmYXVsdCBicmFuY2hcbiAgICovXG4gIGRlZmF1bHRfYnJhbmNoOiBzdHJpbmdcblxuICAvKipcbiAgICogUmVwb3NpdG9yeSB0b3BpY3NcbiAgICovXG4gIHRvcGljczogc3RyaW5nW11cblxuICAvKipcbiAgICogUmVwb3NpdG9yeSBpcyBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlOiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgaXMgYXJjaGl2ZWRcbiAgICovXG4gIGFyY2hpdmVkOiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgVVJMc1xuICAgKi9cbiAgaHRtbF91cmw6IHN0cmluZ1xuICBnaXRfdXJsOiBzdHJpbmdcbiAgc3NoX3VybDogc3RyaW5nXG4gIGNsb25lX3VybDogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFJlcG9zaXRvcnkgcmVzb3VyY2VzXG4gICAqL1xuICByZXNvdXJjZXM/OiBHaXRodWJSZXNvdXJjZVtdXG59XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { convertResourceFromGithub } from "../../resource/index.js";
|
|
2
|
+
export function convertPackageFromGithub(githubPackage) {
|
|
3
|
+
const datapackage = {
|
|
4
|
+
name: githubPackage.name,
|
|
5
|
+
resources: [],
|
|
6
|
+
};
|
|
7
|
+
if (githubPackage.description) {
|
|
8
|
+
datapackage.description = githubPackage.description;
|
|
9
|
+
}
|
|
10
|
+
datapackage.title = githubPackage.full_name;
|
|
11
|
+
if (githubPackage.homepage) {
|
|
12
|
+
datapackage.homepage = githubPackage.homepage;
|
|
13
|
+
}
|
|
14
|
+
if (githubPackage.license) {
|
|
15
|
+
const license = {
|
|
16
|
+
name: githubPackage.license.spdx_id || githubPackage.license.key,
|
|
17
|
+
};
|
|
18
|
+
if (githubPackage.license.name) {
|
|
19
|
+
license.title = githubPackage.license.name;
|
|
20
|
+
}
|
|
21
|
+
if (githubPackage.license.url) {
|
|
22
|
+
license.path = githubPackage.license.url;
|
|
23
|
+
}
|
|
24
|
+
datapackage.licenses = [license];
|
|
25
|
+
}
|
|
26
|
+
if (githubPackage.owner) {
|
|
27
|
+
const contributor = {
|
|
28
|
+
title: githubPackage.owner.login,
|
|
29
|
+
role: githubPackage.owner.type === "Organization" ? "publisher" : "author",
|
|
30
|
+
path: githubPackage.owner.html_url,
|
|
31
|
+
};
|
|
32
|
+
datapackage.contributors = [contributor];
|
|
33
|
+
}
|
|
34
|
+
if (githubPackage.resources && githubPackage.resources.length > 0) {
|
|
35
|
+
datapackage.resources = githubPackage.resources
|
|
36
|
+
.filter(resource => !resource.path.startsWith("."))
|
|
37
|
+
.filter(resource => resource.type === "blob")
|
|
38
|
+
.map(resource => convertResourceFromGithub(resource, {
|
|
39
|
+
defaultBranch: githubPackage.default_branch,
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
if (githubPackage.topics && githubPackage.topics.length > 0) {
|
|
43
|
+
datapackage.keywords = githubPackage.topics;
|
|
44
|
+
}
|
|
45
|
+
if (githubPackage.created_at) {
|
|
46
|
+
datapackage.created = githubPackage.created_at;
|
|
47
|
+
}
|
|
48
|
+
return datapackage;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbUdpdGh1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BsdWdpbnMvZ2l0aHViL3BhY2thZ2UvY29udmVydC9mcm9tR2l0aHViLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBR25FLE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsYUFBNEI7SUFFNUIsTUFBTSxXQUFXLEdBQVk7UUFDM0IsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1FBQ3hCLFNBQVMsRUFBRSxFQUFFO0tBQ2QsQ0FBQTtJQUVELElBQUksYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlCLFdBQVcsQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFBO0lBRTNDLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQVk7WUFDdkIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRztTQUNqRSxDQUFBO1FBRUQsSUFBSSxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9CLE9BQU8sQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUE7UUFDNUMsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBO1FBQzFDLENBQUM7UUFFRCxXQUFXLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLE1BQU0sV0FBVyxHQUFnQjtZQUMvQixLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2hDLElBQUksRUFDRixhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUTtZQUN0RSxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRO1NBQ25DLENBQUE7UUFFRCxXQUFXLENBQUMsWUFBWSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLFNBQVMsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxXQUFXLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQyxTQUFTO2FBQzVDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDbEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7YUFDNUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQ2QseUJBQXlCLENBQUMsUUFBUSxFQUFFO1lBQ2xDLGFBQWEsRUFBRSxhQUFhLENBQUMsY0FBYztTQUM1QyxDQUFDLENBQ0gsQ0FBQTtJQUNMLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDNUQsV0FBVyxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFBO0lBQzdDLENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QixXQUFXLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUE7SUFDaEQsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnRyaWJ1dG9yLCBMaWNlbnNlLCBQYWNrYWdlIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHsgY29udmVydFJlc291cmNlRnJvbUdpdGh1YiB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IEdpdGh1YlBhY2thZ2UgfSBmcm9tIFwiLi4vUGFja2FnZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0UGFja2FnZUZyb21HaXRodWIoXG4gIGdpdGh1YlBhY2thZ2U6IEdpdGh1YlBhY2thZ2UsXG4pOiBQYWNrYWdlIHtcbiAgY29uc3QgZGF0YXBhY2thZ2U6IFBhY2thZ2UgPSB7XG4gICAgbmFtZTogZ2l0aHViUGFja2FnZS5uYW1lLFxuICAgIHJlc291cmNlczogW10sXG4gIH1cblxuICBpZiAoZ2l0aHViUGFja2FnZS5kZXNjcmlwdGlvbikge1xuICAgIGRhdGFwYWNrYWdlLmRlc2NyaXB0aW9uID0gZ2l0aHViUGFja2FnZS5kZXNjcmlwdGlvblxuICB9XG5cbiAgZGF0YXBhY2thZ2UudGl0bGUgPSBnaXRodWJQYWNrYWdlLmZ1bGxfbmFtZVxuXG4gIGlmIChnaXRodWJQYWNrYWdlLmhvbWVwYWdlKSB7XG4gICAgZGF0YXBhY2thZ2UuaG9tZXBhZ2UgPSBnaXRodWJQYWNrYWdlLmhvbWVwYWdlXG4gIH1cblxuICBpZiAoZ2l0aHViUGFja2FnZS5saWNlbnNlKSB7XG4gICAgY29uc3QgbGljZW5zZTogTGljZW5zZSA9IHtcbiAgICAgIG5hbWU6IGdpdGh1YlBhY2thZ2UubGljZW5zZS5zcGR4X2lkIHx8IGdpdGh1YlBhY2thZ2UubGljZW5zZS5rZXksXG4gICAgfVxuXG4gICAgaWYgKGdpdGh1YlBhY2thZ2UubGljZW5zZS5uYW1lKSB7XG4gICAgICBsaWNlbnNlLnRpdGxlID0gZ2l0aHViUGFja2FnZS5saWNlbnNlLm5hbWVcbiAgICB9XG5cbiAgICBpZiAoZ2l0aHViUGFja2FnZS5saWNlbnNlLnVybCkge1xuICAgICAgbGljZW5zZS5wYXRoID0gZ2l0aHViUGFja2FnZS5saWNlbnNlLnVybFxuICAgIH1cblxuICAgIGRhdGFwYWNrYWdlLmxpY2Vuc2VzID0gW2xpY2Vuc2VdXG4gIH1cblxuICBpZiAoZ2l0aHViUGFja2FnZS5vd25lcikge1xuICAgIGNvbnN0IGNvbnRyaWJ1dG9yOiBDb250cmlidXRvciA9IHtcbiAgICAgIHRpdGxlOiBnaXRodWJQYWNrYWdlLm93bmVyLmxvZ2luLFxuICAgICAgcm9sZTpcbiAgICAgICAgZ2l0aHViUGFja2FnZS5vd25lci50eXBlID09PSBcIk9yZ2FuaXphdGlvblwiID8gXCJwdWJsaXNoZXJcIiA6IFwiYXV0aG9yXCIsXG4gICAgICBwYXRoOiBnaXRodWJQYWNrYWdlLm93bmVyLmh0bWxfdXJsLFxuICAgIH1cblxuICAgIGRhdGFwYWNrYWdlLmNvbnRyaWJ1dG9ycyA9IFtjb250cmlidXRvcl1cbiAgfVxuXG4gIGlmIChnaXRodWJQYWNrYWdlLnJlc291cmNlcyAmJiBnaXRodWJQYWNrYWdlLnJlc291cmNlcy5sZW5ndGggPiAwKSB7XG4gICAgZGF0YXBhY2thZ2UucmVzb3VyY2VzID0gZ2l0aHViUGFja2FnZS5yZXNvdXJjZXNcbiAgICAgIC5maWx0ZXIocmVzb3VyY2UgPT4gIXJlc291cmNlLnBhdGguc3RhcnRzV2l0aChcIi5cIikpXG4gICAgICAuZmlsdGVyKHJlc291cmNlID0+IHJlc291cmNlLnR5cGUgPT09IFwiYmxvYlwiKVxuICAgICAgLm1hcChyZXNvdXJjZSA9PlxuICAgICAgICBjb252ZXJ0UmVzb3VyY2VGcm9tR2l0aHViKHJlc291cmNlLCB7XG4gICAgICAgICAgZGVmYXVsdEJyYW5jaDogZ2l0aHViUGFja2FnZS5kZWZhdWx0X2JyYW5jaCxcbiAgICAgICAgfSksXG4gICAgICApXG4gIH1cblxuICBpZiAoZ2l0aHViUGFja2FnZS50b3BpY3MgJiYgZ2l0aHViUGFja2FnZS50b3BpY3MubGVuZ3RoID4gMCkge1xuICAgIGRhdGFwYWNrYWdlLmtleXdvcmRzID0gZ2l0aHViUGFja2FnZS50b3BpY3NcbiAgfVxuXG4gIGlmIChnaXRodWJQYWNrYWdlLmNyZWF0ZWRfYXQpIHtcbiAgICBkYXRhcGFja2FnZS5jcmVhdGVkID0gZ2l0aHViUGFja2FnZS5jcmVhdGVkX2F0XG4gIH1cblxuICByZXR1cm4gZGF0YXBhY2thZ2Vcbn1cbiJdfQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { GithubPackage } from "./Package.ts";
|
|
2
|
+
export type { GithubOwner } from "./Owner.ts";
|
|
3
|
+
export type { GithubLicense } from "./License.ts";
|
|
4
|
+
export { loadPackageFromGithub } from "./load.ts";
|
|
5
|
+
export { savePackageToGithub } from "./save.ts";
|
|
6
|
+
export { convertPackageFromGithub } from "./convert/fromGithub.ts";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { loadPackageFromGithub } from "./load.js";
|
|
2
|
+
export { savePackageToGithub } from "./save.js";
|
|
3
|
+
export { convertPackageFromGithub } from "./convert/fromGithub.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW5zL2dpdGh1Yi9wYWNrYWdlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEdpdGh1YlBhY2thZ2UgfSBmcm9tIFwiLi9QYWNrYWdlLnRzXCJcbmV4cG9ydCB0eXBlIHsgR2l0aHViT3duZXIgfSBmcm9tIFwiLi9Pd25lci50c1wiXG5leHBvcnQgdHlwZSB7IEdpdGh1YkxpY2Vuc2UgfSBmcm9tIFwiLi9MaWNlbnNlLnRzXCJcbmV4cG9ydCB7IGxvYWRQYWNrYWdlRnJvbUdpdGh1YiB9IGZyb20gXCIuL2xvYWQudHNcIlxuZXhwb3J0IHsgc2F2ZVBhY2thZ2VUb0dpdGh1YiB9IGZyb20gXCIuL3NhdmUudHNcIlxuZXhwb3J0IHsgY29udmVydFBhY2thZ2VGcm9tR2l0aHViIH0gZnJvbSBcIi4vY29udmVydC9mcm9tR2l0aHViLnRzXCJcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Load a package from a Github repository
|
|
3
|
+
* @param props Object containing the URL to the Github repository
|
|
4
|
+
* @returns Package object
|
|
5
|
+
*/
|
|
6
|
+
export declare function loadPackageFromGithub(repoUrl: string, options?: {
|
|
7
|
+
apiKey?: string;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
[x: `${string}:${string}`]: any;
|
|
10
|
+
$schema?: string;
|
|
11
|
+
resources: import("@frictionless-ts/metadata").Resource[];
|
|
12
|
+
name?: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
homepage?: string;
|
|
16
|
+
version?: string;
|
|
17
|
+
licenses?: import("@frictionless-ts/metadata").License[];
|
|
18
|
+
contributors?: import("@frictionless-ts/metadata").Contributor[];
|
|
19
|
+
sources?: import("@frictionless-ts/metadata").Source[];
|
|
20
|
+
keywords?: string[];
|
|
21
|
+
created?: string;
|
|
22
|
+
image?: string;
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { mergePackages } from "../../../package/index.js";
|
|
2
|
+
import { makeGithubApiRequest } from "../github/index.js";
|
|
3
|
+
import { convertPackageFromGithub } from "./convert/fromGithub.js";
|
|
4
|
+
/**
|
|
5
|
+
* Load a package from a Github repository
|
|
6
|
+
* @param props Object containing the URL to the Github repository
|
|
7
|
+
* @returns Package object
|
|
8
|
+
*/
|
|
9
|
+
export async function loadPackageFromGithub(repoUrl, options) {
|
|
10
|
+
const { apiKey } = options ?? {};
|
|
11
|
+
// Extract owner and repo from URL
|
|
12
|
+
const { owner, repo } = extractRepositoryInfo(repoUrl);
|
|
13
|
+
if (!owner || !repo) {
|
|
14
|
+
throw new Error(`Failed to extract repository info from URL: ${repoUrl}`);
|
|
15
|
+
}
|
|
16
|
+
const githubPackage = await makeGithubApiRequest({
|
|
17
|
+
endpoint: `/repos/${owner}/${repo}`,
|
|
18
|
+
apiKey,
|
|
19
|
+
});
|
|
20
|
+
const ref = githubPackage.default_branch;
|
|
21
|
+
githubPackage.resources = (await makeGithubApiRequest({
|
|
22
|
+
endpoint: `/repos/${owner}/${repo}/git/trees/${ref}?recursive=1`,
|
|
23
|
+
apiKey,
|
|
24
|
+
})).tree;
|
|
25
|
+
const systemPackage = convertPackageFromGithub(githubPackage);
|
|
26
|
+
const userPackagePath = systemPackage.resources
|
|
27
|
+
.filter(resource => resource["github:key"] === "datapackage.json")
|
|
28
|
+
.map(resource => resource["github:url"])
|
|
29
|
+
.at(0);
|
|
30
|
+
const datapackage = await mergePackages({ systemPackage, userPackagePath });
|
|
31
|
+
datapackage.resources = datapackage.resources.map(resource => {
|
|
32
|
+
// TODO: remove these keys completely
|
|
33
|
+
return { ...resource, "github:key": undefined, "github:url": undefined };
|
|
34
|
+
});
|
|
35
|
+
return datapackage;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract repository owner and name from URL
|
|
39
|
+
*
|
|
40
|
+
* Examples:
|
|
41
|
+
* - https://github.com/owner/repo
|
|
42
|
+
*/
|
|
43
|
+
function extractRepositoryInfo(repoUrl) {
|
|
44
|
+
const url = new URL(repoUrl);
|
|
45
|
+
const [owner, repo] = url.pathname.split("/").filter(Boolean);
|
|
46
|
+
return { owner, repo };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvZ2l0aHViL3BhY2thZ2UvbG9hZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFHekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFbEU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLE9BQWUsRUFDZixPQUVDO0lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7SUFFaEMsa0NBQWtDO0lBQ2xDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDdEQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sb0JBQW9CLENBQWdCO1FBQzlELFFBQVEsRUFBRSxVQUFVLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDbkMsTUFBTTtLQUNQLENBQUMsQ0FBQTtJQUVGLE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUE7SUFDeEMsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUN4QixNQUFNLG9CQUFvQixDQUE2QjtRQUNyRCxRQUFRLEVBQUUsVUFBVSxLQUFLLElBQUksSUFBSSxjQUFjLEdBQUcsY0FBYztRQUNoRSxNQUFNO0tBQ1AsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUFBO0lBRU4sTUFBTSxhQUFhLEdBQUcsd0JBQXdCLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDN0QsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLFNBQVM7U0FDNUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLGtCQUFrQixDQUFDO1NBQ2pFLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2QyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUixNQUFNLFdBQVcsR0FBRyxNQUFNLGFBQWEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFBO0lBQzNFLFdBQVcsQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDM0QscUNBQXFDO1FBQ3JDLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQTtJQUMxRSxDQUFDLENBQUMsQ0FBQTtJQUVGLE9BQU8sV0FBVyxDQUFBO0FBQ3BCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMscUJBQXFCLENBQUMsT0FBZTtJQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM1QixNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFBO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZVBhY2thZ2VzIH0gZnJvbSBcIi4uLy4uLy4uL3BhY2thZ2UvaW5kZXgudHNcIlxuaW1wb3J0IHsgbWFrZUdpdGh1YkFwaVJlcXVlc3QgfSBmcm9tIFwiLi4vZ2l0aHViL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgR2l0aHViUmVzb3VyY2UgfSBmcm9tIFwiLi4vcmVzb3VyY2UvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBHaXRodWJQYWNrYWdlIH0gZnJvbSBcIi4vUGFja2FnZS50c1wiXG5pbXBvcnQgeyBjb252ZXJ0UGFja2FnZUZyb21HaXRodWIgfSBmcm9tIFwiLi9jb252ZXJ0L2Zyb21HaXRodWIudHNcIlxuXG4vKipcbiAqIExvYWQgYSBwYWNrYWdlIGZyb20gYSBHaXRodWIgcmVwb3NpdG9yeVxuICogQHBhcmFtIHByb3BzIE9iamVjdCBjb250YWluaW5nIHRoZSBVUkwgdG8gdGhlIEdpdGh1YiByZXBvc2l0b3J5XG4gKiBAcmV0dXJucyBQYWNrYWdlIG9iamVjdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBhY2thZ2VGcm9tR2l0aHViKFxuICByZXBvVXJsOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiB7XG4gICAgYXBpS2V5Pzogc3RyaW5nXG4gIH0sXG4pIHtcbiAgY29uc3QgeyBhcGlLZXkgfSA9IG9wdGlvbnMgPz8ge31cblxuICAvLyBFeHRyYWN0IG93bmVyIGFuZCByZXBvIGZyb20gVVJMXG4gIGNvbnN0IHsgb3duZXIsIHJlcG8gfSA9IGV4dHJhY3RSZXBvc2l0b3J5SW5mbyhyZXBvVXJsKVxuICBpZiAoIW93bmVyIHx8ICFyZXBvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gZXh0cmFjdCByZXBvc2l0b3J5IGluZm8gZnJvbSBVUkw6ICR7cmVwb1VybH1gKVxuICB9XG5cbiAgY29uc3QgZ2l0aHViUGFja2FnZSA9IGF3YWl0IG1ha2VHaXRodWJBcGlSZXF1ZXN0PEdpdGh1YlBhY2thZ2U+KHtcbiAgICBlbmRwb2ludDogYC9yZXBvcy8ke293bmVyfS8ke3JlcG99YCxcbiAgICBhcGlLZXksXG4gIH0pXG5cbiAgY29uc3QgcmVmID0gZ2l0aHViUGFja2FnZS5kZWZhdWx0X2JyYW5jaFxuICBnaXRodWJQYWNrYWdlLnJlc291cmNlcyA9IChcbiAgICBhd2FpdCBtYWtlR2l0aHViQXBpUmVxdWVzdDx7IHRyZWU6IEdpdGh1YlJlc291cmNlW10gfT4oe1xuICAgICAgZW5kcG9pbnQ6IGAvcmVwb3MvJHtvd25lcn0vJHtyZXBvfS9naXQvdHJlZXMvJHtyZWZ9P3JlY3Vyc2l2ZT0xYCxcbiAgICAgIGFwaUtleSxcbiAgICB9KVxuICApLnRyZWVcblxuICBjb25zdCBzeXN0ZW1QYWNrYWdlID0gY29udmVydFBhY2thZ2VGcm9tR2l0aHViKGdpdGh1YlBhY2thZ2UpXG4gIGNvbnN0IHVzZXJQYWNrYWdlUGF0aCA9IHN5c3RlbVBhY2thZ2UucmVzb3VyY2VzXG4gICAgLmZpbHRlcihyZXNvdXJjZSA9PiByZXNvdXJjZVtcImdpdGh1YjprZXlcIl0gPT09IFwiZGF0YXBhY2thZ2UuanNvblwiKVxuICAgIC5tYXAocmVzb3VyY2UgPT4gcmVzb3VyY2VbXCJnaXRodWI6dXJsXCJdKVxuICAgIC5hdCgwKVxuXG4gIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgbWVyZ2VQYWNrYWdlcyh7IHN5c3RlbVBhY2thZ2UsIHVzZXJQYWNrYWdlUGF0aCB9KVxuICBkYXRhcGFja2FnZS5yZXNvdXJjZXMgPSBkYXRhcGFja2FnZS5yZXNvdXJjZXMubWFwKHJlc291cmNlID0+IHtcbiAgICAvLyBUT0RPOiByZW1vdmUgdGhlc2Uga2V5cyBjb21wbGV0ZWx5XG4gICAgcmV0dXJuIHsgLi4ucmVzb3VyY2UsIFwiZ2l0aHViOmtleVwiOiB1bmRlZmluZWQsIFwiZ2l0aHViOnVybFwiOiB1bmRlZmluZWQgfVxuICB9KVxuXG4gIHJldHVybiBkYXRhcGFja2FnZVxufVxuXG4vKipcbiAqIEV4dHJhY3QgcmVwb3NpdG9yeSBvd25lciBhbmQgbmFtZSBmcm9tIFVSTFxuICpcbiAqIEV4YW1wbGVzOlxuICogLSBodHRwczovL2dpdGh1Yi5jb20vb3duZXIvcmVwb1xuICovXG5mdW5jdGlvbiBleHRyYWN0UmVwb3NpdG9yeUluZm8ocmVwb1VybDogc3RyaW5nKSB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwocmVwb1VybClcbiAgY29uc3QgW293bmVyLCByZXBvXSA9IHVybC5wYXRobmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pXG4gIHJldHVybiB7IG93bmVyLCByZXBvIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { useRecording } from "vitest-polly";
|
|
3
|
+
import { loadPackageFromGithub } from "./load.js";
|
|
4
|
+
useRecording();
|
|
5
|
+
describe("loadPackageFromGithub", () => {
|
|
6
|
+
it("should load a package", async () => {
|
|
7
|
+
const datapackage = await loadPackageFromGithub("https://github.com/roll/data");
|
|
8
|
+
expect(datapackage).toMatchSnapshot();
|
|
9
|
+
});
|
|
10
|
+
it("should merge datapackage.json if present", async () => {
|
|
11
|
+
const datapackage = await loadPackageFromGithub("https://github.com/roll/currency-codes");
|
|
12
|
+
expect(datapackage).toMatchSnapshot();
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9naXRodWIvcGFja2FnZS9sb2FkLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRWpELFlBQVksRUFBRSxDQUFBO0FBRWQsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckMsTUFBTSxXQUFXLEdBQUcsTUFBTSxxQkFBcUIsQ0FDN0MsOEJBQThCLENBQy9CLENBQUE7UUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDdkMsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMENBQTBDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDeEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxxQkFBcUIsQ0FDN0Msd0NBQXdDLENBQ3pDLENBQUE7UUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUE7SUFDdkMsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyB1c2VSZWNvcmRpbmcgfSBmcm9tIFwidml0ZXN0LXBvbGx5XCJcbmltcG9ydCB7IGxvYWRQYWNrYWdlRnJvbUdpdGh1YiB9IGZyb20gXCIuL2xvYWQudHNcIlxuXG51c2VSZWNvcmRpbmcoKVxuXG5kZXNjcmliZShcImxvYWRQYWNrYWdlRnJvbUdpdGh1YlwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGxvYWQgYSBwYWNrYWdlXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBkYXRhcGFja2FnZSA9IGF3YWl0IGxvYWRQYWNrYWdlRnJvbUdpdGh1YihcbiAgICAgIFwiaHR0cHM6Ly9naXRodWIuY29tL3JvbGwvZGF0YVwiLFxuICAgIClcblxuICAgIGV4cGVjdChkYXRhcGFja2FnZSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcblxuICBpdChcInNob3VsZCBtZXJnZSBkYXRhcGFja2FnZS5qc29uIGlmIHByZXNlbnRcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGFwYWNrYWdlID0gYXdhaXQgbG9hZFBhY2thZ2VGcm9tR2l0aHViKFxuICAgICAgXCJodHRwczovL2dpdGh1Yi5jb20vcm9sbC9jdXJyZW5jeS1jb2Rlc1wiLFxuICAgIClcblxuICAgIGV4cGVjdChkYXRhcGFja2FnZSkudG9NYXRjaFNuYXBzaG90KClcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Package } from "@frictionless-ts/metadata";
|
|
2
|
+
/**
|
|
3
|
+
* Save a package to a Github repository
|
|
4
|
+
* @param options Object containing the package to save and Github details
|
|
5
|
+
* @returns Object with the repository URL
|
|
6
|
+
*/
|
|
7
|
+
export declare function savePackageToGithub(dataPackage: Package, options: {
|
|
8
|
+
apiKey: string;
|
|
9
|
+
repo: string;
|
|
10
|
+
org?: string;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
path: string;
|
|
13
|
+
repoUrl: string;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import { buffer } from "node:stream/consumers";
|
|
3
|
+
import { stringifyDescriptor } from "@frictionless-ts/metadata";
|
|
4
|
+
import { convertPackageToDescriptor } from "@frictionless-ts/metadata";
|
|
5
|
+
import { getPackageBasepath } from "../../../package/index.js";
|
|
6
|
+
import { saveResourceFiles } from "../../../resource/index.js";
|
|
7
|
+
import { loadFileStream } from "../../../stream/index.js";
|
|
8
|
+
import { makeGithubApiRequest } from "../github/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Save a package to a Github repository
|
|
11
|
+
* @param options Object containing the package to save and Github details
|
|
12
|
+
* @returns Object with the repository URL
|
|
13
|
+
*/
|
|
14
|
+
export async function savePackageToGithub(dataPackage, options) {
|
|
15
|
+
const { apiKey, org, repo } = options;
|
|
16
|
+
const basepath = getPackageBasepath(dataPackage);
|
|
17
|
+
const githubPackage = await makeGithubApiRequest({
|
|
18
|
+
endpoint: org ? `/orgs/${org}/repos` : "/user/repos",
|
|
19
|
+
payload: { name: repo, auto_init: true },
|
|
20
|
+
method: "POST",
|
|
21
|
+
apiKey,
|
|
22
|
+
});
|
|
23
|
+
const resourceDescriptors = [];
|
|
24
|
+
for (const resource of dataPackage.resources) {
|
|
25
|
+
if (!resource.path)
|
|
26
|
+
continue;
|
|
27
|
+
resourceDescriptors.push(await saveResourceFiles(resource, {
|
|
28
|
+
basepath,
|
|
29
|
+
withRemote: false,
|
|
30
|
+
saveFile: async (options) => {
|
|
31
|
+
const stream = await loadFileStream(options.normalizedPath);
|
|
32
|
+
const payload = {
|
|
33
|
+
path: options.denormalizedPath,
|
|
34
|
+
content: Buffer.from(await buffer(stream)).toString("base64"),
|
|
35
|
+
message: `Added file "${options.denormalizedPath}"`,
|
|
36
|
+
};
|
|
37
|
+
await makeGithubApiRequest({
|
|
38
|
+
endpoint: `/repos/${githubPackage.owner.login}/${repo}/contents/${options.denormalizedPath}`,
|
|
39
|
+
method: "PUT",
|
|
40
|
+
payload,
|
|
41
|
+
apiKey,
|
|
42
|
+
});
|
|
43
|
+
return options.denormalizedPath;
|
|
44
|
+
},
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
const descriptor = {
|
|
48
|
+
...convertPackageToDescriptor(dataPackage, { basepath }),
|
|
49
|
+
resources: resourceDescriptors,
|
|
50
|
+
};
|
|
51
|
+
for (const denormalizedPath of ["datapackage.json"]) {
|
|
52
|
+
const payload = {
|
|
53
|
+
path: denormalizedPath,
|
|
54
|
+
message: `Added file "${denormalizedPath}"`,
|
|
55
|
+
content: Buffer.from(stringifyDescriptor(descriptor)).toString("base64"),
|
|
56
|
+
};
|
|
57
|
+
await makeGithubApiRequest({
|
|
58
|
+
endpoint: `/repos/${githubPackage.owner.login}/${repo}/contents/${denormalizedPath}`,
|
|
59
|
+
method: "PUT",
|
|
60
|
+
payload,
|
|
61
|
+
apiKey,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
path: `https://raw.githubusercontent.com/${githubPackage.owner.login}/${repo}/refs/heads/main/dataPackage.json`,
|
|
66
|
+
repoUrl: githubPackage.html_url,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvZ2l0aHViL3BhY2thZ2Uvc2F2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFHekQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQ3ZDLFdBQW9CLEVBQ3BCLE9BSUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUE7SUFDckMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUE7SUFFaEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxvQkFBb0IsQ0FBZ0I7UUFDOUQsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUNwRCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7UUFDeEMsTUFBTSxFQUFFLE1BQU07UUFDZCxNQUFNO0tBQ1AsQ0FBQyxDQUFBO0lBRUYsTUFBTSxtQkFBbUIsR0FBaUIsRUFBRSxDQUFBO0lBQzVDLEtBQUssTUFBTSxRQUFRLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUFFLFNBQVE7UUFFNUIsbUJBQW1CLENBQUMsSUFBSSxDQUN0QixNQUFNLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtZQUNoQyxRQUFRO1lBQ1IsVUFBVSxFQUFFLEtBQUs7WUFDakIsUUFBUSxFQUFFLEtBQUssRUFBQyxPQUFPLEVBQUMsRUFBRTtnQkFDeEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO2dCQUUzRCxNQUFNLE9BQU8sR0FBRztvQkFDZCxJQUFJLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtvQkFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO29CQUM3RCxPQUFPLEVBQUUsZUFBZSxPQUFPLENBQUMsZ0JBQWdCLEdBQUc7aUJBQ3BELENBQUE7Z0JBRUQsTUFBTSxvQkFBb0IsQ0FBQztvQkFDekIsUUFBUSxFQUFFLFVBQVUsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxhQUFhLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDNUYsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTztvQkFDUCxNQUFNO2lCQUNQLENBQUMsQ0FBQTtnQkFFRixPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQTtZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUc7UUFDakIsR0FBRywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUN4RCxTQUFTLEVBQUUsbUJBQW1CO0tBQy9CLENBQUE7SUFFRCxLQUFLLE1BQU0sZ0JBQWdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDcEQsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLE9BQU8sRUFBRSxlQUFlLGdCQUFnQixHQUFHO1lBQzNDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUN6RSxDQUFBO1FBRUQsTUFBTSxvQkFBb0IsQ0FBQztZQUN6QixRQUFRLEVBQUUsVUFBVSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLGFBQWEsZ0JBQWdCLEVBQUU7WUFDcEYsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPO1lBQ1AsTUFBTTtTQUNQLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLHFDQUFxQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLG1DQUFtQztRQUMvRyxPQUFPLEVBQUUsYUFBYSxDQUFDLFFBQVE7S0FDaEMsQ0FBQTtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tIFwibm9kZTpidWZmZXJcIlxuaW1wb3J0IHsgYnVmZmVyIH0gZnJvbSBcIm5vZGU6c3RyZWFtL2NvbnN1bWVyc1wiXG5pbXBvcnQgdHlwZSB7IERlc2NyaXB0b3IsIFBhY2thZ2UgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgeyBzdHJpbmdpZnlEZXNjcmlwdG9yIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHsgY29udmVydFBhY2thZ2VUb0Rlc2NyaXB0b3IgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgeyBnZXRQYWNrYWdlQmFzZXBhdGggfSBmcm9tIFwiLi4vLi4vLi4vcGFja2FnZS9pbmRleC50c1wiXG5pbXBvcnQgeyBzYXZlUmVzb3VyY2VGaWxlcyB9IGZyb20gXCIuLi8uLi8uLi9yZXNvdXJjZS9pbmRleC50c1wiXG5pbXBvcnQgeyBsb2FkRmlsZVN0cmVhbSB9IGZyb20gXCIuLi8uLi8uLi9zdHJlYW0vaW5kZXgudHNcIlxuaW1wb3J0IHsgbWFrZUdpdGh1YkFwaVJlcXVlc3QgfSBmcm9tIFwiLi4vZ2l0aHViL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgR2l0aHViUGFja2FnZSB9IGZyb20gXCIuL1BhY2thZ2UudHNcIlxuXG4vKipcbiAqIFNhdmUgYSBwYWNrYWdlIHRvIGEgR2l0aHViIHJlcG9zaXRvcnlcbiAqIEBwYXJhbSBvcHRpb25zIE9iamVjdCBjb250YWluaW5nIHRoZSBwYWNrYWdlIHRvIHNhdmUgYW5kIEdpdGh1YiBkZXRhaWxzXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0aGUgcmVwb3NpdG9yeSBVUkxcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhdmVQYWNrYWdlVG9HaXRodWIoXG4gIGRhdGFQYWNrYWdlOiBQYWNrYWdlLFxuICBvcHRpb25zOiB7XG4gICAgYXBpS2V5OiBzdHJpbmdcbiAgICByZXBvOiBzdHJpbmdcbiAgICBvcmc/OiBzdHJpbmdcbiAgfSxcbikge1xuICBjb25zdCB7IGFwaUtleSwgb3JnLCByZXBvIH0gPSBvcHRpb25zXG4gIGNvbnN0IGJhc2VwYXRoID0gZ2V0UGFja2FnZUJhc2VwYXRoKGRhdGFQYWNrYWdlKVxuXG4gIGNvbnN0IGdpdGh1YlBhY2thZ2UgPSBhd2FpdCBtYWtlR2l0aHViQXBpUmVxdWVzdDxHaXRodWJQYWNrYWdlPih7XG4gICAgZW5kcG9pbnQ6IG9yZyA/IGAvb3Jncy8ke29yZ30vcmVwb3NgIDogXCIvdXNlci9yZXBvc1wiLFxuICAgIHBheWxvYWQ6IHsgbmFtZTogcmVwbywgYXV0b19pbml0OiB0cnVlIH0sXG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBhcGlLZXksXG4gIH0pXG5cbiAgY29uc3QgcmVzb3VyY2VEZXNjcmlwdG9yczogRGVzY3JpcHRvcltdID0gW11cbiAgZm9yIChjb25zdCByZXNvdXJjZSBvZiBkYXRhUGFja2FnZS5yZXNvdXJjZXMpIHtcbiAgICBpZiAoIXJlc291cmNlLnBhdGgpIGNvbnRpbnVlXG5cbiAgICByZXNvdXJjZURlc2NyaXB0b3JzLnB1c2goXG4gICAgICBhd2FpdCBzYXZlUmVzb3VyY2VGaWxlcyhyZXNvdXJjZSwge1xuICAgICAgICBiYXNlcGF0aCxcbiAgICAgICAgd2l0aFJlbW90ZTogZmFsc2UsXG4gICAgICAgIHNhdmVGaWxlOiBhc3luYyBvcHRpb25zID0+IHtcbiAgICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBsb2FkRmlsZVN0cmVhbShvcHRpb25zLm5vcm1hbGl6ZWRQYXRoKVxuXG4gICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgICAgIHBhdGg6IG9wdGlvbnMuZGVub3JtYWxpemVkUGF0aCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IEJ1ZmZlci5mcm9tKGF3YWl0IGJ1ZmZlcihzdHJlYW0pKS50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBBZGRlZCBmaWxlIFwiJHtvcHRpb25zLmRlbm9ybWFsaXplZFBhdGh9XCJgLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IG1ha2VHaXRodWJBcGlSZXF1ZXN0KHtcbiAgICAgICAgICAgIGVuZHBvaW50OiBgL3JlcG9zLyR7Z2l0aHViUGFja2FnZS5vd25lci5sb2dpbn0vJHtyZXBvfS9jb250ZW50cy8ke29wdGlvbnMuZGVub3JtYWxpemVkUGF0aH1gLFxuICAgICAgICAgICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIGFwaUtleSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZGVub3JtYWxpemVkUGF0aFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgY29uc3QgZGVzY3JpcHRvciA9IHtcbiAgICAuLi5jb252ZXJ0UGFja2FnZVRvRGVzY3JpcHRvcihkYXRhUGFja2FnZSwgeyBiYXNlcGF0aCB9KSxcbiAgICByZXNvdXJjZXM6IHJlc291cmNlRGVzY3JpcHRvcnMsXG4gIH1cblxuICBmb3IgKGNvbnN0IGRlbm9ybWFsaXplZFBhdGggb2YgW1wiZGF0YXBhY2thZ2UuanNvblwiXSkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBwYXRoOiBkZW5vcm1hbGl6ZWRQYXRoLFxuICAgICAgbWVzc2FnZTogYEFkZGVkIGZpbGUgXCIke2Rlbm9ybWFsaXplZFBhdGh9XCJgLFxuICAgICAgY29udGVudDogQnVmZmVyLmZyb20oc3RyaW5naWZ5RGVzY3JpcHRvcihkZXNjcmlwdG9yKSkudG9TdHJpbmcoXCJiYXNlNjRcIiksXG4gICAgfVxuXG4gICAgYXdhaXQgbWFrZUdpdGh1YkFwaVJlcXVlc3Qoe1xuICAgICAgZW5kcG9pbnQ6IGAvcmVwb3MvJHtnaXRodWJQYWNrYWdlLm93bmVyLmxvZ2lufS8ke3JlcG99L2NvbnRlbnRzLyR7ZGVub3JtYWxpemVkUGF0aH1gLFxuICAgICAgbWV0aG9kOiBcIlBVVFwiLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGFwaUtleSxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tLyR7Z2l0aHViUGFja2FnZS5vd25lci5sb2dpbn0vJHtyZXBvfS9yZWZzL2hlYWRzL21haW4vZGF0YVBhY2thZ2UuanNvbmAsXG4gICAgcmVwb1VybDogZ2l0aHViUGFja2FnZS5odG1sX3VybCxcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|