@teleporthq/teleport-plugin-next-workflows 0.43.29 → 0.43.31
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/__tests__/_helpers/load-handler.ts +11 -1
- package/__tests__/file-storage-upload-picked-files.test.ts +135 -0
- package/__tests__/graph-utils-topological-order.test.ts +108 -0
- package/__tests__/runtime-operator-aliases.test.ts +180 -0
- package/__tests__/runtime-template-token-resolution.test.ts +225 -0
- package/__tests__/state-update-array-type-guard.test.ts +172 -0
- package/dist/cjs/executor-generator.d.ts.map +1 -1
- package/dist/cjs/executor-generator.js +134 -5
- package/dist/cjs/executor-generator.js.map +1 -1
- package/dist/cjs/graph-utils.d.ts +7 -0
- package/dist/cjs/graph-utils.d.ts.map +1 -1
- package/dist/cjs/graph-utils.js +52 -1
- package/dist/cjs/graph-utils.js.map +1 -1
- package/dist/cjs/nodes/data/data-count.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-count.js +16 -0
- package/dist/cjs/nodes/data/data-count.js.map +1 -1
- package/dist/cjs/nodes/data/data-create-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-create-item.js +20 -0
- package/dist/cjs/nodes/data/data-create-item.js.map +1 -1
- package/dist/cjs/nodes/data/data-delete-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-delete-item.js +19 -0
- package/dist/cjs/nodes/data/data-delete-item.js.map +1 -1
- package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-select.js +18 -0
- package/dist/cjs/nodes/data/data-select.js.map +1 -1
- package/dist/cjs/nodes/data/data-update-item.d.ts.map +1 -1
- package/dist/cjs/nodes/data/data-update-item.js +36 -0
- package/dist/cjs/nodes/data/data-update-item.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/workflow-component-plugin.d.ts.map +1 -1
- package/dist/cjs/workflow-component-plugin.js +56 -9
- package/dist/cjs/workflow-component-plugin.js.map +1 -1
- package/dist/esm/executor-generator.d.ts.map +1 -1
- package/dist/esm/executor-generator.js +134 -5
- package/dist/esm/executor-generator.js.map +1 -1
- package/dist/esm/graph-utils.d.ts +7 -0
- package/dist/esm/graph-utils.d.ts.map +1 -1
- package/dist/esm/graph-utils.js +50 -0
- package/dist/esm/graph-utils.js.map +1 -1
- package/dist/esm/nodes/data/data-count.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-count.js +16 -0
- package/dist/esm/nodes/data/data-count.js.map +1 -1
- package/dist/esm/nodes/data/data-create-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-create-item.js +20 -0
- package/dist/esm/nodes/data/data-create-item.js.map +1 -1
- package/dist/esm/nodes/data/data-delete-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-delete-item.js +19 -0
- package/dist/esm/nodes/data/data-delete-item.js.map +1 -1
- package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-select.js +18 -0
- package/dist/esm/nodes/data/data-select.js.map +1 -1
- package/dist/esm/nodes/data/data-update-item.d.ts.map +1 -1
- package/dist/esm/nodes/data/data-update-item.js +36 -0
- package/dist/esm/nodes/data/data-update-item.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/workflow-component-plugin.d.ts.map +1 -1
- package/dist/esm/workflow-component-plugin.js +56 -9
- package/dist/esm/workflow-component-plugin.js.map +1 -1
- package/package.json +2 -2
- package/src/executor-generator.ts +134 -5
- package/src/graph-utils.ts +52 -0
- package/src/nodes/data/data-count.ts +20 -0
- package/src/nodes/data/data-create-item.ts +19 -0
- package/src/nodes/data/data-delete-item.ts +23 -0
- package/src/nodes/data/data-select.ts +22 -0
- package/src/nodes/data/data-update-item.ts +38 -0
- package/src/workflow-component-plugin.ts +61 -3
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Regression guard for the poisoned-array-state family (run 47cf1df1,
|
|
2
|
+
// "Failed to add variant row"): a workflow ref resolving to a custom-js
|
|
3
|
+
// node's WHOLE return object ({ result: [...] }) was written verbatim
|
|
4
|
+
// into an ARRAY state (draftVariants). The mapper rendered zero rows and
|
|
5
|
+
// the next add-row workflow crashed spreading a non-iterable object.
|
|
6
|
+
//
|
|
7
|
+
// `__coerceValue` (inside the page-level `__createWorkflowHandlers`
|
|
8
|
+
// factory the workflow component plugin emits) now type-guards array
|
|
9
|
+
// states: a non-array write logs console.warn, unwraps an object with a
|
|
10
|
+
// single array-valued property, and otherwise falls back to []. Same
|
|
11
|
+
// extraction technique as state-setter-value-key-unwrap.test.ts.
|
|
12
|
+
|
|
13
|
+
import { createNextWorkflowPlugin } from '../src/workflow-component-plugin'
|
|
14
|
+
|
|
15
|
+
const extractFunctionSource = (haystack: string, funcDecl: string): string => {
|
|
16
|
+
const startIdx = haystack.indexOf(funcDecl)
|
|
17
|
+
if (startIdx === -1) {
|
|
18
|
+
throw new Error('Helper not found: ' + funcDecl)
|
|
19
|
+
}
|
|
20
|
+
let depth = 0
|
|
21
|
+
let i = haystack.indexOf('{', startIdx)
|
|
22
|
+
if (i === -1) {
|
|
23
|
+
throw new Error('No opening brace after ' + funcDecl)
|
|
24
|
+
}
|
|
25
|
+
for (; i < haystack.length; i++) {
|
|
26
|
+
const ch = haystack.charAt(i)
|
|
27
|
+
if (ch === '{') {
|
|
28
|
+
depth++
|
|
29
|
+
} else if (ch === '}') {
|
|
30
|
+
depth--
|
|
31
|
+
if (depth === 0) {
|
|
32
|
+
return haystack.slice(startIdx, i + 1)
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
throw new Error('Unbalanced braces for ' + funcDecl)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const buildStructure = (): any => {
|
|
40
|
+
const triggerNodeId = 'trigger-1'
|
|
41
|
+
const stateUpdateNodeId = 'update-1'
|
|
42
|
+
const workflow = {
|
|
43
|
+
id: 'wf-1',
|
|
44
|
+
name: 'Test WF',
|
|
45
|
+
trigger: {
|
|
46
|
+
type: 'event-page-loaded',
|
|
47
|
+
nodeId: triggerNodeId,
|
|
48
|
+
scope: 'page',
|
|
49
|
+
config: { pageId: 'page-1' },
|
|
50
|
+
},
|
|
51
|
+
nodes: [
|
|
52
|
+
{
|
|
53
|
+
id: stateUpdateNodeId,
|
|
54
|
+
type: 'state-update-local-state',
|
|
55
|
+
config: { property: 'myArr', value: [] },
|
|
56
|
+
stepNumber: 1,
|
|
57
|
+
label: 'X',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
edges: [{ id: 'e', source: triggerNodeId, target: stateUpdateNodeId }],
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
uidl: {
|
|
64
|
+
name: 'Page',
|
|
65
|
+
outputOptions: { pageId: 'page-1', fileName: 'page-1' },
|
|
66
|
+
node: { type: 'element', content: { elementType: 'container', name: 'Container' } },
|
|
67
|
+
stateDefinitions: {
|
|
68
|
+
myArr: { type: 'array', defaultValue: [] },
|
|
69
|
+
myStr: { type: 'string', defaultValue: '' },
|
|
70
|
+
myObj: { type: 'object', defaultValue: {} },
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
chunks: [
|
|
74
|
+
{
|
|
75
|
+
type: 'chunk-type-ast',
|
|
76
|
+
name: 'jsx-component',
|
|
77
|
+
content: {
|
|
78
|
+
type: 'VariableDeclaration',
|
|
79
|
+
declarations: [
|
|
80
|
+
{
|
|
81
|
+
type: 'VariableDeclarator',
|
|
82
|
+
init: {
|
|
83
|
+
type: 'ArrowFunctionExpression',
|
|
84
|
+
body: {
|
|
85
|
+
type: 'BlockStatement',
|
|
86
|
+
body: [{ type: 'ReturnStatement', argument: null }],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
options: {
|
|
95
|
+
workflows: { workflows: { 'wf-1': workflow }, customNodes: {} },
|
|
96
|
+
},
|
|
97
|
+
dependencies: {},
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const buildCoerceFn = async (): Promise<(v: unknown, property: string) => unknown> => {
|
|
102
|
+
const plugin = createNextWorkflowPlugin({ isPage: true })
|
|
103
|
+
const structure = buildStructure()
|
|
104
|
+
await plugin(structure as any)
|
|
105
|
+
const moduleChunk = (structure.chunks as any[]).find((c: any) => c.name === 'workflow-module')
|
|
106
|
+
if (!moduleChunk) {
|
|
107
|
+
throw new Error('workflow-module chunk not emitted by plugin')
|
|
108
|
+
}
|
|
109
|
+
const moduleCode = String(moduleChunk.content)
|
|
110
|
+
const fnSource = extractFunctionSource(moduleCode, 'function __coerceValue')
|
|
111
|
+
const stateTypes = { myArr: 'array', myStr: 'string', myObj: 'object' }
|
|
112
|
+
const factory = new Function('stateTypes', fnSource + '\nreturn __coerceValue;')
|
|
113
|
+
return factory(stateTypes)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
describe('__coerceValue: array state type-guard', () => {
|
|
117
|
+
let warnSpy: jest.SpyInstance
|
|
118
|
+
|
|
119
|
+
beforeEach(() => {
|
|
120
|
+
warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => undefined)
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
afterEach(() => {
|
|
124
|
+
warnSpy.mockRestore()
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
it('unwraps an object with a single array-valued property and warns', async () => {
|
|
128
|
+
// The canonical poison: the whole { result: [...] } custom-js return
|
|
129
|
+
// instead of its .result ref.
|
|
130
|
+
const coerce = await buildCoerceFn()
|
|
131
|
+
expect(coerce({ result: [1, 2, 3] }, 'myArr')).toEqual([1, 2, 3])
|
|
132
|
+
expect(warnSpy).toHaveBeenCalled()
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
it('falls back to [] for objects that are not a single-array wrapper', async () => {
|
|
136
|
+
const coerce = await buildCoerceFn()
|
|
137
|
+
expect(coerce({ a: [1], b: [2] }, 'myArr')).toEqual([])
|
|
138
|
+
expect(coerce({ a: 'not-an-array' }, 'myArr')).toEqual([])
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
it('falls back to [] for primitives and null', async () => {
|
|
142
|
+
const coerce = await buildCoerceFn()
|
|
143
|
+
expect(coerce('oops', 'myArr')).toEqual([])
|
|
144
|
+
expect(coerce(42, 'myArr')).toEqual([])
|
|
145
|
+
expect(coerce(null, 'myArr')).toEqual([])
|
|
146
|
+
expect(warnSpy).toHaveBeenCalledTimes(3)
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
it('passes real arrays through untouched, without warning', async () => {
|
|
150
|
+
const coerce = await buildCoerceFn()
|
|
151
|
+
const arr = [{ sku: 'A' }]
|
|
152
|
+
expect(coerce(arr, 'myArr')).toBe(arr)
|
|
153
|
+
expect(warnSpy).not.toHaveBeenCalled()
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
it('still unwraps a {value, key} state-get wrapper carrying an array', async () => {
|
|
157
|
+
// The pre-existing unwrap runs first; its array payload must then
|
|
158
|
+
// pass the array guard without being coerced away.
|
|
159
|
+
const coerce = await buildCoerceFn()
|
|
160
|
+
const arr = [1, 2]
|
|
161
|
+
expect(coerce({ value: arr, key: 'myArr' }, 'myArr')).toBe(arr)
|
|
162
|
+
expect(warnSpy).not.toHaveBeenCalled()
|
|
163
|
+
})
|
|
164
|
+
|
|
165
|
+
it('does not touch non-array states', async () => {
|
|
166
|
+
const coerce = await buildCoerceFn()
|
|
167
|
+
const richObj = { a: 1, b: 2 }
|
|
168
|
+
expect(coerce(richObj, 'myObj')).toBe(richObj)
|
|
169
|
+
expect(coerce('plain', 'myStr')).toBe('plain')
|
|
170
|
+
expect(warnSpy).not.toHaveBeenCalled()
|
|
171
|
+
})
|
|
172
|
+
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAAO,
|
|
1
|
+
{"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAAO,MAo9BjD,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAwc5C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAK5C,CAAA"}
|
|
@@ -215,9 +215,99 @@ function escapeHtmlText(value) {
|
|
|
215
215
|
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
+
// Sentinel for a page-context template token ({{urlDifferentiator}} /
|
|
219
|
+
// {{Current Page Entity.id}}) that could not be resolved at execution time
|
|
220
|
+
// (no dynamic-route parameter reachable — e.g. the workflow fired on a
|
|
221
|
+
// non-details page). finalizeResolvedConfig turns this into a validation
|
|
222
|
+
// error on data-node filters and into null everywhere else, so the literal
|
|
223
|
+
// token text never reaches SQL.
|
|
224
|
+
var UNRESOLVED_ROUTE_PARAM = '__TQ_UNRESOLVED_ROUTE_PARAM__';
|
|
225
|
+
|
|
226
|
+
// Deployed node configs regularly carry literal {{...}} template tokens that
|
|
227
|
+
// only the page runtime can resolve: {{state.X}} (trigger-time state
|
|
228
|
+
// snapshot), {{urlDifferentiator}} / {{Current Page Entity.id}} /
|
|
229
|
+
// {{page.entityId}} (the details page's dynamic-route parameter) and
|
|
230
|
+
// {{Current User.id}} (the GlobalContext-bridged authenticated user). No
|
|
231
|
+
// other substitution site exists in the generated app, so without this the
|
|
232
|
+
// literal token string reaches SQL. Only whole-string tokens are resolved —
|
|
233
|
+
// JS-expression tokens ({{state.a === 'b' ? ...}}) are left untouched.
|
|
234
|
+
function resolveTemplateTokenString(value, context) {
|
|
235
|
+
if (typeof value !== 'string') return { matched: false };
|
|
236
|
+
var m = value.match(/^\\{\\{\\s*([^{}]+?)\\s*\\}\\}$/);
|
|
237
|
+
if (!m) return { matched: false };
|
|
238
|
+
var token = m[1];
|
|
239
|
+
if (token.indexOf('state.') === 0) {
|
|
240
|
+
var statePath = token.slice(6).split('.');
|
|
241
|
+
for (var si = 0; si < statePath.length; si++) {
|
|
242
|
+
if (!/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(statePath[si])) return { matched: false };
|
|
243
|
+
}
|
|
244
|
+
var stateCursor = context && context.__stateValues;
|
|
245
|
+
for (var sj = 0; sj < statePath.length && stateCursor !== null && stateCursor !== undefined; sj++) {
|
|
246
|
+
stateCursor = stateCursor[statePath[sj]];
|
|
247
|
+
}
|
|
248
|
+
return { matched: true, value: stateCursor === undefined ? null : stateCursor };
|
|
249
|
+
}
|
|
250
|
+
if (token === 'urlDifferentiator' || token === 'Current Page Entity.id' || token === 'page.entityId') {
|
|
251
|
+
var routeParams = context && context.__routeParams;
|
|
252
|
+
// The page's declared dynamic-route attribute wins; 'id' is the fallback
|
|
253
|
+
// for workflows attached to shared components (e.g. Navigation) rendered
|
|
254
|
+
// on a details page, which have no __dynamicRouteParam of their own.
|
|
255
|
+
var routeParamKey = (context && context.__dynamicRouteParam) || 'id';
|
|
256
|
+
if (routeParams && routeParams[routeParamKey] !== undefined && routeParams[routeParamKey] !== null && routeParams[routeParamKey] !== '') {
|
|
257
|
+
var paramValue = routeParams[routeParamKey];
|
|
258
|
+
return { matched: true, value: Array.isArray(paramValue) ? paramValue[0] : paramValue };
|
|
259
|
+
}
|
|
260
|
+
return { matched: true, value: UNRESOLVED_ROUTE_PARAM };
|
|
261
|
+
}
|
|
262
|
+
if (token === 'Current User.id' || token === 'currentUser.id') {
|
|
263
|
+
var currentUser = context && context.__stateValues && context.__stateValues.currentUser;
|
|
264
|
+
var userId = currentUser && typeof currentUser === 'object' ? currentUser.id : undefined;
|
|
265
|
+
return { matched: true, value: userId === undefined ? null : userId };
|
|
266
|
+
}
|
|
267
|
+
return { matched: false };
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Post-resolution pass over a node's resolved config. Data-node filters whose
|
|
271
|
+
// value is an unresolved route-param sentinel become a hard validation error
|
|
272
|
+
// (surfaced through the workflow error handler) — sending them on would query
|
|
273
|
+
// 'WHERE id = <literal token>'. Everywhere else the sentinel degrades to null
|
|
274
|
+
// (e.g. a columnMapping loses attribution but the write survives).
|
|
275
|
+
function finalizeResolvedConfig(nodeType, config) {
|
|
276
|
+
var isDataNode = typeof nodeType === 'string' && nodeType.indexOf('data-') === 0;
|
|
277
|
+
var error = null;
|
|
278
|
+
function walk(obj, insideFilters) {
|
|
279
|
+
if (!obj || typeof obj !== 'object') return;
|
|
280
|
+
if (Array.isArray(obj)) {
|
|
281
|
+
for (var ai = 0; ai < obj.length; ai++) walk(obj[ai], insideFilters);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
var keys = Object.keys(obj);
|
|
285
|
+
for (var ki = 0; ki < keys.length; ki++) {
|
|
286
|
+
var k = keys[ki];
|
|
287
|
+
var v = obj[k];
|
|
288
|
+
if (v === UNRESOLVED_ROUTE_PARAM) {
|
|
289
|
+
if (isDataNode && insideFilters && !error) {
|
|
290
|
+
var column = obj.column || obj.source || obj.field || k;
|
|
291
|
+
error = 'Filter on "' + column + '" requires the page id ({{urlDifferentiator}}), which is not available in this context';
|
|
292
|
+
}
|
|
293
|
+
obj[k] = null;
|
|
294
|
+
} else if (v && typeof v === 'object') {
|
|
295
|
+
walk(v, insideFilters || k === 'filters');
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
walk(config, false);
|
|
300
|
+
return error;
|
|
301
|
+
}
|
|
302
|
+
|
|
218
303
|
// Scalar config values are normally just secret-resolved. Rich-text strings
|
|
219
|
-
// (email bodies) additionally need their inline context placeholders resolved
|
|
304
|
+
// (email bodies) additionally need their inline context placeholders resolved,
|
|
305
|
+
// and whole-string {{...}} template tokens resolve against the page context.
|
|
220
306
|
function resolveScalarValue(value, context) {
|
|
307
|
+
var tokenResolution = resolveTemplateTokenString(value, context);
|
|
308
|
+
if (tokenResolution.matched) {
|
|
309
|
+
return tokenResolution.value;
|
|
310
|
+
}
|
|
221
311
|
if (typeof value === 'string' && value.indexOf('context-value-inline') !== -1) {
|
|
222
312
|
return resolveRichTextContext(value, context);
|
|
223
313
|
}
|
|
@@ -317,11 +407,28 @@ function coerceForComparison(a, b) {
|
|
|
317
407
|
return [a, b];
|
|
318
408
|
}
|
|
319
409
|
|
|
410
|
+
// The operator vocabulary is written by THREE producers that never agreed on
|
|
411
|
+
// a spelling: the worker canonicalizes to snake_case (is_not_empty,
|
|
412
|
+
// greater_than), the GUI editor emits camelCase named forms (startsWith,
|
|
413
|
+
// notContains), and this runtime historically implemented only the hyphenated
|
|
414
|
+
// forms. Unknown spellings used to fall through to the default 'left == right'
|
|
415
|
+
// branch, which INVERTS unary semantics (is_not_empty compared the value
|
|
416
|
+
// against undefined). Normalizing camelCase and snake_case to the canonical
|
|
417
|
+
// hyphenated form here makes every producer's config executable.
|
|
418
|
+
function normalizeComparisonOperator(op) {
|
|
419
|
+
if (typeof op !== 'string' || op === '') return 'equals';
|
|
420
|
+
return op
|
|
421
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
422
|
+
.replace(/_/g, '-')
|
|
423
|
+
.toLowerCase();
|
|
424
|
+
}
|
|
425
|
+
|
|
320
426
|
function evaluateSingleComparison(config, context) {
|
|
321
427
|
var rawLeft = resolveValue(config.leftValue, context);
|
|
322
428
|
var rawRight = resolveValue(config.rightValue, context);
|
|
323
|
-
const op = config.operator || 'equals';
|
|
324
|
-
var isUnary = op === 'is-empty' || op === 'is-not-empty' || op === 'is-truthy' || op === 'is-falsy'
|
|
429
|
+
const op = normalizeComparisonOperator(config.operator || 'equals');
|
|
430
|
+
var isUnary = op === 'is-empty' || op === 'is-not-empty' || op === 'is-truthy' || op === 'is-falsy' ||
|
|
431
|
+
op === 'is-null' || op === 'is-not-null' || op === 'is-true' || op === 'is-false';
|
|
325
432
|
var pair = isUnary ? [rawLeft, rawRight] : coerceForComparison(rawLeft, rawRight);
|
|
326
433
|
var left = pair[0];
|
|
327
434
|
var right = pair[1];
|
|
@@ -335,15 +442,21 @@ function evaluateSingleComparison(config, context) {
|
|
|
335
442
|
case '>=': case 'greater-than-or-equal': return left >= right;
|
|
336
443
|
case '<=': case 'less-than-or-equal': return left <= right;
|
|
337
444
|
case 'contains': return String(left).includes(String(right));
|
|
338
|
-
case 'not-contains': return !String(left).includes(String(right));
|
|
445
|
+
case 'not-contains': case 'does-not-contain': return !String(left).includes(String(right));
|
|
339
446
|
case 'starts-with': return String(left).startsWith(String(right));
|
|
340
447
|
case 'ends-with': return String(left).endsWith(String(right));
|
|
341
448
|
case 'is-empty': return left === '' || left === null || left === undefined || (Array.isArray(left) && left.length === 0);
|
|
342
449
|
case 'is-not-empty': return left !== '' && left !== null && left !== undefined && !(Array.isArray(left) && left.length === 0);
|
|
450
|
+
case 'is-null': return left === null || left === undefined;
|
|
451
|
+
case 'is-not-null': return left !== null && left !== undefined;
|
|
452
|
+
case 'is-true': return left === true || left === 'true';
|
|
453
|
+
case 'is-false': return left === false || left === 'false';
|
|
343
454
|
case 'is-truthy': return !!left;
|
|
344
455
|
case 'is-falsy': return !left;
|
|
345
456
|
case 'matches-regex': try { return new RegExp(String(right)).test(String(left)); } catch(e) { return false; }
|
|
346
|
-
default:
|
|
457
|
+
default:
|
|
458
|
+
console.warn('[workflow] Unknown comparison operator "' + config.operator + '" — falling back to loose equality');
|
|
459
|
+
return left == right;
|
|
347
460
|
}
|
|
348
461
|
}
|
|
349
462
|
|
|
@@ -355,6 +468,12 @@ async function executeWorkflow(workflowConfig, triggerContext, nodeHandlers, opt
|
|
|
355
468
|
if (triggerContext && triggerContext.__stateValues) {
|
|
356
469
|
context.__stateValues = triggerContext.__stateValues;
|
|
357
470
|
}
|
|
471
|
+
if (triggerContext && triggerContext.__routeParams) {
|
|
472
|
+
context.__routeParams = triggerContext.__routeParams;
|
|
473
|
+
}
|
|
474
|
+
if (triggerContext && triggerContext.__dynamicRouteParam) {
|
|
475
|
+
context.__dynamicRouteParam = triggerContext.__dynamicRouteParam;
|
|
476
|
+
}
|
|
358
477
|
if (triggerContext && triggerContext.triggerElement) {
|
|
359
478
|
context.triggerElement = triggerContext.triggerElement;
|
|
360
479
|
}
|
|
@@ -456,6 +575,11 @@ async function executeNodes(nodes, edges, context, nodeHandlers, workflowConfig,
|
|
|
456
575
|
const resolvedConfig = resolveConfig(node.config, context);
|
|
457
576
|
|
|
458
577
|
try {
|
|
578
|
+
const configError = finalizeResolvedConfig(node.type, resolvedConfig);
|
|
579
|
+
if (configError) {
|
|
580
|
+
throw new Error(configError);
|
|
581
|
+
}
|
|
582
|
+
|
|
459
583
|
if (node.type === 'general-if-statement') {
|
|
460
584
|
const condResult = evaluateCondition(resolvedConfig, context);
|
|
461
585
|
context[node.id] = { result: condResult };
|
|
@@ -844,6 +968,9 @@ module.exports = {
|
|
|
844
968
|
unwrapWorkflowCollection,
|
|
845
969
|
evaluateCondition,
|
|
846
970
|
evaluateSingleComparison,
|
|
971
|
+
normalizeComparisonOperator,
|
|
972
|
+
resolveTemplateTokenString,
|
|
973
|
+
finalizeResolvedConfig,
|
|
847
974
|
executeWorkflow,
|
|
848
975
|
executeNodes,
|
|
849
976
|
executeLoop,
|
|
@@ -1005,6 +1132,8 @@ function buildContext(workflowConfig, triggerContext) {
|
|
|
1005
1132
|
context[workflowConfig.triggerNodeId] = triggerContext;
|
|
1006
1133
|
if (triggerContext) {
|
|
1007
1134
|
if (triggerContext.__stateValues) context.__stateValues = triggerContext.__stateValues;
|
|
1135
|
+
if (triggerContext.__routeParams) context.__routeParams = triggerContext.__routeParams;
|
|
1136
|
+
if (triggerContext.__dynamicRouteParam) context.__dynamicRouteParam = triggerContext.__dynamicRouteParam;
|
|
1008
1137
|
if (triggerContext.triggerElement) context.triggerElement = triggerContext.triggerElement;
|
|
1009
1138
|
}
|
|
1010
1139
|
return context;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":";;;AAAO,MAAM,8BAA8B,GAAG,GAAW,EAAE;IACzD,OAAO
|
|
1
|
+
{"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":";;;AAAO,MAAM,8BAA8B,GAAG,GAAW,EAAE;IACzD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAk9BR,CAAA;AACD,CAAC,CAAA;AAp9BY,QAAA,8BAA8B,kCAo9B1C;AAEM,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAscR,CAAA;AACD,CAAC,CAAA;AAxcY,QAAA,yBAAyB,6BAwcrC;AAEM,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;CAGR,CAAA;AACD,CAAC,CAAA;AALY,QAAA,yBAAyB,6BAKrC"}
|
|
@@ -4,6 +4,13 @@ export declare const getNodeDependencies: (nodeId: string, edges: UIDLWorkflowEd
|
|
|
4
4
|
export declare const getNodeChildren: (nodeId: string, edges: UIDLWorkflowEdge[]) => string[];
|
|
5
5
|
export declare const getEdgesFrom: (nodeId: string, edges: UIDLWorkflowEdge[]) => UIDLWorkflowEdge[];
|
|
6
6
|
export declare const getEdgesTo: (nodeId: string, edges: UIDLWorkflowEdge[]) => UIDLWorkflowEdge[];
|
|
7
|
+
/**
|
|
8
|
+
* Recursively collect every workflow-context node id a config references, i.e.
|
|
9
|
+
* the ids inside `{ type: 'workflowContext', nodeId: '<id>', path: [...] }`
|
|
10
|
+
* objects embedded anywhere in a node's config (filter values, column mappings,
|
|
11
|
+
* loop collections, custom-js params, …).
|
|
12
|
+
*/
|
|
13
|
+
export declare const collectWorkflowContextNodeIds: (value: unknown, out: Set<string>) => void;
|
|
7
14
|
export declare const getTopologicalOrder: (nodes: UIDLWorkflowNode[], edges: UIDLWorkflowEdge[]) => string[];
|
|
8
15
|
export declare const getLoopBodyNodes: (loopNodeId: string, edges: UIDLWorkflowEdge[]) => string[];
|
|
9
16
|
export declare const getParallelBranches: (parallelNodeId: string, edges: UIDLWorkflowEdge[]) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE9F,eAAO,MAAM,WAAW,UACf,gBAAgB,EAAE,UACjB,MAAM,KACb,gBAAgB,GAAG,SAErB,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EAErF,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EAEjF,CAAA;AAED,eAAO,MAAM,YAAY,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,gBAAgB,EAExF,CAAA;AAED,eAAO,MAAM,UAAU,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,gBAAgB,EAEtF,CAAA;AAED,eAAO,MAAM,mBAAmB,UACvB,gBAAgB,EAAE,SAClB,gBAAgB,EAAE,KACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"graph-utils.d.ts","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE9F,eAAO,MAAM,WAAW,UACf,gBAAgB,EAAE,UACjB,MAAM,KACb,gBAAgB,GAAG,SAErB,CAAA;AAED,eAAO,MAAM,mBAAmB,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EAErF,CAAA;AAED,eAAO,MAAM,eAAe,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EAEjF,CAAA;AAED,eAAO,MAAM,YAAY,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,gBAAgB,EAExF,CAAA;AAED,eAAO,MAAM,UAAU,WAAY,MAAM,SAAS,gBAAgB,EAAE,KAAG,gBAAgB,EAEtF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,UAAW,OAAO,OAAO,IAAI,MAAM,CAAC,KAAG,IAahF,CAAA;AAED,eAAO,MAAM,mBAAmB,UACvB,gBAAgB,EAAE,SAClB,gBAAgB,EAAE,KACxB,MAAM,EAqFR,CAAA;AAED,eAAO,MAAM,gBAAgB,eAAgB,MAAM,SAAS,gBAAgB,EAAE,KAAG,MAAM,EA8BtF,CAAA;AAED,eAAO,MAAM,mBAAmB,mBACd,MAAM,SACf,gBAAgB,EAAE,KACxB;IAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAY9E,CAAA;AAED,eAAO,MAAM,cAAc,iBACX,MAAM,SACb,gBAAgB,EAAE,KACxB,MAAM;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAc5C,CAAA;AAED,eAAO,MAAM,aAAa,aACd,MAAM,SACT,gBAAgB,EAAE,KACxB;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAQjD,CAAA;AAED,eAAO,MAAM,iBAAiB,eAChB,MAAM,SACX,gBAAgB,EAAE,KACxB,MAAM,GAAG,SAGX,CAAA;AAED,eAAO,MAAM,oBAAoB,cAAe,aAAa,KAAG,IAAI,MAAM,CAoBzE,CAAA;AAED,eAAO,MAAM,aAAa,aAOxB,CAAA;AAEF,eAAO,MAAM,iBAAiB,SAAU,gBAAgB,KAAG,OAE1D,CAAA;AAED,eAAO,MAAM,oBAAoB,WACvB,MAAM,SACP,gBAAgB,EAAE,KACxB;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAOrD,CAAA;AAED,eAAO,MAAM,iBAAiB,aAAc,MAAM,KAAG,OAIpD,CAAA;AAED,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,OAYjD,CAAA;AAED,eAAO,MAAM,mBAAmB,aAW9B,CAAA;AAEF,eAAO,MAAM,sBAAsB,aAKjC,CAAA;AAEF,eAAO,MAAM,mBAAmB,cAAe,aAAa,KAAG,OAiC9D,CAAA;AAED,eAAO,MAAM,8BAA8B,cAAe,aAAa,KAAG,IAAI,MAAM,CAoCnF,CAAA"}
|
package/dist/cjs/graph-utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.collectUsedRealtimeActionTypes = exports.projectUsesRealtime = exports.REALTIME_TRIGGER_TYPES = exports.REALTIME_NODE_TYPES = exports.isTerminalNode = exports.isControlFlowNode = exports.getStreamingBranches = exports.isStreamingAINode = exports.AI_NODE_TYPES = exports.collectUsedNodeTypes = exports.getLoopExitTarget = exports.getIfBranches = exports.getSwitchCases = exports.getParallelBranches = exports.getLoopBodyNodes = exports.getTopologicalOrder = exports.getEdgesTo = exports.getEdgesFrom = exports.getNodeChildren = exports.getNodeDependencies = exports.getNodeById = void 0;
|
|
3
|
+
exports.collectUsedRealtimeActionTypes = exports.projectUsesRealtime = exports.REALTIME_TRIGGER_TYPES = exports.REALTIME_NODE_TYPES = exports.isTerminalNode = exports.isControlFlowNode = exports.getStreamingBranches = exports.isStreamingAINode = exports.AI_NODE_TYPES = exports.collectUsedNodeTypes = exports.getLoopExitTarget = exports.getIfBranches = exports.getSwitchCases = exports.getParallelBranches = exports.getLoopBodyNodes = exports.getTopologicalOrder = exports.collectWorkflowContextNodeIds = exports.getEdgesTo = exports.getEdgesFrom = exports.getNodeChildren = exports.getNodeDependencies = exports.getNodeById = void 0;
|
|
4
4
|
const getNodeById = (nodes, nodeId) => {
|
|
5
5
|
return nodes.find((n) => n.id === nodeId);
|
|
6
6
|
};
|
|
@@ -21,6 +21,27 @@ const getEdgesTo = (nodeId, edges) => {
|
|
|
21
21
|
return edges.filter((e) => e.target === nodeId);
|
|
22
22
|
};
|
|
23
23
|
exports.getEdgesTo = getEdgesTo;
|
|
24
|
+
/**
|
|
25
|
+
* Recursively collect every workflow-context node id a config references, i.e.
|
|
26
|
+
* the ids inside `{ type: 'workflowContext', nodeId: '<id>', path: [...] }`
|
|
27
|
+
* objects embedded anywhere in a node's config (filter values, column mappings,
|
|
28
|
+
* loop collections, custom-js params, …).
|
|
29
|
+
*/
|
|
30
|
+
const collectWorkflowContextNodeIds = (value, out) => {
|
|
31
|
+
if (!value || typeof value !== 'object') {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(value)) {
|
|
35
|
+
value.forEach((item) => (0, exports.collectWorkflowContextNodeIds)(item, out));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const record = value;
|
|
39
|
+
if (record.type === 'workflowContext' && typeof record.nodeId === 'string') {
|
|
40
|
+
out.add(record.nodeId);
|
|
41
|
+
}
|
|
42
|
+
Object.values(record).forEach((child) => (0, exports.collectWorkflowContextNodeIds)(child, out));
|
|
43
|
+
};
|
|
44
|
+
exports.collectWorkflowContextNodeIds = collectWorkflowContextNodeIds;
|
|
24
45
|
const getTopologicalOrder = (nodes, edges) => {
|
|
25
46
|
const nodeIds = new Set(nodes.map((n) => n.id));
|
|
26
47
|
const inDegree = {};
|
|
@@ -36,6 +57,36 @@ const getTopologicalOrder = (nodes, edges) => {
|
|
|
36
57
|
inDegree[edge.target]++;
|
|
37
58
|
}
|
|
38
59
|
});
|
|
60
|
+
// Virtual dependency edges from IMPLICIT data dependencies: a node that
|
|
61
|
+
// consumes another node's output via a `workflowContext` reference in its
|
|
62
|
+
// config MUST run after that node, even when no explicit edge wires them.
|
|
63
|
+
// Without this, a `data-create-item` that reads a `state-get-local-state`
|
|
64
|
+
// result only through its columnMappings is treated as in-degree 0 and can be
|
|
65
|
+
// ordered (and segmented) BEFORE the state read — so on the server it writes
|
|
66
|
+
// null for that column (run 0a5f554e: `titles.type_field` NOT-NULL violation;
|
|
67
|
+
// the "Add Asset" draft rows came through as "N/A" for the same reason).
|
|
68
|
+
// Control-flow nodes (loop/if/switch/parallel) are skipped — their outputs
|
|
69
|
+
// (e.g. a loop's `currentItem`) are scoped by dedicated edge handles, not a
|
|
70
|
+
// linear data dependency. Edges are added to this LOCAL graph only (never to
|
|
71
|
+
// `workflow.edges`), so loop/branch extraction elsewhere is unaffected.
|
|
72
|
+
const nodeTypeById = new Map(nodes.map((n) => [n.id, n.type]));
|
|
73
|
+
nodes.forEach((node) => {
|
|
74
|
+
const referencedIds = new Set();
|
|
75
|
+
(0, exports.collectWorkflowContextNodeIds)(node.config, referencedIds);
|
|
76
|
+
referencedIds.forEach((refId) => {
|
|
77
|
+
if (refId === node.id || !nodeIds.has(refId)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if ((0, exports.isControlFlowNode)(nodeTypeById.get(refId) || '')) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (adjacency[refId].includes(node.id)) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
adjacency[refId].push(node.id);
|
|
87
|
+
inDegree[node.id]++;
|
|
88
|
+
});
|
|
89
|
+
});
|
|
39
90
|
const queue = [];
|
|
40
91
|
nodeIdArr.forEach((id) => {
|
|
41
92
|
if (inDegree[id] === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-utils.js","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph-utils.js","sourceRoot":"","sources":["../../src/graph-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-count.d.ts","sourceRoot":"","sources":["../../../../src/nodes/data/data-count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"data-count.d.ts","sourceRoot":"","sources":["../../../../src/nodes/data/data-count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA6ChE,eAAO,MAAM,SAAS,EAAE,oBAMvB,CAAA"}
|
|
@@ -7,6 +7,22 @@ async function data_count(config, context) {
|
|
|
7
7
|
const tableName = config.tableName;
|
|
8
8
|
const filters = config.filters || [];
|
|
9
9
|
const baseUrl = (context && context.__baseUrl) || '';
|
|
10
|
+
// Unresolved route-param sentinel in a filter → validation error (see
|
|
11
|
+
// resolveTemplateTokenString in runtime-utils) instead of counting nothing.
|
|
12
|
+
for (let __fi = 0; __fi < filters.length; __fi++) {
|
|
13
|
+
const __f = filters[__fi];
|
|
14
|
+
if (__f &&
|
|
15
|
+
(__f.value === '__TQ_UNRESOLVED_ROUTE_PARAM__' ||
|
|
16
|
+
__f.destination === '__TQ_UNRESOLVED_ROUTE_PARAM__')) {
|
|
17
|
+
const __col = __f.column || __f.source || __f.field || 'unknown';
|
|
18
|
+
return {
|
|
19
|
+
count: 0,
|
|
20
|
+
error: 'Filter on "' +
|
|
21
|
+
__col +
|
|
22
|
+
'" requires the page route parameter, which is not available in this context',
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
10
26
|
try {
|
|
11
27
|
const response = await fetch(baseUrl + '/api/data/' + dataSourceId + '/count', {
|
|
12
28
|
method: 'POST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-count.js","sourceRoot":"","sources":["../../../../src/nodes/data/data-count.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,KAAK,UAAU,UAAU,CAAC,MAAW,EAAE,OAAY;IACjD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IAEpD,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,EAAE;YAC7E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;SAC7C,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,oBAAoB,EAAE,CAAA;SAC/D;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAA;KAClC;IAAC,OAAO,GAAY,EAAE;QACrB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAA;KACnD;AACH,CAAC;AACY,QAAA,SAAS,GAAyB;IAC7C,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,QAAQ;IACtB,eAAe;QACb,OAAO,IAAA,uBAAe,EAAC,UAAU,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"data-count.js","sourceRoot":"","sources":["../../../../src/nodes/data/data-count.ts"],"names":[],"mappings":";;;AAAA,oCAAgE;AAEhE,KAAK,UAAU,UAAU,CAAC,MAAW,EAAE,OAAY;IACjD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAA;IACxC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IACpC,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;IAEpD,sEAAsE;IACtE,4EAA4E;IAC5E,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,GAAG,GAAQ,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9B,IACE,GAAG;YACH,CAAC,GAAG,CAAC,KAAK,KAAK,+BAA+B;gBAC5C,GAAG,CAAC,WAAW,KAAK,+BAA+B,CAAC,EACtD;YACA,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,CAAA;YAChE,OAAO;gBACL,KAAK,EAAE,CAAC;gBACR,KAAK,EACH,aAAa;oBACb,KAAK;oBACL,6EAA6E;aAChF,CAAA;SACF;KACF;IAED,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,EAAE;YAC7E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;SAC7C,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAElC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,oBAAoB,EAAE,CAAA;SAC/D;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAA;KAClC;IAAC,OAAO,GAAY,EAAE;QACrB,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAA;KACnD;AACH,CAAC;AACY,QAAA,SAAS,GAAyB;IAC7C,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,QAAQ;IACtB,eAAe;QACb,OAAO,IAAA,uBAAe,EAAC,UAAU,CAAC,CAAA;IACpC,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-create-item.d.ts","sourceRoot":"","sources":["../../../../src/nodes/data/data-create-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"data-create-item.d.ts","sourceRoot":"","sources":["../../../../src/nodes/data/data-create-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,UAAU,CAAA;AA2NhE,eAAO,MAAM,cAAc,EAAE,oBAM5B,CAAA"}
|
|
@@ -7,6 +7,26 @@ async function data_create_item(config, context) {
|
|
|
7
7
|
const tableName = config.tableName;
|
|
8
8
|
const columnMappings = config.columnMappings || {};
|
|
9
9
|
const baseUrl = (context && context.__baseUrl) || '';
|
|
10
|
+
// An unresolved route-param sentinel (see resolveTemplateTokenString in
|
|
11
|
+
// runtime-utils) in a columnMapping degrades to null so the INSERT itself
|
|
12
|
+
// survives — only attribution-style columns lose their value.
|
|
13
|
+
if (Array.isArray(columnMappings)) {
|
|
14
|
+
for (let __mi = 0; __mi < columnMappings.length; __mi++) {
|
|
15
|
+
const __m = columnMappings[__mi];
|
|
16
|
+
if (__m && __m.value === '__TQ_UNRESOLVED_ROUTE_PARAM__') {
|
|
17
|
+
__m.value = null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else if (columnMappings && typeof columnMappings === 'object') {
|
|
22
|
+
const __mKeys = Object.keys(columnMappings);
|
|
23
|
+
for (let __mi = 0; __mi < __mKeys.length; __mi++) {
|
|
24
|
+
if (columnMappings[__mKeys[__mi]] === '__TQ_UNRESOLVED_ROUTE_PARAM__') {
|
|
25
|
+
;
|
|
26
|
+
columnMappings[__mKeys[__mi]] = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
10
30
|
// Surface the workflow's anonymous-user UUID to the data-api so a
|
|
11
31
|
// guest-checkout INSERT can recover its `user_id` from the
|
|
12
32
|
// resolve-user output instead of being NULL'd by the UUID
|