@voxgig/sdkgen 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ declare const Entity: import("jostraca").Component;
2
+ export { Entity };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Entity = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const utility_1 = require("../utility");
6
+ const Entity = (0, jostraca_1.cmp)(function Entity(props) {
7
+ const { build, entity, ctx$ } = props;
8
+ const Entity_sdk = require((0, utility_1.resolvePath)(ctx$, `./${build.name}/Entity_${build.name}`));
9
+ Entity_sdk['Entity_' + build.name]({ build, entity });
10
+ });
11
+ exports.Entity = Entity;
12
+ //# sourceMappingURL=Entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Entity.js","sourceRoot":"","sources":["../../src/cmp/Entity.ts"],"names":[],"mappings":";;;AACA,uCAA8B;AAE9B,wCAAwC;AAGxC,MAAM,MAAM,GAAG,IAAA,cAAG,EAAC,SAAS,MAAM,CAAC,KAAU;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAErC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAA,qBAAW,EAAC,IAAI,EAAE,KAAK,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAErF,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;AACvD,CAAC,CAAC,CAAA;AAIA,wBAAM"}
@@ -0,0 +1,2 @@
1
+ declare const Main: import("jostraca").Component;
2
+ export { Main };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Main = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const utility_1 = require("../utility");
6
+ const Main = (0, jostraca_1.cmp)(function Main(props) {
7
+ const { build, ctx$ } = props;
8
+ const { model } = ctx$;
9
+ const Main_sdk = require((0, utility_1.resolvePath)(ctx$, `${build.name}/Main_${build.name}`));
10
+ Main_sdk['Main_' + build.name]({ model, build });
11
+ // TODO: make optional via build model
12
+ (0, jostraca_1.Copy)({ from: 'tm/' + build.name + '/LICENSE', name: 'LICENSE' });
13
+ });
14
+ exports.Main = Main;
15
+ //# sourceMappingURL=Main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Main.js","sourceRoot":"","sources":["../../src/cmp/Main.ts"],"names":[],"mappings":";;;AACA,uCAAoC;AAEpC,wCAAwC;AAGxC,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IAEtB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAA,qBAAW,EAAC,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAE/E,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAEhD,sCAAsC;IACtC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAClE,CAAC,CAAC,CAAA;AAIA,oBAAI"}
@@ -0,0 +1,2 @@
1
+ declare const Readme: import("jostraca").Component;
2
+ export { Readme };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Readme = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const ReadmeInstall_1 = require("./ReadmeInstall");
6
+ const ReadmeOptions_1 = require("./ReadmeOptions");
7
+ const ReadmeEntity_1 = require("./ReadmeEntity");
8
+ const Readme = (0, jostraca_1.cmp)(function Readme(props) {
9
+ const { build } = props;
10
+ const { model } = props.ctx$;
11
+ (0, jostraca_1.File)({ name: 'README.md' }, () => {
12
+ (0, jostraca_1.Code)(`
13
+ # ${model.Name} ${build.Name} SDK
14
+ `);
15
+ (0, ReadmeInstall_1.ReadmeInstall)({ build });
16
+ (0, ReadmeOptions_1.ReadmeOptions)({ build });
17
+ (0, ReadmeEntity_1.ReadmeEntity)({ build });
18
+ });
19
+ });
20
+ exports.Readme = Readme;
21
+ //# sourceMappingURL=Readme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Readme.js","sourceRoot":"","sources":["../../src/cmp/Readme.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAG1C,mDAA+C;AAC/C,mDAA+C;AAC/C,iDAA6C;AAG7C,MAAM,MAAM,GAAG,IAAA,cAAG,EAAC,SAAS,MAAM,CAAC,KAAU;IAC3C,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;IAE5B,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE;QAE/B,IAAA,eAAI,EAAC;IACL,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;CAC3B,CAAC,CAAA;QAEE,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACxB,IAAA,6BAAa,EAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACxB,IAAA,2BAAY,EAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAIA,wBAAM"}
@@ -0,0 +1,2 @@
1
+ declare const ReadmeEntity: import("jostraca").Component;
2
+ export { ReadmeEntity };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadmeEntity = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const ReadmeEntity = (0, jostraca_1.cmp)(function ReadmeEntity(props) {
6
+ const { build } = props;
7
+ const { model } = props.ctx$;
8
+ const { entity } = model.main.sdk;
9
+ (0, jostraca_1.Code)(`
10
+
11
+ ## Entities
12
+ `);
13
+ (0, jostraca_1.each)(entity)
14
+ .filter((entity) => entity.publish)
15
+ .map((entity) => {
16
+ (0, jostraca_1.Code)(`
17
+ ### Entity: __${entity.Name}__
18
+
19
+ `);
20
+ (0, jostraca_1.each)(entity.field, (field) => {
21
+ (0, jostraca_1.Code)(`
22
+ * __${field.name}__ (${field.type}): ${field.short}
23
+
24
+ `);
25
+ });
26
+ });
27
+ });
28
+ exports.ReadmeEntity = ReadmeEntity;
29
+ //# sourceMappingURL=ReadmeEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadmeEntity.js","sourceRoot":"","sources":["../../src/cmp/ReadmeEntity.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAG1C,MAAM,YAAY,GAAG,IAAA,cAAG,EAAC,SAAS,YAAY,CAAC,KAAU;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAA;IAE5B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;IAEjC,IAAA,eAAI,EAAC;;;CAGN,CAAC,CAAA;IAGA,IAAA,eAAI,EAAC,MAAM,CAAC;SACT,MAAM,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SACvC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;QACnB,IAAA,eAAI,EAAC;gBACK,MAAM,CAAC,IAAI;;CAE1B,CAAC,CAAA;QAEI,IAAA,eAAI,EAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAU,EAAE,EAAE;YAChC,IAAA,eAAI,EAAC;MACP,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,KAAK;;CAEjD,CAAC,CAAA;QACI,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AAGN,CAAC,CAAC,CAAA;AAKA,oCAAY"}
@@ -0,0 +1,2 @@
1
+ declare const ReadmeInstall: import("jostraca").Component;
2
+ export { ReadmeInstall };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadmeInstall = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const ReadmeInstall = (0, jostraca_1.cmp)(function ReadmeInstall(props) {
6
+ const { build } = props;
7
+ (0, jostraca_1.Code)(`
8
+ ## Install
9
+ `);
10
+ (0, jostraca_1.select)(build.name, {
11
+ js: () => (0, jostraca_1.Code)(`
12
+ \`\`\`
13
+
14
+ npm install ${build.name}SDK
15
+
16
+ \`\`\`
17
+ `),
18
+ python: () => (0, jostraca_1.Code)(`
19
+ \`\`\`
20
+
21
+ pip install ${build.name}SDK
22
+
23
+ \`\`\`
24
+ `),
25
+ java: () => (0, jostraca_1.Code)(`
26
+ \`\`\`
27
+
28
+ maven install ${build.name}SDK
29
+
30
+ \`\`\`
31
+ `),
32
+ go: () => (0, jostraca_1.Code)(`
33
+ \`\`\`
34
+
35
+ go get ${build.name}SDK
36
+
37
+ \`\`\`
38
+ `),
39
+ ruby: () => (0, jostraca_1.Code)(`
40
+ \`\`\`
41
+
42
+ gem install ${build.name}SDK
43
+
44
+ \`\`\`
45
+ `)
46
+ });
47
+ });
48
+ exports.ReadmeInstall = ReadmeInstall;
49
+ //# sourceMappingURL=ReadmeInstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadmeInstall.js","sourceRoot":"","sources":["../../src/cmp/ReadmeInstall.ts"],"names":[],"mappings":";;;AACA,uCAA4C;AAG5C,MAAM,aAAa,GAAG,IAAA,cAAG,EAAC,SAAS,aAAa,CAAC,KAAU;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,IAAA,eAAI,EAAC;;CAEN,CAAC,CAAA;IAEA,IAAA,iBAAM,EAAC,KAAK,CAAC,IAAI,EAAE;QACjB,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC;;;cAGL,KAAK,CAAC,IAAI;;;CAGvB,CAAC;QAEE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC;;;cAGT,KAAK,CAAC,IAAI;;;CAGvB,CAAC;QAEE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC;;;gBAGL,KAAK,CAAC,IAAI;;;CAGzB,CAAC;QAEE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC;;;SAGV,KAAK,CAAC,IAAI;;;CAGlB,CAAC;QAEE,IAAI,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC;;;cAGP,KAAK,CAAC,IAAI;;;CAGvB,CAAC;KAGC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;AAOA,sCAAa"}
@@ -0,0 +1,2 @@
1
+ declare const ReadmeOptions: import("jostraca").Component;
2
+ export { ReadmeOptions };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReadmeOptions = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const ReadmeOptions = (0, jostraca_1.cmp)(function ReadmeOptions(props) {
6
+ const { build } = props;
7
+ (0, jostraca_1.Code)(`
8
+
9
+ ## Options
10
+
11
+ `);
12
+ (0, jostraca_1.each)(build.options)
13
+ .filter((option) => option.publish)
14
+ .map((option) => {
15
+ (0, jostraca_1.Code)(`
16
+ * __${option.name} (${option.kind})__: ${option.short}
17
+ `);
18
+ });
19
+ });
20
+ exports.ReadmeOptions = ReadmeOptions;
21
+ //# sourceMappingURL=ReadmeOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadmeOptions.js","sourceRoot":"","sources":["../../src/cmp/ReadmeOptions.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAG1C,MAAM,aAAa,GAAG,IAAA,cAAG,EAAC,SAAS,aAAa,CAAC,KAAU;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,IAAA,eAAI,EAAC;;;;CAIN,CAAC,CAAA;IAEA,IAAA,eAAI,EAAC,KAAK,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;SACvC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;QACnB,IAAA,eAAI,EAAC;MACL,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,QAAQ,MAAM,CAAC,KAAK;CACpD,CAAC,CAAA;IACE,CAAC,CAAC,CAAA;AAGN,CAAC,CAAC,CAAA;AAKA,sCAAa"}
package/dist/sdkgen.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ import * as JostracaModule from 'jostraca';
2
+ import { Main } from './cmp/Main';
3
+ import { Entity } from './cmp/Entity';
4
+ import { Readme } from './cmp/Readme';
5
+ import { ReadmeInstall } from './cmp/ReadmeInstall';
6
+ import { ReadmeOptions } from './cmp/ReadmeOptions';
7
+ import { ReadmeEntity } from './cmp/ReadmeEntity';
1
8
  type SdkGenOptions = {
2
9
  folder: string;
3
10
  def?: string;
@@ -10,6 +17,7 @@ type SdkGenOptions = {
10
17
  name: string;
11
18
  };
12
19
  };
20
+ declare const Jostraca: typeof JostracaModule.Jostraca;
13
21
  declare function SdkGen(opts: SdkGenOptions): {
14
22
  generate: (spec: any) => Promise<void>;
15
23
  };
@@ -17,4 +25,21 @@ declare namespace SdkGen {
17
25
  var makeBuild: (root: any, opts: SdkGenOptions) => Promise<(model: any, build: any) => Promise<void>>;
18
26
  }
19
27
  export type { SdkGenOptions, };
20
- export { SdkGen, };
28
+ type Component = (props: any, children?: any) => void;
29
+ export declare const cmp: (component: Function) => Component;
30
+ export declare const names: (base: any, name: string, prop?: string) => any;
31
+ export declare const each: (subject?: any, apply?: any) => any;
32
+ export declare const snakify: (input: any[] | string) => string;
33
+ export declare const camelify: (input: any[] | string) => string;
34
+ export declare const kebabify: (input: any[] | string) => string;
35
+ export declare const select: (key: any, map: Record<string, Function>) => any;
36
+ export declare const cmap: (o: any, p: any) => any;
37
+ export declare const vmap: (o: any, p: any) => any;
38
+ export declare const get: (root: any, path: string | string[]) => any;
39
+ export declare const getx: (root: any, path: string | string[]) => any;
40
+ export declare const Project: Component;
41
+ export declare const Folder: Component;
42
+ export declare const File: Component;
43
+ export declare const Code: Component;
44
+ export declare const Copy: Component;
45
+ export { Main, Entity, Readme, ReadmeInstall, ReadmeOptions, ReadmeEntity, Jostraca, SdkGen, };
package/dist/sdkgen.js CHANGED
@@ -24,16 +24,31 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  return result;
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.Jostraca = exports.ReadmeEntity = exports.ReadmeOptions = exports.ReadmeInstall = exports.Readme = exports.Entity = exports.Main = exports.Copy = exports.Code = exports.File = exports.Folder = exports.Project = exports.getx = exports.get = exports.vmap = exports.cmap = exports.select = exports.kebabify = exports.camelify = exports.snakify = exports.each = exports.names = exports.cmp = void 0;
27
28
  exports.SdkGen = SdkGen;
28
29
  const Fs = __importStar(require("node:fs"));
29
- const jostraca_1 = require("jostraca");
30
+ const JostracaModule = __importStar(require("jostraca"));
30
31
  const apidef_1 = require("@voxgig/apidef");
32
+ const Main_1 = require("./cmp/Main");
33
+ Object.defineProperty(exports, "Main", { enumerable: true, get: function () { return Main_1.Main; } });
34
+ const Entity_1 = require("./cmp/Entity");
35
+ Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return Entity_1.Entity; } });
36
+ const Readme_1 = require("./cmp/Readme");
37
+ Object.defineProperty(exports, "Readme", { enumerable: true, get: function () { return Readme_1.Readme; } });
38
+ const ReadmeInstall_1 = require("./cmp/ReadmeInstall");
39
+ Object.defineProperty(exports, "ReadmeInstall", { enumerable: true, get: function () { return ReadmeInstall_1.ReadmeInstall; } });
40
+ const ReadmeOptions_1 = require("./cmp/ReadmeOptions");
41
+ Object.defineProperty(exports, "ReadmeOptions", { enumerable: true, get: function () { return ReadmeOptions_1.ReadmeOptions; } });
42
+ const ReadmeEntity_1 = require("./cmp/ReadmeEntity");
43
+ Object.defineProperty(exports, "ReadmeEntity", { enumerable: true, get: function () { return ReadmeEntity_1.ReadmeEntity; } });
31
44
  const prepare_openapi_1 = require("./prepare-openapi");
45
+ const { Jostraca } = JostracaModule;
46
+ exports.Jostraca = Jostraca;
32
47
  function SdkGen(opts) {
33
48
  const fs = opts.fs || Fs;
34
49
  const folder = opts.folder || '.';
35
50
  const def = opts.def || 'def.yml';
36
- const jostraca = (0, jostraca_1.Jostraca)();
51
+ const jostraca = Jostraca();
37
52
  async function generate(spec) {
38
53
  const { model, root } = spec;
39
54
  /*
@@ -41,8 +56,10 @@ function SdkGen(opts) {
41
56
  return
42
57
  }
43
58
  */
59
+ // console.log('OPTIONS', opts)
60
+ const ctx$ = { fs, folder, meta: { spec } };
44
61
  try {
45
- jostraca.generate({ fs, folder, meta: { spec } }, () => root({ model }));
62
+ jostraca.generate(ctx$, () => root({ model }));
46
63
  }
47
64
  catch (err) {
48
65
  console.log('SDKGEN ERROR: ', err);
@@ -74,4 +91,20 @@ SdkGen.makeBuild = async function (root, opts) {
74
91
  return sdkgen.generate({ model, build, root });
75
92
  };
76
93
  };
94
+ exports.cmp = JostracaModule.cmp;
95
+ exports.names = JostracaModule.names;
96
+ exports.each = JostracaModule.each;
97
+ exports.snakify = JostracaModule.snakify;
98
+ exports.camelify = JostracaModule.camelify;
99
+ exports.kebabify = JostracaModule.kebabify;
100
+ exports.select = JostracaModule.select;
101
+ exports.cmap = JostracaModule.cmap;
102
+ exports.vmap = JostracaModule.vmap;
103
+ exports.get = JostracaModule.get;
104
+ exports.getx = JostracaModule.getx;
105
+ exports.Project = JostracaModule.Project;
106
+ exports.Folder = JostracaModule.Folder;
107
+ exports.File = JostracaModule.File;
108
+ exports.Code = JostracaModule.Code;
109
+ exports.Copy = JostracaModule.Copy;
77
110
  //# sourceMappingURL=sdkgen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdkgen.js","sourceRoot":"","sources":["../src/sdkgen.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;AAqGlD,wBAAM;AAnGR,4CAA6B;AAE7B,uCAAmC;AAEnC,2CAAuC;AAGvC,uDAAkD;AAkBlD,SAAS,MAAM,CAAC,IAAmB;IACjC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;IACxB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAA;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,CAAA;IACjC,MAAM,QAAQ,GAAG,IAAA,mBAAQ,GAAE,CAAA;IAG3B,KAAK,UAAU,QAAQ,CAAC,IAAS;QAC/B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAE5B;;;;UAIE;QAEF,IAAI,CAAC;YACH,QAAQ,CAAC,QAAQ,CACf,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAC9B,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CACtB,CAAA;QACH,CAAC;QACD,OAAO,GAAQ,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;YAClC,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAGD,KAAK,UAAU,OAAO,CAAC,IAAS,EAAE,GAAQ;QACxC,OAAO,MAAM,IAAA,gCAAc,EAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACxC,CAAC;IAGD,OAAO;QACL,QAAQ;QAER,aAAa;QAEb,8BAA8B;KAC/B,CAAA;AAEH,CAAC;AAGD,MAAM,CAAC,SAAS,GAAG,KAAK,WAAU,IAAS,EAAE,IAAmB;IAC9D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAE3B,MAAM,MAAM,GAAG,IAAA,eAAM,GAAE,CAAA;IAEvB,MAAM,IAAI,GAAG;QACX,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KACnD,CAAA;IAED,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAExB,OAAO,KAAK,UAAU,KAAK,CAAC,KAAU,EAAE,KAAU;QAChD,sDAAsD;QACtD,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"sdkgen.js","sourceRoot":"","sources":["../src/sdkgen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const resolvePath: (ctx$: any, path: string) => any;
2
+ export { resolvePath };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolvePath = void 0;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const resolvePath = (ctx$, path) => {
9
+ const fullpath = node_path_1.default.join(ctx$.folder, '..', 'dist', path);
10
+ return fullpath;
11
+ };
12
+ exports.resolvePath = resolvePath;
13
+ //# sourceMappingURL=utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAG5B,MAAM,WAAW,GAAG,CAAC,IAAS,EAAE,IAAY,EAAO,EAAE;IACnD,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3D,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAIC,kCAAW"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/sdkgen",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "main": "dist/sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/sdkgen.d.ts",
@@ -35,16 +35,16 @@
35
35
  "devDependencies": {
36
36
  "@hapi/code": "^9.0.3",
37
37
  "@types/js-yaml": "^4.0.9",
38
- "@types/node": "22.5.1",
39
- "aontu": "^0.21.1",
38
+ "@types/node": "22.5.4",
39
+ "aontu": "^0.22.0",
40
40
  "esbuild": "^0.23.1",
41
- "json-schema-to-ts": "^3.1.0",
41
+ "json-schema-to-ts": "^3.1.1",
42
42
  "memfs": "^4.11.1",
43
43
  "typescript": "^5.5.4"
44
44
  },
45
45
  "dependencies": {
46
- "@redocly/openapi-core": "^1.21.1",
47
- "@voxgig/apidef": "^0.0.4",
48
- "jostraca": "^0.3.0"
46
+ "@redocly/openapi-core": "^1.22.1",
47
+ "@voxgig/apidef": "^0.0.5",
48
+ "jostraca": "^0.4.0"
49
49
  }
50
50
  }
@@ -0,0 +1,18 @@
1
+
2
+ import { cmp } from 'jostraca'
3
+
4
+ import { resolvePath } from '../utility'
5
+
6
+
7
+ const Entity = cmp(function Entity(props: any) {
8
+ const { build, entity, ctx$ } = props
9
+
10
+ const Entity_sdk = require(resolvePath(ctx$, `./${build.name}/Entity_${build.name}`))
11
+
12
+ Entity_sdk['Entity_' + build.name]({ build, entity })
13
+ })
14
+
15
+
16
+ export {
17
+ Entity
18
+ }
@@ -0,0 +1,22 @@
1
+
2
+ import { cmp, Copy } from 'jostraca'
3
+
4
+ import { resolvePath } from '../utility'
5
+
6
+
7
+ const Main = cmp(function Main(props: any) {
8
+ const { build, ctx$ } = props
9
+ const { model } = ctx$
10
+
11
+ const Main_sdk = require(resolvePath(ctx$, `${build.name}/Main_${build.name}`))
12
+
13
+ Main_sdk['Main_' + build.name]({ model, build })
14
+
15
+ // TODO: make optional via build model
16
+ Copy({ from: 'tm/' + build.name + '/LICENSE', name: 'LICENSE' })
17
+ })
18
+
19
+
20
+ export {
21
+ Main
22
+ }
@@ -0,0 +1,29 @@
1
+
2
+ import { cmp, File, Code } from 'jostraca'
3
+
4
+
5
+ import { ReadmeInstall } from './ReadmeInstall'
6
+ import { ReadmeOptions } from './ReadmeOptions'
7
+ import { ReadmeEntity } from './ReadmeEntity'
8
+
9
+
10
+ const Readme = cmp(function Readme(props: any) {
11
+ const { build } = props
12
+ const { model } = props.ctx$
13
+
14
+ File({ name: 'README.md' }, () => {
15
+
16
+ Code(`
17
+ # ${model.Name} ${build.Name} SDK
18
+ `)
19
+
20
+ ReadmeInstall({ build })
21
+ ReadmeOptions({ build })
22
+ ReadmeEntity({ build })
23
+ })
24
+ })
25
+
26
+
27
+ export {
28
+ Readme
29
+ }
@@ -0,0 +1,40 @@
1
+
2
+ import { cmp, each, Code } from 'jostraca'
3
+
4
+
5
+ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
6
+ const { build } = props
7
+ const { model } = props.ctx$
8
+
9
+ const { entity } = model.main.sdk
10
+
11
+ Code(`
12
+
13
+ ## Entities
14
+ `)
15
+
16
+
17
+ each(entity)
18
+ .filter((entity: any) => entity.publish)
19
+ .map((entity: any) => {
20
+ Code(`
21
+ ### Entity: __${entity.Name}__
22
+
23
+ `)
24
+
25
+ each(entity.field, (field: any) => {
26
+ Code(`
27
+ * __${field.name}__ (${field.type}): ${field.short}
28
+
29
+ `)
30
+ })
31
+ })
32
+
33
+
34
+ })
35
+
36
+
37
+
38
+ export {
39
+ ReadmeEntity
40
+ }
@@ -0,0 +1,64 @@
1
+
2
+ import { cmp, select, Code } from 'jostraca'
3
+
4
+
5
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
6
+ const { build } = props
7
+
8
+ Code(`
9
+ ## Install
10
+ `)
11
+
12
+ select(build.name, {
13
+ js: () => Code(`
14
+ \`\`\`
15
+
16
+ npm install ${build.name}SDK
17
+
18
+ \`\`\`
19
+ `),
20
+
21
+ python: () => Code(`
22
+ \`\`\`
23
+
24
+ pip install ${build.name}SDK
25
+
26
+ \`\`\`
27
+ `),
28
+
29
+ java: () => Code(`
30
+ \`\`\`
31
+
32
+ maven install ${build.name}SDK
33
+
34
+ \`\`\`
35
+ `),
36
+
37
+ go: () => Code(`
38
+ \`\`\`
39
+
40
+ go get ${build.name}SDK
41
+
42
+ \`\`\`
43
+ `),
44
+
45
+ ruby: () => Code(`
46
+ \`\`\`
47
+
48
+ gem install ${build.name}SDK
49
+
50
+ \`\`\`
51
+ `)
52
+
53
+
54
+ })
55
+
56
+ })
57
+
58
+
59
+
60
+
61
+
62
+ export {
63
+ ReadmeInstall
64
+ }
@@ -0,0 +1,29 @@
1
+
2
+ import { cmp, each, Code } from 'jostraca'
3
+
4
+
5
+ const ReadmeOptions = cmp(function ReadmeOptions(props: any) {
6
+ const { build } = props
7
+
8
+ Code(`
9
+
10
+ ## Options
11
+
12
+ `)
13
+
14
+ each(build.options)
15
+ .filter((option: any) => option.publish)
16
+ .map((option: any) => {
17
+ Code(`
18
+ * __${option.name} (${option.kind})__: ${option.short}
19
+ `)
20
+ })
21
+
22
+
23
+ })
24
+
25
+
26
+
27
+ export {
28
+ ReadmeOptions
29
+ }
package/src/sdkgen.ts CHANGED
@@ -2,11 +2,19 @@
2
2
 
3
3
  import * as Fs from 'node:fs'
4
4
 
5
- import { Jostraca } from 'jostraca'
5
+
6
+ import * as JostracaModule from 'jostraca'
6
7
 
7
8
  import { ApiDef } from '@voxgig/apidef'
8
9
 
9
10
 
11
+ import { Main } from './cmp/Main'
12
+ import { Entity } from './cmp/Entity'
13
+ import { Readme } from './cmp/Readme'
14
+ import { ReadmeInstall } from './cmp/ReadmeInstall'
15
+ import { ReadmeOptions } from './cmp/ReadmeOptions'
16
+ import { ReadmeEntity } from './cmp/ReadmeEntity'
17
+
10
18
  import { PrepareOpenAPI } from './prepare-openapi'
11
19
 
12
20
 
@@ -24,6 +32,8 @@ type SdkGenOptions = {
24
32
  }
25
33
 
26
34
 
35
+ const { Jostraca } = JostracaModule
36
+
27
37
 
28
38
  function SdkGen(opts: SdkGenOptions) {
29
39
  const fs = opts.fs || Fs
@@ -41,11 +51,12 @@ function SdkGen(opts: SdkGenOptions) {
41
51
  }
42
52
  */
43
53
 
54
+ // console.log('OPTIONS', opts)
55
+
56
+ const ctx$ = { fs, folder, meta: { spec } }
57
+
44
58
  try {
45
- jostraca.generate(
46
- { fs, folder, meta: { spec } },
47
- () => root({ model })
48
- )
59
+ jostraca.generate(ctx$, () => root({ model }))
49
60
  }
50
61
  catch (err: any) {
51
62
  console.log('SDKGEN ERROR: ', err)
@@ -98,6 +109,36 @@ export type {
98
109
  }
99
110
 
100
111
 
112
+ // Prevents TS2742
113
+ type Component = (props: any, children?: any) => void
114
+
115
+ export const cmp: (component: Function) => Component = JostracaModule.cmp
116
+ export const names: (base: any, name: string, prop?: string) => any = JostracaModule.names
117
+ export const each: (subject?: any, apply?: any) => any = JostracaModule.each
118
+ export const snakify: (input: any[] | string) => string = JostracaModule.snakify
119
+ export const camelify: (input: any[] | string) => string = JostracaModule.camelify
120
+ export const kebabify: (input: any[] | string) => string = JostracaModule.kebabify
121
+ export const select: (key: any, map: Record<string, Function>) => any = JostracaModule.select
122
+ export const cmap: (o: any, p: any) => any = JostracaModule.cmap
123
+ export const vmap: (o: any, p: any) => any = JostracaModule.vmap
124
+ export const get: (root: any, path: string | string[]) => any = JostracaModule.get
125
+ export const getx: (root: any, path: string | string[]) => any = JostracaModule.getx
126
+
127
+ export const Project: Component = JostracaModule.Project
128
+ export const Folder: Component = JostracaModule.Folder
129
+ export const File: Component = JostracaModule.File
130
+ export const Code: Component = JostracaModule.Code
131
+ export const Copy: Component = JostracaModule.Copy
132
+
133
+
101
134
  export {
135
+ Main,
136
+ Entity,
137
+ Readme,
138
+ ReadmeInstall,
139
+ ReadmeOptions,
140
+ ReadmeEntity,
141
+
142
+ Jostraca,
102
143
  SdkGen,
103
144
  }
package/src/utility.ts ADDED
@@ -0,0 +1,13 @@
1
+
2
+ import Path from 'node:path'
3
+
4
+
5
+ const resolvePath = (ctx$: any, path: string): any => {
6
+ const fullpath = Path.join(ctx$.folder, '..', 'dist', path)
7
+ return fullpath
8
+ }
9
+
10
+
11
+ export {
12
+ resolvePath
13
+ }