@wexample/js-pseudocode 0.1.13 → 0.1.16
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 +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/Config/ClassConfig.d.ts +18 -0
- package/dist/lib/Config/ClassConfig.d.ts.map +1 -0
- package/dist/lib/Config/ClassConfig.js +62 -0
- package/dist/lib/Config/ClassConfig.js.map +1 -0
- package/dist/lib/Config/ClassMethodConfig.d.ts +18 -0
- package/dist/lib/Config/ClassMethodConfig.d.ts.map +1 -0
- package/dist/lib/Config/ClassMethodConfig.js +40 -0
- package/dist/lib/Config/ClassMethodConfig.js.map +1 -0
- package/dist/lib/Config/ClassPropertyConfig.d.ts +14 -0
- package/dist/lib/Config/ClassPropertyConfig.d.ts.map +1 -0
- package/dist/lib/Config/ClassPropertyConfig.js +17 -0
- package/dist/lib/Config/ClassPropertyConfig.js.map +1 -0
- package/dist/lib/Config/ConstantConfig.d.ts +14 -0
- package/dist/lib/Config/ConstantConfig.d.ts.map +1 -0
- package/dist/lib/Config/ConstantConfig.js +25 -0
- package/dist/lib/Config/ConstantConfig.js.map +1 -0
- package/dist/lib/Config/DocCommentConfig.d.ts +18 -0
- package/dist/lib/Config/DocCommentConfig.d.ts.map +1 -0
- package/dist/lib/Config/DocCommentConfig.js +33 -0
- package/dist/lib/Config/DocCommentConfig.js.map +1 -0
- package/dist/lib/Config/FunctionConfig.d.ts +18 -0
- package/dist/lib/Config/FunctionConfig.d.ts.map +1 -0
- package/dist/lib/Config/FunctionConfig.js +40 -0
- package/dist/lib/Config/FunctionConfig.js.map +1 -0
- package/dist/lib/Config/FunctionParameterConfig.d.ts +17 -0
- package/dist/lib/Config/FunctionParameterConfig.d.ts.map +1 -0
- package/dist/lib/Config/FunctionParameterConfig.js +22 -0
- package/dist/lib/Config/FunctionParameterConfig.js.map +1 -0
- package/dist/lib/Config/FunctionReturnConfig.d.ts +10 -0
- package/dist/lib/Config/FunctionReturnConfig.d.ts.map +1 -0
- package/dist/lib/Config/FunctionReturnConfig.js +18 -0
- package/dist/lib/Config/FunctionReturnConfig.js.map +1 -0
- package/dist/lib/Generator/CodeGenerator.d.ts +4 -0
- package/dist/lib/Generator/CodeGenerator.d.ts.map +1 -0
- package/dist/lib/Generator/CodeGenerator.js +36 -0
- package/dist/lib/Generator/CodeGenerator.js.map +1 -0
- package/package.json +7 -5
- package/src/index.ts +0 -1
- package/src/lib/Config/ClassConfig.ts +0 -77
- package/src/lib/Config/ClassMethodConfig.ts +0 -56
- package/src/lib/Config/ClassPropertyConfig.ts +0 -27
- package/src/lib/Config/ConstantConfig.ts +0 -34
- package/src/lib/Config/DocCommentConfig.ts +0 -54
- package/src/lib/Config/FunctionConfig.ts +0 -56
- package/src/lib/Config/FunctionParameterConfig.ts +0 -41
- package/src/lib/Config/FunctionReturnConfig.ts +0 -20
- package/src/lib/Generator/CodeGenerator.ts +0 -36
package/README.md
CHANGED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ClassMethodConfig } from './ClassMethodConfig.js';
|
|
2
|
+
import { ClassPropertyConfig } from './ClassPropertyConfig.js';
|
|
3
|
+
export declare class ClassConfig {
|
|
4
|
+
type: "class";
|
|
5
|
+
name: string;
|
|
6
|
+
description: string | null;
|
|
7
|
+
properties: ClassPropertyConfig[];
|
|
8
|
+
methods: ClassMethodConfig[];
|
|
9
|
+
constructor({ name, description, properties, methods, }: {
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string | null;
|
|
12
|
+
properties?: ClassPropertyConfig[];
|
|
13
|
+
methods?: ClassMethodConfig[];
|
|
14
|
+
});
|
|
15
|
+
static fromConfig(data: any): ClassConfig;
|
|
16
|
+
toCode(): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ClassConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/ClassConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,qBAAa,WAAW;IACtB,IAAI,UAAoB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;gBAEjB,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,OAAO,GACR,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;QACnC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAC/B;IAOD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW;IAezC,MAAM,IAAI,MAAM;CAkCjB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ClassMethodConfig } from './ClassMethodConfig.js';
|
|
2
|
+
import { ClassPropertyConfig } from './ClassPropertyConfig.js';
|
|
3
|
+
export class ClassConfig {
|
|
4
|
+
constructor({ name, description, properties, methods, }) {
|
|
5
|
+
this.type = 'class';
|
|
6
|
+
this.name = name;
|
|
7
|
+
this.description = description || null;
|
|
8
|
+
this.properties = properties || [];
|
|
9
|
+
this.methods = methods || [];
|
|
10
|
+
}
|
|
11
|
+
static fromConfig(data) {
|
|
12
|
+
const properties = Array.isArray(data.properties)
|
|
13
|
+
? data.properties.map((p) => ClassPropertyConfig.fromConfig(p))
|
|
14
|
+
: [];
|
|
15
|
+
const methods = Array.isArray(data.methods)
|
|
16
|
+
? data.methods.map((m) => ClassMethodConfig.fromConfig(m))
|
|
17
|
+
: [];
|
|
18
|
+
return new ClassConfig({
|
|
19
|
+
name: data.name,
|
|
20
|
+
description: data.description,
|
|
21
|
+
properties,
|
|
22
|
+
methods,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
toCode() {
|
|
26
|
+
const lines = [];
|
|
27
|
+
if (this.description) {
|
|
28
|
+
lines.push('/**');
|
|
29
|
+
for (const l of this.description.split('\n'))
|
|
30
|
+
lines.push(` * ${l}`);
|
|
31
|
+
lines.push(' */');
|
|
32
|
+
}
|
|
33
|
+
lines.push(`class ${this.name} {`);
|
|
34
|
+
// constructor for default properties
|
|
35
|
+
if (this.properties.length) {
|
|
36
|
+
lines.push(' constructor() {');
|
|
37
|
+
for (const p of this.properties) {
|
|
38
|
+
const val = p.defaultValue !== undefined
|
|
39
|
+
? typeof p.defaultValue === 'string'
|
|
40
|
+
? JSON.stringify(p.defaultValue)
|
|
41
|
+
: String(p.defaultValue)
|
|
42
|
+
: 'undefined';
|
|
43
|
+
if (p.description)
|
|
44
|
+
lines.push(` // ${p.description}`);
|
|
45
|
+
lines.push(` this.${p.name} = ${val};`);
|
|
46
|
+
}
|
|
47
|
+
lines.push(' }');
|
|
48
|
+
}
|
|
49
|
+
// methods
|
|
50
|
+
for (const m of this.methods) {
|
|
51
|
+
const methodSrc = m
|
|
52
|
+
.toCode()
|
|
53
|
+
.split('\n')
|
|
54
|
+
.map((l) => ` ${l}`);
|
|
55
|
+
for (const l of methodSrc)
|
|
56
|
+
lines.push(l);
|
|
57
|
+
}
|
|
58
|
+
lines.push('}');
|
|
59
|
+
return lines.join('\n');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ClassConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/ClassConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FunctionParameterConfig } from './FunctionParameterConfig.js';
|
|
2
|
+
import { FunctionReturnConfig } from './FunctionReturnConfig.js';
|
|
3
|
+
export declare class ClassMethodConfig {
|
|
4
|
+
type: "method";
|
|
5
|
+
name: string;
|
|
6
|
+
description: string | null;
|
|
7
|
+
parameters: FunctionParameterConfig[];
|
|
8
|
+
return: FunctionReturnConfig | null;
|
|
9
|
+
constructor({ name, description, parameters, returnConfig, }: {
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string | null;
|
|
12
|
+
parameters?: FunctionParameterConfig[];
|
|
13
|
+
returnConfig?: FunctionReturnConfig | null;
|
|
14
|
+
});
|
|
15
|
+
static fromConfig(data: any): ClassMethodConfig;
|
|
16
|
+
toCode(): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ClassMethodConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassMethodConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/ClassMethodConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,iBAAiB;IAC5B,IAAI,WAAqB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;gBAExB,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,YAAY,GACb,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;QACvC,YAAY,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;KAC5C;IAOD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,iBAAiB;IAa/C,MAAM,IAAI,MAAM;CAcjB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DocCommentConfig } from './DocCommentConfig.js';
|
|
2
|
+
import { FunctionParameterConfig } from './FunctionParameterConfig.js';
|
|
3
|
+
import { FunctionReturnConfig } from './FunctionReturnConfig.js';
|
|
4
|
+
export class ClassMethodConfig {
|
|
5
|
+
constructor({ name, description, parameters, returnConfig, }) {
|
|
6
|
+
this.type = 'method';
|
|
7
|
+
this.name = name;
|
|
8
|
+
this.description = description || null;
|
|
9
|
+
this.parameters = parameters || [];
|
|
10
|
+
this.return = returnConfig || null;
|
|
11
|
+
}
|
|
12
|
+
static fromConfig(data) {
|
|
13
|
+
const params = Array.isArray(data.parameters)
|
|
14
|
+
? data.parameters.map((p) => FunctionParameterConfig.fromConfig(p))
|
|
15
|
+
: [];
|
|
16
|
+
const ret = FunctionReturnConfig.fromConfig(data.return);
|
|
17
|
+
return new ClassMethodConfig({
|
|
18
|
+
name: data.name,
|
|
19
|
+
description: data.description,
|
|
20
|
+
parameters: params,
|
|
21
|
+
returnConfig: ret,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
toCode() {
|
|
25
|
+
const paramsSrc = this.parameters.map((p) => p.toCode()).join(', ');
|
|
26
|
+
const jsdoc = DocCommentConfig.buildJSDoc({
|
|
27
|
+
description: this.description,
|
|
28
|
+
parameters: this.parameters,
|
|
29
|
+
returnConfig: this.return,
|
|
30
|
+
});
|
|
31
|
+
const lines = [];
|
|
32
|
+
if (jsdoc)
|
|
33
|
+
lines.push(jsdoc);
|
|
34
|
+
lines.push(`${this.name}(${paramsSrc}) {`);
|
|
35
|
+
lines.push(' // TODO: Implement method body');
|
|
36
|
+
lines.push('}');
|
|
37
|
+
return lines.join('\n');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ClassMethodConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassMethodConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/ClassMethodConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,OAAO,iBAAiB;IAO5B,YAAY,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,YAAY,GAMb;QAhBD,SAAI,GAAG,QAAiB,CAAC;QAiBvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,YAAY,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,iBAAiB,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class ClassPropertyConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
type: string | null;
|
|
4
|
+
description: string | null;
|
|
5
|
+
defaultValue: unknown;
|
|
6
|
+
constructor({ name, type, description, defaultValue, }: {
|
|
7
|
+
name: string;
|
|
8
|
+
type?: string | null;
|
|
9
|
+
description?: string | null;
|
|
10
|
+
defaultValue?: unknown;
|
|
11
|
+
});
|
|
12
|
+
static fromConfig(data: any): ClassPropertyConfig;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ClassPropertyConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassPropertyConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/ClassPropertyConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAmB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;gBAEV,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,YAAwB,GACzB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE;IAO9F,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,mBAAmB;CAQlD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class ClassPropertyConfig {
|
|
2
|
+
constructor({ name, type, description, defaultValue = undefined, }) {
|
|
3
|
+
this.name = name;
|
|
4
|
+
this.type = type || null;
|
|
5
|
+
this.description = description || null;
|
|
6
|
+
this.defaultValue = defaultValue;
|
|
7
|
+
}
|
|
8
|
+
static fromConfig(data) {
|
|
9
|
+
return new ClassPropertyConfig({
|
|
10
|
+
name: data.name,
|
|
11
|
+
type: data.type,
|
|
12
|
+
description: data.description,
|
|
13
|
+
defaultValue: data.default,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=ClassPropertyConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassPropertyConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/ClassPropertyConfig.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,mBAAmB;IAM9B,YAAY,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,YAAY,GAAG,SAAS,GACoE;QAC5F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,OAAO,IAAI,mBAAmB,CAAC;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,OAAO;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class ConstantConfig {
|
|
2
|
+
type: "constant";
|
|
3
|
+
name: string;
|
|
4
|
+
value: unknown;
|
|
5
|
+
description: string | null;
|
|
6
|
+
constructor({ name, value, description, }: {
|
|
7
|
+
name: string;
|
|
8
|
+
value: unknown;
|
|
9
|
+
description?: string | null;
|
|
10
|
+
});
|
|
11
|
+
static fromConfig(data: any): ConstantConfig;
|
|
12
|
+
toCode(): string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ConstantConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConstantConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/ConstantConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,IAAI,aAAuB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEf,EACV,IAAI,EACJ,KAAK,EACL,WAAW,GACZ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAMhE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAQ5C,MAAM,IAAI,MAAM;CASjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class ConstantConfig {
|
|
2
|
+
constructor({ name, value, description, }) {
|
|
3
|
+
this.type = 'constant';
|
|
4
|
+
this.name = name;
|
|
5
|
+
this.value = value;
|
|
6
|
+
this.description = description ?? null;
|
|
7
|
+
}
|
|
8
|
+
static fromConfig(data) {
|
|
9
|
+
return new ConstantConfig({
|
|
10
|
+
name: data.name,
|
|
11
|
+
value: data.value,
|
|
12
|
+
description: data.description,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
toCode() {
|
|
16
|
+
const lines = [];
|
|
17
|
+
if (this.description) {
|
|
18
|
+
lines.push(`// ${this.description}`);
|
|
19
|
+
}
|
|
20
|
+
const val = typeof this.value === 'string' ? JSON.stringify(this.value) : String(this.value);
|
|
21
|
+
lines.push(`const ${this.name} = ${val};`);
|
|
22
|
+
return lines.join('\n');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ConstantConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConstantConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/ConstantConfig.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAMzB,YAAY,EACV,IAAI,EACJ,KAAK,EACL,WAAW,GACmD;QAThE,SAAI,GAAG,UAAmB,CAAC;QAUzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,OAAO,IAAI,cAAc,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FunctionParameterConfig } from './FunctionParameterConfig.js';
|
|
2
|
+
import type { FunctionReturnConfig } from './FunctionReturnConfig.js';
|
|
3
|
+
export declare class DocCommentConfig {
|
|
4
|
+
description: string | null;
|
|
5
|
+
parameters: FunctionParameterConfig[];
|
|
6
|
+
return: FunctionReturnConfig | null;
|
|
7
|
+
constructor({ description, parameters, returnConfig, }: {
|
|
8
|
+
description?: string | null;
|
|
9
|
+
parameters?: FunctionParameterConfig[];
|
|
10
|
+
returnConfig?: FunctionReturnConfig | null;
|
|
11
|
+
});
|
|
12
|
+
static buildJSDoc({ description, parameters, returnConfig, }: {
|
|
13
|
+
description?: string | null;
|
|
14
|
+
parameters: FunctionParameterConfig[];
|
|
15
|
+
returnConfig: FunctionReturnConfig | null;
|
|
16
|
+
}): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=DocCommentConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocCommentConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/DocCommentConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,qBAAa,gBAAgB;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;gBAExB,EACV,WAAkB,EAClB,UAAe,EACf,YAAmB,GACpB,EAAE;QACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;QACvC,YAAY,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;KAC5C;IAMD,MAAM,CAAC,UAAU,CAAC,EAChB,WAAW,EACX,UAAU,EACV,YAAY,GACb,EAAE;QACD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,uBAAuB,EAAE,CAAC;QACtC,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;KAC3C,GAAG,MAAM;CAuBX"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export class DocCommentConfig {
|
|
2
|
+
constructor({ description = null, parameters = [], returnConfig = null, }) {
|
|
3
|
+
this.description = description ?? null;
|
|
4
|
+
this.parameters = parameters;
|
|
5
|
+
this.return = returnConfig ?? null;
|
|
6
|
+
}
|
|
7
|
+
static buildJSDoc({ description, parameters, returnConfig, }) {
|
|
8
|
+
const lines = ['/**'];
|
|
9
|
+
if (description) {
|
|
10
|
+
for (const line of description.split('\n')) {
|
|
11
|
+
lines.push(` * ${line}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const paramLines = [];
|
|
15
|
+
for (const p of parameters) {
|
|
16
|
+
const desc = p.description ? ` - ${p.description}` : '';
|
|
17
|
+
paramLines.push(` * @param ${p.name}${desc}`);
|
|
18
|
+
}
|
|
19
|
+
const retDesc = returnConfig && returnConfig.description ? ` ${returnConfig.description}` : '';
|
|
20
|
+
if (paramLines.length || returnConfig) {
|
|
21
|
+
if (description) {
|
|
22
|
+
lines.push(' *');
|
|
23
|
+
}
|
|
24
|
+
for (const l of paramLines)
|
|
25
|
+
lines.push(l);
|
|
26
|
+
if (returnConfig)
|
|
27
|
+
lines.push(` * @returns${retDesc ? ':' + retDesc : ''}`);
|
|
28
|
+
}
|
|
29
|
+
lines.push(' */');
|
|
30
|
+
return lines.join('\n');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=DocCommentConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocCommentConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/DocCommentConfig.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IAK3B,YAAY,EACV,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,EAAE,EACf,YAAY,GAAG,IAAI,GAKpB;QACC,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,YAAY,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,EAChB,WAAW,EACX,UAAU,EACV,YAAY,GAKb;QACC,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/F,IAAI,UAAU,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;YACtC,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,UAAU;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,YAAY;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { FunctionParameterConfig } from './FunctionParameterConfig.js';
|
|
2
|
+
import { FunctionReturnConfig } from './FunctionReturnConfig.js';
|
|
3
|
+
export declare class FunctionConfig {
|
|
4
|
+
type: "function";
|
|
5
|
+
name: string;
|
|
6
|
+
description: string | null;
|
|
7
|
+
parameters: FunctionParameterConfig[];
|
|
8
|
+
return: FunctionReturnConfig | null;
|
|
9
|
+
constructor({ name, description, parameters, returnConfig, }: {
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string | null;
|
|
12
|
+
parameters?: FunctionParameterConfig[];
|
|
13
|
+
returnConfig?: FunctionReturnConfig | null;
|
|
14
|
+
});
|
|
15
|
+
static fromConfig(data: any): FunctionConfig;
|
|
16
|
+
toCode(): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=FunctionConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/FunctionConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,qBAAa,cAAc;IACzB,IAAI,aAAuB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;gBAExB,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,YAAY,GACb,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;QACvC,YAAY,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;KAC5C;IAOD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc;IAa5C,MAAM,IAAI,MAAM;CAcjB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { DocCommentConfig } from './DocCommentConfig.js';
|
|
2
|
+
import { FunctionParameterConfig } from './FunctionParameterConfig.js';
|
|
3
|
+
import { FunctionReturnConfig } from './FunctionReturnConfig.js';
|
|
4
|
+
export class FunctionConfig {
|
|
5
|
+
constructor({ name, description, parameters, returnConfig, }) {
|
|
6
|
+
this.type = 'function';
|
|
7
|
+
this.name = name;
|
|
8
|
+
this.description = description || null;
|
|
9
|
+
this.parameters = parameters || [];
|
|
10
|
+
this.return = returnConfig || null;
|
|
11
|
+
}
|
|
12
|
+
static fromConfig(data) {
|
|
13
|
+
const params = Array.isArray(data.parameters)
|
|
14
|
+
? data.parameters.map((p) => FunctionParameterConfig.fromConfig(p))
|
|
15
|
+
: [];
|
|
16
|
+
const ret = FunctionReturnConfig.fromConfig(data.return);
|
|
17
|
+
return new FunctionConfig({
|
|
18
|
+
name: data.name,
|
|
19
|
+
description: data.description,
|
|
20
|
+
parameters: params,
|
|
21
|
+
returnConfig: ret,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
toCode() {
|
|
25
|
+
const paramsSrc = this.parameters.map((p) => p.toCode()).join(', ');
|
|
26
|
+
const jsdoc = DocCommentConfig.buildJSDoc({
|
|
27
|
+
description: this.description,
|
|
28
|
+
parameters: this.parameters,
|
|
29
|
+
returnConfig: this.return,
|
|
30
|
+
});
|
|
31
|
+
const lines = [];
|
|
32
|
+
if (jsdoc)
|
|
33
|
+
lines.push(jsdoc);
|
|
34
|
+
lines.push(`function ${this.name}(${paramsSrc}) {`);
|
|
35
|
+
lines.push(` // TODO: Implement function body`);
|
|
36
|
+
lines.push(`}`);
|
|
37
|
+
return lines.join('\n');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=FunctionConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/FunctionConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,OAAO,cAAc;IAOzB,YAAY,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,YAAY,GAMb;QAhBD,SAAI,GAAG,UAAmB,CAAC;QAiBzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,YAAY,IAAI,IAAI,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,GAAG,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,cAAc,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,MAAM;YAClB,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,SAAS,KAAK,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class FunctionParameterConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
type: string | null;
|
|
4
|
+
description: string | null;
|
|
5
|
+
optional: boolean;
|
|
6
|
+
defaultValue: unknown;
|
|
7
|
+
constructor({ name, type, description, optional, defaultValue, }: {
|
|
8
|
+
name: string;
|
|
9
|
+
type?: string | null;
|
|
10
|
+
description?: string | null;
|
|
11
|
+
optional?: boolean;
|
|
12
|
+
defaultValue?: unknown;
|
|
13
|
+
});
|
|
14
|
+
static fromConfig(data: any): FunctionParameterConfig;
|
|
15
|
+
toCode(): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=FunctionParameterConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionParameterConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/FunctionParameterConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAuB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;gBAEV,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,QAAgB,EAChB,YAAwB,GACzB,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB;IAQD,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,uBAAuB;IAUrD,MAAM,IAAI,MAAM;CAGjB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class FunctionParameterConfig {
|
|
2
|
+
constructor({ name, type, description, optional = false, defaultValue = undefined, }) {
|
|
3
|
+
this.name = name;
|
|
4
|
+
this.type = type || null;
|
|
5
|
+
this.description = description || null;
|
|
6
|
+
this.optional = !!optional;
|
|
7
|
+
this.defaultValue = defaultValue;
|
|
8
|
+
}
|
|
9
|
+
static fromConfig(data) {
|
|
10
|
+
return new FunctionParameterConfig({
|
|
11
|
+
name: data.name,
|
|
12
|
+
type: data.type,
|
|
13
|
+
description: data.description,
|
|
14
|
+
optional: data.optional,
|
|
15
|
+
defaultValue: data.default,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
toCode() {
|
|
19
|
+
return this.name;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=FunctionParameterConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionParameterConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/FunctionParameterConfig.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAOlC,YAAY,EACV,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,YAAY,GAAG,SAAS,GAOzB;QACC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,OAAO,IAAI,uBAAuB,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,OAAO;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class FunctionReturnConfig {
|
|
2
|
+
type: string | null;
|
|
3
|
+
description: string | null;
|
|
4
|
+
constructor({ type, description }: {
|
|
5
|
+
type?: string | null;
|
|
6
|
+
description?: string | null;
|
|
7
|
+
});
|
|
8
|
+
static fromConfig(data: any): FunctionReturnConfig | null;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=FunctionReturnConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionReturnConfig.d.ts","sourceRoot":"","sources":["../../../src/lib/Config/FunctionReturnConfig.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAoB;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEf,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAKxF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,oBAAoB,GAAG,IAAI;CAU1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class FunctionReturnConfig {
|
|
2
|
+
constructor({ type, description }) {
|
|
3
|
+
this.type = type || null;
|
|
4
|
+
this.description = description || null;
|
|
5
|
+
}
|
|
6
|
+
static fromConfig(data) {
|
|
7
|
+
if (!data)
|
|
8
|
+
return null;
|
|
9
|
+
if (typeof data !== 'object') {
|
|
10
|
+
throw new Error('Invalid YAML for return: expected mapping with key "type"');
|
|
11
|
+
}
|
|
12
|
+
if (!('type' in data) || !data.type) {
|
|
13
|
+
throw new Error('Invalid YAML for return: missing non-empty "type"');
|
|
14
|
+
}
|
|
15
|
+
return new FunctionReturnConfig({ type: data.type, description: data.description });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=FunctionReturnConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FunctionReturnConfig.js","sourceRoot":"","sources":["../../../src/lib/Config/FunctionReturnConfig.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAoB;IAI/B,YAAY,EAAE,IAAI,EAAE,WAAW,EAAyD;QACtF,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtF,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../../src/lib/Generator/CodeGenerator.ts"],"names":[],"mappings":"AAKA,qBAAa,aAAa;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CA6BnC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import yaml from 'js-yaml';
|
|
2
|
+
import { ClassConfig } from '../Config/ClassConfig.js';
|
|
3
|
+
import { ConstantConfig } from '../Config/ConstantConfig.js';
|
|
4
|
+
import { FunctionConfig } from '../Config/FunctionConfig.js';
|
|
5
|
+
export class CodeGenerator {
|
|
6
|
+
generate(yamlText) {
|
|
7
|
+
const data = yaml.load(yamlText);
|
|
8
|
+
if (!data || !Array.isArray(data.items)) {
|
|
9
|
+
throw new Error('Invalid YAML: expected root with items[]');
|
|
10
|
+
}
|
|
11
|
+
const parts = [];
|
|
12
|
+
for (const item of data.items) {
|
|
13
|
+
switch (item.type) {
|
|
14
|
+
case 'constant': {
|
|
15
|
+
const cfg = ConstantConfig.fromConfig(item);
|
|
16
|
+
parts.push(cfg.toCode());
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
case 'function': {
|
|
20
|
+
const cfg = FunctionConfig.fromConfig(item);
|
|
21
|
+
parts.push(cfg.toCode());
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
case 'class': {
|
|
25
|
+
const cfg = ClassConfig.fromConfig(item);
|
|
26
|
+
parts.push(cfg.toCode());
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
default:
|
|
30
|
+
throw new Error(`Unsupported item type: ${item.type}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return parts.join('\n');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=CodeGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeGenerator.js","sourceRoot":"","sources":["../../../src/lib/Generator/CodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,OAAO,aAAa;IACxB,QAAQ,CAAC,QAAgB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAQ,CAAC;QACxC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;oBACzB,MAAM;gBACR,CAAC;gBACD;oBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wexample/js-pseudocode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
|
-
"
|
|
6
|
+
"dist"
|
|
7
7
|
],
|
|
8
8
|
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"prepublishOnly": "npm run build",
|
|
9
11
|
"test": "node --loader ts-node/esm tests/constant_using_const.test.ts && node --loader ts-node/esm tests/function_basic.test.ts && node --loader ts-node/esm tests/function_complex.test.ts && node --loader ts-node/esm tests/class_basic_calculator.test.ts"
|
|
10
12
|
},
|
|
11
13
|
"devDependencies": {
|
|
@@ -19,14 +21,14 @@
|
|
|
19
21
|
},
|
|
20
22
|
"exports": {
|
|
21
23
|
"./*": {
|
|
22
|
-
"types": "./
|
|
23
|
-
"default": "./
|
|
24
|
+
"types": "./dist/*.d.ts",
|
|
25
|
+
"default": "./dist/*.js"
|
|
24
26
|
}
|
|
25
27
|
},
|
|
26
28
|
"typesVersions": {
|
|
27
29
|
"*": {
|
|
28
30
|
"*": [
|
|
29
|
-
"
|
|
31
|
+
"dist/*"
|
|
30
32
|
]
|
|
31
33
|
}
|
|
32
34
|
},
|
package/src/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { CodeGenerator } from './lib/Generator/CodeGenerator.ts';
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { ClassMethodConfig } from './ClassMethodConfig.js';
|
|
2
|
-
import { ClassPropertyConfig } from './ClassPropertyConfig.js';
|
|
3
|
-
|
|
4
|
-
export class ClassConfig {
|
|
5
|
-
type = 'class' as const;
|
|
6
|
-
name: string;
|
|
7
|
-
description: string | null;
|
|
8
|
-
properties: ClassPropertyConfig[];
|
|
9
|
-
methods: ClassMethodConfig[];
|
|
10
|
-
|
|
11
|
-
constructor({
|
|
12
|
-
name,
|
|
13
|
-
description,
|
|
14
|
-
properties,
|
|
15
|
-
methods,
|
|
16
|
-
}: {
|
|
17
|
-
name: string;
|
|
18
|
-
description?: string | null;
|
|
19
|
-
properties?: ClassPropertyConfig[];
|
|
20
|
-
methods?: ClassMethodConfig[];
|
|
21
|
-
}) {
|
|
22
|
-
this.name = name;
|
|
23
|
-
this.description = description || null;
|
|
24
|
-
this.properties = properties || [];
|
|
25
|
-
this.methods = methods || [];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
static fromConfig(data: any): ClassConfig {
|
|
29
|
-
const properties = Array.isArray(data.properties)
|
|
30
|
-
? data.properties.map((p: any) => ClassPropertyConfig.fromConfig(p))
|
|
31
|
-
: [];
|
|
32
|
-
const methods = Array.isArray(data.methods)
|
|
33
|
-
? data.methods.map((m: any) => ClassMethodConfig.fromConfig(m))
|
|
34
|
-
: [];
|
|
35
|
-
return new ClassConfig({
|
|
36
|
-
name: data.name,
|
|
37
|
-
description: data.description,
|
|
38
|
-
properties,
|
|
39
|
-
methods,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
toCode(): string {
|
|
44
|
-
const lines: string[] = [];
|
|
45
|
-
if (this.description) {
|
|
46
|
-
lines.push('/**');
|
|
47
|
-
for (const l of this.description.split('\n')) lines.push(` * ${l}`);
|
|
48
|
-
lines.push(' */');
|
|
49
|
-
}
|
|
50
|
-
lines.push(`class ${this.name} {`);
|
|
51
|
-
// constructor for default properties
|
|
52
|
-
if (this.properties.length) {
|
|
53
|
-
lines.push(' constructor() {');
|
|
54
|
-
for (const p of this.properties) {
|
|
55
|
-
const val =
|
|
56
|
-
p.defaultValue !== undefined
|
|
57
|
-
? typeof p.defaultValue === 'string'
|
|
58
|
-
? JSON.stringify(p.defaultValue)
|
|
59
|
-
: String(p.defaultValue)
|
|
60
|
-
: 'undefined';
|
|
61
|
-
if (p.description) lines.push(` // ${p.description}`);
|
|
62
|
-
lines.push(` this.${p.name} = ${val};`);
|
|
63
|
-
}
|
|
64
|
-
lines.push(' }');
|
|
65
|
-
}
|
|
66
|
-
// methods
|
|
67
|
-
for (const m of this.methods) {
|
|
68
|
-
const methodSrc = m
|
|
69
|
-
.toCode()
|
|
70
|
-
.split('\n')
|
|
71
|
-
.map((l) => ` ${l}`);
|
|
72
|
-
for (const l of methodSrc) lines.push(l);
|
|
73
|
-
}
|
|
74
|
-
lines.push('}');
|
|
75
|
-
return lines.join('\n');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { DocCommentConfig } from './DocCommentConfig.ts';
|
|
2
|
-
import { FunctionParameterConfig } from './FunctionParameterConfig.ts';
|
|
3
|
-
import { FunctionReturnConfig } from './FunctionReturnConfig.ts';
|
|
4
|
-
|
|
5
|
-
export class ClassMethodConfig {
|
|
6
|
-
type = 'method' as const;
|
|
7
|
-
name: string;
|
|
8
|
-
description: string | null;
|
|
9
|
-
parameters: FunctionParameterConfig[];
|
|
10
|
-
return: FunctionReturnConfig | null;
|
|
11
|
-
|
|
12
|
-
constructor({
|
|
13
|
-
name,
|
|
14
|
-
description,
|
|
15
|
-
parameters,
|
|
16
|
-
returnConfig,
|
|
17
|
-
}: {
|
|
18
|
-
name: string;
|
|
19
|
-
description?: string | null;
|
|
20
|
-
parameters?: FunctionParameterConfig[];
|
|
21
|
-
returnConfig?: FunctionReturnConfig | null;
|
|
22
|
-
}) {
|
|
23
|
-
this.name = name;
|
|
24
|
-
this.description = description || null;
|
|
25
|
-
this.parameters = parameters || [];
|
|
26
|
-
this.return = returnConfig || null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
static fromConfig(data: any): ClassMethodConfig {
|
|
30
|
-
const params = Array.isArray(data.parameters)
|
|
31
|
-
? data.parameters.map((p: any) => FunctionParameterConfig.fromConfig(p))
|
|
32
|
-
: [];
|
|
33
|
-
const ret = FunctionReturnConfig.fromConfig(data.return);
|
|
34
|
-
return new ClassMethodConfig({
|
|
35
|
-
name: data.name,
|
|
36
|
-
description: data.description,
|
|
37
|
-
parameters: params,
|
|
38
|
-
returnConfig: ret,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
toCode(): string {
|
|
43
|
-
const paramsSrc = this.parameters.map((p) => p.toCode()).join(', ');
|
|
44
|
-
const jsdoc = DocCommentConfig.buildJSDoc({
|
|
45
|
-
description: this.description,
|
|
46
|
-
parameters: this.parameters,
|
|
47
|
-
returnConfig: this.return,
|
|
48
|
-
});
|
|
49
|
-
const lines: string[] = [];
|
|
50
|
-
if (jsdoc) lines.push(jsdoc);
|
|
51
|
-
lines.push(`${this.name}(${paramsSrc}) {`);
|
|
52
|
-
lines.push(' // TODO: Implement method body');
|
|
53
|
-
lines.push('}');
|
|
54
|
-
return lines.join('\n');
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export class ClassPropertyConfig {
|
|
2
|
-
name: string;
|
|
3
|
-
type: string | null;
|
|
4
|
-
description: string | null;
|
|
5
|
-
defaultValue: unknown;
|
|
6
|
-
|
|
7
|
-
constructor({
|
|
8
|
-
name,
|
|
9
|
-
type,
|
|
10
|
-
description,
|
|
11
|
-
defaultValue = undefined,
|
|
12
|
-
}: { name: string; type?: string | null; description?: string | null; defaultValue?: unknown }) {
|
|
13
|
-
this.name = name;
|
|
14
|
-
this.type = type || null;
|
|
15
|
-
this.description = description || null;
|
|
16
|
-
this.defaultValue = defaultValue;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
static fromConfig(data: any): ClassPropertyConfig {
|
|
20
|
-
return new ClassPropertyConfig({
|
|
21
|
-
name: data.name,
|
|
22
|
-
type: data.type,
|
|
23
|
-
description: data.description,
|
|
24
|
-
defaultValue: data.default,
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
export class ConstantConfig {
|
|
2
|
-
type = 'constant' as const;
|
|
3
|
-
name: string;
|
|
4
|
-
value: unknown;
|
|
5
|
-
description: string | null;
|
|
6
|
-
|
|
7
|
-
constructor({
|
|
8
|
-
name,
|
|
9
|
-
value,
|
|
10
|
-
description,
|
|
11
|
-
}: { name: string; value: unknown; description?: string | null }) {
|
|
12
|
-
this.name = name;
|
|
13
|
-
this.value = value;
|
|
14
|
-
this.description = description ?? null;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
static fromConfig(data: any): ConstantConfig {
|
|
18
|
-
return new ConstantConfig({
|
|
19
|
-
name: data.name,
|
|
20
|
-
value: data.value,
|
|
21
|
-
description: data.description,
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
toCode(): string {
|
|
26
|
-
const lines: string[] = [];
|
|
27
|
-
if (this.description) {
|
|
28
|
-
lines.push(`// ${this.description}`);
|
|
29
|
-
}
|
|
30
|
-
const val = typeof this.value === 'string' ? JSON.stringify(this.value) : String(this.value);
|
|
31
|
-
lines.push(`const ${this.name} = ${val};`);
|
|
32
|
-
return lines.join('\n');
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { FunctionParameterConfig } from './FunctionParameterConfig.ts';
|
|
2
|
-
import type { FunctionReturnConfig } from './FunctionReturnConfig.ts';
|
|
3
|
-
|
|
4
|
-
export class DocCommentConfig {
|
|
5
|
-
description: string | null;
|
|
6
|
-
parameters: FunctionParameterConfig[];
|
|
7
|
-
return: FunctionReturnConfig | null;
|
|
8
|
-
|
|
9
|
-
constructor({
|
|
10
|
-
description = null,
|
|
11
|
-
parameters = [],
|
|
12
|
-
returnConfig = null,
|
|
13
|
-
}: {
|
|
14
|
-
description?: string | null;
|
|
15
|
-
parameters?: FunctionParameterConfig[];
|
|
16
|
-
returnConfig?: FunctionReturnConfig | null;
|
|
17
|
-
}) {
|
|
18
|
-
this.description = description ?? null;
|
|
19
|
-
this.parameters = parameters;
|
|
20
|
-
this.return = returnConfig ?? null;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
static buildJSDoc({
|
|
24
|
-
description,
|
|
25
|
-
parameters,
|
|
26
|
-
returnConfig,
|
|
27
|
-
}: {
|
|
28
|
-
description?: string | null;
|
|
29
|
-
parameters: FunctionParameterConfig[];
|
|
30
|
-
returnConfig: FunctionReturnConfig | null;
|
|
31
|
-
}): string {
|
|
32
|
-
const lines: string[] = ['/**'];
|
|
33
|
-
if (description) {
|
|
34
|
-
for (const line of description.split('\n')) {
|
|
35
|
-
lines.push(` * ${line}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const paramLines: string[] = [];
|
|
39
|
-
for (const p of parameters) {
|
|
40
|
-
const desc = p.description ? ` - ${p.description}` : '';
|
|
41
|
-
paramLines.push(` * @param ${p.name}${desc}`);
|
|
42
|
-
}
|
|
43
|
-
const retDesc = returnConfig && returnConfig.description ? ` ${returnConfig.description}` : '';
|
|
44
|
-
if (paramLines.length || returnConfig) {
|
|
45
|
-
if (description) {
|
|
46
|
-
lines.push(' *');
|
|
47
|
-
}
|
|
48
|
-
for (const l of paramLines) lines.push(l);
|
|
49
|
-
if (returnConfig) lines.push(` * @returns${retDesc ? ':' + retDesc : ''}`);
|
|
50
|
-
}
|
|
51
|
-
lines.push(' */');
|
|
52
|
-
return lines.join('\n');
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { DocCommentConfig } from './DocCommentConfig.ts';
|
|
2
|
-
import { FunctionParameterConfig } from './FunctionParameterConfig.ts';
|
|
3
|
-
import { FunctionReturnConfig } from './FunctionReturnConfig.ts';
|
|
4
|
-
|
|
5
|
-
export class FunctionConfig {
|
|
6
|
-
type = 'function' as const;
|
|
7
|
-
name: string;
|
|
8
|
-
description: string | null;
|
|
9
|
-
parameters: FunctionParameterConfig[];
|
|
10
|
-
return: FunctionReturnConfig | null;
|
|
11
|
-
|
|
12
|
-
constructor({
|
|
13
|
-
name,
|
|
14
|
-
description,
|
|
15
|
-
parameters,
|
|
16
|
-
returnConfig,
|
|
17
|
-
}: {
|
|
18
|
-
name: string;
|
|
19
|
-
description?: string | null;
|
|
20
|
-
parameters?: FunctionParameterConfig[];
|
|
21
|
-
returnConfig?: FunctionReturnConfig | null;
|
|
22
|
-
}) {
|
|
23
|
-
this.name = name;
|
|
24
|
-
this.description = description || null;
|
|
25
|
-
this.parameters = parameters || [];
|
|
26
|
-
this.return = returnConfig || null;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
static fromConfig(data: any): FunctionConfig {
|
|
30
|
-
const params = Array.isArray(data.parameters)
|
|
31
|
-
? data.parameters.map((p: any) => FunctionParameterConfig.fromConfig(p))
|
|
32
|
-
: [];
|
|
33
|
-
const ret = FunctionReturnConfig.fromConfig(data.return);
|
|
34
|
-
return new FunctionConfig({
|
|
35
|
-
name: data.name,
|
|
36
|
-
description: data.description,
|
|
37
|
-
parameters: params,
|
|
38
|
-
returnConfig: ret,
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
toCode(): string {
|
|
43
|
-
const paramsSrc = this.parameters.map((p) => p.toCode()).join(', ');
|
|
44
|
-
const jsdoc = DocCommentConfig.buildJSDoc({
|
|
45
|
-
description: this.description,
|
|
46
|
-
parameters: this.parameters,
|
|
47
|
-
returnConfig: this.return,
|
|
48
|
-
});
|
|
49
|
-
const lines: string[] = [];
|
|
50
|
-
if (jsdoc) lines.push(jsdoc);
|
|
51
|
-
lines.push(`function ${this.name}(${paramsSrc}) {`);
|
|
52
|
-
lines.push(` // TODO: Implement function body`);
|
|
53
|
-
lines.push(`}`);
|
|
54
|
-
return lines.join('\n');
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
export class FunctionParameterConfig {
|
|
2
|
-
name: string;
|
|
3
|
-
type: string | null;
|
|
4
|
-
description: string | null;
|
|
5
|
-
optional: boolean;
|
|
6
|
-
defaultValue: unknown;
|
|
7
|
-
|
|
8
|
-
constructor({
|
|
9
|
-
name,
|
|
10
|
-
type,
|
|
11
|
-
description,
|
|
12
|
-
optional = false,
|
|
13
|
-
defaultValue = undefined,
|
|
14
|
-
}: {
|
|
15
|
-
name: string;
|
|
16
|
-
type?: string | null;
|
|
17
|
-
description?: string | null;
|
|
18
|
-
optional?: boolean;
|
|
19
|
-
defaultValue?: unknown;
|
|
20
|
-
}) {
|
|
21
|
-
this.name = name;
|
|
22
|
-
this.type = type || null;
|
|
23
|
-
this.description = description || null;
|
|
24
|
-
this.optional = !!optional;
|
|
25
|
-
this.defaultValue = defaultValue;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
static fromConfig(data: any): FunctionParameterConfig {
|
|
29
|
-
return new FunctionParameterConfig({
|
|
30
|
-
name: data.name,
|
|
31
|
-
type: data.type,
|
|
32
|
-
description: data.description,
|
|
33
|
-
optional: data.optional,
|
|
34
|
-
defaultValue: data.default,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
toCode(): string {
|
|
39
|
-
return this.name;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export class FunctionReturnConfig {
|
|
2
|
-
type: string | null;
|
|
3
|
-
description: string | null;
|
|
4
|
-
|
|
5
|
-
constructor({ type, description }: { type?: string | null; description?: string | null }) {
|
|
6
|
-
this.type = type || null;
|
|
7
|
-
this.description = description || null;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
static fromConfig(data: any): FunctionReturnConfig | null {
|
|
11
|
-
if (!data) return null;
|
|
12
|
-
if (typeof data !== 'object') {
|
|
13
|
-
throw new Error('Invalid YAML for return: expected mapping with key "type"');
|
|
14
|
-
}
|
|
15
|
-
if (!('type' in data) || !data.type) {
|
|
16
|
-
throw new Error('Invalid YAML for return: missing non-empty "type"');
|
|
17
|
-
}
|
|
18
|
-
return new FunctionReturnConfig({ type: data.type, description: data.description });
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import yaml from 'js-yaml';
|
|
2
|
-
import { ClassConfig } from '../Config/ClassConfig.ts';
|
|
3
|
-
import { ConstantConfig } from '../Config/ConstantConfig.ts';
|
|
4
|
-
import { FunctionConfig } from '../Config/FunctionConfig.ts';
|
|
5
|
-
|
|
6
|
-
export class CodeGenerator {
|
|
7
|
-
generate(yamlText: string): string {
|
|
8
|
-
const data = yaml.load(yamlText) as any;
|
|
9
|
-
if (!data || !Array.isArray(data.items)) {
|
|
10
|
-
throw new Error('Invalid YAML: expected root with items[]');
|
|
11
|
-
}
|
|
12
|
-
const parts: string[] = [];
|
|
13
|
-
for (const item of data.items) {
|
|
14
|
-
switch (item.type) {
|
|
15
|
-
case 'constant': {
|
|
16
|
-
const cfg = ConstantConfig.fromConfig(item);
|
|
17
|
-
parts.push(cfg.toCode());
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
case 'function': {
|
|
21
|
-
const cfg = FunctionConfig.fromConfig(item);
|
|
22
|
-
parts.push(cfg.toCode());
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
case 'class': {
|
|
26
|
-
const cfg = ClassConfig.fromConfig(item);
|
|
27
|
-
parts.push(cfg.toCode());
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
default:
|
|
31
|
-
throw new Error(`Unsupported item type: ${item.type}`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return parts.join('\n');
|
|
35
|
-
}
|
|
36
|
-
}
|