@walkeros/explorer 2.1.0 → 2.1.2
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/AGENT.md +19 -0
- package/STYLE.md +6 -0
- package/dist/chunk-3TPAJIVM.mjs +580 -0
- package/dist/chunk-3TPAJIVM.mjs.map +1 -0
- package/dist/components/atoms/button-link.stories.d.ts +1 -3
- package/dist/components/atoms/button-link.stories.d.ts.map +1 -1
- package/dist/components/atoms/button-link.stories.js +1 -15
- package/dist/components/atoms/button-link.stories.js.map +1 -1
- package/dist/components/atoms/code.d.ts +29 -1
- package/dist/components/atoms/code.d.ts.map +1 -1
- package/dist/components/atoms/code.js +76 -8
- package/dist/components/atoms/code.js.map +1 -1
- package/dist/components/atoms/code.stories.d.ts +0 -7
- package/dist/components/atoms/code.stories.d.ts.map +1 -1
- package/dist/components/atoms/code.stories.js +0 -34
- package/dist/components/atoms/code.stories.js.map +1 -1
- package/dist/components/molecules/code-box.d.ts +6 -1
- package/dist/components/molecules/code-box.d.ts.map +1 -1
- package/dist/components/molecules/code-box.js +53 -3
- package/dist/components/molecules/code-box.js.map +1 -1
- package/dist/components/molecules/code-box.stories.d.ts +45 -9
- package/dist/components/molecules/code-box.stories.d.ts.map +1 -1
- package/dist/components/molecules/code-box.stories.js +106 -45
- package/dist/components/molecules/code-box.stories.js.map +1 -1
- package/dist/components/molecules/code-snippet.stories.d.ts +0 -8
- package/dist/components/molecules/code-snippet.stories.d.ts.map +1 -1
- package/dist/components/molecules/code-snippet.stories.js +0 -19
- package/dist/components/molecules/code-snippet.stories.js.map +1 -1
- package/dist/components/molecules/flow-map/FlowMap.stories.d.ts +0 -32
- package/dist/components/molecules/flow-map/FlowMap.stories.d.ts.map +1 -1
- package/dist/components/molecules/flow-map/FlowMap.stories.js +0 -330
- package/dist/components/molecules/flow-map/FlowMap.stories.js.map +1 -1
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.d.ts +0 -16
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.d.ts.map +1 -1
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.js +0 -78
- package/dist/components/molecules/flow-map/FlowMap.transformers.stories.js.map +1 -1
- package/dist/components/molecules/preview.d.ts.map +1 -1
- package/dist/components/molecules/preview.js +32 -22
- package/dist/components/molecules/preview.js.map +1 -1
- package/dist/index.d.cts +191 -3
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1059 -43
- package/dist/index.mjs.map +1 -1
- package/dist/{monaco-types-OLSF6MIE.mjs → monaco-types-7HYTHECU.mjs} +2 -2
- package/dist/styles.css +31 -0
- package/dist/types/intellisense.d.ts +31 -0
- package/dist/types/intellisense.d.ts.map +1 -0
- package/dist/types/intellisense.js +2 -0
- package/dist/types/intellisense.js.map +1 -0
- package/dist/utils/monaco-intellisense-flow-extractor.d.ts +13 -0
- package/dist/utils/monaco-intellisense-flow-extractor.d.ts.map +1 -0
- package/dist/utils/monaco-intellisense-flow-extractor.js +161 -0
- package/dist/utils/monaco-intellisense-flow-extractor.js.map +1 -0
- package/dist/utils/monaco-json-schema.d.ts +11 -0
- package/dist/utils/monaco-json-schema.d.ts.map +1 -1
- package/dist/utils/monaco-json-schema.js +13 -3
- package/dist/utils/monaco-json-schema.js.map +1 -1
- package/dist/utils/monaco-schema-contract.d.ts +8 -0
- package/dist/utils/monaco-schema-contract.d.ts.map +1 -0
- package/dist/utils/monaco-schema-contract.js +73 -0
- package/dist/utils/monaco-schema-contract.js.map +1 -0
- package/dist/utils/monaco-schema-enrichment.d.ts +26 -0
- package/dist/utils/monaco-schema-enrichment.d.ts.map +1 -0
- package/dist/utils/monaco-schema-enrichment.js +31 -0
- package/dist/utils/monaco-schema-enrichment.js.map +1 -0
- package/dist/utils/monaco-schema-flow-setup.d.ts +10 -0
- package/dist/utils/monaco-schema-flow-setup.d.ts.map +1 -0
- package/dist/utils/monaco-schema-flow-setup.js +201 -0
- package/dist/utils/monaco-schema-flow-setup.js.map +1 -0
- package/dist/utils/monaco-schema-variables.d.ts +4 -0
- package/dist/utils/monaco-schema-variables.d.ts.map +1 -0
- package/dist/utils/monaco-schema-variables.js +26 -0
- package/dist/utils/monaco-schema-variables.js.map +1 -0
- package/dist/utils/monaco-walkeros-completions.d.ts +15 -0
- package/dist/utils/monaco-walkeros-completions.d.ts.map +1 -0
- package/dist/utils/monaco-walkeros-completions.js +65 -0
- package/dist/utils/monaco-walkeros-completions.js.map +1 -0
- package/dist/utils/monaco-walkeros-decorations.d.ts +29 -0
- package/dist/utils/monaco-walkeros-decorations.d.ts.map +1 -0
- package/dist/utils/monaco-walkeros-decorations.js +87 -0
- package/dist/utils/monaco-walkeros-decorations.js.map +1 -0
- package/dist/utils/monaco-walkeros-markers.d.ts +13 -0
- package/dist/utils/monaco-walkeros-markers.d.ts.map +1 -0
- package/dist/utils/monaco-walkeros-markers.js +69 -0
- package/dist/utils/monaco-walkeros-markers.js.map +1 -0
- package/dist/utils/monaco-walkeros-providers.d.ts +19 -0
- package/dist/utils/monaco-walkeros-providers.d.ts.map +1 -0
- package/dist/utils/monaco-walkeros-providers.js +229 -0
- package/dist/utils/monaco-walkeros-providers.js.map +1 -0
- package/package.json +1 -1
- package/dist/chunk-YKT4D7MG.mjs +0 -3087
- package/dist/chunk-YKT4D7MG.mjs.map +0 -1
- /package/dist/{monaco-types-OLSF6MIE.mjs.map → monaco-types-7HYTHECU.mjs.map} +0 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Takes the base Flow.Setup JSON Schema (from @walkeros/core z.toJSONSchema())
|
|
3
|
+
* and returns an enriched version with Monaco-specific extensions.
|
|
4
|
+
*
|
|
5
|
+
* The actual schema uses anyOf[0] at the top level.
|
|
6
|
+
*/
|
|
7
|
+
export function enrichFlowSetupSchema(baseSchema) {
|
|
8
|
+
// The schema structure is { anyOf: [{ type: 'object', properties: {...} }] }
|
|
9
|
+
// We need to enrich inside anyOf[0]
|
|
10
|
+
const schema = JSON.parse(JSON.stringify(baseSchema));
|
|
11
|
+
if (!schema.anyOf?.[0]?.properties)
|
|
12
|
+
return schema;
|
|
13
|
+
const root = schema.anyOf[0];
|
|
14
|
+
const props = root.properties;
|
|
15
|
+
const flowConfig = props.flows?.additionalProperties?.properties;
|
|
16
|
+
// Enrich version
|
|
17
|
+
if (props.version) {
|
|
18
|
+
props.version.markdownDescription =
|
|
19
|
+
'Schema version number. Must be `1` for the current format.\n\n```json\n"version": 1\n```';
|
|
20
|
+
}
|
|
21
|
+
// Enrich $schema
|
|
22
|
+
if (props.$schema) {
|
|
23
|
+
props.$schema.markdownDescription =
|
|
24
|
+
'JSON Schema URI for IDE validation.\n\n```json\n"$schema": "https://walkeros.io/schema/flow/v1.json"\n```';
|
|
25
|
+
}
|
|
26
|
+
// Enrich include
|
|
27
|
+
if (props.include) {
|
|
28
|
+
props.include.markdownDescription =
|
|
29
|
+
'Folders to include in the bundle output.\n\n```json\n"include": ["./src", "./lib"]\n```';
|
|
30
|
+
}
|
|
31
|
+
// Enrich variables
|
|
32
|
+
if (props.variables) {
|
|
33
|
+
props.variables.markdownDescription =
|
|
34
|
+
'Shared variables for `$var.name` interpolation across all flows.\n\n' +
|
|
35
|
+
'```json\n"variables": {\n "measurementId": "G-XXXXXXXXXX",\n "debug": false\n}\n```\n\n' +
|
|
36
|
+
'Reference in any config value: `"$var.measurementId"`';
|
|
37
|
+
props.variables.defaultSnippets = [
|
|
38
|
+
{
|
|
39
|
+
label: 'Add variable',
|
|
40
|
+
description: 'New key-value variable',
|
|
41
|
+
body: { '${1:name}': '${2:value}' },
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
// Enrich definitions
|
|
46
|
+
if (props.definitions) {
|
|
47
|
+
props.definitions.markdownDescription =
|
|
48
|
+
'Reusable configuration fragments for `$def.name` references.\n\n' +
|
|
49
|
+
'```json\n"definitions": {\n "gaConfig": {\n "measurementId": "$var.trackingId"\n }\n}\n```\n\n' +
|
|
50
|
+
'Reference in any config: `"$def.gaConfig"`';
|
|
51
|
+
props.definitions.defaultSnippets = [
|
|
52
|
+
{
|
|
53
|
+
label: 'Add definition',
|
|
54
|
+
description: 'New reusable config fragment',
|
|
55
|
+
body: { '${1:name}': { '${2:key}': '${3:value}' } },
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
// Enrich flows with scaffolding snippets
|
|
60
|
+
if (props.flows) {
|
|
61
|
+
props.flows.markdownDescription =
|
|
62
|
+
'Flow configurations keyed by name. Each flow defines a complete event pipeline.\n\n' +
|
|
63
|
+
'```json\n"flows": {\n "myFlow": {\n "web": {},\n "sources": { ... },\n "destinations": { ... }\n }\n}\n```';
|
|
64
|
+
props.flows.defaultSnippets = [
|
|
65
|
+
{
|
|
66
|
+
label: 'Web flow (basic)',
|
|
67
|
+
description: 'Minimal web flow with browser source',
|
|
68
|
+
body: {
|
|
69
|
+
'${1:myFlow}': {
|
|
70
|
+
web: {},
|
|
71
|
+
sources: {
|
|
72
|
+
browser: { package: '@walkeros/web-source-browser' },
|
|
73
|
+
},
|
|
74
|
+
destinations: {},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
label: 'Server flow (basic)',
|
|
80
|
+
description: 'Minimal server flow with Express source',
|
|
81
|
+
body: {
|
|
82
|
+
'${1:myFlow}': {
|
|
83
|
+
server: {},
|
|
84
|
+
sources: {
|
|
85
|
+
express: { package: '@walkeros/server-source-express' },
|
|
86
|
+
},
|
|
87
|
+
destinations: {},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
label: 'Web + GA4 flow',
|
|
93
|
+
description: 'Web flow with browser source and GA4 destination',
|
|
94
|
+
body: {
|
|
95
|
+
'${1:myFlow}': {
|
|
96
|
+
web: {},
|
|
97
|
+
sources: {
|
|
98
|
+
browser: { package: '@walkeros/web-source-browser' },
|
|
99
|
+
},
|
|
100
|
+
destinations: {
|
|
101
|
+
ga4: {
|
|
102
|
+
package: '@walkeros/web-destination-ga4',
|
|
103
|
+
config: {
|
|
104
|
+
measurementId: '$var.${2:measurementId}',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
}
|
|
113
|
+
// Enrich FlowConfig sub-properties
|
|
114
|
+
if (flowConfig) {
|
|
115
|
+
if (flowConfig.sources) {
|
|
116
|
+
flowConfig.sources.markdownDescription =
|
|
117
|
+
'Source configurations for data capture, keyed by step name.\n\n' +
|
|
118
|
+
'```json\n"sources": {\n "browser": { "package": "@walkeros/web-source-browser" }\n}\n```';
|
|
119
|
+
flowConfig.sources.defaultSnippets = [
|
|
120
|
+
{
|
|
121
|
+
label: 'Add web source',
|
|
122
|
+
description: 'Browser source for web tracking',
|
|
123
|
+
body: {
|
|
124
|
+
'${1:browser}': {
|
|
125
|
+
package: '@walkeros/web-source-browser',
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
label: 'Add server source',
|
|
131
|
+
description: 'Express source for server tracking',
|
|
132
|
+
body: {
|
|
133
|
+
'${1:express}': {
|
|
134
|
+
package: '@walkeros/server-source-express',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
];
|
|
139
|
+
}
|
|
140
|
+
if (flowConfig.destinations) {
|
|
141
|
+
flowConfig.destinations.markdownDescription =
|
|
142
|
+
'Destination configurations for data output, keyed by step name.\n\n' +
|
|
143
|
+
'```json\n"destinations": {\n "ga4": {\n "package": "@walkeros/web-destination-ga4",\n "config": { "measurementId": "$var.trackingId" }\n }\n}\n```';
|
|
144
|
+
flowConfig.destinations.defaultSnippets = [
|
|
145
|
+
{
|
|
146
|
+
label: 'Add GA4 destination',
|
|
147
|
+
description: 'Google Analytics 4 destination',
|
|
148
|
+
body: {
|
|
149
|
+
'${1:ga4}': {
|
|
150
|
+
package: '@walkeros/web-destination-ga4',
|
|
151
|
+
config: {
|
|
152
|
+
measurementId: '$var.${2:measurementId}',
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
label: 'Add custom destination',
|
|
159
|
+
description: 'Custom destination with inline code',
|
|
160
|
+
body: {
|
|
161
|
+
'${1:custom}': {
|
|
162
|
+
code: {
|
|
163
|
+
push: '$code:(event) => { ${2:// handle event} }',
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
}
|
|
170
|
+
if (flowConfig.transformers) {
|
|
171
|
+
flowConfig.transformers.markdownDescription =
|
|
172
|
+
'Transformer configurations for event transformation, keyed by step name.\n\n' +
|
|
173
|
+
'```json\n"transformers": {\n "validator": {\n "code": { "push": "$code:(event) => event" }\n }\n}\n```';
|
|
174
|
+
flowConfig.transformers.defaultSnippets = [
|
|
175
|
+
{
|
|
176
|
+
label: 'Add transformer',
|
|
177
|
+
description: 'Inline transformer with code',
|
|
178
|
+
body: {
|
|
179
|
+
'${1:transformer}': {
|
|
180
|
+
code: {
|
|
181
|
+
push: '$code:(event) => { ${2:return event;} }',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
];
|
|
187
|
+
}
|
|
188
|
+
if (flowConfig.web) {
|
|
189
|
+
flowConfig.web.markdownDescription =
|
|
190
|
+
'Web platform configuration (browser-based). Mutually exclusive with `server`.\n\n' +
|
|
191
|
+
'```json\n"web": {\n "windowCollector": "collector",\n "windowElb": "elb"\n}\n```';
|
|
192
|
+
}
|
|
193
|
+
if (flowConfig.server) {
|
|
194
|
+
flowConfig.server.markdownDescription =
|
|
195
|
+
'Server platform configuration (Node.js). Mutually exclusive with `web`.\n\n' +
|
|
196
|
+
'```json\n"server": {}\n```';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return schema;
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=monaco-schema-flow-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-schema-flow-setup.js","sourceRoot":"","sources":["../../src/utils/monaco-schema-flow-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-schema-variables.d.ts","sourceRoot":"","sources":["../../src/utils/monaco-schema-variables.ts"],"names":[],"mappings":"AACA,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAErC,wBAAgB,kBAAkB,IAAI,SAAS,CAyB9C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function getVariablesSchema() {
|
|
2
|
+
return {
|
|
3
|
+
type: 'object',
|
|
4
|
+
markdownDescription: 'Flow variables for `$var.name` interpolation. Values must be string, number, or boolean.\n\n' +
|
|
5
|
+
'```json\n{\n "measurementId": "G-XXXXXXXXXX",\n "debug": false,\n "batchSize": 10\n}\n```\n\n' +
|
|
6
|
+
'Reference in any config value: `"$var.measurementId"`',
|
|
7
|
+
additionalProperties: {
|
|
8
|
+
oneOf: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }],
|
|
9
|
+
},
|
|
10
|
+
defaultSnippets: [
|
|
11
|
+
{
|
|
12
|
+
label: 'Add string variable',
|
|
13
|
+
body: { '${1:name}': '${2:value}' },
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
label: 'Add boolean variable',
|
|
17
|
+
body: { '${1:name}': '${2|true,false|}' },
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
label: 'Add number variable',
|
|
21
|
+
body: { '${1:name}': 0 },
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=monaco-schema-variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-schema-variables.js","sourceRoot":"","sources":["../../src/utils/monaco-schema-variables.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,mBAAmB,EACjB,8FAA8F;YAC9F,kGAAkG;YAClG,uDAAuD;QACzD,oBAAoB,EAAE;YACpB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;SACrE;QACD,eAAe,EAAE;YACf;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE;aACpC;YACD;gBACE,KAAK,EAAE,sBAAsB;gBAC7B,IAAI,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE;aAC1C;YACD;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;aACzB;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { IntelliSenseContext, PackageInfo } from '../types/intellisense';
|
|
2
|
+
export interface CompletionEntry {
|
|
3
|
+
label: string;
|
|
4
|
+
insertText: string;
|
|
5
|
+
detail?: string;
|
|
6
|
+
documentation?: string;
|
|
7
|
+
kind: 'variable' | 'reference' | 'secret' | 'module' | 'property';
|
|
8
|
+
sortText?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function getVariableCompletions(variables: IntelliSenseContext['variables']): CompletionEntry[];
|
|
11
|
+
export declare function getDefinitionCompletions(definitions: IntelliSenseContext['definitions']): CompletionEntry[];
|
|
12
|
+
export declare function getSecretCompletions(secrets: IntelliSenseContext['secrets']): CompletionEntry[];
|
|
13
|
+
export declare function getPackageCompletions(packages: PackageInfo[] | undefined, platform: IntelliSenseContext['platform']): CompletionEntry[];
|
|
14
|
+
export declare function getStepNameCompletions(stepNames: IntelliSenseContext['stepNames'], context: 'next' | 'before'): CompletionEntry[];
|
|
15
|
+
//# sourceMappingURL=monaco-walkeros-completions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-completions.d.ts","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-completions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAE9E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,GAC1C,eAAe,EAAE,CAUnB;AAED,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,GAC9C,eAAe,EAAE,CAUnB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GACtC,eAAe,EAAE,CAWnB;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,EAAE,GAAG,SAAS,EACnC,QAAQ,EAAE,mBAAmB,CAAC,UAAU,CAAC,GACxC,eAAe,EAAE,CAanB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAC3C,OAAO,EAAE,MAAM,GAAG,QAAQ,GACzB,eAAe,EAAE,CAWnB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export function getVariableCompletions(variables) {
|
|
2
|
+
if (!variables || Object.keys(variables).length === 0)
|
|
3
|
+
return [];
|
|
4
|
+
return Object.entries(variables).map(([name, value]) => ({
|
|
5
|
+
label: `$var.${name}`,
|
|
6
|
+
insertText: `$var.${name}`,
|
|
7
|
+
detail: `= ${JSON.stringify(value)}`,
|
|
8
|
+
documentation: `Variable reference. Resolves to \`${JSON.stringify(value)}\` at runtime.`,
|
|
9
|
+
kind: 'variable',
|
|
10
|
+
sortText: '0_var_' + name,
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
export function getDefinitionCompletions(definitions) {
|
|
14
|
+
if (!definitions || Object.keys(definitions).length === 0)
|
|
15
|
+
return [];
|
|
16
|
+
return Object.keys(definitions).map((name) => ({
|
|
17
|
+
label: `$def.${name}`,
|
|
18
|
+
insertText: `$def.${name}`,
|
|
19
|
+
detail: '(definition)',
|
|
20
|
+
documentation: `Definition reference. Injects the reusable config fragment "${name}" at runtime.`,
|
|
21
|
+
kind: 'reference',
|
|
22
|
+
sortText: '0_def_' + name,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
export function getSecretCompletions(secrets) {
|
|
26
|
+
if (!secrets || secrets.length === 0)
|
|
27
|
+
return [];
|
|
28
|
+
return secrets.map((name) => ({
|
|
29
|
+
label: `$secret.${name}`,
|
|
30
|
+
insertText: `$secret.${name}`,
|
|
31
|
+
detail: '(secret)',
|
|
32
|
+
documentation: 'Secret reference. Value is securely injected at runtime. Never stored in config.',
|
|
33
|
+
kind: 'secret',
|
|
34
|
+
sortText: '0_secret_' + name,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
export function getPackageCompletions(packages, platform) {
|
|
38
|
+
if (!packages || packages.length === 0)
|
|
39
|
+
return [];
|
|
40
|
+
const filtered = platform
|
|
41
|
+
? packages.filter((p) => p.platform === platform)
|
|
42
|
+
: packages;
|
|
43
|
+
return filtered.map((pkg) => ({
|
|
44
|
+
label: pkg.package,
|
|
45
|
+
insertText: pkg.package,
|
|
46
|
+
detail: `${pkg.type} (${pkg.platform})`,
|
|
47
|
+
documentation: `walkerOS ${pkg.type}: ${pkg.shortName}`,
|
|
48
|
+
kind: 'module',
|
|
49
|
+
sortText: '1_pkg_' + pkg.shortName,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
export function getStepNameCompletions(stepNames, context) {
|
|
53
|
+
if (!stepNames)
|
|
54
|
+
return [];
|
|
55
|
+
const names = stepNames.transformers || [];
|
|
56
|
+
return names.map((name) => ({
|
|
57
|
+
label: name,
|
|
58
|
+
insertText: name,
|
|
59
|
+
detail: `transformer (${context} chain)`,
|
|
60
|
+
documentation: `Reference to transformer step "${name}" in this flow config.`,
|
|
61
|
+
kind: 'reference',
|
|
62
|
+
sortText: '0_step_' + name,
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=monaco-walkeros-completions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-completions.js","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-completions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { editor } from 'monaco-editor';
|
|
2
|
+
export type ReferenceType = 'variable' | 'definition' | 'secret' | 'env' | 'code';
|
|
3
|
+
export interface WalkerOSReference {
|
|
4
|
+
type: ReferenceType;
|
|
5
|
+
name: string;
|
|
6
|
+
startIndex: number;
|
|
7
|
+
endIndex: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const REFERENCE_PATTERNS: Array<{
|
|
10
|
+
type: ReferenceType;
|
|
11
|
+
regex: RegExp;
|
|
12
|
+
className: string;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Find all walkerOS reference patterns in text.
|
|
16
|
+
* Used for both decorations and validation.
|
|
17
|
+
*/
|
|
18
|
+
export declare function findWalkerOSReferences(text: string): WalkerOSReference[];
|
|
19
|
+
/**
|
|
20
|
+
* Apply walkerOS reference decorations to a Monaco editor.
|
|
21
|
+
* Returns a cleanup function.
|
|
22
|
+
*/
|
|
23
|
+
export declare function applyWalkerOSDecorations(editorInstance: editor.IStandaloneCodeEditor): () => void;
|
|
24
|
+
/**
|
|
25
|
+
* Register CSS styles for walkerOS reference decorations.
|
|
26
|
+
* Call once on app init.
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerWalkerOSDecorationStyles(): void;
|
|
29
|
+
//# sourceMappingURL=monaco-walkeros-decorations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-decorations.d.ts","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-decorations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAUA,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAiBxE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,CAAC,qBAAqB,GAC3C,MAAM,IAAI,CAsCZ;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,IAAI,IAAI,CAcvD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export const REFERENCE_PATTERNS = [
|
|
2
|
+
{ type: 'variable', regex: /\$var\.(\w*)/g, className: 'elb-ref-variable' },
|
|
3
|
+
{
|
|
4
|
+
type: 'definition',
|
|
5
|
+
regex: /\$def\.(\w*)/g,
|
|
6
|
+
className: 'elb-ref-definition',
|
|
7
|
+
},
|
|
8
|
+
{ type: 'secret', regex: /\$secret\.(\w*)/g, className: 'elb-ref-secret' },
|
|
9
|
+
{ type: 'env', regex: /\$env\.(\w*)/g, className: 'elb-ref-env' },
|
|
10
|
+
{ type: 'code', regex: /\$code:/g, className: 'elb-ref-code' },
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* Find all walkerOS reference patterns in text.
|
|
14
|
+
* Used for both decorations and validation.
|
|
15
|
+
*/
|
|
16
|
+
export function findWalkerOSReferences(text) {
|
|
17
|
+
const references = [];
|
|
18
|
+
for (const pattern of REFERENCE_PATTERNS) {
|
|
19
|
+
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
20
|
+
let match;
|
|
21
|
+
while ((match = regex.exec(text)) !== null) {
|
|
22
|
+
references.push({
|
|
23
|
+
type: pattern.type,
|
|
24
|
+
name: pattern.type === 'code' ? '' : match[1] || '',
|
|
25
|
+
startIndex: match.index,
|
|
26
|
+
endIndex: match.index + match[0].length,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return references;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Apply walkerOS reference decorations to a Monaco editor.
|
|
34
|
+
* Returns a cleanup function.
|
|
35
|
+
*/
|
|
36
|
+
export function applyWalkerOSDecorations(editorInstance) {
|
|
37
|
+
let decorationIds = [];
|
|
38
|
+
function update() {
|
|
39
|
+
const model = editorInstance.getModel();
|
|
40
|
+
if (!model)
|
|
41
|
+
return;
|
|
42
|
+
const text = model.getValue();
|
|
43
|
+
const references = findWalkerOSReferences(text);
|
|
44
|
+
const decorations = references.map((ref) => {
|
|
45
|
+
const startPos = model.getPositionAt(ref.startIndex);
|
|
46
|
+
const endPos = model.getPositionAt(ref.endIndex);
|
|
47
|
+
const pattern = REFERENCE_PATTERNS.find((p) => p.type === ref.type);
|
|
48
|
+
return {
|
|
49
|
+
range: {
|
|
50
|
+
startLineNumber: startPos.lineNumber,
|
|
51
|
+
startColumn: startPos.column,
|
|
52
|
+
endLineNumber: endPos.lineNumber,
|
|
53
|
+
endColumn: endPos.column,
|
|
54
|
+
},
|
|
55
|
+
options: { inlineClassName: pattern.className },
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
decorationIds = editorInstance.deltaDecorations(decorationIds, decorations);
|
|
59
|
+
}
|
|
60
|
+
update();
|
|
61
|
+
const disposable = editorInstance.onDidChangeModelContent(() => update());
|
|
62
|
+
return () => {
|
|
63
|
+
disposable.dispose();
|
|
64
|
+
editorInstance.deltaDecorations(decorationIds, []);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Register CSS styles for walkerOS reference decorations.
|
|
69
|
+
* Call once on app init.
|
|
70
|
+
*/
|
|
71
|
+
export function registerWalkerOSDecorationStyles() {
|
|
72
|
+
if (typeof document === 'undefined')
|
|
73
|
+
return;
|
|
74
|
+
if (document.getElementById('walkeros-ref-styles'))
|
|
75
|
+
return;
|
|
76
|
+
const style = document.createElement('style');
|
|
77
|
+
style.id = 'walkeros-ref-styles';
|
|
78
|
+
style.textContent = `
|
|
79
|
+
.monaco-editor .elb-ref-variable { color: #89ddff !important; font-style: italic; }
|
|
80
|
+
.monaco-editor .elb-ref-definition { color: #c3e88d !important; font-style: italic; }
|
|
81
|
+
.monaco-editor .elb-ref-secret { color: #ffcb6b !important; font-style: italic; }
|
|
82
|
+
.monaco-editor .elb-ref-env { color: #ffcb6b !important; font-style: italic; }
|
|
83
|
+
.monaco-editor .elb-ref-code { color: #c084fc !important; }
|
|
84
|
+
`;
|
|
85
|
+
document.head.appendChild(style);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=monaco-walkeros-decorations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-decorations.js","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-decorations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IntelliSenseContext } from '../types/intellisense';
|
|
2
|
+
export interface ValidationIssue {
|
|
3
|
+
message: string;
|
|
4
|
+
severity: 'error' | 'warning' | 'info';
|
|
5
|
+
startIndex: number;
|
|
6
|
+
endIndex: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Validate walkerOS references in JSON text against the current context.
|
|
10
|
+
* Returns issues for dangling references and invalid cross-references.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateWalkerOSReferences(text: string, context: Partial<IntelliSenseContext>): ValidationIssue[];
|
|
13
|
+
//# sourceMappingURL=monaco-walkeros-markers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-markers.d.ts","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-markers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,eAAe,EAAE,CAoEnB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate walkerOS references in JSON text against the current context.
|
|
3
|
+
* Returns issues for dangling references and invalid cross-references.
|
|
4
|
+
*/
|
|
5
|
+
export function validateWalkerOSReferences(text, context) {
|
|
6
|
+
const issues = [];
|
|
7
|
+
// Check $var. references
|
|
8
|
+
if (context.variables) {
|
|
9
|
+
const varRegex = /\$var\.(\w+)/g;
|
|
10
|
+
let match;
|
|
11
|
+
while ((match = varRegex.exec(text)) !== null) {
|
|
12
|
+
if (!(match[1] in context.variables)) {
|
|
13
|
+
issues.push({
|
|
14
|
+
message: `Unknown variable "$var.${match[1]}". Defined variables: ${Object.keys(context.variables).join(', ') || 'none'}`,
|
|
15
|
+
severity: 'warning',
|
|
16
|
+
startIndex: match.index,
|
|
17
|
+
endIndex: match.index + match[0].length,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Check $def. references
|
|
23
|
+
if (context.definitions) {
|
|
24
|
+
const defRegex = /\$def\.(\w+)/g;
|
|
25
|
+
let match;
|
|
26
|
+
while ((match = defRegex.exec(text)) !== null) {
|
|
27
|
+
if (!(match[1] in context.definitions)) {
|
|
28
|
+
issues.push({
|
|
29
|
+
message: `Unknown definition "$def.${match[1]}". Defined: ${Object.keys(context.definitions).join(', ') || 'none'}`,
|
|
30
|
+
severity: 'warning',
|
|
31
|
+
startIndex: match.index,
|
|
32
|
+
endIndex: match.index + match[0].length,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Check $secret. references
|
|
38
|
+
if (context.secrets) {
|
|
39
|
+
const secretRegex = /\$secret\.(\w+)/g;
|
|
40
|
+
let match;
|
|
41
|
+
while ((match = secretRegex.exec(text)) !== null) {
|
|
42
|
+
if (!context.secrets.includes(match[1])) {
|
|
43
|
+
issues.push({
|
|
44
|
+
message: `Unknown secret "$secret.${match[1]}". Available: ${context.secrets.join(', ') || 'none'}`,
|
|
45
|
+
severity: 'warning',
|
|
46
|
+
startIndex: match.index,
|
|
47
|
+
endIndex: match.index + match[0].length,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Check next/before cross-references
|
|
53
|
+
if (context.stepNames?.transformers) {
|
|
54
|
+
const nextRegex = /"(?:next|before)"\s*:\s*"(\w+)"/g;
|
|
55
|
+
let match;
|
|
56
|
+
while ((match = nextRegex.exec(text)) !== null) {
|
|
57
|
+
if (!context.stepNames.transformers.includes(match[1])) {
|
|
58
|
+
issues.push({
|
|
59
|
+
message: `Unknown transformer "${match[1]}". Available: ${context.stepNames.transformers.join(', ') || 'none'}`,
|
|
60
|
+
severity: 'warning',
|
|
61
|
+
startIndex: match.index,
|
|
62
|
+
endIndex: match.index + match[0].length,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return issues;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=monaco-walkeros-markers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-markers.js","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-markers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IntelliSenseContext } from '../types/intellisense';
|
|
2
|
+
/**
|
|
3
|
+
* Update the IntelliSense context for a specific editor model.
|
|
4
|
+
*/
|
|
5
|
+
export declare function setIntelliSenseContext(modelPath: string, context: IntelliSenseContext): void;
|
|
6
|
+
/**
|
|
7
|
+
* Remove context when editor unmounts.
|
|
8
|
+
*/
|
|
9
|
+
export declare function removeIntelliSenseContext(modelPath: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Register the walkerOS CompletionItemProvider and HoverProvider for JSON.
|
|
12
|
+
* Call once on app initialization. Safe to call multiple times (idempotent).
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerWalkerOSProviders(monaco: typeof import('monaco-editor')): void;
|
|
15
|
+
/**
|
|
16
|
+
* Dispose all registered providers. Call on app teardown.
|
|
17
|
+
*/
|
|
18
|
+
export declare function disposeWalkerOSProviders(): void;
|
|
19
|
+
//# sourceMappingURL=monaco-walkeros-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco-walkeros-providers.d.ts","sourceRoot":"","sources":["../../src/utils/monaco-walkeros-providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAejE;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC3B,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,cAAc,eAAe,CAAC,GACrC,IAAI,CAqMN;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAK/C"}
|