@voxgig/sdkgen 0.0.7 → 0.1.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 function PrepareOpenAPI(inspec: any, ctx: any): Promise<boolean>;
2
+ export { PrepareOpenAPI };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrepareOpenAPI = PrepareOpenAPI;
4
+ async function PrepareOpenAPI(inspec, ctx) {
5
+ // TODO: avoid rebuilding if unchanged
6
+ // const source = Fs.readFileSync(ctx.def, 'utf8')
7
+ // const config = await createConfig({})
8
+ // const bundle = await bundleFromString({
9
+ // source,
10
+ // config,
11
+ // dereference: true,
12
+ // })
13
+ // // console.log('BUNDLE', bundle)
14
+ // Fs.writeFileSync(
15
+ // ctx.folder + '/../model/def.jsonic',
16
+ // JSON.stringify(bundle.bundle.parsed, null, 2)
17
+ // )
18
+ // const spec: any = {}
19
+ // spec.main = {
20
+ // sdk: {
21
+ // api: {
22
+ // // cmap
23
+ // /*
24
+ // path: each(bundle.bundle.parsed.paths, (path: any) => ({
25
+ // param: {}
26
+ // }))
27
+ // */
28
+ // }
29
+ // }
30
+ // }
31
+ // Fs.writeFileSync(
32
+ // ctx.folder + '/../model/spec.jsonic',
33
+ // JSON.stringify(spec, null, 2)
34
+ // )
35
+ return false;
36
+ }
37
+ //# sourceMappingURL=prepare-openapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare-openapi.js","sourceRoot":"","sources":["../src/prepare-openapi.ts"],"names":[],"mappings":";;AAyDE,wCAAc;AAjDhB,KAAK,UAAU,cAAc,CAAC,MAAW,EAAE,GAAQ;IAEjD,sCAAsC;IAEtC,kDAAkD;IAElD,wCAAwC;IACxC,0CAA0C;IAC1C,YAAY;IACZ,YAAY;IACZ,uBAAuB;IACvB,KAAK;IAEL,mCAAmC;IAEnC,oBAAoB;IACpB,yCAAyC;IACzC,kDAAkD;IAClD,IAAI;IAGJ,uBAAuB;IAEvB,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,yEAAyE;IACzE,4BAA4B;IAC5B,sBAAsB;IACtB,qBAAqB;IACrB,QAAQ;IACR,MAAM;IACN,IAAI;IAGJ,oBAAoB;IACpB,0CAA0C;IAC1C,kCAAkC;IAClC,IAAI;IAGJ,OAAO,KAAK,CAAA;AACd,CAAC"}
package/dist/sdkgen.d.ts CHANGED
@@ -1,12 +1,17 @@
1
1
  type SdkGenOptions = {
2
2
  folder: string;
3
+ def?: string;
3
4
  fs: any;
5
+ model?: {
6
+ folder: string;
7
+ entity: any;
8
+ };
4
9
  };
5
10
  declare function SdkGen(opts: SdkGenOptions): {
6
- generate: (spec: any) => void;
11
+ generate: (spec: any) => Promise<void>;
7
12
  };
8
13
  declare namespace SdkGen {
9
- var makeBuild: (root: any, opts: SdkGenOptions) => (model: any, build: any) => void;
14
+ var makeBuild: (root: any, opts: SdkGenOptions) => Promise<(model: any, build: any) => Promise<void>>;
10
15
  }
11
16
  export type { SdkGenOptions, };
12
17
  export { SdkGen, };
package/dist/sdkgen.js CHANGED
@@ -27,14 +27,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.SdkGen = SdkGen;
28
28
  const Fs = __importStar(require("node:fs"));
29
29
  const jostraca_1 = require("jostraca");
30
+ const apidef_1 = require("@voxgig/apidef");
31
+ const prepare_openapi_1 = require("./prepare-openapi");
30
32
  function SdkGen(opts) {
31
33
  const fs = opts.fs || Fs;
32
34
  const folder = opts.folder || '.';
35
+ const def = opts.def || 'def.yml';
33
36
  const jostraca = (0, jostraca_1.Jostraca)();
34
37
  // const { cmp, each, Project, Folder, File, Code } = jostraca
35
- function generate(spec) {
38
+ async function generate(spec) {
36
39
  const { model, root } = spec;
37
- jostraca.generate({ fs, folder }, () => root({ model }));
40
+ /*
41
+ if (await prepare(spec, { fs, folder, def })) {
42
+ return
43
+ }
44
+ */
45
+ try {
46
+ jostraca.generate({ fs, folder }, () => root({ model }));
47
+ }
48
+ catch (err) {
49
+ console.log('SDKGEN ERROR: ', err);
50
+ throw err;
51
+ }
52
+ }
53
+ async function prepare(spec, ctx) {
54
+ return await (0, prepare_openapi_1.PrepareOpenAPI)(spec, ctx);
38
55
  }
39
56
  return {
40
57
  generate,
@@ -42,9 +59,22 @@ function SdkGen(opts) {
42
59
  // Project, Folder, File, Code
43
60
  };
44
61
  }
45
- SdkGen.makeBuild = function (root, opts) {
62
+ SdkGen.makeBuild = async function (root, opts) {
63
+ console.log('SDKGEN makeBuild');
46
64
  const sdkgen = SdkGen(opts);
47
- return function build(model, build) {
65
+ const apidef = (0, apidef_1.ApiDef)();
66
+ const spec = {
67
+ def: opts.def,
68
+ kind: 'openapi-3',
69
+ model: opts.model ? (opts.model.folder + '/api.jsonic') : undefined,
70
+ meta: {
71
+ name: 'foo'
72
+ },
73
+ entity: opts.model ? opts.model.entity : undefined,
74
+ };
75
+ await apidef.watch(spec);
76
+ return async function build(model, build) {
77
+ // TODO: voxgig model needs to handle errors from here
48
78
  return sdkgen.generate({ model, build, root });
49
79
  };
50
80
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sdkgen.js","sourceRoot":"","sources":["../src/sdkgen.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;AA0DlD,wBAAM;AAxDR,4CAA6B;AAE7B,uCAAmC;AAWnC,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,QAAQ,GAAG,IAAA,mBAAQ,GAAE,CAAA;IAE3B,8DAA8D;IAE9D,SAAS,QAAQ,CAAC,IAAS;QACzB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAE5B,QAAQ,CAAC,QAAQ,CACf,EAAE,EAAE,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CACtB,CAAA;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QAER,aAAa;QAEb,8BAA8B;KAC/B,CAAA;AAEH,CAAC;AAGD,MAAM,CAAC,SAAS,GAAG,UAAS,IAAS,EAAE,IAAmB;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAE3B,OAAO,SAAS,KAAK,CAAC,KAAU,EAAE,KAAU;QAC1C,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":";AAAA,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;AAsGlD,wBAAM;AApGR,4CAA6B;AAE7B,uCAAmC;AAEnC,2CAAuC;AAGvC,uDAAkD;AAelD,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;IAE3B,8DAA8D;IAE9D,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,EACd,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,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/B,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;YACJ,IAAI,EAAE,KAAK;SACZ;QACD,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/sdkgen",
3
- "version": "0.0.7",
3
+ "version": "0.1.0",
4
4
  "main": "dist/sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/sdkgen.d.ts",
@@ -34,13 +34,17 @@
34
34
  ],
35
35
  "devDependencies": {
36
36
  "@hapi/code": "^9.0.3",
37
- "@types/node": "22.3.0",
37
+ "@types/js-yaml": "^4.0.9",
38
+ "@types/node": "22.5.0",
38
39
  "aontu": "^0.21.1",
39
- "esbuild": "^0.23.0",
40
+ "esbuild": "^0.23.1",
41
+ "json-schema-to-ts": "^3.1.0",
40
42
  "memfs": "^4.11.1",
41
43
  "typescript": "^5.5.4"
42
44
  },
43
45
  "dependencies": {
44
- "jostraca": "^0.1.6"
46
+ "@redocly/openapi-core": "^1.21.0",
47
+ "@voxgig/apidef": "^0.0.3",
48
+ "jostraca": "^0.2.1"
45
49
  }
46
50
  }
@@ -0,0 +1,59 @@
1
+
2
+ import * as Fs from 'node:fs'
3
+
4
+ import { each } from 'jostraca'
5
+
6
+ import { bundleFromString, createConfig } from '@redocly/openapi-core'
7
+
8
+
9
+ async function PrepareOpenAPI(inspec: any, ctx: any) {
10
+
11
+ // TODO: avoid rebuilding if unchanged
12
+
13
+ // const source = Fs.readFileSync(ctx.def, 'utf8')
14
+
15
+ // const config = await createConfig({})
16
+ // const bundle = await bundleFromString({
17
+ // source,
18
+ // config,
19
+ // dereference: true,
20
+ // })
21
+
22
+ // // console.log('BUNDLE', bundle)
23
+
24
+ // Fs.writeFileSync(
25
+ // ctx.folder + '/../model/def.jsonic',
26
+ // JSON.stringify(bundle.bundle.parsed, null, 2)
27
+ // )
28
+
29
+
30
+ // const spec: any = {}
31
+
32
+ // spec.main = {
33
+ // sdk: {
34
+ // api: {
35
+ // // cmap
36
+ // /*
37
+ // path: each(bundle.bundle.parsed.paths, (path: any) => ({
38
+ // param: {}
39
+ // }))
40
+ // */
41
+ // }
42
+ // }
43
+ // }
44
+
45
+
46
+ // Fs.writeFileSync(
47
+ // ctx.folder + '/../model/spec.jsonic',
48
+ // JSON.stringify(spec, null, 2)
49
+ // )
50
+
51
+
52
+ return false
53
+ }
54
+
55
+
56
+
57
+ export {
58
+ PrepareOpenAPI
59
+ }
package/src/sdkgen.ts CHANGED
@@ -4,31 +4,59 @@ import * as Fs from 'node:fs'
4
4
 
5
5
  import { Jostraca } from 'jostraca'
6
6
 
7
+ import { ApiDef } from '@voxgig/apidef'
8
+
9
+
10
+ import { PrepareOpenAPI } from './prepare-openapi'
11
+
7
12
 
8
13
  type SdkGenOptions = {
9
14
  folder: string
15
+ def?: string
10
16
  fs: any
17
+ model?: {
18
+ folder: string
19
+ entity: any
20
+ }
11
21
  }
12
22
 
13
23
 
14
24
 
15
-
16
25
  function SdkGen(opts: SdkGenOptions) {
17
26
  const fs = opts.fs || Fs
18
27
  const folder = opts.folder || '.'
28
+ const def = opts.def || 'def.yml'
19
29
  const jostraca = Jostraca()
20
30
 
21
31
  // const { cmp, each, Project, Folder, File, Code } = jostraca
22
32
 
23
- function generate(spec: any) {
33
+ async function generate(spec: any) {
24
34
  const { model, root } = spec
25
35
 
26
- jostraca.generate(
27
- { fs, folder },
28
- () => root({ model })
29
- )
36
+ /*
37
+ if (await prepare(spec, { fs, folder, def })) {
38
+ return
39
+ }
40
+ */
41
+
42
+ try {
43
+ jostraca.generate(
44
+ { fs, folder },
45
+ () => root({ model })
46
+ )
47
+ }
48
+ catch (err: any) {
49
+ console.log('SDKGEN ERROR: ', err)
50
+ throw err
51
+ }
30
52
  }
31
53
 
54
+
55
+ async function prepare(spec: any, ctx: any) {
56
+ return await PrepareOpenAPI(spec, ctx)
57
+ }
58
+
59
+
32
60
  return {
33
61
  generate,
34
62
 
@@ -40,10 +68,26 @@ function SdkGen(opts: SdkGenOptions) {
40
68
  }
41
69
 
42
70
 
43
- SdkGen.makeBuild = function(root: any, opts: SdkGenOptions) {
71
+ SdkGen.makeBuild = async function(root: any, opts: SdkGenOptions) {
72
+ console.log('SDKGEN makeBuild')
44
73
  const sdkgen = SdkGen(opts)
45
74
 
46
- return function build(model: any, build: any) {
75
+ const apidef = ApiDef()
76
+
77
+ const spec = {
78
+ def: opts.def,
79
+ kind: 'openapi-3',
80
+ model: opts.model ? (opts.model.folder + '/api.jsonic') : undefined,
81
+ meta: {
82
+ name: 'foo'
83
+ },
84
+ entity: opts.model ? opts.model.entity : undefined,
85
+ }
86
+
87
+ await apidef.watch(spec)
88
+
89
+ return async function build(model: any, build: any) {
90
+ // TODO: voxgig model needs to handle errors from here
47
91
  return sdkgen.generate({ model, build, root })
48
92
  }
49
93
  }