ingestron 0.17.5 → 0.17.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.7
4
+
5
+ - Pin core 0.12.13. Connections can name a source `kind` and a `route`
6
+ (`portable` or `native`); a native connection is generated by the provider's
7
+ own ingestion standard, with no silent fallback. `check` lists each flow's
8
+ source, route and reference record (licence, cost, access, maturity) and the
9
+ other routes available. Stale reference records are flagged.
10
+ - Official short names `postgresql`, `mysql` and `oracle` for the new database
11
+ connectors.
12
+
13
+ ## 0.17.6
14
+
15
+ - Pin core 0.12.12. Providers can declare where each engine's rules are enforced,
16
+ and SQL rules may use `${table}` and, on column rules, `${column}`; other
17
+ placeholders fail `check`. Databricks 3.5.0 and ADF 4.5.0 use this.
18
+
3
19
  ## 0.17.5
4
20
 
5
21
  - Pin core 0.12.11. Providers can declare which contract quality rules they
@@ -75,7 +75,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
75
75
  SOFTWARE.
76
76
  ```
77
77
 
78
- ### @ingestron/core@0.12.11
78
+ ### @ingestron/core@0.12.13
79
79
 
80
80
  Declared licence: Apache-2.0
81
81
 
@@ -61,6 +61,37 @@ function runQualityLine(flows) {
61
61
  .join(", ")}${warned.length > 5 ? ", …" : ""}`
62
62
  : ", all passed"}.`;
63
63
  }
64
+ // Source routes from core (PB-064); absent with older core versions.
65
+ const costLabel = {
66
+ none: "no extra cost",
67
+ included: "included in platform pricing",
68
+ "separately-billed": "billed separately",
69
+ };
70
+ function routeLabel(route) {
71
+ const r = route?.reference;
72
+ const via = route?.route === "native"
73
+ ? `native on ${clean(route.configuration)} via ${(route.standards ?? []).map(clean).join(", ")}`
74
+ : `portable ${clean(route?.package ?? "connector")} on ${clean(route?.configuration)}`;
75
+ if (!r)
76
+ return `${via} [no reference record]`;
77
+ const stale = Date.now() - new Date(`${r.verified}T00:00:00Z`).getTime() >
78
+ 180 * 86_400_000;
79
+ return `${via} [${clean(r.maturity)}, ${costLabel[r.cost?.model] ?? clean(r.cost?.model)}${stale ? `, record checked ${clean(r.verified)}` : ""}]`;
80
+ }
81
+ function sourceLines(sources) {
82
+ if (!Array.isArray(sources) || !sources.length)
83
+ return "";
84
+ return ("\nSources:" +
85
+ sources
86
+ .slice(0, 20)
87
+ .map((s) => `\n ${clean(s.flow)}: ${clean(s.connection)} (${clean(s.kind)}) ${routeLabel(s.selected)}` +
88
+ (s.alternative
89
+ ? `\n Also available: ${routeLabel(s.alternative)}`
90
+ : ""))
91
+ .join("") +
92
+ (sources.length > 20 ? `\n … ${sources.length - 20} more` : "") +
93
+ "\nUse --json for every route with documentation, licence, cost and access.");
94
+ }
64
95
  function pluginLabel(reference) {
65
96
  for (const [name, entry] of Object.entries(officialPlugins)) {
66
97
  const prefixes = [
@@ -140,7 +171,8 @@ export function terminal(result, verbose = false, args = {}) {
140
171
  return value.mode === "draft"
141
172
  ? `Draft configuration checked (${value.flows} flows).\n${value.pending.length} unresolved inputs. Strict build readiness has not been checked.`
142
173
  : `Project checks passed${value.nodes === undefined ? "" : ` (${value.nodes} planned nodes)`}.\nValidation is local; no platform connection was tested.` +
143
- dataProductLines(value.dataProducts, value.quality);
174
+ dataProductLines(value.dataProducts, value.quality) +
175
+ sourceLines(value.sources);
144
176
  case "doctor":
145
177
  return `Project ${clean(value.project)} (${clean(value.environment)})\n${value.pending.length} unresolved inputs.\n${clean(value.platformAccess)}\nNext: ${clean(value.next)}`;
146
178
  case "runtime_prepare":
@@ -37,6 +37,24 @@ export declare const officialPlugins: {
37
37
  readonly path: "plugin/provider.yaml";
38
38
  readonly tagPrefix: "";
39
39
  };
40
+ readonly mysql: {
41
+ readonly kind: "connector";
42
+ readonly repository: "ingestron/connectors";
43
+ readonly path: "connectors/mysql/connector.yaml";
44
+ readonly tagPrefix: "mysql-";
45
+ };
46
+ readonly oracle: {
47
+ readonly kind: "connector";
48
+ readonly repository: "ingestron/connectors";
49
+ readonly path: "connectors/oracle/connector.yaml";
50
+ readonly tagPrefix: "oracle-";
51
+ };
52
+ readonly postgresql: {
53
+ readonly kind: "connector";
54
+ readonly repository: "ingestron/connectors";
55
+ readonly path: "connectors/postgresql/connector.yaml";
56
+ readonly tagPrefix: "postgresql-";
57
+ };
40
58
  readonly "sql-server": {
41
59
  readonly kind: "connector";
42
60
  readonly repository: "ingestron/connectors";
@@ -39,6 +39,24 @@ export const officialPlugins = {
39
39
  path: "plugin/provider.yaml",
40
40
  tagPrefix: "",
41
41
  },
42
+ mysql: {
43
+ kind: "connector",
44
+ repository: "ingestron/connectors",
45
+ path: "connectors/mysql/connector.yaml",
46
+ tagPrefix: "mysql-",
47
+ },
48
+ oracle: {
49
+ kind: "connector",
50
+ repository: "ingestron/connectors",
51
+ path: "connectors/oracle/connector.yaml",
52
+ tagPrefix: "oracle-",
53
+ },
54
+ postgresql: {
55
+ kind: "connector",
56
+ repository: "ingestron/connectors",
57
+ path: "connectors/postgresql/connector.yaml",
58
+ tagPrefix: "postgresql-",
59
+ },
42
60
  "sql-server": {
43
61
  kind: "connector",
44
62
  repository: "ingestron/connectors",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ingestron",
3
- "version": "0.17.5",
3
+ "version": "0.17.7",
4
4
  "type": "module",
5
5
  "description": "Build repeatable data pipelines from reviewed contracts and versioned standards.",
6
6
  "license": "Apache-2.0",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@clack/prompts": "1.7.0",
43
- "@ingestron/core": "0.12.11",
43
+ "@ingestron/core": "0.12.13",
44
44
  "@modelcontextprotocol/sdk": "1.30.0",
45
45
  "commander": "15.0.0",
46
46
  "yaml": "2.9.0"