@voxgig/create-sdkgen 0.27.0 → 0.29.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.
Files changed (73) hide show
  1. package/README.md +23 -0
  2. package/dist/project/standard/CreateRoot.js +40 -43
  3. package/dist/project/standard/CreateRoot.js.map +1 -1
  4. package/dist/project/standard/ModelSdk.js +2 -2
  5. package/dist/project/standard/ModelSdk.js.map +1 -1
  6. package/dist/project/standard/migrate.d.ts +9 -0
  7. package/dist/project/standard/migrate.js +137 -0
  8. package/dist/project/standard/migrate.js.map +1 -0
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/package.json +4 -4
  11. package/project/standard/.sdk/admin/README.md +3 -1
  12. package/project/standard/.sdk/admin/check-drift.sh +22 -5
  13. package/project/standard/.sdk/model/.model-config/{model-config.aon → model-config.aontu} +1 -1
  14. package/project/standard/.sdk/model/{sdk.fragment.aon → sdk.fragment.aontu} +7 -7
  15. package/project/standard/.sdk/package.json +12 -12
  16. package/project/standard/.sdk/src/Root.ts +63 -39
  17. package/project/standard/.sdk/src/RootPlan.ts +64 -0
  18. package/project/standard/.sdk/test/.model-config/model-config.aontu +4 -0
  19. package/project/standard/.sdk/test/feature/{feature-test-index.aon → feature-test-index.aontu} +1 -1
  20. package/project/standard/.sdk/test/primary/primary-test-index.aontu +30 -0
  21. package/project/standard/.sdk/test/struct/test.aontu +26 -0
  22. package/project/standard/.sdk/test/test.aontu +4 -0
  23. package/src/project/standard/CreateRoot.ts +45 -54
  24. package/src/project/standard/ModelSdk.ts +2 -2
  25. package/src/project/standard/migrate.ts +172 -0
  26. package/project/standard/.sdk/test/.model-config/model-config.aon +0 -4
  27. package/project/standard/.sdk/test/primary/primary-test-index.aon +0 -30
  28. package/project/standard/.sdk/test/struct/test.aon +0 -26
  29. package/project/standard/.sdk/test/test.aon +0 -4
  30. /package/project/standard/.sdk/model/{config.aon → config.aontu} +0 -0
  31. /package/project/standard/.sdk/model/edition/{edition-index.aon → edition-index.aontu} +0 -0
  32. /package/project/standard/.sdk/model/feature/{feature-index.aon → feature-index.aontu} +0 -0
  33. /package/project/standard/.sdk/model/target/{target-index.aon → target-index.aontu} +0 -0
  34. /package/project/standard/.sdk/test/feature/{cost.aon → cost.aontu} +0 -0
  35. /package/project/standard/.sdk/test/primary/{clean.aon → clean.aontu} +0 -0
  36. /package/project/standard/.sdk/test/primary/{done.aon → done.aontu} +0 -0
  37. /package/project/standard/.sdk/test/primary/{featureAdd.aon → featureAdd.aontu} +0 -0
  38. /package/project/standard/.sdk/test/primary/{featureHook.aon → featureHook.aontu} +0 -0
  39. /package/project/standard/.sdk/test/primary/{featureInit.aon → featureInit.aontu} +0 -0
  40. /package/project/standard/.sdk/test/primary/{fetcher.aon → fetcher.aontu} +0 -0
  41. /package/project/standard/.sdk/test/primary/{makeContext.aon → makeContext.aontu} +0 -0
  42. /package/project/standard/.sdk/test/primary/{makeError.aon → makeError.aontu} +0 -0
  43. /package/project/standard/.sdk/test/primary/{makeFetchDef.aon → makeFetchDef.aontu} +0 -0
  44. /package/project/standard/.sdk/test/primary/{makeOptions.aon → makeOptions.aontu} +0 -0
  45. /package/project/standard/.sdk/test/primary/{makePoint.aon → makePoint.aontu} +0 -0
  46. /package/project/standard/.sdk/test/primary/{makeRequest.aon → makeRequest.aontu} +0 -0
  47. /package/project/standard/.sdk/test/primary/{makeResponse.aon → makeResponse.aontu} +0 -0
  48. /package/project/standard/.sdk/test/primary/{makeResult.aon → makeResult.aontu} +0 -0
  49. /package/project/standard/.sdk/test/primary/{makeSpec.aon → makeSpec.aontu} +0 -0
  50. /package/project/standard/.sdk/test/primary/{makeUrl.aon → makeUrl.aontu} +0 -0
  51. /package/project/standard/.sdk/test/primary/{operator.aon → operator.aontu} +0 -0
  52. /package/project/standard/.sdk/test/primary/{param.aon → param.aontu} +0 -0
  53. /package/project/standard/.sdk/test/primary/{prepareAuth.aon → prepareAuth.aontu} +0 -0
  54. /package/project/standard/.sdk/test/primary/{prepareBody.aon → prepareBody.aontu} +0 -0
  55. /package/project/standard/.sdk/test/primary/{prepareHeaders.aon → prepareHeaders.aontu} +0 -0
  56. /package/project/standard/.sdk/test/primary/{prepareMethod.aon → prepareMethod.aontu} +0 -0
  57. /package/project/standard/.sdk/test/primary/{prepareParams.aon → prepareParams.aontu} +0 -0
  58. /package/project/standard/.sdk/test/primary/{preparePath.aon → preparePath.aontu} +0 -0
  59. /package/project/standard/.sdk/test/primary/{prepareQuery.aon → prepareQuery.aontu} +0 -0
  60. /package/project/standard/.sdk/test/primary/{resultBasic.aon → resultBasic.aontu} +0 -0
  61. /package/project/standard/.sdk/test/primary/{resultBody.aon → resultBody.aontu} +0 -0
  62. /package/project/standard/.sdk/test/primary/{resultHeaders.aon → resultHeaders.aontu} +0 -0
  63. /package/project/standard/.sdk/test/primary/{transformRequest.aon → transformRequest.aontu} +0 -0
  64. /package/project/standard/.sdk/test/primary/{transformResponse.aon → transformResponse.aontu} +0 -0
  65. /package/project/standard/.sdk/test/struct/{getpath.aon → getpath.aontu} +0 -0
  66. /package/project/standard/.sdk/test/struct/{inject.aon → inject.aontu} +0 -0
  67. /package/project/standard/.sdk/test/struct/{merge.aon → merge.aontu} +0 -0
  68. /package/project/standard/.sdk/test/struct/{minor.aon → minor.aontu} +0 -0
  69. /package/project/standard/.sdk/test/struct/{nullsem.aon → nullsem.aontu} +0 -0
  70. /package/project/standard/.sdk/test/struct/{select.aon → select.aontu} +0 -0
  71. /package/project/standard/.sdk/test/struct/{transform.aon → transform.aontu} +0 -0
  72. /package/project/standard/.sdk/test/struct/{validate.aon → validate.aontu} +0 -0
  73. /package/project/standard/.sdk/test/struct/{walk.aon → walk.aontu} +0 -0
package/README.md CHANGED
@@ -59,6 +59,29 @@ Packagist, RubyGems, LuaRocks, or a Go module tag).
59
59
  The step-by-step tutorial, the model reference, and the generator's CLI flags
60
60
  are in the [sdkgen documentation](https://github.com/voxgig/sdkgen/tree/main/docs).
61
61
 
62
+ ## Re-scaffold an existing project
63
+
64
+ Run the same command over the project's output directory to pick up a newer
65
+ scaffold:
66
+
67
+ ```sh
68
+ create-sdkgen my-api -d ./openapi.yaml -o ./my-api-sdk
69
+ ```
70
+
71
+ A re-scaffold rewrites the scaffold's own files and keeps the project's: the
72
+ guide in `.sdk/model/guide/`, the project overlay `.sdk/model/project.aontu`,
73
+ and the target, feature, and edition indexes with the files they name.
74
+
75
+ The same command brings a project from before the `.aontu` rename up to date,
76
+ which it needs, because `aontu` now refuses to include a `.aon` file. The
77
+ re-scaffold renames each `.aon` file under `.sdk/model/` and `.sdk/test/` to
78
+ `.aontu`, or removes it where the scaffold writes its replacement, and updates
79
+ every include that names a renamed file. Nothing else in a file changes. An
80
+ include the scaffold can't update, such as one pointing outside `.sdk/`, gets
81
+ a warning that names the file. Commit first, so the migration is a diff you
82
+ can read. [`test/create-sdkgen.test.ts`](./test/create-sdkgen.test.ts) builds
83
+ such a project and re-scaffolds it.
84
+
62
85
  ## The toolchain
63
86
 
64
87
  - **create-sdkgen** (this package) — scaffolds the project.
@@ -8,6 +8,7 @@ exports.sanitizeDefName = sanitizeDefName;
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const jostraca_1 = require("jostraca");
10
10
  const ModelSdk_1 = require("./ModelSdk");
11
+ const migrate_1 = require("./migrate");
11
12
  const GITIGNORE_TOP = `# Local config / secrets
12
13
  *.local.*
13
14
  *.local
@@ -47,15 +48,16 @@ log/
47
48
  # OS
48
49
  .DS_Store
49
50
  `;
50
- const PROJECT_FILE = 'project.aon';
51
+ const PROJECT_FILE = 'project.aontu';
51
52
  const PROJECT_STUB = `# Project overlay — YOURS. The scaffold creates this file once and never
52
- # overwrites it, unlike every other file it writes.
53
+ # overwrites it.
53
54
  #
54
- # Everything else under model/ is toolchain-derived and is deliberately
55
- # regenerated so that toolchain fixes propagate. Put anything here that is a
56
- # decision about THIS project rather than a fact about the API.
55
+ # Most of model/ is toolchain-derived and is deliberately regenerated so that
56
+ # toolchain fixes propagate; this file, the guide, and the target, feature and
57
+ # edition indexes are kept. Put anything here that is a decision about THIS
58
+ # project rather than a fact about the API.
57
59
  #
58
- # Included LAST by sdk.aon, after target/target-index.aon, because a key
60
+ # Included LAST by sdk.aontu, after target/target-index.aontu, because a key
59
61
  # under main.kit.target.<t> can only refine a target that has already been
60
62
  # defined. Declared earlier, the model build fails with "Cannot unify value:
61
63
  # nil with value: string / key ext value was: nil", which names nothing that
@@ -75,28 +77,14 @@ const PROJECT_STUB = `# Project overlay — YOURS. The scaffold creates this fil
75
77
  `;
76
78
  const GUIDE_FILE = 'guide.aontu';
77
79
  const GUIDE_REL = ['model', 'guide', GUIDE_FILE];
78
- function renameIncludes(src, from, to) {
79
- return src.replace(new RegExp(`(@['"][^'"]+)\\.${from}(['"])`, 'g'), `$1.${to}$2`);
80
- }
81
- // Only apidef's own files became .aontu; a project's own includes keep theirs.
82
- function migrateGuideIncludes(src) {
83
- return src.replace(/(@(['"])(?:@voxgig\/apidef\/model\/[^'"]+|(?:[^'"]*\/)?[^'"/]*base-guide))\.aon\2/g, '$1.aontu$2');
84
- }
85
- function migrateOverlay(fs, dir, name, from, to, rewrite = (src) => renameIncludes(src, from, to)) {
86
- const next = node_path_1.default.join(dir, name + '.' + to);
87
- const prev = node_path_1.default.join(dir, name + '.' + from);
88
- if (fs.existsSync(next) || !fs.existsSync(prev)) {
89
- return;
90
- }
91
- try {
92
- fs.writeFileSync(next, rewrite(String(fs.readFileSync(prev))));
93
- fs.unlinkSync(prev);
94
- }
95
- catch (_err) {
96
- // A failed migration must not fail the scaffold: the worst case is the
97
- // template being written fresh, which is what would have happened anyway.
98
- }
99
- }
80
+ const INDEX_KINDS = ['target', 'feature', 'edition'];
81
+ const indexFile = (kind) => kind + '-index.aontu';
82
+ // Written back from the project rather than from the template.
83
+ const KEPT = [
84
+ ['model', PROJECT_FILE],
85
+ GUIDE_REL,
86
+ ...INDEX_KINDS.map((kind) => ['model', kind, indexFile(kind)]),
87
+ ].map((rel) => rel.join('/'));
100
88
  function mergeGuide(existing, template) {
101
89
  if (null == existing) {
102
90
  return template;
@@ -138,9 +126,10 @@ const CreateRoot = (0, jostraca_1.cmp)(function CreateRoot(props) {
138
126
  (0, jostraca_1.Project)({ folder }, () => {
139
127
  const from = node_path_1.default.resolve(node_path_1.default.join(__dirname, '..', '..', '..', 'project', 'standard'));
140
128
  const guideExclude = [spec.sdk_folder, ...GUIDE_REL].join('/');
129
+ const indexExclude = INDEX_KINDS.map((kind) => [spec.sdk_folder, 'model', kind, indexFile(kind)].join('/'));
141
130
  (0, jostraca_1.Copy)({
142
131
  from,
143
- exclude: [/\.fragment\./, guideExclude, /^\.sdk\/admin\/.*\.sh$/]
132
+ exclude: [/\.fragment\./, guideExclude, ...indexExclude, /^\.sdk\/admin\/.*\.sh$/]
144
133
  });
145
134
  (0, jostraca_1.File)({ name: '.gitignore' }, () => {
146
135
  (0, jostraca_1.Content)(GITIGNORE_TOP);
@@ -149,6 +138,14 @@ const CreateRoot = (0, jostraca_1.cmp)(function CreateRoot(props) {
149
138
  const projdef = sanitizeDefName(node_path_1.default.basename(origdef));
150
139
  spec.def = projdef;
151
140
  (0, jostraca_1.Folder)({ name: spec.sdk_folder }, () => {
141
+ // Before anything reads the project's own files, so a project from the
142
+ // .aon era is read under the names it now has.
143
+ if (!spec.dryrun) {
144
+ const sdk = node_path_1.default.join(folder, spec.sdk_folder);
145
+ (0, migrate_1.migrateToAontu)(fs, sdk, (0, migrate_1.scaffoldFiles)(fs, node_path_1.default.join(from, spec.sdk_folder), KEPT), (file, note) => ctx$.log.warn({
146
+ point: 'migrate-aontu', file: node_path_1.default.join(sdk, file), note: file + ': ' + note,
147
+ }));
148
+ }
152
149
  (0, jostraca_1.Folder)({ name: 'admin' }, () => {
153
150
  const admin = node_path_1.default.join(from, spec.sdk_folder, 'admin');
154
151
  for (const name of fs.readdirSync(admin).filter((name) => name.endsWith('.sh')).sort()) {
@@ -174,30 +171,30 @@ const CreateRoot = (0, jostraca_1.cmp)(function CreateRoot(props) {
174
171
  // unchanged rather than skipped, so the write is a no-op instead of a
175
172
  // special case in the component tree.
176
173
  const projectPath = node_path_1.default.join(folder, spec.sdk_folder, 'model', PROJECT_FILE);
177
- // Same hazard, worse symptom: this file carries the release version,
178
- // so an ignored project.aontu silently resets every generated manifest
179
- // to the sdkgen default 0.0.1 — the exact bug fixed earlier this week.
180
- if (!spec.dryrun) {
181
- migrateOverlay(fs, node_path_1.default.dirname(projectPath), 'project', 'aontu', 'aon');
182
- }
183
174
  const existingProject = fs.existsSync(projectPath) ? fs.readFileSync(projectPath, 'utf8') : null;
184
175
  (0, jostraca_1.File)({ name: PROJECT_FILE }, () => {
185
176
  (0, jostraca_1.Content)(null == existingProject ? PROJECT_STUB : existingProject);
186
177
  });
178
+ // `target add`, `feature add` and docgen register their items here, and
179
+ // docgen bootstraps only once, so a reset index would lose them for good.
180
+ for (const kind of INDEX_KINDS) {
181
+ (0, jostraca_1.Folder)({ name: kind }, () => {
182
+ const name = indexFile(kind);
183
+ const indexPath = node_path_1.default.join(folder, spec.sdk_folder, 'model', kind, name);
184
+ (0, jostraca_1.File)({ name }, () => {
185
+ (0, jostraca_1.Content)(fs.existsSync(indexPath) ?
186
+ fs.readFileSync(indexPath, 'utf8') :
187
+ fs.readFileSync(node_path_1.default.join(from, spec.sdk_folder, 'model', kind, name), 'utf8'));
188
+ });
189
+ });
190
+ }
187
191
  // Re-emit the guide the Copy skipped, merged over whatever is already
188
192
  // there. On a fresh scaffold there is no existing file and this writes
189
193
  // the template unchanged; on a re-scaffold the user's overlay survives.
190
194
  (0, jostraca_1.Folder)({ name: 'guide' }, () => {
191
195
  const guideTemplate = fs.readFileSync(node_path_1.default.join(from, spec.sdk_folder, ...GUIDE_REL), 'utf8');
192
196
  const guidePath = node_path_1.default.join(folder, spec.sdk_folder, ...GUIDE_REL);
193
- // Before the merge looks for it — otherwise a project whose guide is
194
- // still named .aon reads as having no overlay at all.
195
- if (!spec.dryrun) {
196
- migrateOverlay(fs, node_path_1.default.dirname(guidePath), 'guide', 'aon', 'aontu', migrateGuideIncludes);
197
- }
198
- // An entry already named .aontu can still include a retired .aon file.
199
- const existingGuide = fs.existsSync(guidePath) ?
200
- migrateGuideIncludes(fs.readFileSync(guidePath, 'utf8')) : null;
197
+ const existingGuide = fs.existsSync(guidePath) ? fs.readFileSync(guidePath, 'utf8') : null;
201
198
  (0, jostraca_1.File)({ name: GUIDE_FILE }, () => {
202
199
  (0, jostraca_1.Content)(mergeGuide(existingGuide, guideTemplate));
203
200
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CreateRoot.js","sourceRoot":"","sources":["../../../src/project/standard/CreateRoot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CreateRoot.js","sourceRoot":"","sources":["../../../src/project/standard/CreateRoot.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,9 @@ const jostraca_1 = require("jostraca");
9
9
  const ModelSdk = (0, jostraca_1.cmp)(function ModelSdk(props) {
10
10
  const { spec } = props;
11
11
  const from = node_path_1.default.resolve(node_path_1.default.join(__dirname, '..', '..', '..', 'project', 'standard'));
12
- (0, jostraca_1.File)({ name: 'sdk.aon' }, () => {
12
+ (0, jostraca_1.File)({ name: 'sdk.aontu' }, () => {
13
13
  (0, jostraca_1.Fragment)({
14
- from: node_path_1.default.join(from, spec.sdk_folder, 'model', 'sdk.fragment.aon'),
14
+ from: node_path_1.default.join(from, spec.sdk_folder, 'model', 'sdk.fragment.aontu'),
15
15
  replace: {
16
16
  ProjectName: spec.name,
17
17
  NAME: spec.name,
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../../src/project/standard/ModelSdk.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAG5B,uCAKiB;AAIjB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU;IAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAEtB,MAAM,IAAI,GACR,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAE7E,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE;QAC7B,IAAA,mBAAQ,EAAC;YACP,IAAI,EAAE,mBAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC;YACnE,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;aACd;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;QAIA,QAAQ"}
1
+ {"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../../src/project/standard/ModelSdk.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAG5B,uCAKiB;AAIjB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU;IAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAEtB,MAAM,IAAI,GACR,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAE7E,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE;QAC/B,IAAA,mBAAQ,EAAC;YACP,IAAI,EAAE,mBAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,oBAAoB,CAAC;YACrE,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;aACd;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;QAIA,QAAQ"}
@@ -0,0 +1,9 @@
1
+ type Warn = (file: string, note: string) => void;
2
+ type Scaffold = {
3
+ kept: Set<string>;
4
+ replaced: Set<string>;
5
+ };
6
+ declare function rewriteIncludes(src: string, rename: (path: string) => boolean): string;
7
+ declare function scaffoldFiles(fs: any, templateSdk: string, kept: string[]): Scaffold;
8
+ declare function migrateToAontu(fs: any, sdk: string, scaffold: Scaffold, warn: Warn): void;
9
+ export { migrateToAontu, rewriteIncludes, scaffoldFiles, };
@@ -0,0 +1,137 @@
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.migrateToAontu = migrateToAontu;
7
+ exports.rewriteIncludes = rewriteIncludes;
8
+ exports.scaffoldFiles = scaffoldFiles;
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const TREES = ['model', 'test'];
11
+ const LEGACY = '.aon';
12
+ const CURRENT = '.aontu';
13
+ const TOOLCHAIN_RE = /^@voxgig\//;
14
+ const APIDEF_WRITES_RE = /^model\/guide\/[^/]*base-guide\.aontu$/;
15
+ // Comments and strings are matched whole, so an include is only ever an `@`
16
+ // outside both: a `.aon` named in a comment or held as data is not rewritten.
17
+ const TOKEN_RE = /#[^\n]*|@([ \t]*)(["'`])([^"'`\n]*)\2|"(?:\\.|[^"\\\n])*"|'(?:\\.|[^'\\\n])*'|`(?:\\.|[^`\\])*`/g;
18
+ function rewriteIncludes(src, rename) {
19
+ return src.replace(TOKEN_RE, (token, space, quote, path) => null != quote && path.endsWith(LEGACY) && rename(path) ?
20
+ '@' + space + quote + path.slice(0, -LEGACY.length) + CURRENT + quote : token);
21
+ }
22
+ function legacyIncludes(src) {
23
+ return [...src.matchAll(TOKEN_RE)]
24
+ .filter((m) => null != m[2] && m[3].endsWith(LEGACY))
25
+ .map((m) => m[3]);
26
+ }
27
+ function modelFiles(fs, sdk, ext) {
28
+ const found = [];
29
+ const walk = (rel) => {
30
+ let entries;
31
+ try {
32
+ entries = fs.readdirSync(node_path_1.default.join(sdk, rel), { withFileTypes: true });
33
+ }
34
+ catch (_err) {
35
+ return;
36
+ }
37
+ for (const entry of entries) {
38
+ const child = rel + '/' + entry.name;
39
+ if (entry.isDirectory()) {
40
+ walk(child);
41
+ }
42
+ else if (entry.isFile() && entry.name.endsWith(ext)) {
43
+ found.push(child);
44
+ }
45
+ }
46
+ };
47
+ TREES.forEach(walk);
48
+ return found.sort();
49
+ }
50
+ function scaffoldFiles(fs, templateSdk, kept) {
51
+ const keep = new Set(kept);
52
+ const written = modelFiles(fs, templateSdk, CURRENT)
53
+ .map((rel) => rel.replace('.fragment.', '.'));
54
+ return { kept: keep, replaced: new Set(written.filter((rel) => !keep.has(rel))) };
55
+ }
56
+ // A failed step must not fail the scaffold: the file keeps the name it had.
57
+ function attempt(step) {
58
+ try {
59
+ step();
60
+ }
61
+ catch (_err) {
62
+ }
63
+ }
64
+ // Written beside the target and renamed over it, so a write that fails part
65
+ // way leaves the file it would have replaced whole.
66
+ function writeWhole(fs, path, data) {
67
+ const tmp = path + '.migrating';
68
+ try {
69
+ fs.writeFileSync(tmp, data);
70
+ fs.renameSync(tmp, path);
71
+ }
72
+ catch (err) {
73
+ attempt(() => fs.unlinkSync(tmp));
74
+ throw err;
75
+ }
76
+ }
77
+ function migrateFile(fs, prev, next) {
78
+ if (fs.existsSync(next) || !fs.existsSync(prev)) {
79
+ return;
80
+ }
81
+ attempt(() => {
82
+ writeWhole(fs, next, fs.readFileSync(prev));
83
+ fs.unlinkSync(prev);
84
+ });
85
+ }
86
+ function includeRenamer(fs, sdk, scaffold, from) {
87
+ const dir = node_path_1.default.dirname(node_path_1.default.join(sdk, from));
88
+ return (path) => {
89
+ if (TOOLCHAIN_RE.test(path)) {
90
+ return true;
91
+ }
92
+ if (path.startsWith('@')) {
93
+ return false;
94
+ }
95
+ const twin = node_path_1.default.resolve(dir, path.slice(0, -LEGACY.length) + CURRENT);
96
+ const rel = node_path_1.default.relative(sdk, twin).split(node_path_1.default.sep).join('/');
97
+ return fs.existsSync(twin) || scaffold.kept.has(rel) || scaffold.replaced.has(rel) ||
98
+ APIDEF_WRITES_RE.test(rel);
99
+ };
100
+ }
101
+ // Renames first and rewrites after, so an include changes only once the file
102
+ // it names is on disk as .aontu.
103
+ function migrateToAontu(fs, sdk, scaffold, warn) {
104
+ const legacy = modelFiles(fs, sdk, LEGACY);
105
+ const twin = (rel) => rel.slice(0, -LEGACY.length) + CURRENT;
106
+ const abs = (rel) => node_path_1.default.join(sdk, rel);
107
+ for (const rel of legacy.filter((rel) => !scaffold.replaced.has(twin(rel)))) {
108
+ migrateFile(fs, abs(rel), abs(twin(rel)));
109
+ }
110
+ const sources = modelFiles(fs, sdk, CURRENT).filter((rel) => !scaffold.replaced.has(rel));
111
+ for (const rel of sources) {
112
+ attempt(() => {
113
+ const src = String(fs.readFileSync(abs(rel)));
114
+ const out = rewriteIncludes(src, includeRenamer(fs, sdk, scaffold, rel));
115
+ if (out !== src) {
116
+ writeWhole(fs, abs(rel), out);
117
+ }
118
+ });
119
+ }
120
+ for (const rel of legacy.filter((rel) => scaffold.replaced.has(twin(rel)))) {
121
+ attempt(() => fs.unlinkSync(abs(rel)));
122
+ }
123
+ for (const rel of modelFiles(fs, sdk, LEGACY)) {
124
+ warn(rel, fs.existsSync(abs(twin(rel))) ?
125
+ 'left in place: ' + twin(rel) + ' exists, and is the file aontu reads' :
126
+ 'could not be migrated to ' + twin(rel));
127
+ }
128
+ for (const rel of sources) {
129
+ attempt(() => {
130
+ for (const path of legacyIncludes(String(fs.readFileSync(abs(rel))))) {
131
+ warn(rel, 'includes ' + path + ', which aontu refuses: rename that file ' +
132
+ 'to .aontu and update the include');
133
+ }
134
+ });
135
+ }
136
+ }
137
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/project/standard/migrate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":"7.0.2","root":["../src/create-sdkgen.ts","../src/project/standard/CreateRoot.ts","../src/project/standard/ModelSdk.ts"],"packageJsons":["../node_modules/@types/node/package.json","../node_modules/@voxgig/util/package.json","../node_modules/jostraca/package.json","../node_modules/memfs/package.json","../node_modules/pino-pretty/package.json","../node_modules/pino-std-serializers/package.json","../node_modules/pino/package.json","../node_modules/shape/package.json","../node_modules/sonic-boom/package.json","../node_modules/thread-stream/package.json","../node_modules/undici-types/package.json","../package.json"],"missingPackageJsons":["../node_modules/@types/assert/package.json","../node_modules/@types/assert/strict/package.json","../node_modules/@types/async_hooks/package.json","../node_modules/@types/buffer/package.json","../node_modules/@types/child_process/package.json","../node_modules/@types/cluster/package.json","../node_modules/@types/console/package.json","../node_modules/@types/constants/package.json","../node_modules/@types/crypto/package.json","../node_modules/@types/dgram/package.json","../node_modules/@types/diagnostics_channel/package.json","../node_modules/@types/dns/package.json","../node_modules/@types/dns/promises/package.json","../node_modules/@types/domain/package.json","../node_modules/@types/events/package.json","../node_modules/@types/fs/package.json","../node_modules/@types/fs/promises/package.json","../node_modules/@types/http/package.json","../node_modules/@types/http2/package.json","../node_modules/@types/https/package.json","../node_modules/@types/inspector/package.json","../node_modules/@types/inspector/promises/package.json","../node_modules/@types/module/package.json","../node_modules/@types/net/package.json","../node_modules/@types/node/assert/package.json","../node_modules/@types/node/dns/package.json","../node_modules/@types/node/fs/package.json","../node_modules/@types/node/inspector/package.json","../node_modules/@types/node/path/package.json","../node_modules/@types/node/readline/package.json","../node_modules/@types/node/stream/package.json","../node_modules/@types/node/test/package.json","../node_modules/@types/node/timers/package.json","../node_modules/@types/node/util/package.json","../node_modules/@types/node/web-globals/package.json","../node_modules/@types/node/zlib/package.json","../node_modules/@types/os/package.json","../node_modules/@types/path/package.json","../node_modules/@types/path/posix/package.json","../node_modules/@types/path/win32/package.json","../node_modules/@types/perf_hooks/package.json","../node_modules/@types/process/package.json","../node_modules/@types/punycode/package.json","../node_modules/@types/querystring/package.json","../node_modules/@types/readline/package.json","../node_modules/@types/readline/promises/package.json","../node_modules/@types/repl/package.json","../node_modules/@types/stream/consumers/package.json","../node_modules/@types/stream/iter/package.json","../node_modules/@types/stream/package.json","../node_modules/@types/stream/promises/package.json","../node_modules/@types/stream/web/package.json","../node_modules/@types/string_decoder/package.json","../node_modules/@types/timers/package.json","../node_modules/@types/timers/promises/package.json","../node_modules/@types/tls/package.json","../node_modules/@types/trace_events/package.json","../node_modules/@types/tty/package.json","../node_modules/@types/url/package.json","../node_modules/@types/util/package.json","../node_modules/@types/util/types/package.json","../node_modules/@types/v8/package.json","../node_modules/@types/vm/package.json","../node_modules/@types/wasi/package.json","../node_modules/@types/worker_threads/package.json","../node_modules/@types/zlib/package.json","../node_modules/@voxgig/util/dist/package.json","../node_modules/assert/package.json","../node_modules/assert/strict/package.json","../node_modules/async_hooks/package.json","../node_modules/buffer/package.json","../node_modules/child_process/package.json","../node_modules/cluster/package.json","../node_modules/console/package.json","../node_modules/constants/package.json","../node_modules/crypto/package.json","../node_modules/dgram/package.json","../node_modules/diagnostics_channel/package.json","../node_modules/dns/package.json","../node_modules/dns/promises/package.json","../node_modules/domain/package.json","../node_modules/events/package.json","../node_modules/fs/package.json","../node_modules/fs/promises/package.json","../node_modules/http/package.json","../node_modules/http2/package.json","../node_modules/https/package.json","../node_modules/inspector/package.json","../node_modules/inspector/promises/package.json","../node_modules/jostraca/dist/build/package.json","../node_modules/jostraca/dist/cmp/package.json","../node_modules/jostraca/dist/package.json","../node_modules/jostraca/dist/util/package.json","../node_modules/module/package.json","../node_modules/net/package.json","../node_modules/os/package.json","../node_modules/path/package.json","../node_modules/path/posix/package.json","../node_modules/path/win32/package.json","../node_modules/perf_hooks/package.json","../node_modules/process/package.json","../node_modules/punycode/package.json","../node_modules/querystring/package.json","../node_modules/readline/package.json","../node_modules/readline/promises/package.json","../node_modules/repl/package.json","../node_modules/shape/dist/package.json","../node_modules/sonic-boom/types/package.json","../node_modules/stream/consumers/package.json","../node_modules/stream/iter/package.json","../node_modules/stream/package.json","../node_modules/stream/promises/package.json","../node_modules/stream/web/package.json","../node_modules/string_decoder/package.json","../node_modules/thread-stream/node_modules/events/package.json","../node_modules/thread-stream/node_modules/worker_threads/package.json","../node_modules/timers/package.json","../node_modules/timers/promises/package.json","../node_modules/tls/package.json","../node_modules/trace_events/package.json","../node_modules/tty/package.json","../node_modules/url/package.json","../node_modules/util/package.json","../node_modules/util/types/package.json","../node_modules/v8/package.json","../node_modules/vm/package.json","../node_modules/wasi/package.json","../node_modules/worker_threads/package.json","../node_modules/zlib/package.json"]}
1
+ {"version":"7.0.2","root":["../src/create-sdkgen.ts","../src/project/standard/CreateRoot.ts","../src/project/standard/ModelSdk.ts","../src/project/standard/migrate.ts"],"packageJsons":["../node_modules/@types/node/package.json","../node_modules/@voxgig/util/package.json","../node_modules/jostraca/package.json","../node_modules/memfs/package.json","../node_modules/pino-pretty/package.json","../node_modules/pino-std-serializers/package.json","../node_modules/pino/package.json","../node_modules/shape/package.json","../node_modules/sonic-boom/package.json","../node_modules/thread-stream/package.json","../node_modules/undici-types/package.json","../package.json"],"missingPackageJsons":["../node_modules/@types/assert/package.json","../node_modules/@types/assert/strict/package.json","../node_modules/@types/async_hooks/package.json","../node_modules/@types/buffer/package.json","../node_modules/@types/child_process/package.json","../node_modules/@types/cluster/package.json","../node_modules/@types/console/package.json","../node_modules/@types/constants/package.json","../node_modules/@types/crypto/package.json","../node_modules/@types/dgram/package.json","../node_modules/@types/diagnostics_channel/package.json","../node_modules/@types/dns/package.json","../node_modules/@types/dns/promises/package.json","../node_modules/@types/domain/package.json","../node_modules/@types/events/package.json","../node_modules/@types/fs/package.json","../node_modules/@types/fs/promises/package.json","../node_modules/@types/http/package.json","../node_modules/@types/http2/package.json","../node_modules/@types/https/package.json","../node_modules/@types/inspector/package.json","../node_modules/@types/inspector/promises/package.json","../node_modules/@types/module/package.json","../node_modules/@types/net/package.json","../node_modules/@types/node/assert/package.json","../node_modules/@types/node/dns/package.json","../node_modules/@types/node/fs/package.json","../node_modules/@types/node/inspector/package.json","../node_modules/@types/node/path/package.json","../node_modules/@types/node/readline/package.json","../node_modules/@types/node/stream/package.json","../node_modules/@types/node/test/package.json","../node_modules/@types/node/timers/package.json","../node_modules/@types/node/util/package.json","../node_modules/@types/node/web-globals/package.json","../node_modules/@types/node/zlib/package.json","../node_modules/@types/os/package.json","../node_modules/@types/path/package.json","../node_modules/@types/path/posix/package.json","../node_modules/@types/path/win32/package.json","../node_modules/@types/perf_hooks/package.json","../node_modules/@types/process/package.json","../node_modules/@types/punycode/package.json","../node_modules/@types/querystring/package.json","../node_modules/@types/readline/package.json","../node_modules/@types/readline/promises/package.json","../node_modules/@types/repl/package.json","../node_modules/@types/stream/consumers/package.json","../node_modules/@types/stream/iter/package.json","../node_modules/@types/stream/package.json","../node_modules/@types/stream/promises/package.json","../node_modules/@types/stream/web/package.json","../node_modules/@types/string_decoder/package.json","../node_modules/@types/timers/package.json","../node_modules/@types/timers/promises/package.json","../node_modules/@types/tls/package.json","../node_modules/@types/trace_events/package.json","../node_modules/@types/tty/package.json","../node_modules/@types/url/package.json","../node_modules/@types/util/package.json","../node_modules/@types/util/types/package.json","../node_modules/@types/v8/package.json","../node_modules/@types/vm/package.json","../node_modules/@types/wasi/package.json","../node_modules/@types/worker_threads/package.json","../node_modules/@types/zlib/package.json","../node_modules/@voxgig/util/dist/package.json","../node_modules/assert/package.json","../node_modules/assert/strict/package.json","../node_modules/async_hooks/package.json","../node_modules/buffer/package.json","../node_modules/child_process/package.json","../node_modules/cluster/package.json","../node_modules/console/package.json","../node_modules/constants/package.json","../node_modules/crypto/package.json","../node_modules/dgram/package.json","../node_modules/diagnostics_channel/package.json","../node_modules/dns/package.json","../node_modules/dns/promises/package.json","../node_modules/domain/package.json","../node_modules/events/package.json","../node_modules/fs/package.json","../node_modules/fs/promises/package.json","../node_modules/http/package.json","../node_modules/http2/package.json","../node_modules/https/package.json","../node_modules/inspector/package.json","../node_modules/inspector/promises/package.json","../node_modules/jostraca/dist/build/package.json","../node_modules/jostraca/dist/cmp/package.json","../node_modules/jostraca/dist/package.json","../node_modules/jostraca/dist/util/package.json","../node_modules/module/package.json","../node_modules/net/package.json","../node_modules/os/package.json","../node_modules/path/package.json","../node_modules/path/posix/package.json","../node_modules/path/win32/package.json","../node_modules/perf_hooks/package.json","../node_modules/process/package.json","../node_modules/punycode/package.json","../node_modules/querystring/package.json","../node_modules/readline/package.json","../node_modules/readline/promises/package.json","../node_modules/repl/package.json","../node_modules/shape/dist/package.json","../node_modules/sonic-boom/types/package.json","../node_modules/stream/consumers/package.json","../node_modules/stream/iter/package.json","../node_modules/stream/package.json","../node_modules/stream/promises/package.json","../node_modules/stream/web/package.json","../node_modules/string_decoder/package.json","../node_modules/thread-stream/node_modules/events/package.json","../node_modules/thread-stream/node_modules/worker_threads/package.json","../node_modules/timers/package.json","../node_modules/timers/promises/package.json","../node_modules/tls/package.json","../node_modules/trace_events/package.json","../node_modules/tty/package.json","../node_modules/url/package.json","../node_modules/util/package.json","../node_modules/util/types/package.json","../node_modules/v8/package.json","../node_modules/vm/package.json","../node_modules/wasi/package.json","../node_modules/worker_threads/package.json","../node_modules/zlib/package.json"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/create-sdkgen",
3
- "version": "0.27.0",
3
+ "version": "0.29.0",
4
4
  "main": "dist/create-sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/create-sdkgen.d.ts",
@@ -27,8 +27,8 @@
27
27
  "watch": "tsc --build src test -w",
28
28
  "build": "tsc --build src test",
29
29
  "scan-prose": "python3 tools/check_prose.py",
30
- "test-model": "voxgig-model project/.sdk/test/test.aon",
31
- "test-model-watch": "voxgig-model -w project/.sdk/test/test.aon",
30
+ "test-model": "voxgig-model project/.sdk/test/test.aontu",
31
+ "test-model-watch": "voxgig-model -w project/.sdk/test/test.aontu",
32
32
  "clean": "rm -rf dist dist-test node_modules yarn.lock package-lock.json",
33
33
  "reset": "npm run clean && npm i && npm run build && npm test",
34
34
  "repo-bump": "npm version patch --no-git-tag-version && node -e \"console.log('bumped to v' + require('./package.json').version + ' (package.json only - commit via repo-tag / repo-release)')\"",
@@ -56,7 +56,7 @@
56
56
  },
57
57
  "dependencies": {
58
58
  "@voxgig/util": "0.5.4",
59
- "aontu": ">=0.68",
59
+ "aontu": ">=0.75.0",
60
60
  "chokidar": "5.0.0",
61
61
  "jostraca": "0.31.2",
62
62
  "shape": ">=10"
@@ -38,7 +38,9 @@ test, and the only symptom is a tree that disagrees with the model:
38
38
  anything whose output might be committed.
39
39
 
40
40
  The script deletes every target tree, regenerates, and reports what differs —
41
- which is the only way to see output the generator no longer emits. It refuses
41
+ which is the only way to see output the generator no longer emits. A target
42
+ generated at the project root (`output: root: true`) owns every tracked file
43
+ outside `.sdk/`, so those are what it deletes for that target. It refuses
42
44
  to run on a dirty tree, restores the target's own build artifacts and
43
45
  lockfiles (which the generator never writes), and leaves the regenerated tree
44
46
  in place so the diff can be read.
@@ -52,17 +52,34 @@ if [[ -n "$(git status --porcelain)" ]]; then
52
52
  exit 2
53
53
  fi
54
54
 
55
- targets="$(node -e '
56
- const m = require("./.sdk/model/sdk.json")
57
- const t = (m.main && m.main.kit && m.main.kit.target) || {}
58
- console.log(Object.keys(t).sort().join("\n"))
59
- ')"
55
+ # Each target generated in a folder of its own, and the one, if any, that
56
+ # declares `output: root: true`.
57
+ list_targets() {
58
+ node -e '
59
+ const m = require("./.sdk/model/sdk.json")
60
+ const t = (m.main && m.main.kit && m.main.kit.target) || {}
61
+ const root = "root" === process.argv[1]
62
+ console.log(Object.keys(t).sort().filter((n) =>
63
+ root === (true === (t[n] && t[n].output && t[n].output.root))).join("\n"))
64
+ ' "$1"
65
+ }
66
+ targets="$(list_targets folder)"
67
+ atroot="$(list_targets root)"
60
68
 
61
69
  echo 'check-drift: deleting and regenerating every target ...'
62
70
  while IFS= read -r t; do
63
71
  [[ -n "$t" && -d "$t" ]] && rm -rf -- "$t"
64
72
  done <<< "$targets"
65
73
 
74
+ # A target generated at the root owns the repository outside .sdk/, as the
75
+ # others own their folders. Only tracked files go: what git ignores there,
76
+ # such as installed dependencies, is not output.
77
+ if [[ -n "$atroot" ]]; then
78
+ git ls-files -z -- . ':(exclude).sdk' | while IFS= read -r -d '' f; do
79
+ rm -f -- "$f"
80
+ done
81
+ fi
82
+
66
83
  log="$(mktemp)"
67
84
  trap 'rm -f "$log"' EXIT
68
85
  if ! ( cd "$sdk_dir" && npm run generate ) >"$log" 2>&1; then
@@ -1,6 +1,6 @@
1
1
 
2
2
 
3
- @'@voxgig/model/model/.model-config/model-config.aon'
3
+ @'@voxgig/model/model/.model-config/model-config.aontu'
4
4
 
5
5
  sys: model: action: {
6
6
  apidef: load: 'build/apidef.js'
@@ -1,7 +1,7 @@
1
1
 
2
2
  # Model definitions.
3
3
  @"@voxgig/apidef/model/apidef.aontu"
4
- @"@voxgig/sdkgen/model/sdkgen.aon"
4
+ @"@voxgig/sdkgen/model/sdkgen.aontu"
5
5
 
6
6
 
7
7
  name: 'NAME'
@@ -14,7 +14,7 @@ def: 'DEF'
14
14
 
15
15
 
16
16
  # SDK Configuration.
17
- @"./config.aon"
17
+ @"./config.aontu"
18
18
 
19
19
 
20
20
  # SDK Entities
@@ -22,18 +22,18 @@ def: 'DEF'
22
22
 
23
23
 
24
24
  # SDK Features.
25
- @"feature/feature-index.aon"
25
+ @"feature/feature-index.aontu"
26
26
 
27
27
 
28
28
  # SDK Targets.
29
- @"target/target-index.aon"
29
+ @"target/target-index.aontu"
30
30
 
31
31
 
32
32
  # Operation workflows.
33
33
  @"flow/flow-index.aontu"
34
34
 
35
35
 
36
- @"./project.aon"
36
+ @"./project.aontu"
37
37
 
38
- # Documentation editions. Settings belong in project.aon.
39
- @"edition/edition-index.aon"
38
+ # Documentation editions. Settings belong in project.aontu.
39
+ @"edition/edition-index.aontu"
@@ -3,12 +3,12 @@
3
3
  "version": "0.0.1",
4
4
  "description": "$$const.Name$$ SDK Project",
5
5
  "scripts": {
6
- "generate": "node build/docgen.js && tsc --build src && voxgig-model model/sdk.aon && voxgig-model test/test.aon",
7
- "watch-generate": "voxgig-model -w model/sdk.aon",
8
- "dry-generate": "tsc --build src && voxgig-model -y model/sdk.aon",
9
- "watch-dry-generate": "voxgig-model -w -y model/sdk.aon",
10
- "test-model": "voxgig-model test/test.aon",
11
- "watch-test-model": "voxgig-model -w test/test.aon",
6
+ "generate": "node build/docgen.js && tsc --build src && voxgig-model model/sdk.aontu && voxgig-model test/test.aontu",
7
+ "watch-generate": "voxgig-model -w model/sdk.aontu",
8
+ "dry-generate": "tsc --build src && voxgig-model -y model/sdk.aontu",
9
+ "watch-dry-generate": "voxgig-model -w -y model/sdk.aontu",
10
+ "test-model": "voxgig-model test/test.aontu",
11
+ "watch-test-model": "voxgig-model -w test/test.aontu",
12
12
  "watch": "tsc --build src -w",
13
13
  "build": "tsc --build src",
14
14
  "test": "echo no-test",
@@ -29,13 +29,13 @@
29
29
  "devDependencies": {
30
30
  "@types/node": ">=25.6",
31
31
  "typescript": ">=6.0",
32
- "@voxgig/apidef": ">=8.16.0",
33
- "@voxgig/model": ">=10.0",
34
- "@voxgig/sdkgen": ">=4.22.0",
32
+ "@voxgig/apidef": ">=8.17.0",
33
+ "@voxgig/model": ">=12.0.0",
34
+ "@voxgig/sdkgen": ">=4.25.0",
35
35
  "@voxgig/util": ">=0.5",
36
36
  "@voxgig/struct": ">=0.2",
37
- "jostraca": ">=0.33.1",
38
- "aontu": ">=0.68",
39
- "@voxgig/docgen": ">=0.23.0"
37
+ "jostraca": ">=0.39.0",
38
+ "aontu": ">=0.75.0",
39
+ "@voxgig/docgen": ">=0.27.0"
40
40
  }
41
41
  }