@bubblelab/bubble-runtime 0.1.14 → 0.1.15
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/dist/extraction/BubbleParser.d.ts +186 -8
- package/dist/extraction/BubbleParser.d.ts.map +1 -1
- package/dist/extraction/BubbleParser.js +2255 -117
- package/dist/extraction/BubbleParser.js.map +1 -1
- package/dist/extraction/index.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/injection/BubbleInjector.d.ts +27 -1
- package/dist/injection/BubbleInjector.d.ts.map +1 -1
- package/dist/injection/BubbleInjector.js +341 -29
- package/dist/injection/BubbleInjector.js.map +1 -1
- package/dist/injection/LoggerInjector.d.ts +12 -1
- package/dist/injection/LoggerInjector.d.ts.map +1 -1
- package/dist/injection/LoggerInjector.js +301 -13
- package/dist/injection/LoggerInjector.js.map +1 -1
- package/dist/injection/index.js +1 -0
- package/dist/parse/BubbleScript.d.ts +46 -2
- package/dist/parse/BubbleScript.d.ts.map +1 -1
- package/dist/parse/BubbleScript.js +39 -11
- package/dist/parse/BubbleScript.js.map +1 -1
- package/dist/parse/index.d.ts +0 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/runtime/BubbleRunner.d.ts +8 -2
- package/dist/runtime/BubbleRunner.d.ts.map +1 -1
- package/dist/runtime/BubbleRunner.js +40 -18
- package/dist/runtime/BubbleRunner.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/types.js +1 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/bubble-helper.d.ts +2 -2
- package/dist/utils/bubble-helper.d.ts.map +1 -1
- package/dist/utils/bubble-helper.js +6 -1
- package/dist/utils/bubble-helper.js.map +1 -1
- package/dist/utils/normalize-control-flow.d.ts +14 -0
- package/dist/utils/normalize-control-flow.d.ts.map +1 -0
- package/dist/utils/normalize-control-flow.js +179 -0
- package/dist/utils/normalize-control-flow.js.map +1 -0
- package/dist/utils/parameter-formatter.d.ts +14 -5
- package/dist/utils/parameter-formatter.d.ts.map +1 -1
- package/dist/utils/parameter-formatter.js +164 -45
- package/dist/utils/parameter-formatter.js.map +1 -1
- package/dist/utils/sanitize-script.d.ts +11 -0
- package/dist/utils/sanitize-script.d.ts.map +1 -0
- package/dist/utils/sanitize-script.js +43 -0
- package/dist/utils/sanitize-script.js.map +1 -0
- package/dist/validation/BubbleValidator.d.ts +15 -0
- package/dist/validation/BubbleValidator.d.ts.map +1 -1
- package/dist/validation/BubbleValidator.js +168 -1
- package/dist/validation/BubbleValidator.js.map +1 -1
- package/dist/validation/index.d.ts +6 -3
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +32 -9
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/lint-rules.d.ts +91 -0
- package/dist/validation/lint-rules.d.ts.map +1 -0
- package/dist/validation/lint-rules.js +755 -0
- package/dist/validation/lint-rules.js.map +1 -0
- package/package.json +4 -4
- package/dist/parse/traceDependencies.d.ts +0 -18
- package/dist/parse/traceDependencies.d.ts.map +0 -1
- package/dist/parse/traceDependencies.js +0 -195
- package/dist/parse/traceDependencies.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import ts from 'typescript';
|
|
3
|
+
import { enhanceErrorMessage } from '@bubblelab/shared-schemas';
|
|
3
4
|
/**
|
|
4
5
|
* Minimal warmed TypeScript checker for validating string scripts.
|
|
5
6
|
* - Uses LanguageService for fast incremental diagnostics
|
|
@@ -115,7 +116,7 @@ class LanguageServiceTypechecker {
|
|
|
115
116
|
const line = lc.line + 1; // 1-based line numbers
|
|
116
117
|
const message = ts.flattenDiagnosticMessageText(d.messageText, ts.sys.newLine);
|
|
117
118
|
const code = d.code ? `TS${d.code}: ` : '';
|
|
118
|
-
const entry = `${code}${message}`;
|
|
119
|
+
const entry = `${code}${enhanceErrorMessage(message)}`;
|
|
119
120
|
if (lineErrors[line]) {
|
|
120
121
|
lineErrors[line] = `${lineErrors[line]}\n${entry}`;
|
|
121
122
|
}
|
|
@@ -123,9 +124,19 @@ class LanguageServiceTypechecker {
|
|
|
123
124
|
lineErrors[line] = entry;
|
|
124
125
|
}
|
|
125
126
|
}
|
|
127
|
+
// Extract variable types if there are errors
|
|
128
|
+
let variableTypes;
|
|
129
|
+
if (all.length > 0) {
|
|
130
|
+
const program = this.languageService.getProgram();
|
|
131
|
+
const sourceFile = program?.getSourceFile(normalized);
|
|
132
|
+
if (sourceFile && program) {
|
|
133
|
+
variableTypes = this.extractVariableTypes(sourceFile, program);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
126
136
|
return {
|
|
127
137
|
success: all.length === 0,
|
|
128
138
|
errors: Object.keys(lineErrors).length ? lineErrors : undefined,
|
|
139
|
+
variableTypes,
|
|
129
140
|
};
|
|
130
141
|
}
|
|
131
142
|
// Warm the service by building a Program once. Speeds up first query.
|
|
@@ -144,6 +155,162 @@ class LanguageServiceTypechecker {
|
|
|
144
155
|
getNewLine: () => ts.sys.newLine,
|
|
145
156
|
};
|
|
146
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Expands a type to show its full structure, not just the type name
|
|
160
|
+
*/
|
|
161
|
+
expandTypeString(type, typeChecker, sourceFile, visited = new Set()) {
|
|
162
|
+
// Prevent infinite recursion
|
|
163
|
+
if (visited.has(type)) {
|
|
164
|
+
return typeChecker.typeToString(type);
|
|
165
|
+
}
|
|
166
|
+
visited.add(type);
|
|
167
|
+
// Get the base type string
|
|
168
|
+
const baseTypeString = typeChecker.typeToString(type);
|
|
169
|
+
// If it's an object type, expand it to show properties
|
|
170
|
+
if (type.isClassOrInterface() || type.getSymbol()) {
|
|
171
|
+
const symbol = type.getSymbol();
|
|
172
|
+
if (symbol) {
|
|
173
|
+
// Check if it's a type alias or interface that we should expand
|
|
174
|
+
const declarations = symbol.getDeclarations();
|
|
175
|
+
if (declarations && declarations.length > 0) {
|
|
176
|
+
const declaration = declarations[0];
|
|
177
|
+
// If it's a type alias, try to get the aliased type
|
|
178
|
+
if (ts.isTypeAliasDeclaration(declaration)) {
|
|
179
|
+
const aliasedType = typeChecker.getTypeAtLocation(declaration.type);
|
|
180
|
+
if (aliasedType !== type) {
|
|
181
|
+
const expanded = this.expandTypeString(aliasedType, typeChecker, sourceFile, visited);
|
|
182
|
+
// Only use expanded if it's different and more detailed
|
|
183
|
+
if (expanded !== baseTypeString &&
|
|
184
|
+
expanded.length > baseTypeString.length) {
|
|
185
|
+
return expanded;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// For object types, try to get a more detailed representation
|
|
192
|
+
const properties = type.getProperties();
|
|
193
|
+
if (properties.length > 0) {
|
|
194
|
+
// Check if the type string is just the name (not expanded)
|
|
195
|
+
// If it's a simple name without braces, try to expand it
|
|
196
|
+
if (!baseTypeString.includes('{') &&
|
|
197
|
+
!baseTypeString.includes('[') &&
|
|
198
|
+
!baseTypeString.includes('|')) {
|
|
199
|
+
// Try to get the expanded type by checking the type's structure
|
|
200
|
+
const expandedParts = [];
|
|
201
|
+
for (const prop of properties.slice(0, 20)) {
|
|
202
|
+
// Limit to 20 properties to avoid huge output
|
|
203
|
+
const propDeclaration = prop.valueDeclaration ||
|
|
204
|
+
prop.getDeclarations()?.[0] ||
|
|
205
|
+
sourceFile;
|
|
206
|
+
const propType = typeChecker.getTypeOfSymbolAtLocation(prop, propDeclaration);
|
|
207
|
+
const propTypeString = this.expandTypeString(propType, typeChecker, sourceFile, new Set(visited));
|
|
208
|
+
const optional = prop.getFlags() & ts.SymbolFlags.Optional ? '?' : '';
|
|
209
|
+
expandedParts.push(`${prop.getName()}${optional}: ${propTypeString}`);
|
|
210
|
+
}
|
|
211
|
+
if (expandedParts.length > 0) {
|
|
212
|
+
const remaining = properties.length > 20
|
|
213
|
+
? `... ${properties.length - 20} more`
|
|
214
|
+
: '';
|
|
215
|
+
return `{ ${expandedParts.join('; ')}${remaining ? `; ${remaining}` : ''} }`;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// For union types, expand each member
|
|
221
|
+
if (type.isUnion()) {
|
|
222
|
+
const unionTypes = type.types.map((t) => this.expandTypeString(t, typeChecker, sourceFile, new Set(visited)));
|
|
223
|
+
return unionTypes.join(' | ');
|
|
224
|
+
}
|
|
225
|
+
// For intersection types, expand each member
|
|
226
|
+
if (type.isIntersection()) {
|
|
227
|
+
const intersectionTypes = type.types.map((t) => this.expandTypeString(t, typeChecker, sourceFile, new Set(visited)));
|
|
228
|
+
return intersectionTypes.join(' & ');
|
|
229
|
+
}
|
|
230
|
+
return baseTypeString;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Extracts type definitions for all variables in the source file
|
|
234
|
+
*/
|
|
235
|
+
extractVariableTypes(sourceFile, program) {
|
|
236
|
+
const typeChecker = program.getTypeChecker();
|
|
237
|
+
const variableTypes = [];
|
|
238
|
+
const expandTypeString = (type, visited = new Set()) => this.expandTypeString(type, typeChecker, sourceFile, visited);
|
|
239
|
+
const visit = (node) => {
|
|
240
|
+
// Extract variable declarations
|
|
241
|
+
if (ts.isVariableDeclaration(node)) {
|
|
242
|
+
const name = node.name;
|
|
243
|
+
if (ts.isIdentifier(name)) {
|
|
244
|
+
const variableName = name.text;
|
|
245
|
+
const type = typeChecker.getTypeAtLocation(node);
|
|
246
|
+
const typeString = expandTypeString(type);
|
|
247
|
+
// Get position information
|
|
248
|
+
const position = name.getStart(sourceFile);
|
|
249
|
+
const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, position);
|
|
250
|
+
variableTypes.push({
|
|
251
|
+
name: variableName,
|
|
252
|
+
type: typeString,
|
|
253
|
+
line: line + 1,
|
|
254
|
+
column: character + 1,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
else if (ts.isObjectBindingPattern(name) ||
|
|
258
|
+
ts.isArrayBindingPattern(name)) {
|
|
259
|
+
// Handle destructuring patterns (e.g., const { a, b } = ... or const [a, b] = ...)
|
|
260
|
+
name.elements.forEach((element) => {
|
|
261
|
+
if (ts.isBindingElement(element) && element.name) {
|
|
262
|
+
if (ts.isIdentifier(element.name)) {
|
|
263
|
+
const variableName = element.name.text;
|
|
264
|
+
const type = typeChecker.getTypeAtLocation(element);
|
|
265
|
+
const typeString = expandTypeString(type);
|
|
266
|
+
const position = element.name.getStart(sourceFile);
|
|
267
|
+
const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, position);
|
|
268
|
+
variableTypes.push({
|
|
269
|
+
name: variableName,
|
|
270
|
+
type: typeString,
|
|
271
|
+
line: line + 1,
|
|
272
|
+
column: character + 1,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// Extract function parameters
|
|
280
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name)) {
|
|
281
|
+
const parameterName = node.name.text;
|
|
282
|
+
const type = typeChecker.getTypeAtLocation(node);
|
|
283
|
+
const typeString = expandTypeString(type);
|
|
284
|
+
const position = node.name.getStart(sourceFile);
|
|
285
|
+
const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, position);
|
|
286
|
+
variableTypes.push({
|
|
287
|
+
name: parameterName,
|
|
288
|
+
type: typeString,
|
|
289
|
+
line: line + 1,
|
|
290
|
+
column: character + 1,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// Extract class properties
|
|
294
|
+
if (ts.isPropertyDeclaration(node) && node.name) {
|
|
295
|
+
if (ts.isIdentifier(node.name)) {
|
|
296
|
+
const propertyName = node.name.text;
|
|
297
|
+
const type = typeChecker.getTypeAtLocation(node);
|
|
298
|
+
const typeString = expandTypeString(type);
|
|
299
|
+
const position = node.name.getStart(sourceFile);
|
|
300
|
+
const { line, character } = ts.getLineAndCharacterOfPosition(sourceFile, position);
|
|
301
|
+
variableTypes.push({
|
|
302
|
+
name: propertyName,
|
|
303
|
+
type: typeString,
|
|
304
|
+
line: line + 1,
|
|
305
|
+
column: character + 1,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
ts.forEachChild(node, visit);
|
|
310
|
+
};
|
|
311
|
+
visit(sourceFile);
|
|
312
|
+
return variableTypes;
|
|
313
|
+
}
|
|
147
314
|
}
|
|
148
315
|
// Pool warm services by tsconfig path for server reuse
|
|
149
316
|
const checkerPool = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BubbleValidator.js","sourceRoot":"","sources":["../../src/validation/BubbleValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BubbleValidator.js","sourceRoot":"","sources":["../../src/validation/BubbleValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type { ParsedBubbleWithInfo, CredentialType, BubbleTrigger } from '@bubblelab/shared-schemas';
|
|
1
|
+
import type { ParsedBubbleWithInfo, CredentialType, BubbleTrigger, ParsedWorkflow } from '@bubblelab/shared-schemas';
|
|
2
2
|
import { BubbleFactory } from '@bubblelab/bubble-core';
|
|
3
3
|
export interface ValidationResult {
|
|
4
4
|
valid: boolean;
|
|
5
5
|
errors?: string[];
|
|
6
|
+
syntaxErrors?: string[];
|
|
7
|
+
lintErrors?: string[];
|
|
6
8
|
}
|
|
7
9
|
export interface ValidationAndExtractionResult extends ValidationResult {
|
|
8
10
|
bubbleParameters?: Record<number, ParsedBubbleWithInfo>;
|
|
11
|
+
workflow?: ParsedWorkflow;
|
|
9
12
|
inputSchema?: Record<string, unknown>;
|
|
10
13
|
trigger?: BubbleTrigger;
|
|
11
14
|
requiredCredentials?: Record<string, CredentialType[]>;
|
|
@@ -17,7 +20,7 @@ export interface ValidationAndExtractionResult extends ValidationResult {
|
|
|
17
20
|
* @param code - The TypeScript code to validate
|
|
18
21
|
* @returns ValidationResult with success status and errors
|
|
19
22
|
*/
|
|
20
|
-
export declare function validateBubbleFlow(code: string): Promise<ValidationResult>;
|
|
23
|
+
export declare function validateBubbleFlow(code: string, requireLintErrors?: boolean): Promise<ValidationResult>;
|
|
21
24
|
/**
|
|
22
25
|
* Validates a BubbleFlow TypeScript code and extracts bubble parameters
|
|
23
26
|
* This is the main entry point for bubble runtime validation with extraction
|
|
@@ -25,5 +28,5 @@ export declare function validateBubbleFlow(code: string): Promise<ValidationResu
|
|
|
25
28
|
* @param code - The TypeScript code to validate
|
|
26
29
|
* @returns ValidationAndExtractionResult with success status, errors, and extracted parameters
|
|
27
30
|
*/
|
|
28
|
-
export declare function validateAndExtract(code: string, bubbleFactory: BubbleFactory): Promise<ValidationAndExtractionResult>;
|
|
31
|
+
export declare function validateAndExtract(code: string, bubbleFactory: BubbleFactory, requireLintErrors?: boolean): Promise<ValidationAndExtractionResult>;
|
|
29
32
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,cAAc,EACf,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKvD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,6BAA8B,SAAQ,gBAAgB;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACxD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;CACxD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,iBAAiB,GAAE,OAAc,GAChC,OAAO,CAAC,gBAAgB,CAAC,CA8D3B;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,aAAa,EAC5B,iBAAiB,GAAE,OAAc,GAChC,OAAO,CAAC,6BAA6B,CAAC,CAuDxC"}
|
package/dist/validation/index.js
CHANGED
|
@@ -2,6 +2,8 @@ import { validateScript } from './BubbleValidator.js';
|
|
|
2
2
|
import { BubbleScript } from '../parse/BubbleScript.js';
|
|
3
3
|
import { BubbleInjector } from '../injection/BubbleInjector.js';
|
|
4
4
|
import { validateCronExpression } from '@bubblelab/shared-schemas';
|
|
5
|
+
import { defaultLintRuleRegistry } from './lint-rules.js';
|
|
6
|
+
import ts from 'typescript';
|
|
5
7
|
/**
|
|
6
8
|
* Validates a BubbleFlow TypeScript code
|
|
7
9
|
* This focuses purely on validation without extraction
|
|
@@ -9,25 +11,44 @@ import { validateCronExpression } from '@bubblelab/shared-schemas';
|
|
|
9
11
|
* @param code - The TypeScript code to validate
|
|
10
12
|
* @returns ValidationResult with success status and errors
|
|
11
13
|
*/
|
|
12
|
-
export async function validateBubbleFlow(code) {
|
|
13
|
-
const
|
|
14
|
+
export async function validateBubbleFlow(code, requireLintErrors = true) {
|
|
15
|
+
const syntaxErrors = [];
|
|
16
|
+
const lintErrors = [];
|
|
14
17
|
try {
|
|
15
18
|
// Step 1: Basic syntax and structure validation
|
|
16
19
|
const validationResult = validateScript(code);
|
|
17
20
|
if (!validationResult.success) {
|
|
18
21
|
if (validationResult.errors) {
|
|
19
|
-
|
|
22
|
+
const scriptErrors = Object.entries(validationResult.errors).map(([lineNumber, errorMessage]) => `line ${lineNumber}: ${errorMessage}`);
|
|
23
|
+
syntaxErrors.push(...scriptErrors);
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
// Step 2: Validate BubbleFlow class requirements
|
|
23
27
|
const structuralErrors = validateBubbleFlowStructure(code);
|
|
24
|
-
|
|
28
|
+
syntaxErrors.push(...structuralErrors);
|
|
25
29
|
// Step 3: Validate bubble usage (only registered bubbles)
|
|
26
30
|
const bubbleErrors = validateBubbleUsage(code);
|
|
27
|
-
|
|
31
|
+
syntaxErrors.push(...bubbleErrors);
|
|
32
|
+
// Step 4: Run lint rules
|
|
33
|
+
try {
|
|
34
|
+
const sourceFile = ts.createSourceFile('bubbleflow.ts', code, ts.ScriptTarget.Latest, true);
|
|
35
|
+
const lintRuleErrors = defaultLintRuleRegistry.validateAll(sourceFile);
|
|
36
|
+
const lintErrorMessages = lintRuleErrors.map((err) => `line ${err.line}: ${err.message}`);
|
|
37
|
+
lintErrors.push(...lintErrorMessages);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
// If lint rule execution fails, log but don't fail validation
|
|
41
|
+
console.error('Error running lint rules:', error);
|
|
42
|
+
}
|
|
43
|
+
// Combine all errors for backward compatibility
|
|
44
|
+
const allErrors = requireLintErrors
|
|
45
|
+
? [...syntaxErrors, ...lintErrors]
|
|
46
|
+
: syntaxErrors;
|
|
28
47
|
return {
|
|
29
|
-
valid:
|
|
30
|
-
errors:
|
|
48
|
+
valid: allErrors.length === 0,
|
|
49
|
+
errors: allErrors.length > 0 ? allErrors : undefined,
|
|
50
|
+
syntaxErrors: syntaxErrors.length > 0 ? syntaxErrors : undefined,
|
|
51
|
+
lintErrors: lintErrors.length > 0 ? lintErrors : undefined,
|
|
31
52
|
};
|
|
32
53
|
}
|
|
33
54
|
catch (error) {
|
|
@@ -35,6 +56,7 @@ export async function validateBubbleFlow(code) {
|
|
|
35
56
|
return {
|
|
36
57
|
valid: false,
|
|
37
58
|
errors: [errorMessage],
|
|
59
|
+
syntaxErrors: [errorMessage],
|
|
38
60
|
};
|
|
39
61
|
}
|
|
40
62
|
}
|
|
@@ -45,9 +67,9 @@ export async function validateBubbleFlow(code) {
|
|
|
45
67
|
* @param code - The TypeScript code to validate
|
|
46
68
|
* @returns ValidationAndExtractionResult with success status, errors, and extracted parameters
|
|
47
69
|
*/
|
|
48
|
-
export async function validateAndExtract(code, bubbleFactory) {
|
|
70
|
+
export async function validateAndExtract(code, bubbleFactory, requireLintErrors = true) {
|
|
49
71
|
// First validate the code
|
|
50
|
-
const validationResult = await validateBubbleFlow(code);
|
|
72
|
+
const validationResult = await validateBubbleFlow(code, requireLintErrors);
|
|
51
73
|
// If validation fails, return early
|
|
52
74
|
if (!validationResult.valid) {
|
|
53
75
|
return validationResult;
|
|
@@ -77,6 +99,7 @@ export async function validateAndExtract(code, bubbleFactory) {
|
|
|
77
99
|
return {
|
|
78
100
|
...validationResult,
|
|
79
101
|
bubbleParameters,
|
|
102
|
+
workflow: script.getWorkflow(),
|
|
80
103
|
inputSchema: script.getPayloadJsonSchema() || {},
|
|
81
104
|
trigger: script.getBubbleTriggerEventType() || undefined,
|
|
82
105
|
requiredCredentials: Object.keys(requiredCredentials).length > 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a lint error found during validation
|
|
4
|
+
*/
|
|
5
|
+
export interface LintError {
|
|
6
|
+
line: number;
|
|
7
|
+
column?: number;
|
|
8
|
+
message: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Context containing pre-parsed AST information for lint rules
|
|
12
|
+
* This allows rules to avoid redundant AST traversals
|
|
13
|
+
*/
|
|
14
|
+
export interface LintRuleContext {
|
|
15
|
+
sourceFile: ts.SourceFile;
|
|
16
|
+
bubbleFlowClass: ts.ClassDeclaration | null;
|
|
17
|
+
handleMethod: ts.MethodDeclaration | null;
|
|
18
|
+
handleMethodBody: ts.Block | null;
|
|
19
|
+
importedBubbleClasses: Set<string>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Interface for lint rules that can validate BubbleFlow code
|
|
23
|
+
*/
|
|
24
|
+
export interface LintRule {
|
|
25
|
+
name: string;
|
|
26
|
+
validate(context: LintRuleContext): LintError[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Registry that manages and executes all lint rules
|
|
30
|
+
*/
|
|
31
|
+
export declare class LintRuleRegistry {
|
|
32
|
+
private rules;
|
|
33
|
+
/**
|
|
34
|
+
* Register a lint rule
|
|
35
|
+
*/
|
|
36
|
+
register(rule: LintRule): void;
|
|
37
|
+
/**
|
|
38
|
+
* Execute all registered rules on the given code
|
|
39
|
+
* Traverses AST once and shares context with all rules for efficiency
|
|
40
|
+
*/
|
|
41
|
+
validateAll(sourceFile: ts.SourceFile): LintError[];
|
|
42
|
+
/**
|
|
43
|
+
* Get all registered rule names
|
|
44
|
+
*/
|
|
45
|
+
getRuleNames(): string[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Lint rule that prevents throw statements directly in the handle method
|
|
49
|
+
*/
|
|
50
|
+
export declare const noThrowInHandleRule: LintRule;
|
|
51
|
+
/**
|
|
52
|
+
* Lint rule that prevents direct bubble instantiation in the handle method
|
|
53
|
+
*/
|
|
54
|
+
export declare const noDirectBubbleInstantiationInHandleRule: LintRule;
|
|
55
|
+
/**
|
|
56
|
+
* Lint rule that prevents credentials parameter from being used in bubble instantiations
|
|
57
|
+
*/
|
|
58
|
+
export declare const noCredentialsParameterRule: LintRule;
|
|
59
|
+
/**
|
|
60
|
+
* Lint rule that prevents usage of process.env
|
|
61
|
+
*/
|
|
62
|
+
export declare const noProcessEnvRule: LintRule;
|
|
63
|
+
/**
|
|
64
|
+
* Lint rule that prevents method invocations inside complex expressions
|
|
65
|
+
*/
|
|
66
|
+
export declare const noMethodInvocationInComplexExpressionRule: LintRule;
|
|
67
|
+
/**
|
|
68
|
+
* Lint rule that prevents try-catch statements in the handle method
|
|
69
|
+
* Try-catch blocks interfere with runtime instrumentation and error handling
|
|
70
|
+
*/
|
|
71
|
+
export declare const noTryCatchInHandleRule: LintRule;
|
|
72
|
+
/**
|
|
73
|
+
* Lint rule that prevents methods from calling other methods
|
|
74
|
+
* Methods should only be called from the handle method, not from other methods
|
|
75
|
+
*/
|
|
76
|
+
export declare const noMethodCallingMethodRule: LintRule;
|
|
77
|
+
/**
|
|
78
|
+
* Lint rule that prevents usage of 'any' type
|
|
79
|
+
* Using 'any' bypasses TypeScript's type checking and should be avoided
|
|
80
|
+
*/
|
|
81
|
+
export declare const noAnyTypeRule: LintRule;
|
|
82
|
+
/**
|
|
83
|
+
* Lint rule that prevents multiple BubbleFlow classes in a single file
|
|
84
|
+
* Only one class extending BubbleFlow is allowed per file for proper runtime instrumentation
|
|
85
|
+
*/
|
|
86
|
+
export declare const singleBubbleFlowClassRule: LintRule;
|
|
87
|
+
/**
|
|
88
|
+
* Default registry instance with all rules registered
|
|
89
|
+
*/
|
|
90
|
+
export declare const defaultLintRuleRegistry: LintRuleRegistry;
|
|
91
|
+
//# sourceMappingURL=lint-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint-rules.d.ts","sourceRoot":"","sources":["../../src/validation/lint-rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAC1B,eAAe,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC1C,gBAAgB,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;IAClC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,SAAS,EAAE,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAkB;IAE/B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAI9B;;;OAGG;IACH,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,SAAS,EAAE;IAiBnD;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;CAGzB;AAgGD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAoBjC,CAAC;AAwDF;;GAEG;AACH,eAAO,MAAM,uCAAuC,EAAE,QAsBrD,CAAC;AAmPF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAmCxC,CAAC;AA+DF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAsC9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yCAAyC,EAAE,QA0CvD,CAAC;AAwGF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,QA+BpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAuCvC,CAAC;AAsCF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QA0B3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,QA+CvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,kBAAyB,CAAC"}
|