@ingestron/authoring 0.0.0-stage → 1.0.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.
Files changed (140) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +17 -2
  4. package/dist/annotations.d.ts +24 -0
  5. package/dist/annotations.d.ts.map +1 -0
  6. package/dist/annotations.js +131 -0
  7. package/dist/annotations.js.map +1 -0
  8. package/dist/completion.d.ts +8 -0
  9. package/dist/completion.d.ts.map +1 -0
  10. package/dist/completion.js +193 -0
  11. package/dist/completion.js.map +1 -0
  12. package/dist/context.d.ts +36 -0
  13. package/dist/context.d.ts.map +1 -0
  14. package/dist/context.js +98 -0
  15. package/dist/context.js.map +1 -0
  16. package/dist/contract-uses.d.ts +8 -0
  17. package/dist/contract-uses.d.ts.map +1 -0
  18. package/dist/contract-uses.js +40 -0
  19. package/dist/contract-uses.js.map +1 -0
  20. package/dist/diagnostics.d.ts +20 -0
  21. package/dist/diagnostics.d.ts.map +1 -0
  22. package/dist/diagnostics.js +143 -0
  23. package/dist/diagnostics.js.map +1 -0
  24. package/dist/docs-entries.d.ts +5 -0
  25. package/dist/docs-entries.d.ts.map +1 -0
  26. package/dist/docs-entries.js +109 -0
  27. package/dist/docs-entries.js.map +1 -0
  28. package/dist/docs.d.ts +7 -0
  29. package/dist/docs.d.ts.map +1 -0
  30. package/dist/docs.js +23 -0
  31. package/dist/docs.js.map +1 -0
  32. package/dist/explain.d.ts +14 -0
  33. package/dist/explain.d.ts.map +1 -0
  34. package/dist/explain.js +55 -0
  35. package/dist/explain.js.map +1 -0
  36. package/dist/fields.d.ts +19 -0
  37. package/dist/fields.d.ts.map +1 -0
  38. package/dist/fields.js +151 -0
  39. package/dist/fields.js.map +1 -0
  40. package/dist/fix-all.d.ts +5 -0
  41. package/dist/fix-all.d.ts.map +1 -0
  42. package/dist/fix-all.js +23 -0
  43. package/dist/fix-all.js.map +1 -0
  44. package/dist/fixed.d.ts +6 -0
  45. package/dist/fixed.d.ts.map +1 -0
  46. package/dist/fixed.js +43 -0
  47. package/dist/fixed.js.map +1 -0
  48. package/dist/fixes.d.ts +33 -0
  49. package/dist/fixes.d.ts.map +1 -0
  50. package/dist/fixes.js +99 -0
  51. package/dist/fixes.js.map +1 -0
  52. package/dist/flow.d.ts +16 -0
  53. package/dist/flow.d.ts.map +1 -0
  54. package/dist/flow.js +62 -0
  55. package/dist/flow.js.map +1 -0
  56. package/dist/hover.d.ts +7 -0
  57. package/dist/hover.d.ts.map +1 -0
  58. package/dist/hover.js +168 -0
  59. package/dist/hover.js.map +1 -0
  60. package/dist/index.d.ts +19 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +22 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/inline.d.ts +7 -0
  65. package/dist/inline.d.ts.map +1 -0
  66. package/dist/inline.js +57 -0
  67. package/dist/inline.js.map +1 -0
  68. package/dist/inputs.d.ts +5 -0
  69. package/dist/inputs.d.ts.map +1 -0
  70. package/dist/inputs.js +72 -0
  71. package/dist/inputs.js.map +1 -0
  72. package/dist/methods.d.ts +26 -0
  73. package/dist/methods.d.ts.map +1 -0
  74. package/dist/methods.js +67 -0
  75. package/dist/methods.js.map +1 -0
  76. package/dist/moves.d.ts +5 -0
  77. package/dist/moves.d.ts.map +1 -0
  78. package/dist/moves.js +82 -0
  79. package/dist/moves.js.map +1 -0
  80. package/dist/navigation.d.ts +24 -0
  81. package/dist/navigation.d.ts.map +1 -0
  82. package/dist/navigation.js +176 -0
  83. package/dist/navigation.js.map +1 -0
  84. package/dist/platform-request.d.ts +6 -0
  85. package/dist/platform-request.d.ts.map +1 -0
  86. package/dist/platform-request.js +13 -0
  87. package/dist/platform-request.js.map +1 -0
  88. package/dist/preview.d.ts +20 -0
  89. package/dist/preview.d.ts.map +1 -0
  90. package/dist/preview.js +51 -0
  91. package/dist/preview.js.map +1 -0
  92. package/dist/problems-at.d.ts +17 -0
  93. package/dist/problems-at.d.ts.map +1 -0
  94. package/dist/problems-at.js +32 -0
  95. package/dist/problems-at.js.map +1 -0
  96. package/dist/project.d.ts +27 -0
  97. package/dist/project.d.ts.map +1 -0
  98. package/dist/project.js +96 -0
  99. package/dist/project.js.map +1 -0
  100. package/dist/reference.d.ts +50 -0
  101. package/dist/reference.d.ts.map +1 -0
  102. package/dist/reference.js +152 -0
  103. package/dist/reference.js.map +1 -0
  104. package/dist/references.d.ts +8 -0
  105. package/dist/references.d.ts.map +1 -0
  106. package/dist/references.js +68 -0
  107. package/dist/references.js.map +1 -0
  108. package/dist/rename.d.ts +22 -0
  109. package/dist/rename.d.ts.map +1 -0
  110. package/dist/rename.js +64 -0
  111. package/dist/rename.js.map +1 -0
  112. package/dist/schema.d.ts +23 -0
  113. package/dist/schema.d.ts.map +1 -0
  114. package/dist/schema.js +46 -0
  115. package/dist/schema.js.map +1 -0
  116. package/dist/skeletons.d.ts +7 -0
  117. package/dist/skeletons.d.ts.map +1 -0
  118. package/dist/skeletons.js +107 -0
  119. package/dist/skeletons.js.map +1 -0
  120. package/dist/smart.d.ts +24 -0
  121. package/dist/smart.d.ts.map +1 -0
  122. package/dist/smart.js +113 -0
  123. package/dist/smart.js.map +1 -0
  124. package/dist/suggestion.d.ts +23 -0
  125. package/dist/suggestion.d.ts.map +1 -0
  126. package/dist/suggestion.js +2 -0
  127. package/dist/suggestion.js.map +1 -0
  128. package/dist/symbols.d.ts +12 -0
  129. package/dist/symbols.d.ts.map +1 -0
  130. package/dist/symbols.js +21 -0
  131. package/dist/symbols.js.map +1 -0
  132. package/dist/value-help.d.ts +7 -0
  133. package/dist/value-help.d.ts.map +1 -0
  134. package/dist/value-help.js +206 -0
  135. package/dist/value-help.js.map +1 -0
  136. package/dist/yaml.d.ts +33 -0
  137. package/dist/yaml.d.ts.map +1 -0
  138. package/dist/yaml.js +179 -0
  139. package/dist/yaml.js.map +1 -0
  140. package/package.json +58 -3
package/dist/smart.js ADDED
@@ -0,0 +1,113 @@
1
+ // Smart defaults: a table for each contract no table uses yet, and the likely
2
+ // choice first for `contract` and `uses`. Each comes from what the project
3
+ // already holds; nothing is invented. Skeletons for new files are in
4
+ // ./skeletons.ts.
5
+ import { packs } from "@ingestron/cli";
6
+ import { documentOf, flowFacts, idsOf } from "./context.js";
7
+ import { occurrences } from "./navigation.js";
8
+ /** The packs the project's standard names, as the CLI provides them. */
9
+ export function standardPacks(project) {
10
+ const data = documentOf(project, "Standard");
11
+ const ids = (data?.packs ?? []).map((item) => item.split("@")[0]);
12
+ return packs.filter((pack) => ids.includes(pack.id));
13
+ }
14
+ /** Contracts that no table or transform names yet. */
15
+ export function unusedContracts(project) {
16
+ const used = new Set(occurrences(project)
17
+ .filter((item) => !item.definition && item.symbol.startsWith("doc:DataContract:"))
18
+ .map((item) => item.symbol.slice("doc:DataContract:".length)));
19
+ return idsOf(project, "DataContract").filter((id) => !used.has(id));
20
+ }
21
+ /** The object a contract describes: its first schema name, else the end of its id. */
22
+ export function objectOf(project, contract) {
23
+ const data = documentOf(project, "DataContract", contract);
24
+ return data?.schema?.[0]?.name ?? contract.split(".").at(-1);
25
+ }
26
+ /** Under a flow's `tables`: one table for each unused contract, the source's first. */
27
+ export function newTables(project, place) {
28
+ const { source } = flowFacts(project, place);
29
+ const contracts = unusedContracts(project);
30
+ const own = contracts.filter((id) => id.startsWith(`${source}.`));
31
+ return [...own, ...contracts.filter((id) => !own.includes(id))].map((contract) => {
32
+ const name = objectOf(project, contract);
33
+ return {
34
+ label: name,
35
+ kind: "value",
36
+ detail: contract,
37
+ snippet: `${name}: { object: ${name}, contract: ${contract} }`,
38
+ };
39
+ });
40
+ }
41
+ /** The suggestion with this label first and preselected. */
42
+ export function preferred(items, label) {
43
+ const chosen = items.find((item) => item.label === label);
44
+ if (!chosen)
45
+ return items;
46
+ return [{ ...chosen, preselect: true }, ...items.filter((item) => item !== chosen)];
47
+ }
48
+ /** For a flow's ingest: the methods that can read its source first, the others with why not. */
49
+ export function rankMethods(project, place, items, method) {
50
+ const facts = flowFacts(project, place);
51
+ if (!facts.connector)
52
+ return items;
53
+ const ranked = items.map((item) => ({ item, why: whyNot(method(item.label), facts) }));
54
+ const can = ranked
55
+ .filter(({ why }) => !why)
56
+ .map(({ item }, index) => ({ ...item, preselect: index === 0 }));
57
+ const cannot = ranked.filter(({ why }) => why).map(({ item, why }) => ({ ...item, detail: why }));
58
+ return [...can, ...cannot];
59
+ }
60
+ function whyNot(method, { connector, connectivity }) {
61
+ if (method?.connectors && !method.connectors.includes(connector ?? ""))
62
+ return `cannot read ${connector} sources`;
63
+ if (method?.connectivity && connectivity && !method.connectivity.includes(connectivity))
64
+ return `cannot reach ${connectivity} sources`;
65
+ return undefined;
66
+ }
67
+ /** Contract quality rules that Ingestron checks on each row, ready to fill in. */
68
+ const rowRules = [
69
+ ["Not null", "{ metric: nullValues, mustBe: 0 }", "No row may be null."],
70
+ [
71
+ "Allowed values",
72
+ "{ metric: invalidValues, arguments: { validValues: [${1:a}, ${2:b}] }, mustBe: 0 }",
73
+ "Every row is one of the values, or null.",
74
+ ],
75
+ [
76
+ "Matches a pattern",
77
+ '{ metric: invalidValues, arguments: { pattern: "${1:[a-z]+}" }, mustBe: 0 }',
78
+ "Every row matches the regular expression, or is null.",
79
+ ],
80
+ [
81
+ "No missing values",
82
+ '{ metric: missingValues, arguments: { missingValues: [null, ""] }, mustBe: 0 }',
83
+ "No row is null or one of the values counted as missing.",
84
+ ],
85
+ ].map(([label, snippet, documentation]) => ({
86
+ label: label,
87
+ kind: "value",
88
+ snippet: snippet,
89
+ documentation: `${documentation} Checked on each row.`,
90
+ }));
91
+ /** A contract column's quality list, where rules are written. */
92
+ function inColumnQuality(place) {
93
+ const [schema, , properties, , quality] = place.path;
94
+ const column = schema === "schema" && properties === "properties" && quality === "quality";
95
+ return place.kind === "DataContract" && column && place.path.length === 5;
96
+ }
97
+ /** Ready-made items for the list at the place: quality rules under a contract column. */
98
+ export function itemSnippets(place) {
99
+ return inColumnQuality(place) ? rowRules : [];
100
+ }
101
+ /** The fields that make up a quality rule come before the rule's metadata. */
102
+ const ruleFields = ["metric", "mustBe", "arguments", "type", "unit", "name", "description"];
103
+ /** Fields in the order a person writes them: for a quality rule, what it checks first. */
104
+ export function firstFields(place, fields) {
105
+ if (!inColumnQuality(place))
106
+ return fields;
107
+ const rank = (field) => {
108
+ const index = ruleFields.indexOf(field.name);
109
+ return index < 0 ? ruleFields.length : index;
110
+ };
111
+ return [...fields].sort((a, b) => rank(a) - rank(b));
112
+ }
113
+ //# sourceMappingURL=smart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart.js","sourceRoot":"","sources":["../src/smart.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { QuickFix } from "./fixes.js";
2
+ /** One suggestion. */
3
+ export interface Suggestion {
4
+ label: string;
5
+ kind: "field" | "value" | "reference" | "method" | "setting" | "document";
6
+ detail?: string;
7
+ documentation?: string;
8
+ /** Text to insert, with tab stops, instead of the label. */
9
+ snippet?: string;
10
+ /** The likely choice, selected first. */
11
+ preselect?: boolean;
12
+ /** Plain text to insert instead of the label, such as the label after a space. */
13
+ insertText?: string;
14
+ /** The documentation page and anchor that explain it. */
15
+ docs?: string;
16
+ /** Offered straight after a list's `-`: insert after it rather than replace it. */
17
+ afterDash?: boolean;
18
+ /** Ask for suggestions again once inserted, such as the keys on a new line. */
19
+ retrigger?: boolean;
20
+ /** Edits to make once inserted, possibly in other files, such as declaring an input. */
21
+ edits?: QuickFix["edits"];
22
+ }
23
+ //# sourceMappingURL=suggestion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion.d.ts","sourceRoot":"","sources":["../src/suggestion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,sBAAsB;AACtB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wFAAwF;IACxF,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=suggestion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggestion.js","sourceRoot":"","sources":["../src/suggestion.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { Project } from "./project.js";
2
+ /** One named thing and where it is defined. */
3
+ export interface ProjectSymbol {
4
+ name: string;
5
+ /** `table`, `value`, or the document's kind, such as `Flow`. */
6
+ kind: string;
7
+ file: string;
8
+ range: [number, number];
9
+ }
10
+ /** Every definition in the project, a transform named once (as a transform, not also as its table). */
11
+ export declare function projectSymbols(project: Project): ProjectSymbol[];
12
+ //# sourceMappingURL=symbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,EAAE,CAkBhE"}
@@ -0,0 +1,21 @@
1
+ // The project's named things: tables, documents and values, where each is
2
+ // defined, for "Go to Symbol in Workspace" and a file's outline.
3
+ import { occurrences } from "./navigation.js";
4
+ /** Every definition in the project, a transform named once (as a transform, not also as its table). */
5
+ export function projectSymbols(project) {
6
+ const definitions = occurrences(project).filter((item) => item.definition);
7
+ const transforms = new Set(definitions
8
+ .filter((item) => item.symbol.startsWith("doc:Transform:"))
9
+ .map((item) => `${item.file}:${item.range[0]}`));
10
+ return definitions
11
+ .filter((item) => item.symbol.startsWith("doc:") || !transforms.has(`${item.file}:${item.range[0]}`))
12
+ .flatMap(({ symbol, file, range }) => {
13
+ const [kind, ...rest] = symbol.split(":");
14
+ if (kind === "doc")
15
+ return [{ name: rest.slice(1).join(":"), kind: rest[0], file, range }];
16
+ if (kind === "table" || kind === "value")
17
+ return [{ name: rest.join(":"), kind, file, range }];
18
+ return [];
19
+ });
20
+ }
21
+ //# sourceMappingURL=symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbols.js","sourceRoot":"","sources":["../src/symbols.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,iEAAiE;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAY9C,uGAAuG;AACvG,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,WAAW;SACR,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAClD,CAAC;IACF,OAAO,WAAW;SACf,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7F;SACA,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5F,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO;YACtC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { FieldInfo } from "@ingestron/definitions";
2
+ import type { Suggestion } from "./completion.js";
3
+ import type { Place } from "./context.js";
4
+ import type { Project } from "./project.js";
5
+ /** The suggestions for `field`'s value at `place`, the likely one first. */
6
+ export declare function valueHelp(project: Project, place: Place, field: FieldInfo): Suggestion[];
7
+ //# sourceMappingURL=value-help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-help.d.ts","sourceRoot":"","sources":["../src/value-help.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,UAAU,EAAE,CAcxF"}
@@ -0,0 +1,206 @@
1
+ // Values to suggest for a field without a fixed list of allowed values: its
2
+ // default and example, true or false, the pack's smart defaults for a
3
+ // standard's naming, layers, types and quality, the project's connectors and
4
+ // layers, a connection's settings, and for a mapping or list a block of its
5
+ // fields or a new line that asks for them.
6
+ import { packs } from "@ingestron/cli";
7
+ import { stringify } from "yaml";
8
+ import { standardPacks } from "./smart.js";
9
+ /** The suggestions for `field`'s value at `place`, the likely one first. */
10
+ export function valueHelp(project, place, field) {
11
+ if (place.part === "item")
12
+ return itemValues(project, place, field);
13
+ const own = projectValues(project, place, field);
14
+ if (own.length > 0)
15
+ return own;
16
+ const fallback = field.default ?? packDefault(project, place);
17
+ if (/mapping|list/.test(field.type))
18
+ return place.inFlow ? flowValues(field, fallback) : blockValues(field, fallback);
19
+ if (field.type === "true or false")
20
+ return booleans(field);
21
+ return [
22
+ ...(fallback !== undefined ? [scalar(fallback, "default", field, true)] : []),
23
+ ...(field.example !== undefined && field.example !== fallback
24
+ ? [scalar(field.example, "example", field, false)]
25
+ : []),
26
+ ];
27
+ }
28
+ /** A standard's or platform's naming, layers, types and quality: the first pack's defaults. */
29
+ function packDefault(project, place) {
30
+ if (place.path.length !== 1 || !["Standard", "Platform"].includes(place.kind ?? ""))
31
+ return;
32
+ const [pack] = standardPacks(project);
33
+ const defaults = pack?.defaults;
34
+ return defaults?.[place.path[0]];
35
+ }
36
+ /** A new item of a list of plain values: the packs not yet listed, or the default's items. */
37
+ function itemValues(project, place, field) {
38
+ const written = new Set(listAt(place).map(String));
39
+ const choices = place.kind === "Standard" && place.path.join(".") === "packs"
40
+ ? packIds()
41
+ : [field.default ?? packDefault(project, place)]
42
+ .flat()
43
+ .filter((value) => value != null && isScalar(value))
44
+ .map(String);
45
+ return choices
46
+ .filter((choice) => !written.has(choice))
47
+ .map((label) => ({ label, kind: "value" }));
48
+ }
49
+ function listAt(place) {
50
+ const value = place.path.reduce((node, key) => node && typeof node === "object" ? node[key] : undefined, place.data);
51
+ return Array.isArray(value) ? value : [];
52
+ }
53
+ /** Every pack as `<id>@<version>`, the first pack of a standard first. */
54
+ function packIds() {
55
+ return packs.map((pack) => `${pack.id}@${pack.version}`);
56
+ }
57
+ /** A standard's packs: each pack alone, then all of them, the first giving the defaults. */
58
+ function packLists() {
59
+ const ids = packIds();
60
+ return [...ids.map((id) => [id]), ...(ids.length > 1 ? [ids] : [])].map((list, index) => ({
61
+ label: `[${list.join(", ")}]`,
62
+ kind: "value",
63
+ ...(index === 0 && { preselect: true }),
64
+ }));
65
+ }
66
+ /** Inside { } or [ ]: the default in flow style, or an empty mapping or list to fill. */
67
+ function flowValues(field, fallback) {
68
+ const list = field.type.includes("list");
69
+ const filled = fallback !== undefined &&
70
+ (typeof fallback !== "object" || Object.keys(fallback ?? {}).length > 0)
71
+ ? [
72
+ scalar(fallback, field.default !== undefined ? "default" : "the pack's default", field, true),
73
+ ]
74
+ : [];
75
+ const empty = {
76
+ label: list ? "[ ]" : "{ }",
77
+ kind: "value",
78
+ detail: list ? "a list" : "a mapping",
79
+ snippet: list ? "[$0]" : "{ $0 }",
80
+ retrigger: true,
81
+ };
82
+ return [...filled, empty];
83
+ }
84
+ /** Values the project itself gives: connector ids, layer names, a connection's settings. */
85
+ function projectValues(project, place, field) {
86
+ const key = place.path.join(".");
87
+ if (place.kind === "Connection" && key === "connector")
88
+ return connectorIds(project);
89
+ if (place.kind === "Standard" && key === "packs")
90
+ return packLists();
91
+ if (place.path.at(-1) === "layer" && !field.values)
92
+ return layersOf(project, place).map((label) => ({ label, kind: "value" }));
93
+ if (place.kind === "Connection" && key === "settings")
94
+ return connectionSettings(place);
95
+ return [];
96
+ }
97
+ /** Each connector the standard's packs read, once. */
98
+ function connectorIds(project) {
99
+ const connectors = standardPacks(project).flatMap((pack) => pack.connectors ?? []);
100
+ const seen = new Set();
101
+ return connectors
102
+ .filter((connector) => !seen.has(connector.id) && Boolean(seen.add(connector.id)))
103
+ .map((connector) => ({
104
+ label: connector.id,
105
+ kind: "value",
106
+ detail: connector.title,
107
+ documentation: connector.generates,
108
+ docs: `/docs/connectors/${connector.id}`,
109
+ }));
110
+ }
111
+ function layersOf(project, place) {
112
+ const written = place.kind === "Standard" ? place.data.layers : undefined;
113
+ if (Array.isArray(written))
114
+ return written.map(String);
115
+ return standardPacks(project)[0]?.defaults.layers ?? [];
116
+ }
117
+ /** The settings the connection's connector needs, one block per pack that reads it. */
118
+ function connectionSettings(place) {
119
+ const found = packs.flatMap((pack) => (pack.connectors ?? [])
120
+ .filter((item) => item.id === place.data.connector)
121
+ .map((connector) => ({ pack, connector })));
122
+ if (found.length === 0)
123
+ return [newLine("settings")];
124
+ return found.map(({ pack, connector }, at) => {
125
+ // A secret is written as a reference to its name; any other setting is a tab stop.
126
+ const required = connector.settings.filter((setting) => !setting.optional);
127
+ const lines = required.map((setting, index) => setting.secret
128
+ ? escape(` ${setting.name}: \${secret:${setting.name}}`)
129
+ : ` ${escape(setting.name)}: $${index + 1}`);
130
+ const connectivity = pack.methods[connector.method]?.connectivity?.join(", ");
131
+ return {
132
+ label: required.map((setting) => setting.name).join(", "),
133
+ kind: "value",
134
+ detail: `${pack.id} ${connector.method}${connectivity ? ` (${connectivity})` : ""}`,
135
+ documentation: connector.settings
136
+ .map((item) => `${item.name}: ${item.description}`)
137
+ .join("\n"),
138
+ snippet: `\n${lines.join("\n")}`,
139
+ ...(at === 0 && { preselect: true }),
140
+ };
141
+ });
142
+ }
143
+ /** A mapping or list: its default as a block, or a new line that asks for its fields. */
144
+ function blockValues(field, fallback) {
145
+ const empty = fallback === undefined ||
146
+ (typeof fallback === "object" && fallback !== null && Object.keys(fallback).length === 0);
147
+ const list = field.type.includes("list");
148
+ return [...(empty ? [] : [block(fallback, field)]), newLine(field.name, list)];
149
+ }
150
+ function block(value, field) {
151
+ const scalars = Array.isArray(value) && value.every(isScalar);
152
+ const text = scalars
153
+ ? stringify(value, { flowCollectionPadding: false, collectionStyle: "flow" }).trimEnd()
154
+ : `\n${stringify(value, { lineWidth: 0 }).trimEnd().replace(/^/gm, " ")}`;
155
+ return {
156
+ label: scalars ? text : summary(value),
157
+ kind: "value",
158
+ detail: field.default !== undefined ? "default" : "the pack's default",
159
+ documentation: field.description ?? "",
160
+ snippet: escape(text),
161
+ preselect: true,
162
+ ...(field.docs && { docs: field.docs }),
163
+ };
164
+ }
165
+ /** `catalog, schema, table, …` for a mapping. */
166
+ function summary(value) {
167
+ const keys = Object.keys(value);
168
+ return keys.length > 4 ? `${keys.slice(0, 4).join(", ")}, …` : keys.join(", ");
169
+ }
170
+ /** A new indented line, with suggestions for what goes there. */
171
+ function newLine(name, item = false) {
172
+ return {
173
+ label: item ? `new ${name} item` : `${name} fields`,
174
+ kind: "value",
175
+ detail: "on the next line",
176
+ snippet: item ? "\n - $0" : "\n $0",
177
+ retrigger: true,
178
+ };
179
+ }
180
+ function booleans(field) {
181
+ return [true, false].map((value) => ({
182
+ label: String(value),
183
+ kind: "value",
184
+ ...(field.default === value && { detail: "default", preselect: true }),
185
+ }));
186
+ }
187
+ function scalar(value, why, field, preselect) {
188
+ const text = isScalar(value)
189
+ ? stringify(value).trimEnd()
190
+ : stringify(value, { collectionStyle: "flow" }).trimEnd();
191
+ return {
192
+ label: text,
193
+ kind: "value",
194
+ detail: why,
195
+ ...(preselect && { preselect: true }),
196
+ ...(field.docs && { docs: field.docs }),
197
+ };
198
+ }
199
+ function isScalar(value) {
200
+ return value === null || typeof value !== "object";
201
+ }
202
+ /** Text a snippet inserts as it is: `$`, `}` and `\` escaped. */
203
+ function escape(text) {
204
+ return text.replace(/[$}\\]/g, "\\$&");
205
+ }
206
+ //# sourceMappingURL=value-help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-help.js","sourceRoot":"","sources":["../src/value-help.ts"],"names":[],"mappings":"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"}
package/dist/yaml.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ /** A key or value at an offset. */
2
+ export interface Spot {
3
+ /** JSON Pointer of the value (also for a key: the pointer of its value). */
4
+ pointer: string;
5
+ segments: string[];
6
+ part: "key" | "value";
7
+ /** The scalar's text; empty for a mapping or list. */
8
+ text: string;
9
+ range: [number, number];
10
+ }
11
+ /** A zero-based line and character. */
12
+ export interface Position {
13
+ line: number;
14
+ character: number;
15
+ }
16
+ /** The deepest key or value at the offset, if any. */
17
+ export declare function spotAt(text: string, offset: number): Spot | undefined;
18
+ /** The range of the value (or key) at a pointer. */
19
+ export declare function rangeOf(text: string, pointer: string, part?: Spot["part"]): [number, number] | undefined;
20
+ /**
21
+ * The keys of the mapping a key typed at this offset belongs to, from the
22
+ * indentation of the lines above; works on text that does not parse yet.
23
+ */
24
+ export declare function keyPath(text: string, offset: number): string[];
25
+ /** Which item of its list the dash on line `at` starts: the dashes above it at the same indentation. */
26
+ export declare function itemIndex(lines: string[], at: number): number;
27
+ /** The line and character of an offset. */
28
+ export declare function positionAt(text: string, offset: number): Position;
29
+ /** The offset of a line and character. */
30
+ export declare function offsetAt(text: string, position: Position): number;
31
+ /** Every key and scalar value in the text, with pointers and ranges. */
32
+ export declare function allSpots(text: string): Spot[];
33
+ //# sourceMappingURL=yaml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../src/yaml.ts"],"names":[],"mappings":"AAKA,mCAAmC;AACnC,MAAM,WAAW,IAAI;IACnB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,sDAAsD;AACtD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAGrE;AAiDD,oDAAoD;AACpD,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,IAAI,CAAC,MAAM,CAAW,GAC3B,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAU9B;AAiBD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAa9D;AAED,wGAAwG;AACxG,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAY7D;AA8BD,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAGjE;AAED,0CAA0C;AAC1C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAIjE;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,CAK7C"}