@ingestron/core 0.12.3 → 0.12.4
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.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"dist/assets/schemas/ODCS-LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
|
|
4
4
|
"dist/assets/schemas/odcs-3.1.0.json": "1a35de14c688b400fef306564f66e2af3304f057cd5cd6e7b847c1a8bf252c5b",
|
|
5
5
|
"dist/assets/schemas/provenance.json": "4b5eb1fd89b81223f7946113b651d5a3a18adaa28948e43c3615dd851fb6844e",
|
|
6
|
-
"dist/core/authoring.js": "
|
|
6
|
+
"dist/core/authoring.js": "c144374cccbb512be7b3cd26700bc29538236eeeb35493eeec3bab938e08ff2a",
|
|
7
7
|
"dist/core/config.js": "b7e7138f7cc4a7b4ec8f6d0f0616c8802f2d802ec29aa09b40c1fc5c9324e016",
|
|
8
8
|
"dist/core/connections.js": "37b797b402788e00c51f3cac93b87342d158ed9b279753db91006d2d6c66bb4a",
|
|
9
9
|
"dist/core/connector-package.js": "de9729e9e4b0cf05bd1ef347e57ffd489245bb68efce5c313ccba72b78409f41",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"dist/core/model-packs.js": "fee776ea0804dc66c9f140e57d94a3922d69c52d03c72079842ec43417616b0d",
|
|
24
24
|
"dist/core/operations.js": "7f4a9eeee19d3e1e4c1beecc0350e38d386f012edfb31c3248efcd22ebd40a77",
|
|
25
25
|
"dist/core/package-references.js": "bd3085eb6dcdac399d79af109d0a9e710a0532eba61e5298dc842aec9c7ef10a",
|
|
26
|
-
"dist/core/packages.js": "
|
|
26
|
+
"dist/core/packages.js": "c6bcbc90aa3597fcd4205b27136221229d9efedc9bfa68a83a134cb5e8f51d2b",
|
|
27
27
|
"dist/core/planner.js": "974c6bac5c533a32a7c45f797ef4d857c644448aa243a929caca5917fb9f3fb8",
|
|
28
28
|
"dist/core/project-build.js": "18ffe962068967af255e77f1dc48fa4dd9161cd50659a8a3d9ac3b161856082e",
|
|
29
29
|
"dist/core/project-packages.js": "b031dd9e3c5c147e8e1ed589b5eab21b9067acbefc1d4cd1dc5b6b7018cc39cf",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"dist/version.js": "48af2aa1e425f1e387c082bbf0ad2c0c8d757c468101a614c3864153a94e6889"
|
|
44
44
|
},
|
|
45
45
|
"sources": {
|
|
46
|
-
"src/core/authoring.ts": "
|
|
46
|
+
"src/core/authoring.ts": "4389a1c8994b1c5da6d470e29806e547d9e5c13ed481b5e34acbe919b6b4b3d8",
|
|
47
47
|
"src/core/config.ts": "f282eb246438608e1951556dfeab9372daf65330a15a9d159d36d1f940370344",
|
|
48
48
|
"src/core/connections.ts": "dbdaca4193efa203cffa02fd819b95f82bbd604a7678ba7dc6ba065205c49ce7",
|
|
49
49
|
"src/core/connector-package.ts": "a36151f6ffb49836547984eae871023ad1ad69a136f33cd6ad608496f84c85f8",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"src/core/model-packs.ts": "a110d319f6feeff22a2d0d3a99ce5e49e56817d0cc27ab77d831d04a945ddfd3",
|
|
64
64
|
"src/core/operations.ts": "e0a5a0e869e96de4e869f89e0fd794cb9fa537a16fb1f37fd8cf2b7ca777c08d",
|
|
65
65
|
"src/core/package-references.ts": "5c5cee7e140158928e2e5a37f426520c7c2f042546a37eed4507d79326181f5a",
|
|
66
|
-
"src/core/packages.ts": "
|
|
66
|
+
"src/core/packages.ts": "8a9b6612325de68ab2610f540bd39e4f899b06d1cc1fbd54ecfd2abb8b4e9c40",
|
|
67
67
|
"src/core/planner.ts": "2c6f0d53e21cbb60fc2433e7da1245707133336274c60b9a5678614dabf09bca",
|
|
68
68
|
"src/core/project-build.ts": "7fa5038e7e2ff2625a30ffae282369954a5989347c6435849b72c95f2e52e247",
|
|
69
69
|
"src/core/project-packages.ts": "4c5cb98aeb5030db7cf2c851cd9e40ed9aae038517fba2d8d7159e884f08b7a0",
|
package/dist/core/authoring.js
CHANGED
|
@@ -5,10 +5,28 @@ import { resolve, dirname, relative } from "node:path";
|
|
|
5
5
|
import { parseDocument, stringify } from "yaml";
|
|
6
6
|
import { check, digest, canonical, merge, Problem } from "./errors.js";
|
|
7
7
|
import { Configuration } from "./config.js";
|
|
8
|
-
import { projectSchema } from "./schema.js";
|
|
8
|
+
import { packageReferenceSchema, projectSchema } from "./schema.js";
|
|
9
9
|
import { projectPackages } from "./project-packages.js";
|
|
10
10
|
import { contractColumns } from "./contracts.js";
|
|
11
|
-
import { fence, installedProviders, canonicalPackageReference, } from "./packages.js";
|
|
11
|
+
import { fence, installedProviders, canonicalPackageReference, configuredPackageReference, resolvePackage, packageYaml, } from "./packages.js";
|
|
12
|
+
function concisePackageReference(root, value) {
|
|
13
|
+
const pkg = packageReferenceSchema.parse(value);
|
|
14
|
+
const reference = configuredPackageReference(pkg);
|
|
15
|
+
const installed = resolvePackage(root, reference);
|
|
16
|
+
const manifest = packageYaml(installed.file);
|
|
17
|
+
const short = `${manifest.id}@${manifest.version}`;
|
|
18
|
+
try {
|
|
19
|
+
const selected = resolvePackage(root, short);
|
|
20
|
+
if (selected.entry.repository === installed.entry.repository &&
|
|
21
|
+
selected.entry.path === installed.entry.path &&
|
|
22
|
+
selected.entry.commit === installed.entry.commit)
|
|
23
|
+
return short;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Keep an explicit reference if multiple installed packages share the ID.
|
|
27
|
+
}
|
|
28
|
+
return `${pkg.source}@${pkg.version}`;
|
|
29
|
+
}
|
|
12
30
|
const yaml = (text, file) => {
|
|
13
31
|
const doc = parseDocument(text, { uniqueKeys: true });
|
|
14
32
|
check(!doc.errors.length, "YAML", doc.errors[0]?.message ?? "Invalid YAML", file);
|
|
@@ -116,7 +134,8 @@ export function initialise(root, options) {
|
|
|
116
134
|
"project.yaml": stringify({
|
|
117
135
|
apiVersion: "ingestron.project/v1",
|
|
118
136
|
id: options.id,
|
|
119
|
-
|
|
137
|
+
packages: {},
|
|
138
|
+
providers: { configurations: {} },
|
|
120
139
|
defaults: {},
|
|
121
140
|
environments: Object.fromEntries(environments.map((name) => [
|
|
122
141
|
name,
|
|
@@ -150,6 +169,16 @@ export function initialise(root, options) {
|
|
|
150
169
|
name === ".gitignore" ||
|
|
151
170
|
/^environments\/[\w-]+\.yaml$/.test(name));
|
|
152
171
|
check(files["project.yaml"], "PROVIDER", "Provider must author a project");
|
|
172
|
+
const authored = yaml(files["project.yaml"], "project.yaml").toJS();
|
|
173
|
+
const providerPackages = authored.providers?.packages ?? {};
|
|
174
|
+
authored.packages ??= {};
|
|
175
|
+
for (const [name, value] of Object.entries(providerPackages)) {
|
|
176
|
+
check(!Object.hasOwn(authored.packages, name), "PACKAGE", `Duplicate package alias ${name}`);
|
|
177
|
+
authored.packages[name] = concisePackageReference(root, value);
|
|
178
|
+
}
|
|
179
|
+
if (authored.providers)
|
|
180
|
+
delete authored.providers.packages;
|
|
181
|
+
files["project.yaml"] = stringify(authored);
|
|
153
182
|
// Providers may return JSON (valid YAML); editable scaffolds use block YAML.
|
|
154
183
|
for (const [name, text] of Object.entries(files)) {
|
|
155
184
|
if (name.endsWith(".yaml"))
|
|
@@ -161,12 +190,14 @@ export function initialise(root, options) {
|
|
|
161
190
|
}
|
|
162
191
|
export function migrateProvider(root, options) {
|
|
163
192
|
const reader = new Configuration(root), doc = yaml(reader.text("project.yaml"), "project.yaml");
|
|
164
|
-
|
|
193
|
+
const location = doc.hasIn(["packages", options.package])
|
|
194
|
+
? ["packages", options.package]
|
|
195
|
+
: ["providers", "packages", options.package];
|
|
196
|
+
check(doc.hasIn(location), "PACKAGE", "Unknown project package");
|
|
165
197
|
const selected = providerReference(root, options.to);
|
|
166
|
-
doc.setIn(
|
|
167
|
-
|
|
168
|
-
version: selected.version
|
|
169
|
-
});
|
|
198
|
+
doc.setIn(location, location[0] === "packages"
|
|
199
|
+
? concisePackageReference(root, `${selected.source}@${selected.version}`)
|
|
200
|
+
: { source: selected.source, version: selected.version });
|
|
170
201
|
return preview(root, { "project.yaml": doc.toString() });
|
|
171
202
|
}
|
|
172
203
|
function flowFile(root, id) {
|
|
@@ -198,7 +229,7 @@ export function addFlow(root, options) {
|
|
|
198
229
|
value: yaml(reader.text(file), file).toJS(),
|
|
199
230
|
};
|
|
200
231
|
});
|
|
201
|
-
const files = providerAuthor(root,
|
|
232
|
+
const files = providerAuthor(root, resolvePackage(root, configuredPackageReference(pkg)).reference, {
|
|
202
233
|
operation: "flow",
|
|
203
234
|
options,
|
|
204
235
|
configuration,
|
package/dist/core/packages.d.ts
CHANGED
package/dist/core/packages.js
CHANGED
|
@@ -332,7 +332,7 @@ export function resolvePackage(root, reference) {
|
|
|
332
332
|
check(canonical(inventory(cache)) === canonical(Object.keys(entry.files).sort()), "PACKAGE", "Package file inventory changed");
|
|
333
333
|
for (const [file, hash] of Object.entries(entry.files))
|
|
334
334
|
check(digest(readFileSync(fence(cache, file))) === hash, "PACKAGE", `Package integrity failed: ${file}`);
|
|
335
|
-
return { file: fence(cache, entry.path), root: cache, entry };
|
|
335
|
+
return { reference, file: fence(cache, entry.path), root: cache, entry };
|
|
336
336
|
}
|
|
337
337
|
/** Derived information lives outside the integrity-checked source cache. */
|
|
338
338
|
export function savePluginInformation(root, reference) {
|