@voxgig/create-sdkgen 0.0.2 → 0.0.5

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 (103) hide show
  1. package/bin/run-create-sdkgen.js +73 -12
  2. package/dist/create-sdkgen.d.ts +5 -2
  3. package/dist/create-sdkgen.js +10 -2
  4. package/dist/create-sdkgen.js.map +1 -1
  5. package/dist/standard/ModelSdk.js +21 -14
  6. package/dist/standard/ModelSdk.js.map +1 -1
  7. package/dist/standard/Root.js +13 -47
  8. package/dist/standard/Root.js.map +1 -1
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/package.json +9 -7
  11. package/src/create-sdkgen.ts +21 -4
  12. package/src/standard/ModelSdk.ts +30 -15
  13. package/src/standard/Root.ts +15 -54
  14. package/tm/standard/.env.local +2 -0
  15. package/tm/standard/build/doc.js +23 -0
  16. package/tm/standard/build/sdk.js +22 -0
  17. package/tm/standard/def/DEFINITION.md +4 -0
  18. package/tm/standard/model/.model-config/model-config.jsonic +15 -0
  19. package/tm/standard/model/go.jsonic +6 -0
  20. package/tm/standard/model/js.jsonic +6 -0
  21. package/tm/standard/model/php.jsonic +6 -0
  22. package/tm/standard/model/py.jsonic +7 -0
  23. package/tm/standard/model/rb.jsonic +6 -0
  24. package/tm/standard/package.json +31 -0
  25. package/tm/standard/src/DocStaticRoot.ts +32 -0
  26. package/tm/standard/src/Root.ts +62 -0
  27. package/tm/standard/src/go/Entity_go.ts +226 -0
  28. package/tm/standard/src/go/MainEntity_go.ts +26 -0
  29. package/tm/standard/src/go/Main_go.ts +168 -0
  30. package/tm/standard/src/go/Quick_go.ts +108 -0
  31. package/tm/standard/src/go/ReadmeInstall_go.ts +19 -0
  32. package/tm/standard/src/go/ReadmeQuick_go.ts +45 -0
  33. package/tm/standard/src/go/TestAcceptEntity_go.ts +219 -0
  34. package/tm/standard/src/go/TestAccept_go.ts +38 -0
  35. package/tm/standard/src/go/TestEntity_go.ts +79 -0
  36. package/tm/standard/src/go/TestMain_go.ts +61 -0
  37. package/tm/standard/src/go/Test_go.ts +20 -0
  38. package/tm/standard/src/js/Entity_js.ts +196 -0
  39. package/tm/standard/src/js/MainEntity_js.ts +22 -0
  40. package/tm/standard/src/js/Main_js.ts +154 -0
  41. package/tm/standard/src/js/Quick_js.ts +81 -0
  42. package/tm/standard/src/js/ReadmeInstall_js.ts +19 -0
  43. package/tm/standard/src/js/ReadmeQuick_js.ts +27 -0
  44. package/tm/standard/src/js/TestAcceptEntity_js.ts +101 -0
  45. package/tm/standard/src/js/TestAccept_js.ts +60 -0
  46. package/tm/standard/src/js/TestEntity_js.ts +24 -0
  47. package/tm/standard/src/js/TestMain_js.ts +123 -0
  48. package/tm/standard/src/js/Test_js.ts +24 -0
  49. package/tm/standard/src/php/Entity_php.ts +97 -0
  50. package/tm/standard/src/php/MainEntity_php.ts +43 -0
  51. package/tm/standard/src/php/Main_php.ts +50 -0
  52. package/tm/standard/src/php/Quick_php.ts +59 -0
  53. package/tm/standard/src/php/TestAcceptEntity_php.ts +81 -0
  54. package/tm/standard/src/php/TestAccept_php.ts +33 -0
  55. package/tm/standard/src/php/TestEntity_php.ts +64 -0
  56. package/tm/standard/src/php/TestMain_php.ts +120 -0
  57. package/tm/standard/src/php/Test_php.ts +21 -0
  58. package/tm/standard/src/py/Entity_py.ts +98 -0
  59. package/tm/standard/src/py/MainEntity_py.ts +19 -0
  60. package/tm/standard/src/py/Main_py.ts +211 -0
  61. package/tm/standard/src/py/Quick_py.ts +133 -0
  62. package/tm/standard/src/py/TestAcceptEntity_py.ts +47 -0
  63. package/tm/standard/src/py/TestAccept_py.ts +77 -0
  64. package/tm/standard/src/py/TestEntity_py.ts +50 -0
  65. package/tm/standard/src/py/TestMain_py.ts +103 -0
  66. package/tm/standard/src/py/Test_py.ts +28 -0
  67. package/tm/standard/src/rb/Client_rb.ts +142 -0
  68. package/tm/standard/src/rb/Entity_rb.ts +153 -0
  69. package/tm/standard/src/rb/Error_rb.ts +56 -0
  70. package/tm/standard/src/rb/MainEntity_rb.ts +16 -0
  71. package/tm/standard/src/rb/Main_rb.ts +55 -0
  72. package/tm/standard/src/rb/Quick_rb.ts +65 -0
  73. package/tm/standard/src/rb/ReadmeInstall_rb.ts +19 -0
  74. package/tm/standard/src/rb/ReadmeQuick_rb.ts +30 -0
  75. package/tm/standard/src/rb/TestAcceptEntity_rb.ts +83 -0
  76. package/tm/standard/src/rb/TestAccept_rb.ts +45 -0
  77. package/tm/standard/src/rb/TestEntity_rb.ts +82 -0
  78. package/tm/standard/src/rb/TestMain_rb.ts +67 -0
  79. package/tm/standard/src/rb/Test_rb.ts +27 -0
  80. package/tm/standard/src/tsconfig.json +15 -0
  81. package/tm/standard/tm/go/.env.example +2 -0
  82. package/tm/standard/tm/go/LICENSE +22 -0
  83. package/tm/standard/tm/go/go.mod +5 -0
  84. package/tm/standard/tm/go/go.sum +2 -0
  85. package/tm/standard/tm/js/LICENSE +22 -0
  86. package/tm/standard/tm/js/package.json +17 -0
  87. package/tm/standard/tm/php/LICENSE +22 -0
  88. package/tm/standard/tm/py/LICENSE +22 -0
  89. package/tm/standard/tm/py/MANIFEST.in +4 -0
  90. package/tm/standard/tm/py/Makefile +14 -0
  91. package/tm/standard/tm/py/pyproject.toml +4 -0
  92. package/tm/standard/tm/py/pytest.ini +3 -0
  93. package/tm/standard/tm/py/requirements.txt +4 -0
  94. package/tm/standard/tm/py/setup.cfg +2 -0
  95. package/tm/standard/tm/py/setup.py +82 -0
  96. package/tm/standard/tm/rb/.rspec +1 -0
  97. package/tm/standard/tm/rb/Gemfile +21 -0
  98. package/tm/standard/tm/rb/LICENSE +22 -0
  99. package/tm/standard/tm/rb/Rakefile +6 -0
  100. package/tm/standard/tm/rb/spec/spec_helper.rb +22 -0
  101. package/tm/standard/tm/rb/tm.gemspec +39 -0
  102. package/src/standard/Root.ts~ +0 -3
  103. /package/{src/standard/ModelSdk.ts~ → bin/run-create-sdkgen.js~} +0 -0
@@ -5,6 +5,8 @@ const { statSync } = require('node:fs')
5
5
  const { parseArgs } = require('node:util')
6
6
 
7
7
  const { Gubu, Fault } = require('gubu')
8
+ const { Aontu, Context } = require('aontu')
9
+
8
10
 
9
11
  const Pkg = require('../package.json')
10
12
 
@@ -63,18 +65,8 @@ function generate(options) {
63
65
  })
64
66
 
65
67
 
66
- // TODO: load model
67
-
68
- const model = {
69
- name: options.name,
70
- year: new Date().getFullYear(),
71
- def: {
72
- filepath: options.def || 'def.yml'
73
- }
74
- }
75
-
76
- model.def.filename = Path.basename(model.def.filepath)
77
-
68
+ const model = resolveModel(options)
69
+
78
70
  const spec = {
79
71
  // TODO: move to CreateSdkGen options
80
72
  spec: options.spec,
@@ -85,6 +77,8 @@ function generate(options) {
85
77
  if(options.watch) {
86
78
  spec.watch = [
87
79
  '../tm',
80
+ '../feature',
81
+ '../def',
88
82
  '../dist',
89
83
  ]
90
84
  createSdkGen.watch(spec)
@@ -96,6 +90,57 @@ function generate(options) {
96
90
  }
97
91
 
98
92
 
93
+ function resolveModel(options) {
94
+
95
+ const typespec = `
96
+ name: string
97
+ year: number
98
+ def: filepath: string
99
+ feature: &: {
100
+ active: *false | boolean
101
+ }
102
+ `
103
+
104
+ const features = options.feature.map(name=>`feature:${name}:active:true`)
105
+
106
+ const src = [
107
+ typespec,
108
+ `name: ${options.name}`,
109
+ `year: ${new Date().getFullYear()}`,
110
+ `def: filepath: "${options.def || 'def.yml'}"`,
111
+ '' === options.model ? '' : `@"${options.model}"`,
112
+ ...(options.set||[]),
113
+ ...(features||[]),
114
+ ].join('\n')
115
+ const aopts = {}
116
+ const root = Aontu(src, aopts)
117
+ const hasErr = root.err && 0 < root.err.length
118
+
119
+ // TODO: collect all errors
120
+ if (hasErr) {
121
+ // console.log('ERROR ROOT', root.err)
122
+ throw root.err[0].msg
123
+ }
124
+
125
+ let genctx = new Context({ root })
126
+ const model = root.gen(genctx)
127
+
128
+ // TODO: collect all errors
129
+ if (genctx.err && 0 < genctx.err.length) {
130
+ // console.log(genctx.err)
131
+ // console.log('ERROR GEN', genctx.err)
132
+ throw new Error(JSON.stringify(genctx.err[0]))
133
+ }
134
+
135
+ model.def.filename = Path.basename(model.def.filepath)
136
+
137
+ // console.log('MODEL')
138
+ // console.dir(model,{depth:null})
139
+
140
+ return model
141
+ }
142
+
143
+
99
144
  function resolveOptions() {
100
145
 
101
146
  const args = parseArgs({
@@ -113,12 +158,24 @@ function resolveOptions() {
113
158
  default: '',
114
159
  },
115
160
 
161
+ set: {
162
+ type: 'string',
163
+ short: 's',
164
+ multiple: true,
165
+ },
166
+
116
167
  model: {
117
168
  type: 'string',
118
169
  short: 'm',
119
170
  default: '',
120
171
  },
121
172
 
173
+ feature: {
174
+ type: 'string',
175
+ short: 't',
176
+ multiple: true,
177
+ },
178
+
122
179
  watch: {
123
180
  type: 'boolean',
124
181
  short: 'w',
@@ -147,6 +204,8 @@ function resolveOptions() {
147
204
  folder: '' === args.values.folder ? args.positionals[0] : args.values.folder,
148
205
  def: args.values.def,
149
206
  model: args.values.model,
207
+ feature: args.values.feature,
208
+ set: args.values.set,
150
209
  watch: !!args.values.watch,
151
210
  debug: !!args.values.debug,
152
211
  help: !!args.values.help,
@@ -163,6 +222,8 @@ function validateOptions(rawOptions) {
163
222
  folder: String,
164
223
  def: '',
165
224
  model: '',
225
+ feature: [String],
226
+ set: [String],
166
227
  watch: Boolean,
167
228
  debug: Boolean,
168
229
  help: Boolean,
@@ -6,9 +6,12 @@ type FullCreateSdkGenOptions = {
6
6
  rootpath: string;
7
7
  };
8
8
  type CreateSdkGenOptions = Partial<FullCreateSdkGenOptions>;
9
- declare function CreateSdkGen(opts: CreateSdkGenOptions): {
9
+ type GenerateSpec = {
10
+ watch: string[];
11
+ };
12
+ declare function CreateSdkGen(opts: FullCreateSdkGenOptions): {
10
13
  generate: (spec: any) => Promise<void>;
11
- watch: (spec: any) => Promise<void>;
14
+ watch: (spec: GenerateSpec) => Promise<void>;
12
15
  };
13
16
  export type { CreateSdkGenOptions, };
14
17
  export { CreateSdkGen, };
@@ -28,18 +28,20 @@ exports.CreateSdkGen = CreateSdkGen;
28
28
  const Fs = __importStar(require("node:fs"));
29
29
  const chokidar_1 = require("chokidar");
30
30
  const JostracaModule = __importStar(require("jostraca"));
31
- const { Jostraca } = JostracaModule;
31
+ const { each, names, Jostraca } = JostracaModule;
32
32
  function CreateSdkGen(opts) {
33
33
  const fs = opts.fs || Fs;
34
34
  const folder = opts.folder || '.';
35
35
  const jostraca = Jostraca();
36
36
  const rootpath = opts.rootpath;
37
37
  async function generate(spec) {
38
- // console.log('CreateSdkGen.generate', spec)
38
+ const now = Date.now();
39
+ // console.log('CREATE SDK', now, new Date(now), spec)
39
40
  const { model } = spec;
40
41
  const ctx$ = { fs, folder, meta: { spec } };
41
42
  clear();
42
43
  const { Root } = require(rootpath);
44
+ completeModel(model);
43
45
  try {
44
46
  await jostraca.generate(ctx$, () => Root({ model }));
45
47
  }
@@ -76,6 +78,12 @@ function CreateSdkGen(opts) {
76
78
  watch,
77
79
  };
78
80
  }
81
+ function completeModel(model) {
82
+ names(model, model.name);
83
+ each(model.feature, (feature) => {
84
+ names(feature, feature.key$);
85
+ });
86
+ }
79
87
  // Adapted from https://github.com/sindresorhus/import-fresh - Thanks!
80
88
  function clearRequire(path) {
81
89
  let filePath = require.resolve(path);
@@ -1 +1 @@
1
- {"version":3,"file":"create-sdkgen.js","sourceRoot":"","sources":["../src/create-sdkgen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-sdkgen.js","sourceRoot":"","sources":["../src/create-sdkgen.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,9 @@ const ModelSdk = (0, jostraca_1.cmp)(function ModelSdk(props) {
9
9
  // const def = ctx$.fs.readFileSync(model.def.filepath)
10
10
  (0, jostraca_1.File)({ name: 'sdk.jsonic' }, () => {
11
11
  (0, jostraca_1.Content)(`
12
+
13
+ @"../node_modules/@voxgig/sdkgen/model/sdkgen.jsonic"
14
+
12
15
  name: '${model.name}'
13
16
 
14
17
  @"api.jsonic"
@@ -28,26 +31,14 @@ main: sdk: build: go: @"go.jsonic"
28
31
 
29
32
 
30
33
 
31
- main: sdk: test: quick: entity: name: q
34
+ main: sdk: test: quick: entity: name: foo
32
35
 
33
36
 
34
37
  main: sdk: entity: $.main.api.entity
35
38
 
36
39
 
37
- main: sdk: entity: &: {
38
- name: .$KEY
39
- publish: *true | boolean
40
- }
41
-
42
-
43
-
44
- main: sdk: options: &: {
45
- name: .$KEY
46
- publish: *true | boolean
47
- }
48
-
49
40
 
50
- main: sdk: options: {
41
+ main: sdk: option: {
51
42
 
52
43
  endpoint: {
53
44
  kind: *String | string
@@ -65,6 +56,22 @@ main: sdk: options: {
65
56
  }
66
57
  }
67
58
  `);
59
+ (0, jostraca_1.each)(model.feature).filter((feature) => feature.active).map((feature) => {
60
+ (0, jostraca_1.Content)(`
61
+ main: sdk: feature: ${feature.name}: {
62
+ active: true
63
+ config: {
64
+ `);
65
+ (0, jostraca_1.Fragment)({
66
+ from: `${__dirname}/../../feature/standard/${feature.name}/${feature.name}-config.jsonic`,
67
+ indent: ' '
68
+ });
69
+ (0, jostraca_1.Content)(`
70
+ }
71
+ }
72
+
73
+ `);
74
+ });
68
75
  });
69
76
  });
70
77
  exports.ModelSdk = ModelSdk;
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../src/standard/ModelSdk.ts"],"names":[],"mappings":";;;AACA,uCAWiB;AAIjB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU;IAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAA;IAGvC,mCAAmC;IAEnC,mBAAmB;IACnB,uDAAuD;IAGvD,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;QAChC,IAAA,kBAAO,EAAC;SACH,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0CL,KAAK,CAAC,IAAI;;;;;cAKV,KAAK,CAAC,IAAI;;;;;;;;CAQvB,CAAC,CAAA;IACA,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;AAIA,4BAAQ"}
1
+ {"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../src/standard/ModelSdk.ts"],"names":[],"mappings":";;;AACA,uCAWiB;AAIjB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU;IAC/C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAA;IAGvC,mCAAmC;IAEnC,mBAAmB;IACnB,uDAAuD;IAGvD,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;QAChC,IAAA,kBAAO,EAAC;;;;SAIH,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8BL,KAAK,CAAC,IAAI;;;;;cAKV,KAAK,CAAC,IAAI;;;;;;;;CAQvB,CAAC,CAAA;QAGE,IAAA,eAAI,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;YAEhF,IAAA,kBAAO,EACL;sBACc,OAAO,CAAC,IAAI;;;CAGjC,CAAC,CAAA;YAEI,IAAA,mBAAQ,EAAC;gBACP,IAAI,EACF,GAAG,SAAS,2BAA2B,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,gBAAgB;gBACrF,MAAM,EAAE,MAAM;aACf,CAAC,CAAA;YAEF,IAAA,kBAAO,EAAC;;;;CAIb,CAAC,CAAA;QACE,CAAC,CAAC,CAAA;IAEJ,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;AAIA,4BAAQ"}
@@ -7,70 +7,36 @@ exports.Root = void 0;
7
7
  const node_path_1 = __importDefault(require("node:path"));
8
8
  const jostraca_1 = require("jostraca");
9
9
  const ModelSdk_1 = require("./ModelSdk");
10
+ // TODO: rename to RootSdk
10
11
  const Root = (0, jostraca_1.cmp)(function Root(props) {
11
12
  const { model, ctx$ } = props;
12
13
  const { folder, meta } = ctx$;
13
14
  const { spec } = meta;
14
- console.log('Root 5');
15
- // console.log('SPEC', spec)
16
- (0, jostraca_1.names)(model, model.name);
17
- // console.log('MODEL')
18
- // console.dir(model, { depth: null })
15
+ // names(model, model.name)
19
16
  ctx$.model = model;
20
- /*
21
- let createInfo = { exclude: [], last: Number.MAX_SAFE_INTEGER }
22
-
23
-
24
- try {
25
- createInfo = JSON.parse(ctx$.fs.readFileSync(
26
- Path.join(folder, '.voxgig', 'create-sdkgen.json'), 'utf8'))
27
- }
28
- catch (err: any) {
29
- console.log(err)
30
- // TODO: file not foound ignored, handle others!
31
- }
32
-
33
- ctx$.info = createInfo
34
-
35
- console.log('INFO', ctx$.info)
36
- */
37
17
  (0, jostraca_1.Project)({ folder }, () => {
38
- // TODO: perhaps remove the need for this, create top level folder in Project
39
- // would keep paths indo of project folder name
40
- // Folder({ name: Path.basename(folder) }, () => {
41
- // File({ name: 'foo.txt' }, () => {
42
- // Content('FOO')
43
- // })
44
18
  // console.log('FOLDER', folder)
45
- (0, jostraca_1.Copy)({ from: __dirname + '/../../tm/standard' });
19
+ (0, jostraca_1.Copy)({
20
+ from: __dirname + '/../../tm/standard',
21
+ exclude: ['.env.local']
22
+ });
46
23
  const def = model.def.filepath;
47
24
  if (null != def && '' !== def) {
48
25
  (0, jostraca_1.Folder)({ name: 'def' }, () => {
49
26
  (0, jostraca_1.Copy)({ from: def, name: node_path_1.default.basename(def) });
50
27
  });
51
28
  }
52
- (0, jostraca_1.Folder)({ name: '.voxgig' }, () => { });
53
29
  (0, jostraca_1.Folder)({ name: 'model' }, () => {
54
30
  (0, ModelSdk_1.ModelSdk)({});
55
31
  });
32
+ (0, jostraca_1.Folder)({ name: 'feature' }, () => {
33
+ (0, jostraca_1.each)(model.feature).map((feature) => {
34
+ (0, jostraca_1.Folder)({ name: feature.name }, () => {
35
+ (0, jostraca_1.Copy)({ from: __dirname + '/../../feature/standard/' + feature.name });
36
+ });
37
+ });
38
+ });
56
39
  });
57
- /*
58
- // TODO: need mechanism to ensure this is last
59
- setTimeout(() => {
60
- try {
61
- const info = {
62
- last: Date.now(),
63
- exclude: ctx$.info.exclude,
64
- }
65
- ctx$.fs.writeFileSync(Path.join(folder, '.voxgig', 'create-sdkgen.json'),
66
- JSON.stringify(info, null, 2))
67
- }
68
- catch (err: any) {
69
- console.log(err)
70
- // TODO: file not foound ignored, handle others!
71
- }
72
- }, 777)
73
- */
74
40
  });
75
41
  exports.Root = Root;
76
42
  //# sourceMappingURL=Root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/standard/Root.ts"],"names":[],"mappings":";;;;;;AAEA,0DAA4B;AAG5B,uCAWiB;AAGjB,yCAAqC;AAGrC,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAE7B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAErB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAErB,4BAA4B;IAE5B,IAAA,gBAAK,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAExB,uBAAuB;IACvB,sCAAsC;IAEtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAElB;;;;;;;;;;;;;;;;MAgBE;IAEF,IAAA,kBAAO,EAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE;QAEvB,6EAA6E;QAC7E,+CAA+C;QAC/C,kDAAkD;QAElD,oCAAoC;QACpC,mBAAmB;QACnB,KAAK;QAEL,gCAAgC;QAChC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,SAAS,GAAG,oBAAoB,EAAE,CAAC,CAAA;QAEhD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAA;QAC9B,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC3B,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAEtC,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;YAC7B,IAAA,mBAAQ,EAAC,EAAE,CAAC,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;;;;QAgBI;AACN,CAAC,CAAC,CAAA;AAIA,oBAAI"}
1
+ {"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/standard/Root.ts"],"names":[],"mappings":";;;;;;AAEA,0DAA4B;AAG5B,uCAWiB;AAGjB,yCAAqC;AAGrC,0BAA0B;AAC1B,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU;IACvC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAE7B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;IAErB,2BAA2B;IAE3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAElB,IAAA,kBAAO,EAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE;QAEvB,gCAAgC;QAChC,IAAA,eAAI,EAAC;YACH,IAAI,EAAE,SAAS,GAAG,oBAAoB;YACtC,OAAO,EAAE,CAAC,YAAY,CAAC;SACxB,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAA;QAC9B,IAAI,IAAI,IAAI,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC9B,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC3B,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,mBAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/C,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;YAC7B,IAAA,mBAAQ,EAAC,EAAE,CAAC,CAAA;QACd,CAAC,CAAC,CAAA;QAEF,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;YAC/B,IAAA,eAAI,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;gBACvC,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE;oBAClC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,SAAS,GAAG,0BAA0B,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBACvE,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IAEJ,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;AAIA,oBAAI"}
@@ -1 +1 @@
1
- {"root":["../src/create-sdkgen.ts","../src/utility.ts","../src/standard/modelsdk.ts","../src/standard/root.ts"],"version":"5.6.2"}
1
+ {"root":["../src/create-sdkgen.ts","../src/utility.ts","../src/standard/modelsdk.ts","../src/standard/root.ts"],"version":"5.6.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/create-sdkgen",
3
- "version": "0.0.2",
3
+ "version": "0.0.5",
4
4
  "main": "dist/create-sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/create-sdkgen.d.ts",
@@ -34,19 +34,21 @@
34
34
  "files": [
35
35
  "src",
36
36
  "dist",
37
+ "bin",
38
+ "tm",
37
39
  "LICENSE"
38
40
  ],
39
41
  "devDependencies": {
40
42
  "@hapi/code": "^9.0.3",
41
- "@types/node": "22.5.5",
42
- "esbuild": "^0.23.1",
43
- "memfs": "^4.12.0",
44
- "typescript": "^5.6.2"
43
+ "@types/node": "22.7.6",
44
+ "esbuild": "^0.24.0",
45
+ "memfs": "^4.14.0",
46
+ "typescript": "^5.6.3"
45
47
  },
46
48
  "dependencies": {
47
49
  "aontu": "^0.22.0",
48
- "chokidar": "^4.0.0",
50
+ "chokidar": "^4.0.1",
49
51
  "gubu": "^8.3.0",
50
- "jostraca": "^0.6.0"
52
+ "jostraca": "^0.7.7"
51
53
  }
52
54
  }
@@ -19,17 +19,23 @@ type FullCreateSdkGenOptions = {
19
19
  type CreateSdkGenOptions = Partial<FullCreateSdkGenOptions>
20
20
 
21
21
 
22
- const { Jostraca } = JostracaModule
22
+ type GenerateSpec = {
23
+ watch: string[]
24
+ }
25
+
23
26
 
27
+ const { each, names, Jostraca } = JostracaModule
24
28
 
25
- function CreateSdkGen(opts: CreateSdkGenOptions) {
29
+
30
+ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
26
31
  const fs = opts.fs || Fs
27
32
  const folder = opts.folder || '.'
28
33
  const jostraca = Jostraca()
29
34
  const rootpath = opts.rootpath as string
30
35
 
31
36
  async function generate(spec: any) {
32
- // console.log('CreateSdkGen.generate', spec)
37
+ const now = Date.now()
38
+ // console.log('CREATE SDK', now, new Date(now), spec)
33
39
 
34
40
  const { model } = spec
35
41
 
@@ -38,6 +44,8 @@ function CreateSdkGen(opts: CreateSdkGenOptions) {
38
44
  clear()
39
45
  const { Root } = require(rootpath)
40
46
 
47
+ completeModel(model)
48
+
41
49
  try {
42
50
  await jostraca.generate(ctx$, () => Root({ model }))
43
51
  }
@@ -48,7 +56,7 @@ function CreateSdkGen(opts: CreateSdkGenOptions) {
48
56
  }
49
57
 
50
58
 
51
- async function watch(spec: any) {
59
+ async function watch(spec: GenerateSpec) {
52
60
  const fsw = new FSWatcher()
53
61
  let last_change_time = 0
54
62
 
@@ -89,6 +97,15 @@ function CreateSdkGen(opts: CreateSdkGenOptions) {
89
97
  }
90
98
 
91
99
 
100
+ function completeModel(model: any) {
101
+ names(model, model.name)
102
+
103
+ each(model.feature, (feature: any) => {
104
+ names(feature, feature.key$)
105
+ })
106
+ }
107
+
108
+
92
109
  // Adapted from https://github.com/sindresorhus/import-fresh - Thanks!
93
110
  function clearRequire(path: string) {
94
111
  let filePath = require.resolve(path)
@@ -6,7 +6,7 @@ import {
6
6
 
7
7
  Project,
8
8
  Folder,
9
- Copy,
9
+ Fragment,
10
10
  File,
11
11
  Content,
12
12
 
@@ -26,6 +26,9 @@ const ModelSdk = cmp(function ModelSdk(props: any) {
26
26
 
27
27
  File({ name: 'sdk.jsonic' }, () => {
28
28
  Content(`
29
+
30
+ @"../node_modules/@voxgig/sdkgen/model/sdkgen.jsonic"
31
+
29
32
  name: '${model.name}'
30
33
 
31
34
  @"api.jsonic"
@@ -45,26 +48,14 @@ main: sdk: build: go: @"go.jsonic"
45
48
 
46
49
 
47
50
 
48
- main: sdk: test: quick: entity: name: q
51
+ main: sdk: test: quick: entity: name: foo
49
52
 
50
53
 
51
54
  main: sdk: entity: $.main.api.entity
52
55
 
53
56
 
54
- main: sdk: entity: &: {
55
- name: .$KEY
56
- publish: *true | boolean
57
- }
58
57
 
59
-
60
-
61
- main: sdk: options: &: {
62
- name: .$KEY
63
- publish: *true | boolean
64
- }
65
-
66
-
67
- main: sdk: options: {
58
+ main: sdk: option: {
68
59
 
69
60
  endpoint: {
70
61
  kind: *String | string
@@ -82,6 +73,30 @@ main: sdk: options: {
82
73
  }
83
74
  }
84
75
  `)
76
+
77
+
78
+ each(model.feature).filter((feature: any) => feature.active).map((feature: any) => {
79
+
80
+ Content(
81
+ `
82
+ main: sdk: feature: ${feature.name}: {
83
+ active: true
84
+ config: {
85
+ `)
86
+
87
+ Fragment({
88
+ from:
89
+ `${__dirname}/../../feature/standard/${feature.name}/${feature.name}-config.jsonic`,
90
+ indent: ' '
91
+ })
92
+
93
+ Content(`
94
+ }
95
+ }
96
+
97
+ `)
98
+ })
99
+
85
100
  })
86
101
 
87
102
  })
@@ -20,53 +20,24 @@ import {
20
20
  import { ModelSdk } from './ModelSdk'
21
21
 
22
22
 
23
+ // TODO: rename to RootSdk
23
24
  const Root = cmp(function Root(props: any) {
24
25
  const { model, ctx$ } = props
25
26
 
26
27
  const { folder, meta } = ctx$
27
28
  const { spec } = meta
28
29
 
29
- console.log('Root 5')
30
-
31
- // console.log('SPEC', spec)
32
-
33
- names(model, model.name)
34
-
35
- // console.log('MODEL')
36
- // console.dir(model, { depth: null })
30
+ // names(model, model.name)
37
31
 
38
32
  ctx$.model = model
39
33
 
40
- /*
41
- let createInfo = { exclude: [], last: Number.MAX_SAFE_INTEGER }
42
-
43
-
44
- try {
45
- createInfo = JSON.parse(ctx$.fs.readFileSync(
46
- Path.join(folder, '.voxgig', 'create-sdkgen.json'), 'utf8'))
47
- }
48
- catch (err: any) {
49
- console.log(err)
50
- // TODO: file not foound ignored, handle others!
51
- }
52
-
53
- ctx$.info = createInfo
54
-
55
- console.log('INFO', ctx$.info)
56
- */
57
-
58
34
  Project({ folder }, () => {
59
35
 
60
- // TODO: perhaps remove the need for this, create top level folder in Project
61
- // would keep paths indo of project folder name
62
- // Folder({ name: Path.basename(folder) }, () => {
63
-
64
- // File({ name: 'foo.txt' }, () => {
65
- // Content('FOO')
66
- // })
67
-
68
36
  // console.log('FOLDER', folder)
69
- Copy({ from: __dirname + '/../../tm/standard' })
37
+ Copy({
38
+ from: __dirname + '/../../tm/standard',
39
+ exclude: ['.env.local']
40
+ })
70
41
 
71
42
  const def = model.def.filepath
72
43
  if (null != def && '' !== def) {
@@ -75,30 +46,20 @@ const Root = cmp(function Root(props: any) {
75
46
  })
76
47
  }
77
48
 
78
- Folder({ name: '.voxgig' }, () => { })
79
-
80
49
  Folder({ name: 'model' }, () => {
81
50
  ModelSdk({})
82
51
  })
52
+
53
+ Folder({ name: 'feature' }, () => {
54
+ each(model.feature).map((feature: any) => {
55
+ Folder({ name: feature.name }, () => {
56
+ Copy({ from: __dirname + '/../../feature/standard/' + feature.name })
57
+ })
58
+ })
59
+ })
60
+
83
61
  })
84
62
 
85
- /*
86
- // TODO: need mechanism to ensure this is last
87
- setTimeout(() => {
88
- try {
89
- const info = {
90
- last: Date.now(),
91
- exclude: ctx$.info.exclude,
92
- }
93
- ctx$.fs.writeFileSync(Path.join(folder, '.voxgig', 'create-sdkgen.json'),
94
- JSON.stringify(info, null, 2))
95
- }
96
- catch (err: any) {
97
- console.log(err)
98
- // TODO: file not foound ignored, handle others!
99
- }
100
- }, 777)
101
- */
102
63
  })
103
64
 
104
65
 
@@ -0,0 +1,2 @@
1
+ $$NAME$$_ENDPOINT=https://api.example.com
2
+ $$NAME$$_APIKEY=apikey
@@ -0,0 +1,23 @@
1
+
2
+ const { DocGen } = require('@voxgig/docgen')
3
+
4
+ try {
5
+ const config = {
6
+ root: __dirname+'/../dist/DocStaticRoot.js',
7
+ folder: __dirname+'/../doc',
8
+ def: __dirname+'/../def/$$def.filename$$',
9
+ meta: {
10
+ name: '$$name$$'
11
+ },
12
+ model: {
13
+ folder: __dirname+'/../model',
14
+ },
15
+ }
16
+
17
+ // console.log('DOC BUILD', config)
18
+
19
+ module.exports = DocGen.makeBuild(config)
20
+ }
21
+ catch(e) {
22
+ console.log('DOC ERROR', e)
23
+ }