@wexample/js-pseudocode 0.1.13 → 0.1.14

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.
Files changed (52) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/Config/ClassConfig.d.ts +18 -0
  7. package/dist/lib/Config/ClassConfig.d.ts.map +1 -0
  8. package/dist/lib/Config/ClassConfig.js +62 -0
  9. package/dist/lib/Config/ClassConfig.js.map +1 -0
  10. package/dist/lib/Config/ClassMethodConfig.d.ts +18 -0
  11. package/dist/lib/Config/ClassMethodConfig.d.ts.map +1 -0
  12. package/dist/lib/Config/ClassMethodConfig.js +40 -0
  13. package/dist/lib/Config/ClassMethodConfig.js.map +1 -0
  14. package/dist/lib/Config/ClassPropertyConfig.d.ts +14 -0
  15. package/dist/lib/Config/ClassPropertyConfig.d.ts.map +1 -0
  16. package/dist/lib/Config/ClassPropertyConfig.js +17 -0
  17. package/dist/lib/Config/ClassPropertyConfig.js.map +1 -0
  18. package/dist/lib/Config/ConstantConfig.d.ts +14 -0
  19. package/dist/lib/Config/ConstantConfig.d.ts.map +1 -0
  20. package/dist/lib/Config/ConstantConfig.js +25 -0
  21. package/dist/lib/Config/ConstantConfig.js.map +1 -0
  22. package/dist/lib/Config/DocCommentConfig.d.ts +18 -0
  23. package/dist/lib/Config/DocCommentConfig.d.ts.map +1 -0
  24. package/dist/lib/Config/DocCommentConfig.js +33 -0
  25. package/dist/lib/Config/DocCommentConfig.js.map +1 -0
  26. package/dist/lib/Config/FunctionConfig.d.ts +18 -0
  27. package/dist/lib/Config/FunctionConfig.d.ts.map +1 -0
  28. package/dist/lib/Config/FunctionConfig.js +40 -0
  29. package/dist/lib/Config/FunctionConfig.js.map +1 -0
  30. package/dist/lib/Config/FunctionParameterConfig.d.ts +17 -0
  31. package/dist/lib/Config/FunctionParameterConfig.d.ts.map +1 -0
  32. package/dist/lib/Config/FunctionParameterConfig.js +22 -0
  33. package/dist/lib/Config/FunctionParameterConfig.js.map +1 -0
  34. package/dist/lib/Config/FunctionReturnConfig.d.ts +10 -0
  35. package/dist/lib/Config/FunctionReturnConfig.d.ts.map +1 -0
  36. package/dist/lib/Config/FunctionReturnConfig.js +18 -0
  37. package/dist/lib/Config/FunctionReturnConfig.js.map +1 -0
  38. package/dist/lib/Generator/CodeGenerator.d.ts +4 -0
  39. package/dist/lib/Generator/CodeGenerator.d.ts.map +1 -0
  40. package/dist/lib/Generator/CodeGenerator.js +36 -0
  41. package/dist/lib/Generator/CodeGenerator.js.map +1 -0
  42. package/package.json +7 -5
  43. package/src/index.ts +0 -1
  44. package/src/lib/Config/ClassConfig.ts +0 -77
  45. package/src/lib/Config/ClassMethodConfig.ts +0 -56
  46. package/src/lib/Config/ClassPropertyConfig.ts +0 -27
  47. package/src/lib/Config/ConstantConfig.ts +0 -34
  48. package/src/lib/Config/DocCommentConfig.ts +0 -54
  49. package/src/lib/Config/FunctionConfig.ts +0 -56
  50. package/src/lib/Config/FunctionParameterConfig.ts +0 -41
  51. package/src/lib/Config/FunctionReturnConfig.ts +0 -20
  52. package/src/lib/Generator/CodeGenerator.ts +0 -36
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @wexample/js-pseudocode
2
2
 
3
- Version: 0.1.13
3
+ Version: 0.1.14
4
4
 
5
5
  ## Table of Contents
6
6
 
@@ -0,0 +1,2 @@
1
+ export { CodeGenerator } from './lib/Generator/CodeGenerator';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { CodeGenerator } from './lib/Generator/CodeGenerator';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,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":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,WAAW;IAOtB,YAAY,EACV,IAAI,EACJ,WAAW,EACX,UAAU,EACV,OAAO,GAMR;QAhBD,SAAI,GAAG,OAAgB,CAAC;QAiBtB,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,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAS;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,IAAI,WAAW,CAAC;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU;YACV,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACnC,qCAAqC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChC,MAAM,GAAG,GACP,CAAC,CAAC,YAAY,KAAK,SAAS;oBAC1B,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;wBAClC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC;wBAChC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;oBAC1B,CAAC,CAAC,WAAW,CAAC;gBAClB,IAAI,CAAC,CAAC,WAAW;oBAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBACzD,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;YAC7C,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,UAAU;QACV,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,CAAC;iBAChB,MAAM,EAAE;iBACR,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ import { FunctionParameterConfig } from './FunctionParameterConfig';
2
+ import { FunctionReturnConfig } from './FunctionReturnConfig';
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,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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';
2
+ import { FunctionParameterConfig } from './FunctionParameterConfig';
3
+ import { FunctionReturnConfig } from './FunctionReturnConfig';
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,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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';
2
+ import type { FunctionReturnConfig } from './FunctionReturnConfig';
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,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEnE,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';
2
+ import { FunctionReturnConfig } from './FunctionReturnConfig';
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,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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';
2
+ import { FunctionParameterConfig } from './FunctionParameterConfig';
3
+ import { FunctionReturnConfig } from './FunctionReturnConfig';
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,oBAAoB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,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,4 @@
1
+ export declare class CodeGenerator {
2
+ generate(yamlText: string): string;
3
+ }
4
+ //# sourceMappingURL=CodeGenerator.d.ts.map
@@ -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';
3
+ import { ConstantConfig } from '../Config/ConstantConfig';
4
+ import { FunctionConfig } from '../Config/FunctionConfig';
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,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,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.13",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "files": [
6
- "src"
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": "./src/*",
23
- "default": "./src/*"
24
+ "types": "./dist/*.d.ts",
25
+ "default": "./dist/*.js"
24
26
  }
25
27
  },
26
28
  "typesVersions": {
27
29
  "*": {
28
30
  "*": [
29
- "src/*"
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
- }