@n8n-as-code/transformer 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +215 -0
- package/dist/compiler/index.d.ts +6 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +6 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/typescript-parser.d.ts +87 -0
- package/dist/compiler/typescript-parser.d.ts.map +1 -0
- package/dist/compiler/typescript-parser.js +379 -0
- package/dist/compiler/typescript-parser.js.map +1 -0
- package/dist/compiler/workflow-builder.d.ts +48 -0
- package/dist/compiler/workflow-builder.d.ts.map +1 -0
- package/dist/compiler/workflow-builder.js +231 -0
- package/dist/compiler/workflow-builder.js.map +1 -0
- package/dist/decorators/helpers.d.ts +27 -0
- package/dist/decorators/helpers.d.ts.map +1 -0
- package/dist/decorators/helpers.js +97 -0
- package/dist/decorators/helpers.js.map +1 -0
- package/dist/decorators/index.d.ts +11 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +10 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/links.d.ts +70 -0
- package/dist/decorators/links.d.ts.map +1 -0
- package/dist/decorators/links.js +85 -0
- package/dist/decorators/links.js.map +1 -0
- package/dist/decorators/node.d.ts +32 -0
- package/dist/decorators/node.d.ts.map +1 -0
- package/dist/decorators/node.js +43 -0
- package/dist/decorators/node.js.map +1 -0
- package/dist/decorators/types.d.ts +122 -0
- package/dist/decorators/types.d.ts.map +1 -0
- package/dist/decorators/types.js +13 -0
- package/dist/decorators/types.js.map +1 -0
- package/dist/decorators/workflow.d.ts +32 -0
- package/dist/decorators/workflow.d.ts.map +1 -0
- package/dist/decorators/workflow.js +38 -0
- package/dist/decorators/workflow.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/ast-to-typescript.d.ts +55 -0
- package/dist/parser/ast-to-typescript.d.ts.map +1 -0
- package/dist/parser/ast-to-typescript.js +337 -0
- package/dist/parser/ast-to-typescript.js.map +1 -0
- package/dist/parser/index.d.ts +6 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +6 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/json-to-ast.d.ts +61 -0
- package/dist/parser/json-to-ast.d.ts.map +1 -0
- package/dist/parser/json-to-ast.js +222 -0
- package/dist/parser/json-to-ast.js.map +1 -0
- package/dist/types.d.ts +227 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/formatting.d.ts +33 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +83 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/naming.d.ts +39 -0
- package/dist/utils/naming.d.ts.map +1 -0
- package/dist/utils/naming.js +161 -0
- package/dist/utils/naming.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-to-ast.js","sourceRoot":"","sources":["../../src/parser/json-to-ast.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Types for n8n Workflow Transformer
|
|
3
|
+
*
|
|
4
|
+
* Bidirectional transformation: n8n JSON ↔ TypeScript
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Intermediate AST representation of a workflow
|
|
8
|
+
* Used as bridge between JSON and TypeScript
|
|
9
|
+
*/
|
|
10
|
+
export interface WorkflowAST {
|
|
11
|
+
metadata: WorkflowMetadata;
|
|
12
|
+
nodes: NodeAST[];
|
|
13
|
+
connections: ConnectionAST[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Workflow metadata (from @workflow decorator)
|
|
17
|
+
*/
|
|
18
|
+
export interface WorkflowMetadata {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
active: boolean;
|
|
22
|
+
settings?: WorkflowSettings;
|
|
23
|
+
projectId?: string;
|
|
24
|
+
projectName?: string;
|
|
25
|
+
homeProject?: {
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
type: string;
|
|
29
|
+
};
|
|
30
|
+
isArchived?: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Workflow settings
|
|
34
|
+
*/
|
|
35
|
+
export interface WorkflowSettings {
|
|
36
|
+
executionOrder?: 'v0' | 'v1' | 'v2';
|
|
37
|
+
timeSavedMode?: 'fixed' | 'calculated';
|
|
38
|
+
errorWorkflow?: string;
|
|
39
|
+
timezone?: string;
|
|
40
|
+
saveManualExecutions?: boolean;
|
|
41
|
+
saveDataErrorExecution?: 'all' | 'none';
|
|
42
|
+
saveExecutionProgress?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Node in AST representation
|
|
46
|
+
*/
|
|
47
|
+
export interface NodeAST {
|
|
48
|
+
propertyName: string;
|
|
49
|
+
displayName: string;
|
|
50
|
+
type: string;
|
|
51
|
+
version: number;
|
|
52
|
+
position: [number, number];
|
|
53
|
+
credentials?: Record<string, CredentialReference>;
|
|
54
|
+
onError?: 'continueErrorOutput' | 'continueRegularOutput' | 'stopWorkflow';
|
|
55
|
+
parameters: Record<string, any>;
|
|
56
|
+
aiDependencies?: AIDependencies;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Credential reference
|
|
60
|
+
*/
|
|
61
|
+
export interface CredentialReference {
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* AI node dependencies (langchain sub-nodes)
|
|
67
|
+
*/
|
|
68
|
+
export interface AIDependencies {
|
|
69
|
+
ai_languageModel?: string;
|
|
70
|
+
ai_memory?: string;
|
|
71
|
+
ai_outputParser?: string;
|
|
72
|
+
ai_tool?: string[];
|
|
73
|
+
ai_agent?: string;
|
|
74
|
+
ai_chain?: string;
|
|
75
|
+
ai_document?: string[];
|
|
76
|
+
ai_textSplitter?: string;
|
|
77
|
+
ai_embedding?: string;
|
|
78
|
+
ai_retriever?: string;
|
|
79
|
+
ai_reranker?: string;
|
|
80
|
+
ai_vectorStore?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Connection between nodes
|
|
84
|
+
*/
|
|
85
|
+
export interface ConnectionAST {
|
|
86
|
+
from: {
|
|
87
|
+
node: string;
|
|
88
|
+
output: number;
|
|
89
|
+
isError?: boolean;
|
|
90
|
+
};
|
|
91
|
+
to: {
|
|
92
|
+
node: string;
|
|
93
|
+
input: number;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* n8n workflow JSON structure
|
|
98
|
+
*/
|
|
99
|
+
export interface N8nWorkflow {
|
|
100
|
+
id: string;
|
|
101
|
+
name: string;
|
|
102
|
+
active: boolean;
|
|
103
|
+
nodes: N8nNode[];
|
|
104
|
+
connections: N8nConnections;
|
|
105
|
+
settings?: WorkflowSettings;
|
|
106
|
+
tags?: string[];
|
|
107
|
+
projectId?: string;
|
|
108
|
+
projectName?: string;
|
|
109
|
+
homeProject?: {
|
|
110
|
+
id: string;
|
|
111
|
+
name: string;
|
|
112
|
+
type: string;
|
|
113
|
+
};
|
|
114
|
+
isArchived?: boolean;
|
|
115
|
+
versionId?: string;
|
|
116
|
+
activeVersionId?: string;
|
|
117
|
+
versionCounter?: number;
|
|
118
|
+
pinData?: any;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* n8n node JSON structure
|
|
122
|
+
*/
|
|
123
|
+
export interface N8nNode {
|
|
124
|
+
id?: string;
|
|
125
|
+
name: string;
|
|
126
|
+
type: string;
|
|
127
|
+
typeVersion?: number;
|
|
128
|
+
position: [number, number];
|
|
129
|
+
parameters: Record<string, any>;
|
|
130
|
+
credentials?: Record<string, CredentialReference>;
|
|
131
|
+
onError?: 'continueErrorOutput' | 'continueRegularOutput' | 'stopWorkflow';
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* n8n connections structure
|
|
135
|
+
*
|
|
136
|
+
* Format: { [sourceNodeName]: { [outputType]: [ [{ node, type, index }] ] } }
|
|
137
|
+
*/
|
|
138
|
+
export interface N8nConnections {
|
|
139
|
+
[sourceNodeName: string]: {
|
|
140
|
+
[outputType: string]: Array<Array<{
|
|
141
|
+
node: string;
|
|
142
|
+
type: string;
|
|
143
|
+
index: number;
|
|
144
|
+
}>>;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Options for JSON → TypeScript transformation
|
|
149
|
+
*/
|
|
150
|
+
export interface JsonToTypeScriptOptions {
|
|
151
|
+
/** Apply Prettier formatting to generated code */
|
|
152
|
+
format?: boolean;
|
|
153
|
+
/** Comment style for generated code */
|
|
154
|
+
commentStyle?: 'minimal' | 'verbose';
|
|
155
|
+
/** Group nodes by type in comments */
|
|
156
|
+
groupNodes?: boolean;
|
|
157
|
+
/** Auto-layout positions (for AI-generated workflows) */
|
|
158
|
+
autoLayout?: boolean;
|
|
159
|
+
/** Class name (if not derived from workflow name) */
|
|
160
|
+
className?: string;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Options for TypeScript → JSON transformation
|
|
164
|
+
*/
|
|
165
|
+
export interface TypeScriptToJsonOptions {
|
|
166
|
+
/** Validate against n8n schema */
|
|
167
|
+
validate?: boolean;
|
|
168
|
+
/** Generate deterministic node IDs (for testing) */
|
|
169
|
+
deterministicIds?: boolean;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Validation result
|
|
173
|
+
*/
|
|
174
|
+
export interface ValidationResult {
|
|
175
|
+
valid: boolean;
|
|
176
|
+
errors: ValidationError[];
|
|
177
|
+
warnings?: ValidationWarning[];
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Validation error
|
|
181
|
+
*/
|
|
182
|
+
export interface ValidationError {
|
|
183
|
+
type: 'syntax' | 'structure' | 'reference' | 'schema';
|
|
184
|
+
message: string;
|
|
185
|
+
location?: {
|
|
186
|
+
file?: string;
|
|
187
|
+
line?: number;
|
|
188
|
+
column?: number;
|
|
189
|
+
node?: string;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Validation warning
|
|
194
|
+
*/
|
|
195
|
+
export interface ValidationWarning {
|
|
196
|
+
type: 'deprecated' | 'performance' | 'best-practice';
|
|
197
|
+
message: string;
|
|
198
|
+
location?: {
|
|
199
|
+
node?: string;
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Property name generation context
|
|
204
|
+
* Tracks used names to avoid collisions
|
|
205
|
+
*/
|
|
206
|
+
export interface PropertyNameContext {
|
|
207
|
+
usedNames: Set<string>;
|
|
208
|
+
collisionCounter: Map<string, number>;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Position for auto-layout
|
|
212
|
+
*/
|
|
213
|
+
export interface LayoutPosition {
|
|
214
|
+
x: number;
|
|
215
|
+
y: number;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Auto-layout configuration
|
|
219
|
+
*/
|
|
220
|
+
export interface AutoLayoutConfig {
|
|
221
|
+
startX: number;
|
|
222
|
+
startY: number;
|
|
223
|
+
horizontalSpacing: number;
|
|
224
|
+
verticalSpacing: number;
|
|
225
|
+
columnWidth: number;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code formatting utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Prettier integration
|
|
6
|
+
* - Comment generation
|
|
7
|
+
* - Code structure formatting
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Format TypeScript code with Prettier
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatTypeScript(code: string): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Generate section comment
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateSectionComment(title: string, style?: 'minimal' | 'verbose'): string;
|
|
17
|
+
/**
|
|
18
|
+
* Generate inline comment
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateInlineComment(text: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Indent code block
|
|
23
|
+
*/
|
|
24
|
+
export declare function indent(code: string, level?: number, spaces?: number): string;
|
|
25
|
+
/**
|
|
26
|
+
* Generate import statement
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateImportStatement(items: string[], from: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Wrap object in braces with proper formatting
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatObject(obj: Record<string, any>, inline?: boolean): string;
|
|
33
|
+
//# sourceMappingURL=formatting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAepE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,GAAG,SAAqB,GAAG,MAAM,CAOtG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,MAAM,GAAE,MAAU,GAAG,MAAM,CAMlF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAE,OAAe,GAAG,MAAM,CAqBtF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code formatting utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Prettier integration
|
|
6
|
+
* - Comment generation
|
|
7
|
+
* - Code structure formatting
|
|
8
|
+
*/
|
|
9
|
+
import * as prettier from 'prettier';
|
|
10
|
+
/**
|
|
11
|
+
* Format TypeScript code with Prettier
|
|
12
|
+
*/
|
|
13
|
+
export async function formatTypeScript(code) {
|
|
14
|
+
try {
|
|
15
|
+
return await prettier.format(code, {
|
|
16
|
+
parser: 'typescript',
|
|
17
|
+
singleQuote: true,
|
|
18
|
+
trailingComma: 'es5',
|
|
19
|
+
tabWidth: 4,
|
|
20
|
+
printWidth: 120,
|
|
21
|
+
semi: true,
|
|
22
|
+
arrowParens: 'always',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.warn('Prettier formatting failed, returning unformatted code:', error);
|
|
27
|
+
return code;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate section comment
|
|
32
|
+
*/
|
|
33
|
+
export function generateSectionComment(title, style = 'verbose') {
|
|
34
|
+
if (style === 'minimal') {
|
|
35
|
+
return `// ${title}`;
|
|
36
|
+
}
|
|
37
|
+
const separator = '='.repeat(69);
|
|
38
|
+
return `// ${separator}\n// ${title}\n// ${separator}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate inline comment
|
|
42
|
+
*/
|
|
43
|
+
export function generateInlineComment(text) {
|
|
44
|
+
return `// ${text}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Indent code block
|
|
48
|
+
*/
|
|
49
|
+
export function indent(code, level = 1, spaces = 4) {
|
|
50
|
+
const indentation = ' '.repeat(level * spaces);
|
|
51
|
+
return code
|
|
52
|
+
.split('\n')
|
|
53
|
+
.map(line => line.length > 0 ? indentation + line : line)
|
|
54
|
+
.join('\n');
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate import statement
|
|
58
|
+
*/
|
|
59
|
+
export function generateImportStatement(items, from) {
|
|
60
|
+
return `import { ${items.join(', ')} } from '${from}';`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Wrap object in braces with proper formatting
|
|
64
|
+
*/
|
|
65
|
+
export function formatObject(obj, inline = false) {
|
|
66
|
+
if (Object.keys(obj).length === 0) {
|
|
67
|
+
return '{}';
|
|
68
|
+
}
|
|
69
|
+
if (inline && Object.keys(obj).length === 1) {
|
|
70
|
+
const [key, value] = Object.entries(obj)[0];
|
|
71
|
+
return `{ ${key}: ${JSON.stringify(value)} }`;
|
|
72
|
+
}
|
|
73
|
+
// Multi-line format
|
|
74
|
+
const entries = Object.entries(obj).map(([key, value]) => {
|
|
75
|
+
const formattedValue = JSON.stringify(value, null, 4)
|
|
76
|
+
.split('\n')
|
|
77
|
+
.map((line, i) => i === 0 ? line : ' ' + line)
|
|
78
|
+
.join('\n');
|
|
79
|
+
return ` ${key}: ${formattedValue}`;
|
|
80
|
+
});
|
|
81
|
+
return `{\n${entries.join(',\n')}\n}`;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility exports
|
|
3
|
+
*/
|
|
4
|
+
export { createPropertyNameContext, generatePropertyName, generateClassName } from './naming.js';
|
|
5
|
+
export { formatTypeScript, generateSectionComment, generateInlineComment, generateImportStatement, indent, formatObject } from './formatting.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,MAAM,EACN,YAAY,EACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility exports
|
|
3
|
+
*/
|
|
4
|
+
export { createPropertyNameContext, generatePropertyName, generateClassName } from './naming.js';
|
|
5
|
+
export { formatTypeScript, generateSectionComment, generateInlineComment, generateImportStatement, indent, formatObject } from './formatting.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACH,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,MAAM,EACN,YAAY,EACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Name generation utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Convert display names to valid TypeScript identifiers
|
|
6
|
+
* - Handle name collisions (HttpRequest1, HttpRequest2, ...)
|
|
7
|
+
* - Sanitize special characters
|
|
8
|
+
*/
|
|
9
|
+
import { PropertyNameContext } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a property name context for tracking used names
|
|
12
|
+
*/
|
|
13
|
+
export declare function createPropertyNameContext(): PropertyNameContext;
|
|
14
|
+
/**
|
|
15
|
+
* Generate a valid TypeScript property name from a node display name
|
|
16
|
+
*
|
|
17
|
+
* Rules:
|
|
18
|
+
* - Remove emojis and special characters
|
|
19
|
+
* - Convert to PascalCase
|
|
20
|
+
* - Handle collisions with numeric suffix (HttpRequest1, HttpRequest2)
|
|
21
|
+
* - Ensure valid JavaScript identifier
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* "🕘 Schedule Trigger" → "ScheduleTrigger"
|
|
25
|
+
* "HTTP Request" → "HttpRequest"
|
|
26
|
+
* "HTTP Request" (2nd) → "HttpRequest1"
|
|
27
|
+
* "⚙️ Configuration" → "Configuration"
|
|
28
|
+
* "⚙️ Configuration" (2nd) → "Configuration1"
|
|
29
|
+
*/
|
|
30
|
+
export declare function generatePropertyName(displayName: string, context: PropertyNameContext): string;
|
|
31
|
+
/**
|
|
32
|
+
* Generate a unique class name from workflow name
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* "Job Application Assistant" → "JobApplicationAssistantWorkflow"
|
|
36
|
+
* "My Workflow" → "MyWorkflowWorkflow"
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateClassName(workflowName: string): string;
|
|
39
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAK/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,GAC7B,MAAM,CA4BR;AAwGD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAS9D"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Name generation utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Convert display names to valid TypeScript identifiers
|
|
6
|
+
* - Handle name collisions (HttpRequest1, HttpRequest2, ...)
|
|
7
|
+
* - Sanitize special characters
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Create a property name context for tracking used names
|
|
11
|
+
*/
|
|
12
|
+
export function createPropertyNameContext() {
|
|
13
|
+
return {
|
|
14
|
+
usedNames: new Set(),
|
|
15
|
+
collisionCounter: new Map()
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate a valid TypeScript property name from a node display name
|
|
20
|
+
*
|
|
21
|
+
* Rules:
|
|
22
|
+
* - Remove emojis and special characters
|
|
23
|
+
* - Convert to PascalCase
|
|
24
|
+
* - Handle collisions with numeric suffix (HttpRequest1, HttpRequest2)
|
|
25
|
+
* - Ensure valid JavaScript identifier
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* "🕘 Schedule Trigger" → "ScheduleTrigger"
|
|
29
|
+
* "HTTP Request" → "HttpRequest"
|
|
30
|
+
* "HTTP Request" (2nd) → "HttpRequest1"
|
|
31
|
+
* "⚙️ Configuration" → "Configuration"
|
|
32
|
+
* "⚙️ Configuration" (2nd) → "Configuration1"
|
|
33
|
+
*/
|
|
34
|
+
export function generatePropertyName(displayName, context) {
|
|
35
|
+
// Step 1: Clean the name (remove emojis, special chars)
|
|
36
|
+
let cleaned = cleanDisplayName(displayName);
|
|
37
|
+
// Step 2: Convert to PascalCase
|
|
38
|
+
let baseName = toPascalCase(cleaned);
|
|
39
|
+
// Step 3: Ensure valid identifier
|
|
40
|
+
baseName = ensureValidIdentifier(baseName);
|
|
41
|
+
// Step 4: Handle collisions
|
|
42
|
+
let finalName = baseName;
|
|
43
|
+
if (context.usedNames.has(baseName)) {
|
|
44
|
+
// Get or initialize counter for this base name
|
|
45
|
+
const currentCount = context.collisionCounter.get(baseName) || 0;
|
|
46
|
+
const nextCount = currentCount + 1;
|
|
47
|
+
// Use numeric suffix (Agent → Agent1)
|
|
48
|
+
finalName = `${baseName}${nextCount}`;
|
|
49
|
+
context.collisionCounter.set(baseName, nextCount);
|
|
50
|
+
}
|
|
51
|
+
// Step 5: Register the final name
|
|
52
|
+
context.usedNames.add(finalName);
|
|
53
|
+
return finalName;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Clean display name: remove emojis, trim, normalize spaces
|
|
57
|
+
*/
|
|
58
|
+
function cleanDisplayName(displayName) {
|
|
59
|
+
return displayName
|
|
60
|
+
// Remove emojis (Unicode emoji ranges)
|
|
61
|
+
.replace(/[\u{1F300}-\u{1F9FF}]/gu, '')
|
|
62
|
+
// Remove other special Unicode symbols
|
|
63
|
+
.replace(/[\u{2600}-\u{26FF}]/gu, '')
|
|
64
|
+
.replace(/[\u{2700}-\u{27BF}]/gu, '')
|
|
65
|
+
// Remove colons (common separator after emojis)
|
|
66
|
+
.replace(/^[\s:]+/, '')
|
|
67
|
+
// Normalize whitespace
|
|
68
|
+
.replace(/\s+/g, ' ')
|
|
69
|
+
.trim();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Convert string to PascalCase
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* "schedule trigger" → "ScheduleTrigger"
|
|
76
|
+
* "HTTP Request" → "HttpRequest"
|
|
77
|
+
* "split in batches" → "SplitInBatches"
|
|
78
|
+
*/
|
|
79
|
+
function toPascalCase(str) {
|
|
80
|
+
return str
|
|
81
|
+
// Split on spaces, hyphens, underscores
|
|
82
|
+
.split(/[\s\-_]+/)
|
|
83
|
+
// Capitalize first letter of each word
|
|
84
|
+
.map(word => {
|
|
85
|
+
if (word.length === 0)
|
|
86
|
+
return '';
|
|
87
|
+
// Preserve acronyms (HTTP, AI, etc.)
|
|
88
|
+
if (word === word.toUpperCase() && word.length > 1) {
|
|
89
|
+
return word.charAt(0) + word.slice(1).toLowerCase();
|
|
90
|
+
}
|
|
91
|
+
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
92
|
+
})
|
|
93
|
+
.join('');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Transliterate accented/diacritic characters to their ASCII base equivalent
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* "Mémoire" → "Memoire"
|
|
100
|
+
* "Ärger" → "Arger"
|
|
101
|
+
* "naïve" → "naive"
|
|
102
|
+
*/
|
|
103
|
+
function transliterate(str) {
|
|
104
|
+
// NFD decomposes accented chars into base + combining diacritic, then strip diacritics
|
|
105
|
+
return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Ensure string is a valid JavaScript identifier
|
|
109
|
+
*
|
|
110
|
+
* - Must start with letter, $, or _
|
|
111
|
+
* - Can contain letters, digits, $, _
|
|
112
|
+
* - Cannot be a reserved word
|
|
113
|
+
*/
|
|
114
|
+
function ensureValidIdentifier(name) {
|
|
115
|
+
// Transliterate accented characters before stripping (é→e, à→a, ü→u, …)
|
|
116
|
+
let cleaned = transliterate(name).replace(/[^a-zA-Z0-9_$]/g, '');
|
|
117
|
+
// If starts with number, prefix with underscore
|
|
118
|
+
if (/^\d/.test(cleaned)) {
|
|
119
|
+
cleaned = '_' + cleaned;
|
|
120
|
+
}
|
|
121
|
+
// If empty, use default name
|
|
122
|
+
if (cleaned.length === 0) {
|
|
123
|
+
cleaned = 'Node';
|
|
124
|
+
}
|
|
125
|
+
// If reserved word, append underscore
|
|
126
|
+
if (isReservedWord(cleaned)) {
|
|
127
|
+
cleaned = cleaned + '_';
|
|
128
|
+
}
|
|
129
|
+
return cleaned;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Check if string is a JavaScript reserved word
|
|
133
|
+
*/
|
|
134
|
+
function isReservedWord(name) {
|
|
135
|
+
const reserved = new Set([
|
|
136
|
+
'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger',
|
|
137
|
+
'default', 'delete', 'do', 'else', 'enum', 'export', 'extends',
|
|
138
|
+
'false', 'finally', 'for', 'function', 'if', 'import', 'in',
|
|
139
|
+
'instanceof', 'new', 'null', 'return', 'super', 'switch', 'this',
|
|
140
|
+
'throw', 'true', 'try', 'typeof', 'var', 'void', 'while', 'with',
|
|
141
|
+
'yield', 'let', 'static', 'implements', 'interface', 'package',
|
|
142
|
+
'private', 'protected', 'public'
|
|
143
|
+
]);
|
|
144
|
+
return reserved.has(name.toLowerCase());
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Generate a unique class name from workflow name
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* "Job Application Assistant" → "JobApplicationAssistantWorkflow"
|
|
151
|
+
* "My Workflow" → "MyWorkflowWorkflow"
|
|
152
|
+
*/
|
|
153
|
+
export function generateClassName(workflowName) {
|
|
154
|
+
const baseName = toPascalCase(cleanDisplayName(workflowName));
|
|
155
|
+
// Ensure ends with "Workflow" suffix
|
|
156
|
+
if (!baseName.endsWith('Workflow')) {
|
|
157
|
+
return `${baseName}Workflow`;
|
|
158
|
+
}
|
|
159
|
+
return baseName;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@n8n-as-code/transformer",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Bidirectional transformer: n8n JSON workflows ↔ TypeScript",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc -b",
|
|
10
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
11
|
+
"test": "vitest",
|
|
12
|
+
"test:watch": "vitest --watch",
|
|
13
|
+
"typecheck": "tsc --noEmit"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"reflect-metadata": "^0.2.1",
|
|
17
|
+
"ts-morph": "^21.0.1",
|
|
18
|
+
"prettier": "^3.2.5",
|
|
19
|
+
"uuid": "^9.0.1"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/node": "^20.10.0",
|
|
23
|
+
"@types/uuid": "^9.0.7",
|
|
24
|
+
"typescript": "^5.3.3",
|
|
25
|
+
"vitest": "^1.2.0"
|
|
26
|
+
},
|
|
27
|
+
"files": [
|
|
28
|
+
"dist/"
|
|
29
|
+
],
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
}
|
|
33
|
+
}
|