@ingestron/cli 0.0.0-stage → 1.1.0
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/LICENSE +202 -0
- package/NOTICE +4 -0
- package/README.md +43 -2
- package/dist/args.d.ts +105 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +161 -0
- package/dist/args.js.map +1 -0
- package/dist/ask.d.ts +5 -0
- package/dist/ask.d.ts.map +1 -0
- package/dist/ask.js +17 -0
- package/dist/ask.js.map +1 -0
- package/dist/compare.d.ts +13 -0
- package/dist/compare.d.ts.map +1 -0
- package/dist/compare.js +92 -0
- package/dist/compare.js.map +1 -0
- package/dist/environments.d.ts +6 -0
- package/dist/environments.d.ts.map +1 -0
- package/dist/environments.js +25 -0
- package/dist/environments.js.map +1 -0
- package/dist/generate.d.ts +16 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +118 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/init-choice.d.ts +10 -0
- package/dist/init-choice.d.ts.map +1 -0
- package/dist/init-choice.js +36 -0
- package/dist/init-choice.js.map +1 -0
- package/dist/init-preflight.d.ts +4 -0
- package/dist/init-preflight.d.ts.map +1 -0
- package/dist/init-preflight.js +18 -0
- package/dist/init-preflight.js.map +1 -0
- package/dist/init.d.ts +5 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +136 -0
- package/dist/init.js.map +1 -0
- package/dist/io.d.ts +8 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +3 -0
- package/dist/io.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +11 -0
- package/dist/main.js.map +1 -0
- package/dist/outputs.d.ts +12 -0
- package/dist/outputs.d.ts.map +1 -0
- package/dist/outputs.js +53 -0
- package/dist/outputs.js.map +1 -0
- package/dist/packs.d.ts +4 -0
- package/dist/packs.d.ts.map +1 -0
- package/dist/packs.js +5 -0
- package/dist/packs.js.map +1 -0
- package/dist/project-choices.d.ts +27 -0
- package/dist/project-choices.d.ts.map +1 -0
- package/dist/project-choices.js +44 -0
- package/dist/project-choices.js.map +1 -0
- package/dist/project-questions.d.ts +5 -0
- package/dist/project-questions.d.ts.map +1 -0
- package/dist/project-questions.js +43 -0
- package/dist/project-questions.js.map +1 -0
- package/dist/project-recipes.d.ts +14 -0
- package/dist/project-recipes.d.ts.map +1 -0
- package/dist/project-recipes.js +115 -0
- package/dist/project-recipes.js.map +1 -0
- package/dist/request.d.ts +13 -0
- package/dist/request.d.ts.map +1 -0
- package/dist/request.js +114 -0
- package/dist/request.js.map +1 -0
- package/dist/sample-contract.d.ts +11 -0
- package/dist/sample-contract.d.ts.map +1 -0
- package/dist/sample-contract.js +91 -0
- package/dist/sample-contract.js.map +1 -0
- package/dist/sample-read.d.ts +8 -0
- package/dist/sample-read.d.ts.map +1 -0
- package/dist/sample-read.js +89 -0
- package/dist/sample-read.js.map +1 -0
- package/dist/samples.d.ts +33 -0
- package/dist/samples.d.ts.map +1 -0
- package/dist/samples.js +108 -0
- package/dist/samples.js.map +1 -0
- package/dist/scaffold.d.ts +34 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +106 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schemas.d.ts +5 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +39 -0
- package/dist/schemas.js.map +1 -0
- package/dist/sources.d.ts +17 -0
- package/dist/sources.d.ts.map +1 -0
- package/dist/sources.js +103 -0
- package/dist/sources.js.map +1 -0
- package/dist/templates.d.ts +64 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +88 -0
- package/dist/templates.js.map +1 -0
- package/package.json +68 -3
- package/project-templates/kafka/README.md +12 -0
- package/project-templates/kafka/connections/events.yaml +8 -0
- package/project-templates/kafka/contracts/page_views.yaml +13 -0
- package/project-templates/kafka/contracts/purchases.yaml +13 -0
- package/project-templates/kafka/flows/events.yaml +10 -0
- package/project-templates/kafka/project.yaml +10 -0
- package/project-templates/kafka/standard.yaml +4 -0
- package/project-templates/kafka/template.yaml +3 -0
- package/project-templates/minimal/README.md +10 -0
- package/project-templates/minimal/connections/shop.yaml +7 -0
- package/project-templates/minimal/contracts/orders.yaml +14 -0
- package/project-templates/minimal/flows/orders.yaml +6 -0
- package/project-templates/minimal/project.yaml +11 -0
- package/project-templates/minimal/standard.yaml +4 -0
- package/project-templates/minimal/template.yaml +7 -0
- package/project-templates/private-files/README.md +29 -0
- package/project-templates/private-files/connections/share.yaml +10 -0
- package/project-templates/private-files/contracts/sales.yaml +14 -0
- package/project-templates/private-files/contracts/stock.yaml +14 -0
- package/project-templates/private-files/flows/stores.yaml +9 -0
- package/project-templates/private-files/platform.yaml +11 -0
- package/project-templates/private-files/project.yaml +19 -0
- package/project-templates/private-files/standard.yaml +11 -0
- package/project-templates/private-files/template.yaml +10 -0
- package/project-templates/private-sql-server/README.md +25 -0
- package/project-templates/private-sql-server/connections/erp.yaml +10 -0
- package/project-templates/private-sql-server/contracts/customers.yaml +14 -0
- package/project-templates/private-sql-server/contracts/invoices.yaml +15 -0
- package/project-templates/private-sql-server/flows/erp.yaml +13 -0
- package/project-templates/private-sql-server/platform.yaml +11 -0
- package/project-templates/private-sql-server/project.yaml +19 -0
- package/project-templates/private-sql-server/standard.yaml +17 -0
- package/project-templates/private-sql-server/template.yaml +10 -0
- package/project-templates/pyspark/README.md +12 -0
- package/project-templates/pyspark/connections/billing.yaml +7 -0
- package/project-templates/pyspark/contracts/invoices.yaml +16 -0
- package/project-templates/pyspark/contracts/monthly_revenue.yaml +14 -0
- package/project-templates/pyspark/flows/billing.yaml +6 -0
- package/project-templates/pyspark/project.yaml +11 -0
- package/project-templates/pyspark/standard.yaml +4 -0
- package/project-templates/pyspark/template.yaml +3 -0
- package/project-templates/pyspark/transforms/monthly_revenue.py +10 -0
- package/project-templates/pyspark/transforms/monthly_revenue.yaml +10 -0
- package/project-templates/retail/README.md +22 -0
- package/project-templates/retail/connections/shop.yaml +8 -0
- package/project-templates/retail/contracts/customers.yaml +12 -0
- package/project-templates/retail/contracts/daily_sales.yaml +19 -0
- package/project-templates/retail/contracts/orders.yaml +16 -0
- package/project-templates/retail/flows/shop.yaml +18 -0
- package/project-templates/retail/platform.yaml +21 -0
- package/project-templates/retail/project.yaml +18 -0
- package/project-templates/retail/standard.yaml +15 -0
- package/project-templates/retail/template.yaml +10 -0
- package/project-templates/retail/transforms/daily_sales.sql +7 -0
- package/project-templates/retail/transforms/daily_sales.yaml +7 -0
- package/project-templates/salesforce/README.md +6 -0
- package/project-templates/salesforce/connections/salesforce.yaml +7 -0
- package/project-templates/salesforce/contracts/accounts.yaml +13 -0
- package/project-templates/salesforce/contracts/opportunities.yaml +14 -0
- package/project-templates/salesforce/flows/salesforce.yaml +7 -0
- package/project-templates/salesforce/project.yaml +9 -0
- package/project-templates/salesforce/standard.yaml +4 -0
- package/project-templates/salesforce/template.yaml +3 -0
- package/project-templates/sql-server/README.md +17 -0
- package/project-templates/sql-server/connections/erp.yaml +8 -0
- package/project-templates/sql-server/contracts/customer_balances.yaml +13 -0
- package/project-templates/sql-server/contracts/customers.yaml +13 -0
- package/project-templates/sql-server/contracts/invoices.yaml +14 -0
- package/project-templates/sql-server/flows/erp.yaml +13 -0
- package/project-templates/sql-server/platform.yaml +6 -0
- package/project-templates/sql-server/project.yaml +13 -0
- package/project-templates/sql-server/standard.yaml +9 -0
- package/project-templates/sql-server/template.yaml +3 -0
- package/project-templates/sql-server/transforms/customer_balances.sql +5 -0
- package/project-templates/sql-server/transforms/customer_balances.yaml +6 -0
package/dist/init.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/dist/io.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** The working folder, the output stream, and questions when there is a terminal. */
|
|
2
|
+
export interface Io {
|
|
3
|
+
cwd: string;
|
|
4
|
+
write(text: string): void;
|
|
5
|
+
/** Shows the question and returns one line of answer; absent without a terminal. */
|
|
6
|
+
ask?(question: string): string | undefined;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=io.d.ts.map
|
package/dist/io.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,WAAW,EAAE;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oFAAoF;IACpF,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC5C"}
|
package/dist/io.js
ADDED
package/dist/io.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAAA,yEAAyE"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The `ingestron` command.
|
|
3
|
+
import { askInTerminal } from "./ask.js";
|
|
4
|
+
import { run } from "./index.js";
|
|
5
|
+
process.exitCode = run(process.argv.slice(2), {
|
|
6
|
+
cwd: process.cwd(),
|
|
7
|
+
write: (text) => process.stdout.write(text),
|
|
8
|
+
// Questions only when a person can answer them; otherwise init needs flags.
|
|
9
|
+
...(process.stdin.isTTY && { ask: askInTerminal }),
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IAC5C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;IAClB,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3C,4EAA4E;IAC5E,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;CACnD,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every folder at or below `root` that holds a manifest, so was written by
|
|
3
|
+
* generation at some point. Links are not followed.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generatedFolders(root: string): string[];
|
|
6
|
+
/**
|
|
7
|
+
* The files in the output folder `root` that are neither wanted nor in its
|
|
8
|
+
* manifest (`known`), as `/` paths. Folders inside it that are output
|
|
9
|
+
* folders of their own (`others`, or any holding a manifest) are skipped.
|
|
10
|
+
*/
|
|
11
|
+
export declare function extraFiles(root: string, known: ReadonlySet<string>, others: string[]): string[];
|
|
12
|
+
//# sourceMappingURL=outputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAKvD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgB/F"}
|
package/dist/outputs.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// What is on disk under the output folder: folders generated before, and
|
|
2
|
+
// files in an output folder that were never generated.
|
|
3
|
+
import { existsSync, lstatSync, readdirSync } from "node:fs";
|
|
4
|
+
import { join, relative, sep } from "node:path";
|
|
5
|
+
import { lockFile, manifestFile } from "@ingestron/generate";
|
|
6
|
+
/**
|
|
7
|
+
* Every folder at or below `root` that holds a manifest, so was written by
|
|
8
|
+
* generation at some point. Links are not followed.
|
|
9
|
+
*/
|
|
10
|
+
export function generatedFolders(root) {
|
|
11
|
+
if (!isFolder(root))
|
|
12
|
+
return [];
|
|
13
|
+
const found = existsSync(join(root, manifestFile)) ? [root] : [];
|
|
14
|
+
for (const name of readdirSync(root).sort())
|
|
15
|
+
found.push(...generatedFolders(join(root, name)));
|
|
16
|
+
return found;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The files in the output folder `root` that are neither wanted nor in its
|
|
20
|
+
* manifest (`known`), as `/` paths. Folders inside it that are output
|
|
21
|
+
* folders of their own (`others`, or any holding a manifest) are skipped.
|
|
22
|
+
*/
|
|
23
|
+
export function extraFiles(root, known, others) {
|
|
24
|
+
const skip = new Set(others);
|
|
25
|
+
const extra = [];
|
|
26
|
+
const walk = (folder) => {
|
|
27
|
+
for (const name of readdirSync(folder).sort()) {
|
|
28
|
+
const path = join(folder, name);
|
|
29
|
+
if (isFolder(path)) {
|
|
30
|
+
if (!skip.has(path) && !existsSync(join(path, manifestFile)))
|
|
31
|
+
walk(path);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const relativePath = relative(root, path).split(sep).join("/");
|
|
35
|
+
if (!known.has(relativePath) && !ignored.has(name))
|
|
36
|
+
extra.push(relativePath);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
if (isFolder(root))
|
|
40
|
+
walk(root);
|
|
41
|
+
return extra;
|
|
42
|
+
}
|
|
43
|
+
/** Files that are never reported: the manifest, the lock and Finder's notes. */
|
|
44
|
+
const ignored = new Set([manifestFile, lockFile, ".DS_Store"]);
|
|
45
|
+
function isFolder(path) {
|
|
46
|
+
try {
|
|
47
|
+
return lstatSync(path).isDirectory();
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=outputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs.js","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,uDAAuD;AACvD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAA0B,EAAE,MAAgB;IACnF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,MAAc,EAAQ,EAAE;QACpC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAChC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzE,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC,CAAC;IACF,IAAI,QAAQ,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gFAAgF;AAChF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAE/D,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/packs.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packs.d.ts","sourceRoot":"","sources":["../src/packs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAInD,iDAAiD;AACjD,eAAO,MAAM,KAAK,EAAE,IAAI,EAAsB,CAAC"}
|
package/dist/packs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packs.js","sourceRoot":"","sources":["../src/packs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,iDAAiD;AACjD,MAAM,CAAC,MAAM,KAAK,GAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** One source in the project builder's categorised catalogue.
|
|
2
|
+
* @example const source: ProjectSource = projectSources()[0]!;
|
|
3
|
+
*/
|
|
4
|
+
export interface ProjectSource {
|
|
5
|
+
id: string;
|
|
6
|
+
title: string;
|
|
7
|
+
category: string;
|
|
8
|
+
}
|
|
9
|
+
/** An ingestion route supported by an installed pack.
|
|
10
|
+
* @example const route: ProjectRoute = projectRoutes("files")[0]!;
|
|
11
|
+
*/
|
|
12
|
+
export interface ProjectRoute {
|
|
13
|
+
via: string;
|
|
14
|
+
method: string;
|
|
15
|
+
title: string;
|
|
16
|
+
connectivity: string[];
|
|
17
|
+
maturity: string;
|
|
18
|
+
}
|
|
19
|
+
/** Available sources, grouped by discovery category and title.
|
|
20
|
+
* @example const sources = projectSources();
|
|
21
|
+
*/
|
|
22
|
+
export declare function projectSources(): ProjectSource[];
|
|
23
|
+
/** Supported routes for a source, optionally filtered by network reachability.
|
|
24
|
+
* @example const routes = projectRoutes("sqlserver", "private");
|
|
25
|
+
*/
|
|
26
|
+
export declare function projectRoutes(connector: string, connectivity?: string): ProjectRoute[];
|
|
27
|
+
//# sourceMappingURL=project-choices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-choices.d.ts","sourceRoot":"","sources":["../src/project-choices.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD;;GAEG;AACH,wBAAgB,cAAc,IAAI,aAAa,EAAE,CAYhD;AACD;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBtF"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { packs } from "./packs.js";
|
|
2
|
+
/** Available sources, grouped by discovery category and title.
|
|
3
|
+
* @example const sources = projectSources();
|
|
4
|
+
*/
|
|
5
|
+
export function projectSources() {
|
|
6
|
+
const sources = new Map();
|
|
7
|
+
for (const pack of packs)
|
|
8
|
+
for (const connector of pack.connectors ?? [])
|
|
9
|
+
sources.set(connector.id, {
|
|
10
|
+
id: connector.id,
|
|
11
|
+
title: connector.title,
|
|
12
|
+
category: connector.category ?? "Other sources",
|
|
13
|
+
});
|
|
14
|
+
return [...sources.values()].sort((a, b) => a.category.localeCompare(b.category) || a.title.localeCompare(b.title));
|
|
15
|
+
}
|
|
16
|
+
/** Supported routes for a source, optionally filtered by network reachability.
|
|
17
|
+
* @example const routes = projectRoutes("sqlserver", "private");
|
|
18
|
+
*/
|
|
19
|
+
export function projectRoutes(connector, connectivity) {
|
|
20
|
+
return packs.flatMap((pack) => (pack.connectors ?? [])
|
|
21
|
+
.filter((source) => source.id === connector)
|
|
22
|
+
.flatMap((source) => {
|
|
23
|
+
const method = pack.methods[source.method];
|
|
24
|
+
if (!supported(method, connector, connectivity))
|
|
25
|
+
return [];
|
|
26
|
+
return [
|
|
27
|
+
{
|
|
28
|
+
via: pack.id,
|
|
29
|
+
method: source.method,
|
|
30
|
+
title: pack.id === "adf" ? "ADF ingestion into Databricks" : "Databricks directly",
|
|
31
|
+
connectivity: method.connectivity ?? [],
|
|
32
|
+
maturity: source.maturity?.status ?? "Not stated",
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
function supported(method, connector, connectivity) {
|
|
38
|
+
if (!method || method.action !== "ingest")
|
|
39
|
+
return false;
|
|
40
|
+
if (!method.connectors?.includes(connector))
|
|
41
|
+
return false;
|
|
42
|
+
return !connectivity || Boolean(method.connectivity?.includes(connectivity));
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=project-choices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-choices.js","sourceRoot":"","sources":["../src/project-choices.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAmBnC;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK;QACtB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE;gBACxB,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,eAAe;aAChD,CAAC,CAAC;IACP,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC/B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CACjF,CAAC;AACJ,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,YAAqB;IACpE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5B,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC;SAC3C,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3D,OAAO;YACL;gBACE,GAAG,EAAE,IAAI,CAAC,EAAE;gBACZ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,qBAAqB;gBAClF,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;gBACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,YAAY;aAClD;SACF,CAAC;IACJ,CAAC,CAAC,CACL,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,MAA0B,EAC1B,SAAiB,EACjB,YAAqB;IAErB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Content } from "./scaffold.js";
|
|
2
|
+
import type { Question } from "./templates.js";
|
|
3
|
+
/** Parameterise selected recipe files; non-string source defaults remain explicit YAML. */
|
|
4
|
+
export declare function projectQuestions(files: Record<string, Content>, connectionFile: string, flowFiles: string[], method: string): Question[];
|
|
5
|
+
//# sourceMappingURL=project-questions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-questions.d.ts","sourceRoot":"","sources":["../src/project-questions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,QAAQ,EAAE,CAiCZ"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Recipe answers become ordinary project values, using the existing loader syntax.
|
|
2
|
+
import { parse, stringify } from "yaml";
|
|
3
|
+
/** Parameterise selected recipe files; non-string source defaults remain explicit YAML. */
|
|
4
|
+
export function projectQuestions(files, connectionFile, flowFiles, method) {
|
|
5
|
+
const questions = [];
|
|
6
|
+
const project = parse(String(files["project.yaml"]));
|
|
7
|
+
const ask = (object, key, name, label) => {
|
|
8
|
+
const value = object[key];
|
|
9
|
+
if (typeof value !== "string")
|
|
10
|
+
return;
|
|
11
|
+
const reference = /^\$\{values\.([\w]+)\}$/.exec(value);
|
|
12
|
+
const fallback = reference ? (project.values?.[reference[1]] ?? value) : value;
|
|
13
|
+
questions.push({ value: name, ask: label, default: fallback });
|
|
14
|
+
object[key] = `\${values.${name}}`;
|
|
15
|
+
};
|
|
16
|
+
const connection = parse(String(files[connectionFile]));
|
|
17
|
+
for (const key of Object.keys(connection.settings))
|
|
18
|
+
ask(connection.settings, key, `source_${key}`, `Source ${key}${String(connection.settings[key]).startsWith("${secret:") ? " (Key Vault secret reference)" : ""}`);
|
|
19
|
+
files[connectionFile] = stringify(connection);
|
|
20
|
+
for (const file of flowFiles) {
|
|
21
|
+
const flow = parse(String(files[file]));
|
|
22
|
+
for (const [name, table] of Object.entries(flow.tables))
|
|
23
|
+
ask(table, "object", `${name}_object`, `Source object for ${name}`);
|
|
24
|
+
const settings = flow.ingest?.with ?? {};
|
|
25
|
+
ask(settings, "query", "source_query", "Native source query");
|
|
26
|
+
const options = settings.source_options;
|
|
27
|
+
for (const key of Object.keys(options ?? {}))
|
|
28
|
+
ask(options, key, `option_${key}`, `Source option ${key}`);
|
|
29
|
+
files[file] = stringify(flow);
|
|
30
|
+
}
|
|
31
|
+
infrastructureQuestions(files, method, ask);
|
|
32
|
+
return questions;
|
|
33
|
+
}
|
|
34
|
+
function infrastructureQuestions(files, method, ask) {
|
|
35
|
+
if (!files["platform.yaml"])
|
|
36
|
+
return;
|
|
37
|
+
const platform = parse(String(files["platform.yaml"]));
|
|
38
|
+
const settings = platform.settings?.[method] ?? {};
|
|
39
|
+
for (const key of ["landing", "key_vault", "integration_runtime"])
|
|
40
|
+
ask(settings, key, key, `Platform ${key}`);
|
|
41
|
+
files["platform.yaml"] = stringify(platform);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=project-questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-questions.js","sourceRoot":"","sources":["../src/project-questions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Content } from "./scaffold.js";
|
|
2
|
+
import { type Template } from "./templates.js";
|
|
3
|
+
/** One composed project before answers are applied or files written.
|
|
4
|
+
* @example const recipe: ProjectRecipe = projectRecipe("files", "databricks", "public");
|
|
5
|
+
*/
|
|
6
|
+
export interface ProjectRecipe {
|
|
7
|
+
template: Template;
|
|
8
|
+
files: Record<string, Content>;
|
|
9
|
+
}
|
|
10
|
+
/** Select a tested source recipe and expose its values through the normal init questions.
|
|
11
|
+
* @example const recipe = projectRecipe("postgresql", "adf", "private");
|
|
12
|
+
*/
|
|
13
|
+
export declare function projectRecipe(connector: string, via: string, connectivity: string): ProjectRecipe;
|
|
14
|
+
//# sourceMappingURL=project-recipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-recipes.d.ts","sourceRoot":"","sources":["../src/project-recipes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkB5E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AACD;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,CAiBjG"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// Select definitions from tested examples; native generation stays in the packs.
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { recipesFolder } from "@ingestron/pack-adf";
|
|
4
|
+
import { parse, stringify } from "yaml";
|
|
5
|
+
import { scaffoldFiles } from "./scaffold.js";
|
|
6
|
+
import { builtInFolder, readTemplate } from "./templates.js";
|
|
7
|
+
import { projectRoutes, projectSources } from "./project-choices.js";
|
|
8
|
+
import { projectQuestions } from "./project-questions.js";
|
|
9
|
+
const directExamples = {
|
|
10
|
+
files: "minimal",
|
|
11
|
+
sqlserver: "sql-server",
|
|
12
|
+
salesforce: "salesforce",
|
|
13
|
+
kafka: "kafka",
|
|
14
|
+
};
|
|
15
|
+
/** Select a tested source recipe and expose its values through the normal init questions.
|
|
16
|
+
* @example const recipe = projectRecipe("postgresql", "adf", "private");
|
|
17
|
+
*/
|
|
18
|
+
export function projectRecipe(connector, via, connectivity) {
|
|
19
|
+
const route = projectRoutes(connector, connectivity).find((item) => item.via === via);
|
|
20
|
+
if (!route)
|
|
21
|
+
throw new Error(`No ${via} route for ${connector} with ${connectivity} connectivity.`);
|
|
22
|
+
const template = recipeTemplate(connector, via);
|
|
23
|
+
const files = scaffoldFiles(template, {
|
|
24
|
+
name: "example",
|
|
25
|
+
environments: ["dev", "prod"],
|
|
26
|
+
values: {},
|
|
27
|
+
});
|
|
28
|
+
delete files["sample.yaml"];
|
|
29
|
+
const selected = selectSource(files, connector, connectivity, route.method);
|
|
30
|
+
trimSettings(files, route.method, via, selected.flows);
|
|
31
|
+
template.name = `${connector} via ${via}`;
|
|
32
|
+
template.title = `${projectSources().find((source) => source.id === connector).title}: ${route.title}`;
|
|
33
|
+
template.questions = projectQuestions(files, selected.connection, selected.flows, route.method);
|
|
34
|
+
return { template, files };
|
|
35
|
+
}
|
|
36
|
+
function recipeTemplate(connector, via) {
|
|
37
|
+
if (via === "databricks") {
|
|
38
|
+
const example = directExamples[connector];
|
|
39
|
+
if (!example)
|
|
40
|
+
throw new Error(`No tested project recipe for ${connector} via Databricks.`);
|
|
41
|
+
return readTemplate(join(builtInFolder, example), example);
|
|
42
|
+
}
|
|
43
|
+
const folder = recipesFolder;
|
|
44
|
+
return {
|
|
45
|
+
name: connector,
|
|
46
|
+
title: connector,
|
|
47
|
+
summary: "ADF ingestion into Databricks",
|
|
48
|
+
folder,
|
|
49
|
+
questions: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function selectSource(files, connector, connectivity, method) {
|
|
53
|
+
const definitions = Object.entries(files)
|
|
54
|
+
.filter(([path]) => /\.ya?ml$/.test(path))
|
|
55
|
+
.map(([path, text]) => ({ path, value: parse(String(text)) }));
|
|
56
|
+
const selected = definitions.find(({ value }) => value?.kind === "Connection" && value.connector === connector);
|
|
57
|
+
if (!selected)
|
|
58
|
+
throw new Error(`The project recipe has no ${connector} connection.`);
|
|
59
|
+
selected.value.connectivity = connectivity;
|
|
60
|
+
const flows = [];
|
|
61
|
+
for (const { path, value } of definitions) {
|
|
62
|
+
if (value?.kind === "Connection" && path !== selected.path)
|
|
63
|
+
delete files[path];
|
|
64
|
+
if (value?.kind !== "Flow")
|
|
65
|
+
continue;
|
|
66
|
+
if (value.source !== selected.value.id) {
|
|
67
|
+
delete files[path];
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
flows.push(path);
|
|
71
|
+
value.ingest = { ...value.ingest, uses: method };
|
|
72
|
+
if (value.ingest.with)
|
|
73
|
+
delete value.ingest.with.resource_names;
|
|
74
|
+
files[path] = stringify(value);
|
|
75
|
+
}
|
|
76
|
+
files[selected.path] = stringify(selected.value);
|
|
77
|
+
return { connection: selected.path, flows };
|
|
78
|
+
}
|
|
79
|
+
function trimSettings(files, method, via, flowFiles) {
|
|
80
|
+
trimStandard(files, method, via);
|
|
81
|
+
if (!files["platform.yaml"])
|
|
82
|
+
return;
|
|
83
|
+
const platform = parse(String(files["platform.yaml"]));
|
|
84
|
+
if (platform.settings)
|
|
85
|
+
platform.settings = { [method]: platform.settings[method] ?? {} };
|
|
86
|
+
const settings = platform.settings?.[method];
|
|
87
|
+
if (settings)
|
|
88
|
+
delete settings.resource_names;
|
|
89
|
+
if (settings)
|
|
90
|
+
moveInfrastructure(files, flowFiles, settings);
|
|
91
|
+
files["platform.yaml"] = stringify(platform);
|
|
92
|
+
}
|
|
93
|
+
function trimStandard(files, method, via) {
|
|
94
|
+
const standard = parse(String(files["standard.yaml"]));
|
|
95
|
+
standard.packs = via === "adf" ? ["databricks@1", "adf@1"] : ["databricks@1"];
|
|
96
|
+
if (standard.ingest?.settings)
|
|
97
|
+
standard.ingest.settings = { [method]: standard.ingest.settings[method] ?? {} };
|
|
98
|
+
files["standard.yaml"] = stringify(standard);
|
|
99
|
+
}
|
|
100
|
+
function moveInfrastructure(files, flowFiles, settings) {
|
|
101
|
+
for (const file of flowFiles) {
|
|
102
|
+
const flow = parse(String(files[file]));
|
|
103
|
+
const overrides = flow.ingest?.with;
|
|
104
|
+
if (!overrides)
|
|
105
|
+
continue;
|
|
106
|
+
for (const key of ["landing", "integration_runtime"]) {
|
|
107
|
+
if (overrides[key] === undefined)
|
|
108
|
+
continue;
|
|
109
|
+
settings[key] = overrides[key];
|
|
110
|
+
delete overrides[key];
|
|
111
|
+
}
|
|
112
|
+
files[file] = stringify(flow);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=project-recipes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-recipes.js","sourceRoot":"","sources":["../src/project-recipes.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAgB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,MAAM,cAAc,GAA2B;IAC7C,KAAK,EAAE,SAAS;IAChB,SAAS,EAAE,YAAY;IACvB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAiBF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiB,EAAE,GAAW,EAAE,YAAoB;IAChF,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACtF,IAAI,CAAC,KAAK;QACR,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,SAAS,SAAS,YAAY,gBAAgB,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE;QACpC,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;QAC7B,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5E,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,GAAG,GAAG,SAAS,QAAQ,GAAG,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,GAAG,GAAG,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;IACxG,QAAQ,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AACD,SAAS,cAAc,CAAC,SAAiB,EAAE,GAAW;IACpD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,SAAS,kBAAkB,CAAC,CAAC;QAC3F,OAAO,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,MAAM,GAAG,aAAa,CAAC;IAC7B,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,+BAA+B;QACxC,MAAM;QACN,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AACD,SAAS,YAAY,CACnB,KAA8B,EAC9B,SAAiB,EACjB,YAAoB,EACpB,MAAc;IAEd,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAe,EAAE,CAAC,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAC/B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAC7E,CAAC;IACF,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,cAAc,CAAC,CAAC;IACrF,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;QAC1C,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/E,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM;YAAE,SAAS;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AACD,SAAS,YAAY,CACnB,KAA8B,EAC9B,MAAc,EACd,GAAW,EACX,SAAmB;IAEnB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAAE,OAAO;IACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAe,CAAC;IACrE,IAAI,QAAQ,CAAC,QAAQ;QAAE,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IACzF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,cAAc,CAAC;IAC7C,IAAI,QAAQ;QAAE,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,KAAK,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,KAA8B,EAAE,MAAc,EAAE,GAAW;IAC/E,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAqC,CAAC;IAC3F,QAAQ,CAAC,KAAK,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAC9E,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ;QAC3B,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IAClF,KAAK,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA8B,EAC9B,SAAmB,EACnB,QAAiC;IAEjC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAe,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;QACpC,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,CAAC;YACrD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAS;YAC3C,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type FileSource } from "@ingestron/config";
|
|
2
|
+
import type { Options } from "./args.js";
|
|
3
|
+
import type { Io } from "./io.js";
|
|
4
|
+
/** Prints the request for each environment. Returns the exit code. */
|
|
5
|
+
export declare function request(options: Options, io: Io): number;
|
|
6
|
+
/**
|
|
7
|
+
* The request as Markdown, ready to send; a short note instead when the
|
|
8
|
+
* definitions do not resolve.
|
|
9
|
+
* @example
|
|
10
|
+
* console.log(platformRequest(nodeFiles("definitions"), "prod"));
|
|
11
|
+
*/
|
|
12
|
+
export declare function platformRequest(files: FileSource, environment: string | undefined): string;
|
|
13
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiD,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQnG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAGlC,sEAAsE;AACtE,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAQxD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAkB1F"}
|
package/dist/request.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// ingestron request: what to ask of whoever runs the data platform, for one
|
|
2
|
+
// environment: the identity, what each switched-on capability needs, the
|
|
3
|
+
// features in use but switched off, the shared infrastructure the methods
|
|
4
|
+
// expect, what each pack expects to exist and its schedules, and the SQL to
|
|
5
|
+
// run once. The editor's command writes the same text.
|
|
6
|
+
import { resolve } from "node:path";
|
|
7
|
+
import { nodeFiles, resolveProject } from "@ingestron/config";
|
|
8
|
+
import { kinds, resolveDefinitions, } from "@ingestron/definitions";
|
|
9
|
+
import { environmentsToGenerate } from "./environments.js";
|
|
10
|
+
import { generatedOutputs } from "./generate.js";
|
|
11
|
+
import { packs } from "./packs.js";
|
|
12
|
+
/** Prints the request for each environment. Returns the exit code. */
|
|
13
|
+
export function request(options, io) {
|
|
14
|
+
const definitions = resolve(io.cwd, options.definitions);
|
|
15
|
+
const files = nodeFiles(definitions);
|
|
16
|
+
const texts = environmentsToGenerate(definitions, options.environments).map((environment) => platformRequest(files, environment));
|
|
17
|
+
io.write(texts.join("\n"));
|
|
18
|
+
return texts.some((text) => text.includes("The definitions have problems")) ? 1 : 0;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The request as Markdown, ready to send; a short note instead when the
|
|
22
|
+
* definitions do not resolve.
|
|
23
|
+
* @example
|
|
24
|
+
* console.log(platformRequest(nodeFiles("definitions"), "prod"));
|
|
25
|
+
*/
|
|
26
|
+
export function platformRequest(files, environment) {
|
|
27
|
+
const { model, diagnostics } = resolveDefinitions(files, { packs, environment, envvars: {} });
|
|
28
|
+
const name = environment ?? "default";
|
|
29
|
+
if (!model)
|
|
30
|
+
return `# Platform request (${name})\n\nThe definitions have problems; fix them first.\n`;
|
|
31
|
+
const capabilities = packs.flatMap((pack) => pack.capabilities ?? []);
|
|
32
|
+
return [
|
|
33
|
+
`# Platform request: ${model.project.id} (${name})`,
|
|
34
|
+
identity(model),
|
|
35
|
+
switchedOn(model, capabilities),
|
|
36
|
+
switchedOff(diagnostics, capabilities),
|
|
37
|
+
infrastructure(files, environment),
|
|
38
|
+
...packSections(model),
|
|
39
|
+
sql(model, name),
|
|
40
|
+
]
|
|
41
|
+
.filter(Boolean)
|
|
42
|
+
.join("\n\n")
|
|
43
|
+
.concat("\n");
|
|
44
|
+
}
|
|
45
|
+
/** Who the generated pipelines and jobs run as; nothing when no data platform pack runs them. */
|
|
46
|
+
function identity(model) {
|
|
47
|
+
const { run_as: runAs, workspace } = model.platform;
|
|
48
|
+
const platform = model.tables.some((table) => [table.ingest, table.transform, table.store].some((step) => step?.pack === "databricks"));
|
|
49
|
+
if (!runAs && !platform)
|
|
50
|
+
return undefined;
|
|
51
|
+
const who = runAs ? `\`${Object.values(runAs)[0]}\`` : "the identity that deploys the bundle";
|
|
52
|
+
return `Pipelines and jobs run as ${who}${workspace.host ? ` in ${workspace.host}` : ""}.`;
|
|
53
|
+
}
|
|
54
|
+
function switchedOn(model, capabilities) {
|
|
55
|
+
const on = capabilities.filter((capability) => model.platform.manage[capability.id]);
|
|
56
|
+
if (on.length === 0)
|
|
57
|
+
return undefined;
|
|
58
|
+
const sections = on.map((capability) => `### ${capability.title} (\`manage.${capability.id}\`)\n\n${capability.does}\n\n${capability.needs.map((need) => `- ${need}`).join("\n")}`);
|
|
59
|
+
return `## Switched on\n\n${sections.join("\n\n")}`;
|
|
60
|
+
}
|
|
61
|
+
/** Features the definitions use while the platform has them off, from the CAPABILITY_OFF warnings. */
|
|
62
|
+
function switchedOff(diagnostics, capabilities) {
|
|
63
|
+
const lines = diagnostics
|
|
64
|
+
.filter((diagnostic) => diagnostic.code === "CAPABILITY_OFF")
|
|
65
|
+
.flatMap((diagnostic) => {
|
|
66
|
+
const pointer = diagnostic.fixes?.[0]?.edits[0]?.pointer ?? "";
|
|
67
|
+
const capability = capabilities.find((item) => pointer === `/manage/${item.id}`);
|
|
68
|
+
const what = diagnostic.message.split(":")[0];
|
|
69
|
+
return capability ? [`- ${capability.title} (\`manage.${capability.id}\`): ${what}`] : [];
|
|
70
|
+
});
|
|
71
|
+
if (lines.length === 0)
|
|
72
|
+
return undefined;
|
|
73
|
+
return `## Used by the definitions, but switched off\n\n${[...new Set(lines)].join("\n")}`;
|
|
74
|
+
}
|
|
75
|
+
/** The platform's method settings, with values for this environment; secrets never shown. */
|
|
76
|
+
function infrastructure(files, environment) {
|
|
77
|
+
const loaded = resolveProject(files, {
|
|
78
|
+
kinds: Object.values(kinds),
|
|
79
|
+
...(environment && { environment }),
|
|
80
|
+
envvars: {},
|
|
81
|
+
});
|
|
82
|
+
const platform = loaded.project?.documents.find((item) => item.kind === "Platform");
|
|
83
|
+
const settings = platform?.value
|
|
84
|
+
?.settings;
|
|
85
|
+
const lines = Object.entries(settings ?? {}).flatMap(([method, values]) => Object.entries(values ?? {}).map(([key, value]) => `- \`${method}\` \`${key}\`: ${shown(value)}`));
|
|
86
|
+
return lines.length > 0 ? `## Shared infrastructure\n\n${lines.join("\n")}` : undefined;
|
|
87
|
+
}
|
|
88
|
+
function shown(value) {
|
|
89
|
+
if (typeof value === "object" && value !== null && "$secret" in value)
|
|
90
|
+
return "a secret";
|
|
91
|
+
return `\`${typeof value === "string" ? value : JSON.stringify(value)}\``;
|
|
92
|
+
}
|
|
93
|
+
/** Each used pack's sections, those with the same title joined, in the order first seen. */
|
|
94
|
+
function packSections(model) {
|
|
95
|
+
const sections = new Map();
|
|
96
|
+
for (const pack of packs.filter((item) => model.standard.packs.includes(`${item.id}@${item.version}`)))
|
|
97
|
+
for (const section of pack.request?.(model) ?? []) {
|
|
98
|
+
const seen = sections.get(section.title);
|
|
99
|
+
if (seen)
|
|
100
|
+
seen.lines.push(...section.lines);
|
|
101
|
+
else
|
|
102
|
+
sections.set(section.title, { ...section, lines: [...section.lines] });
|
|
103
|
+
}
|
|
104
|
+
return [...sections.values()]
|
|
105
|
+
.filter((section) => section.lines.length > 0)
|
|
106
|
+
.map(({ title, intro, lines }) => [`## ${title}`, ...(intro ? [intro] : []), lines.map((line) => `- ${line}`).join("\n")].join("\n\n"));
|
|
107
|
+
}
|
|
108
|
+
function sql(model, name) {
|
|
109
|
+
const text = generatedOutputs(model, name)
|
|
110
|
+
.map(({ files }) => files["prerequisites.sql"])
|
|
111
|
+
.find(Boolean);
|
|
112
|
+
return text && `## SQL to run once (review first)\n\n\`\`\`sql\n${text}\`\`\``;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Options } from "./args.js";
|
|
2
|
+
import type { Io } from "./io.js";
|
|
3
|
+
/** Writes contracts/<name>.yaml from the sample. Returns the exit code. */
|
|
4
|
+
export declare function draftContract(options: Options, io: Io): number;
|
|
5
|
+
/**
|
|
6
|
+
* The contract text for a sample's columns, with the object named after the file.
|
|
7
|
+
* @example
|
|
8
|
+
* contractFromSample("id,name\n1,a\n", "customers.csv", "shop.customers");
|
|
9
|
+
*/
|
|
10
|
+
export declare function contractFromSample(text: string, file: string, id: string): string;
|
|
11
|
+
//# sourceMappingURL=sample-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sample-contract.d.ts","sourceRoot":"","sources":["../src/sample-contract.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAGlC,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAiB9D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAqBjF"}
|