@voxgig/sdkgen 3.4.7 → 3.5.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 (194) hide show
  1. package/bin/voxgig-sdkgen +78 -10
  2. package/dist/action/action.d.ts +5 -2
  3. package/dist/action/action.js +113 -6
  4. package/dist/action/action.js.map +1 -1
  5. package/dist/action/check.d.ts +15 -0
  6. package/dist/action/check.js +347 -0
  7. package/dist/action/check.js.map +1 -0
  8. package/dist/action/dispatch.d.ts +8 -0
  9. package/dist/action/dispatch.js +74 -0
  10. package/dist/action/dispatch.js.map +1 -0
  11. package/dist/action/docs.d.ts +4 -0
  12. package/dist/action/docs.js +236 -0
  13. package/dist/action/docs.js.map +1 -0
  14. package/dist/action/doctor.d.ts +5 -2
  15. package/dist/action/doctor.js +526 -74
  16. package/dist/action/doctor.js.map +1 -1
  17. package/dist/action/feature.js +96 -17
  18. package/dist/action/feature.js.map +1 -1
  19. package/dist/action/kind.d.ts +30 -0
  20. package/dist/action/kind.js +258 -0
  21. package/dist/action/kind.js.map +1 -0
  22. package/dist/action/package.d.ts +25 -0
  23. package/dist/action/package.js +852 -0
  24. package/dist/action/package.js.map +1 -0
  25. package/dist/action/resolve.d.ts +18 -0
  26. package/dist/action/resolve.js +280 -0
  27. package/dist/action/resolve.js.map +1 -0
  28. package/dist/action/target.d.ts +7 -1
  29. package/dist/action/target.js +240 -97
  30. package/dist/action/target.js.map +1 -1
  31. package/dist/cmp/Docs.d.ts +4 -0
  32. package/dist/cmp/Docs.js +98 -0
  33. package/dist/cmp/Docs.js.map +1 -0
  34. package/dist/cmp/ExternalDocs.d.ts +2 -0
  35. package/dist/cmp/ExternalDocs.js +43 -0
  36. package/dist/cmp/ExternalDocs.js.map +1 -0
  37. package/dist/helpers/definition.d.ts +5 -0
  38. package/dist/helpers/definition.js +72 -0
  39. package/dist/helpers/definition.js.map +1 -0
  40. package/dist/helpers/featureSource.d.ts +8 -2
  41. package/dist/helpers/featureSource.js +61 -12
  42. package/dist/helpers/featureSource.js.map +1 -1
  43. package/dist/helpers/junk.d.ts +11 -0
  44. package/dist/helpers/junk.js +149 -0
  45. package/dist/helpers/junk.js.map +1 -0
  46. package/dist/helpers/manifest.d.ts +50 -0
  47. package/dist/helpers/manifest.js +328 -0
  48. package/dist/helpers/manifest.js.map +1 -0
  49. package/dist/helpers/modelcheck.d.ts +22 -0
  50. package/dist/helpers/modelcheck.js +203 -0
  51. package/dist/helpers/modelcheck.js.map +1 -0
  52. package/dist/helpers/semver.d.ts +4 -0
  53. package/dist/helpers/semver.js +174 -0
  54. package/dist/helpers/semver.js.map +1 -0
  55. package/dist/helpers/shipped.d.ts +4 -0
  56. package/dist/helpers/shipped.js +36 -0
  57. package/dist/helpers/shipped.js.map +1 -0
  58. package/dist/helpers/stdrep.d.ts +9 -1
  59. package/dist/helpers/stdrep.js +22 -0
  60. package/dist/helpers/stdrep.js.map +1 -1
  61. package/dist/sdkgen.d.ts +15 -3
  62. package/dist/sdkgen.js +233 -67
  63. package/dist/sdkgen.js.map +1 -1
  64. package/dist/tsconfig.tsbuildinfo +1 -1
  65. package/dist/types.d.ts +10 -2
  66. package/dist/utility.js +17 -0
  67. package/dist/utility.js.map +1 -1
  68. package/model/sdkgen.aontu +69 -0
  69. package/package.json +3 -2
  70. package/project/.sdk/model/feature/audit.aontu +1 -0
  71. package/project/.sdk/model/feature/cache.aontu +1 -0
  72. package/project/.sdk/model/feature/clienttrack.aontu +1 -0
  73. package/project/.sdk/model/feature/debug.aontu +1 -0
  74. package/project/.sdk/model/feature/idempotency.aontu +1 -0
  75. package/project/.sdk/model/feature/log.aontu +1 -0
  76. package/project/.sdk/model/feature/metrics.aontu +1 -0
  77. package/project/.sdk/model/feature/netsim.aontu +1 -0
  78. package/project/.sdk/model/feature/paging.aontu +1 -0
  79. package/project/.sdk/model/feature/proxy.aontu +1 -0
  80. package/project/.sdk/model/feature/ratelimit.aontu +1 -0
  81. package/project/.sdk/model/feature/rbac.aontu +1 -0
  82. package/project/.sdk/model/feature/retry.aontu +1 -0
  83. package/project/.sdk/model/feature/streaming.aontu +1 -0
  84. package/project/.sdk/model/feature/telemetry.aontu +1 -0
  85. package/project/.sdk/model/feature/test.aontu +1 -0
  86. package/project/.sdk/model/feature/timeout.aontu +1 -0
  87. package/project/.sdk/model/target/c.aontu +1 -0
  88. package/project/.sdk/model/target/clojure.aontu +1 -0
  89. package/project/.sdk/model/target/cpp.aontu +1 -0
  90. package/project/.sdk/model/target/dart.aontu +1 -0
  91. package/project/.sdk/model/target/elixir.aontu +1 -0
  92. package/project/.sdk/model/target/go-cli.aontu +1 -0
  93. package/project/.sdk/model/target/go-mcp.aontu +1 -0
  94. package/project/.sdk/model/target/go.aontu +1 -0
  95. package/project/.sdk/model/target/haskell.aontu +1 -0
  96. package/project/.sdk/model/target/java.aontu +1 -0
  97. package/project/.sdk/model/target/js.aontu +1 -0
  98. package/project/.sdk/model/target/kotlin.aontu +1 -0
  99. package/project/.sdk/model/target/lean.aontu +1 -0
  100. package/project/.sdk/model/target/lua.aontu +1 -0
  101. package/project/.sdk/model/target/ocaml.aontu +1 -0
  102. package/project/.sdk/model/target/perl.aontu +1 -0
  103. package/project/.sdk/model/target/php.aontu +1 -0
  104. package/project/.sdk/model/target/py-data.aontu +1 -0
  105. package/project/.sdk/model/target/py.aontu +1 -0
  106. package/project/.sdk/model/target/rb.aontu +1 -0
  107. package/project/.sdk/model/target/rust.aontu +1 -0
  108. package/project/.sdk/model/target/scala.aontu +1 -0
  109. package/project/.sdk/model/target/seneca-provider.aontu +1 -0
  110. package/project/.sdk/model/target/zig.aontu +1 -0
  111. package/project/.sdk/src/cmp/c/Config_c.ts +44 -0
  112. package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +3 -1
  113. package/project/.sdk/src/cmp/clojure/Config_clojure.ts +37 -42
  114. package/project/.sdk/src/cmp/clojure/utility_clojure.ts +42 -0
  115. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +18 -0
  116. package/project/.sdk/src/cmp/csharp/Config_csharp.ts +125 -52
  117. package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +3 -1
  118. package/project/.sdk/src/cmp/csharp/utility_csharp.ts +94 -6
  119. package/project/.sdk/src/cmp/dart/Config_dart.ts +43 -5
  120. package/project/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +74 -0
  121. package/project/.sdk/src/cmp/dart/fragment/Config.fragment.dart +6 -9
  122. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +16 -5
  123. package/project/.sdk/src/cmp/dart/utility_dart.ts +18 -0
  124. package/project/.sdk/src/cmp/elixir/Config_elixir.ts +128 -13
  125. package/project/.sdk/src/cmp/elixir/fragment/Main.fragment.ex +3 -1
  126. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +6 -0
  127. package/project/.sdk/src/cmp/haskell/Config_haskell.ts +35 -52
  128. package/project/.sdk/src/cmp/haskell/Package_haskell.ts +1 -0
  129. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +1 -1
  130. package/project/.sdk/src/cmp/haskell/utility_haskell.ts +15 -5
  131. package/project/.sdk/src/cmp/java/Config_java.ts +21 -0
  132. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +15 -0
  133. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +42 -39
  134. package/project/.sdk/src/cmp/perl/Config_perl.ts +15 -0
  135. package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +3 -1
  136. package/project/.sdk/src/cmp/rust/Config_rust.ts +44 -0
  137. package/project/.sdk/src/cmp/rust/fragment/Main.fragment.rs +4 -2
  138. package/project/.sdk/src/cmp/scala/Config_scala.ts +15 -0
  139. package/project/.sdk/src/cmp/swift/Config_swift.ts +17 -0
  140. package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +3 -1
  141. package/project/.sdk/src/cmp/zig/Config_zig.ts +44 -0
  142. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +9 -2
  143. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -1
  144. package/project/.sdk/tm/c/core/sdk.h +1 -0
  145. package/project/.sdk/tm/c/utility/make_options.c +5 -1
  146. package/project/.sdk/tm/clojure/src/sdk/core.clj +51 -3
  147. package/project/.sdk/tm/cpp/core/types.hpp +4 -1
  148. package/project/.sdk/tm/cpp/utility/pipeline.hpp +5 -1
  149. package/project/.sdk/tm/csharp/test/PipelineTest.cs +15 -0
  150. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +67 -1
  151. package/project/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +43 -0
  152. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +58 -2
  153. package/project/.sdk/tm/haskell/{test/TestJson.hs → src/SdkJson.hs} +8 -4
  154. package/project/.sdk/tm/haskell/src/SdkRuntime.hs +55 -2
  155. package/project/.sdk/tm/haskell/test/Runner.hs +1 -1
  156. package/project/.sdk/tm/haskell/test/StructCorpus.hs +1 -1
  157. package/project/.sdk/tm/java/core/SdkClient.java +3 -1
  158. package/project/.sdk/tm/java/utility/MakeOptions.java +5 -1
  159. package/project/.sdk/tm/kotlin/core/SdkClient.kt +3 -1
  160. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +5 -1
  161. package/project/.sdk/tm/ocaml/Makefile +3 -2
  162. package/project/.sdk/tm/ocaml/sdk_json.ml +106 -0
  163. package/project/.sdk/tm/ocaml/sdk_runtime.ml +56 -0
  164. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +4 -86
  165. package/project/.sdk/tm/perl/utility/make_options.pm +5 -1
  166. package/project/.sdk/tm/rust/utility/make_options.rs +79 -1
  167. package/project/.sdk/tm/scala/core/SdkClient.scala +3 -1
  168. package/project/.sdk/tm/scala/utility/Make.scala +5 -1
  169. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +5 -1
  170. package/project/.sdk/tm/zig/core/utility.zig +85 -1
  171. package/project/sdkgen-package.json +57 -0
  172. package/src/action/action.ts +136 -6
  173. package/src/action/check.ts +495 -0
  174. package/src/action/dispatch.ts +105 -0
  175. package/src/action/docs.ts +310 -0
  176. package/src/action/doctor.ts +692 -81
  177. package/src/action/feature.ts +109 -17
  178. package/src/action/kind.ts +375 -0
  179. package/src/action/package.ts +1173 -0
  180. package/src/action/resolve.ts +362 -0
  181. package/src/action/target.ts +290 -108
  182. package/src/cmp/Docs.ts +125 -0
  183. package/src/cmp/ExternalDocs.ts +54 -0
  184. package/src/helpers/definition.ts +82 -0
  185. package/src/helpers/featureSource.ts +83 -13
  186. package/src/helpers/junk.ts +168 -0
  187. package/src/helpers/manifest.ts +474 -0
  188. package/src/helpers/modelcheck.ts +262 -0
  189. package/src/helpers/semver.ts +211 -0
  190. package/src/helpers/shipped.ts +41 -0
  191. package/src/helpers/stdrep.ts +70 -0
  192. package/src/sdkgen.ts +294 -66
  193. package/src/types.ts +33 -3
  194. package/src/utility.ts +17 -0
@@ -4,22 +4,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.action_target = action_target;
7
+ exports.featureCatalogue = featureCatalogue;
7
8
  exports.target_add = target_add;
8
9
  exports.resolveTarget = resolveTarget;
9
10
  exports.trimFeatures = trimFeatures;
10
11
  exports.readTargetFeature = readTargetFeature;
12
+ exports.aliasCmpText = aliasCmpText;
13
+ exports.aliasCmpName = aliasCmpName;
14
+ exports.aliasCmpTree = aliasCmpTree;
15
+ exports.pruneStaleTemplates = pruneStaleTemplates;
11
16
  const node_path_1 = __importDefault(require("node:path"));
12
17
  const jostraca_1 = require("jostraca");
13
18
  const util_1 = require("@voxgig/util");
14
19
  const dryrun_1 = require("../helpers/dryrun");
15
20
  const stdrep_1 = require("../helpers/stdrep");
16
- const struct_1 = require("@voxgig/struct");
21
+ const junk_1 = require("../helpers/junk");
17
22
  const aontu_1 = require("aontu");
18
23
  const types_1 = require("../types");
19
24
  const utility_1 = require("../utility");
20
25
  const featureSource_1 = require("../helpers/featureSource");
21
26
  const feature_1 = require("./feature");
22
27
  const action_1 = require("./action");
28
+ const kind_1 = require("./kind");
29
+ const resolve_1 = require("./resolve");
23
30
  const CMD_MAP = {
24
31
  add: cmd_target_add
25
32
  };
@@ -59,6 +66,10 @@ async function target_add(targets, actx) {
59
66
  control: {
60
67
  dryrun: !!actx.opts.dryrun
61
68
  },
69
+ // Per-call for the same reason `control` is: this action runs on whatever
70
+ // Jostraca instance the caller handed it, and a template tree must not
71
+ // carry a maintainer's build droppings into a project. See helpers/junk.
72
+ cmp: (0, junk_1.copyOpts)(),
62
73
  };
63
74
  opts.log.info({
64
75
  point: 'target-start',
@@ -83,9 +94,20 @@ async function target_add(targets, actx) {
83
94
  if (actx.opts.dryrun) {
84
95
  (0, dryrun_1.showDryrun)(opts.log, 'target-result', jres, actx.folder);
85
96
  }
86
- // feature_add copies feature templates for targets already registered in
87
- // the model. The targets added above are not in the in-memory model yet,
88
- // so TargetRoot copies their feature templates itself.
97
+ // The targets just written are not in the in-memory model — nothing
98
+ // recompiles `model/sdk.aontu` mid-process so put them there before the
99
+ // fan-out below.
100
+ //
101
+ // TargetRoot copies each new target's feature source from ITS OWN TREE,
102
+ // which is the whole story only while every feature ships in the same
103
+ // package as every target. For a feature supplied by a DIFFERENT package,
104
+ // the source lives in that package's overlay, and only `feature_add`'s
105
+ // two-tree lookup consults it — for targets in the model. So a target added
106
+ // while such a feature was already active got no source for it at all:
107
+ // TargetRoot could not find it, and the fan-out could not see the target.
108
+ (0, resolve_1.registerInstalled)('target', targets, actx);
109
+ // feature_add copies feature templates for every target in the model,
110
+ // which now includes the ones just added.
89
111
  await (0, feature_1.feature_add)(features, actx);
90
112
  opts.log.info({
91
113
  point: 'target-end',
@@ -96,8 +118,12 @@ async function target_add(targets, actx) {
96
118
  };
97
119
  }
98
120
  const TargetRoot = (0, jostraca_1.cmp)(function TargetRoot(props) {
99
- const { ctx$, targets, features } = props;
121
+ const { ctx$, targets, features, actx } = props;
100
122
  const { model, log } = ctx$;
123
+ const fs = ctx$.fs();
124
+ // The prune below writes through `fs` directly rather than through
125
+ // jostraca, so it has to be told about the dry run itself.
126
+ const dryrun = !!actx?.opts?.dryrun;
101
127
  // TODO: jostraca - make from value easier to specify
102
128
  // const tfolder = 'node_modules/@voxgig/sdkgen/project/.sdk'
103
129
  (0, jostraca_1.Project)({}, () => {
@@ -112,7 +138,13 @@ const TargetRoot = (0, jostraca_1.cmp)(function TargetRoot(props) {
112
138
  target: tref,
113
139
  note: tref
114
140
  });
115
- const { tname, tfolder, torigname, base } = resolveTarget(tref, ctx$);
141
+ // Resolved through the shared kind spine, so a BARE name follows what
142
+ // the model records exactly as a feature's does. Without that, a target
143
+ // installed from an external package resolved back to the bundled
144
+ // scaffold on its next `target add` — the same write-only-provenance
145
+ // trap features had.
146
+ const source = (0, kind_1.resolveKind)(tref, 'target', ctx$);
147
+ const { name: tname, folder: tfolder, origname: torigname, base } = source;
116
148
  tnames.push(tname);
117
149
  const targetNote = tname + (tname != tref ? ' ref:' + tref : '');
118
150
  log.info({
@@ -121,25 +153,31 @@ const TargetRoot = (0, jostraca_1.cmp)(function TargetRoot(props) {
121
153
  tname,
122
154
  note: tname + (tname != torigname ? 'original' + torigname : '') + ' from:' + tfolder
123
155
  });
124
- (0, jostraca_1.Folder)({ name: 'model/target' }, () => {
125
- (0, jostraca_1.Copy)({
126
- from: tfolder + '/model/target/' + torigname + '.aontu',
127
- // exclude: true
128
- replace: {
129
- "'BASE'": "'" + base + "'"
130
- }
131
- });
132
- (0, jostraca_1.File)({ name: 'target-index.aontu' }, () => (0, action_1.UpdateIndex)({
133
- content: ctx$.meta.content.target_index,
134
- names: tnames,
135
- }));
136
- });
137
- (0, jostraca_1.Folder)({ name: 'src/cmp/' + tname }, () => {
138
- (0, jostraca_1.Copy)({
139
- from: tfolder + '/src/cmp/' + torigname,
140
- // exclude: true
156
+ // An ALIASED add (`target add go~go2`) installs the target under a new
157
+ // name, and every one of the three trees has to agree about that name.
158
+ const aliased = tname !== torigname;
159
+ // The definition file and the index entry: the same for every kind, so
160
+ // they are emitted once, in action/kind.
161
+ (0, jostraca_1.Folder)({ name: 'model/target' }, () => (0, kind_1.kindModel)({
162
+ ctx$, kind: 'target', source, names: tnames,
163
+ content: ctx$.meta.content.target_index,
164
+ }));
165
+ if (aliased) {
166
+ // Components are dispatched by CONVENTION — `cmp/<t>/Main_<t>` — so
167
+ // an aliased tree whose files keep the origin suffix resolves
168
+ // nothing: `src/cmp/go2/Main_go.ts` is invisible to a lookup for
169
+ // `cmp/go2/Main_go2`. jostraca's tree Copy has no per-entry rename
170
+ // hook, so an aliased tree is emitted file by file instead.
171
+ aliasCmpTree(ctx$, tfolder + '/src/cmp/' + torigname, 'src/cmp/' + tname, torigname, tname);
172
+ }
173
+ else {
174
+ (0, jostraca_1.Folder)({ name: 'src/cmp/' + tname }, () => {
175
+ (0, jostraca_1.Copy)({
176
+ from: tfolder + '/src/cmp/' + torigname,
177
+ // exclude: true
178
+ });
141
179
  });
142
- });
180
+ }
143
181
  // Copy the whole template tree MINUS the source of every feature the
144
182
  // model did not ask for. Which files those are is discovered from the
145
183
  // tree rather than assumed (see helpers/featureSource), because each
@@ -159,7 +197,7 @@ const TargetRoot = (0, jostraca_1.cmp)(function TargetRoot(props) {
159
197
  // package failed to compile — "fhHasFeature redeclared in this block".
160
198
  //
161
199
  // The invariant this restores: tm/<target> == source tree MINUS trim.
162
- pruneStaleTemplates(ctx$, tfolder + '/tm/' + torigname, 'tm/' + tname, trim);
200
+ pruneStaleTemplates(ctx$, tfolder + '/tm/' + torigname, 'tm/' + tname, trim, dryrun);
163
201
  (0, jostraca_1.Folder)({ name: 'tm/' + tname }, () => {
164
202
  (0, jostraca_1.Copy)({
165
203
  from: tfolder + '/tm/' + torigname,
@@ -174,6 +212,96 @@ const TargetRoot = (0, jostraca_1.cmp)(function TargetRoot(props) {
174
212
  });
175
213
  });
176
214
  });
215
+ // `<Cmp>_<origname>.<ext>` -> `<Cmp>_<tname>.<ext>`, for an aliased install.
216
+ // Anything not carrying the suffix (tsconfig.json, the fragment sources)
217
+ // keeps its name — the `.<ext>` anchor is what keeps this off
218
+ // `Main.fragment.go`, whose `go` is a file extension.
219
+ //
220
+ // Shared with doctor for the same reason as aliasCmpText: doctor walks the
221
+ // ORIGIN tree to decide what should be present, so it has to land each file
222
+ // under the same name the writer gave it, or it reports the whole tree as
223
+ // missing.
224
+ function aliasCmpName(name, torigname, tname) {
225
+ return name.replace(new RegExp('_' + (0, kind_1.escapeRe)(torigname) + '(\\.[^.]+)$'), '_' + tname + '$1');
226
+ }
227
+ // The origin name a component carries INSIDE its source, rewritten for an
228
+ // aliased install. Shared with doctor, which re-applies it before comparing —
229
+ // same discipline as templateReplacements: a writer and a reader that
230
+ // disagree by a character make every file read as a fork.
231
+ //
232
+ // Rewritten here rather than through jostraca's `replace` map, because that
233
+ // map canonicalises each key into a regex group NAME — `_go'` and `_go"` both
234
+ // reduce to the same name, so the later entry silently won and every
235
+ // single-quoted import came out as `from './Package_go2"`. One explicit regex
236
+ // keeps the quote it matched.
237
+ // `cmpbase` is the component tree's PREFIX — `src/cmp/` for a target,
238
+ // `src/cmp/docs/` for a docs item. Taken from the caller rather than fixed
239
+ // here: a docs item's components live one level deeper, and a rewrite that
240
+ // looked for `src/cmp/<orig>/` left an aliased docs component pointing at the
241
+ // ORIGIN's fragments — reading them silently when both are installed.
242
+ function aliasCmpText(src, torigname, tname, cmpbase = 'src/cmp/') {
243
+ const orig = (0, kind_1.escapeRe)(torigname);
244
+ return src
245
+ // The fragment directory, read relative to __dirname. The fragments are
246
+ // copied into the ALIAS's folder, so leaving the origin path would miss —
247
+ // or, if the origin target is also installed, silently read ITS fragments.
248
+ .replace(new RegExp((0, kind_1.escapeRe)(cmpbase) + orig + '/', 'g'), cmpbase + tname + '/')
249
+ // Sibling imports: `'./Package_go'` -> `'./Package_go2'`. Anchored on the
250
+ // closing quote (captured, so the style is preserved) to keep it off file
251
+ // EXTENSIONS — `Main.fragment.go` must not become `Main.fragment.go2`.
252
+ .replace(new RegExp('_' + orig + '([\'"])', 'g'), '_' + tname + '$1');
253
+ }
254
+ // Emit an aliased `src/cmp` tree: every file renamed from the origin suffix
255
+ // to the installed one, and its CONTENT rewritten to match.
256
+ //
257
+ // Renaming alone would break the tree, because a component names its origin
258
+ // twice over: sibling imports (`from './Package_go'`) and the fragment
259
+ // directory it reads through `__dirname` (`/../../../src/cmp/go/fragment/`,
260
+ // in 67 of the shipped components). Both are rewritten here — the fragment
261
+ // path because the fragments are copied to the ALIAS's folder, so the origin
262
+ // path would either miss or, worse, silently read the origin target's
263
+ // fragments if that target is also installed.
264
+ //
265
+ // Files are emitted through jostraca (`File`/`Content`) rather than copied
266
+ // with `fs`, so a dry run reports them and writes nothing, exactly as the
267
+ // tree Copy on the unaliased path does.
268
+ function aliasCmpTree(ctx$, fromDir, toRel, torigname, tname, cmpbase = 'src/cmp/') {
269
+ const fs = ctx$.fs();
270
+ const aliasText = (src) => aliasCmpText(src, torigname, tname, cmpbase);
271
+ const emit = (dir, rel) => {
272
+ let entries;
273
+ try {
274
+ entries = fs.readdirSync(dir, { withFileTypes: true });
275
+ }
276
+ catch (e) {
277
+ return;
278
+ }
279
+ // Sorted, so an aliased tree is emitted in the same byte-stable order
280
+ // everything else in this toolchain is. Junk is dropped here because this
281
+ // walk stands in for a tree Copy, which drops it through
282
+ // `cmp.Copy.ignore` — an aliased install must not be the one path that
283
+ // ships a maintainer's `__pycache__`. See helpers/junk.
284
+ const names = entries
285
+ .map((ent) => ent.name)
286
+ .filter((name) => !(0, junk_1.isJunk)(name))
287
+ .sort();
288
+ for (const name of names) {
289
+ const child = node_path_1.default.join(dir, name);
290
+ const ent = entries.find((e) => e.name === name);
291
+ if (ent.isDirectory()) {
292
+ (0, jostraca_1.Folder)({ name }, () => emit(child, rel + '/' + name));
293
+ continue;
294
+ }
295
+ const renamed = aliasCmpName(name, torigname, tname);
296
+ // `template` against the model with no replace map, matching what Copy
297
+ // does for the unaliased tree — jostraca's Copy always interpolates
298
+ // `$$ref$$` against the model, so an aliased tree must too.
299
+ const src = fs.readFileSync(child, 'utf8');
300
+ (0, jostraca_1.File)({ name: renamed }, () => (0, jostraca_1.Content)((0, jostraca_1.template)(aliasText(src), ctx$.model)));
301
+ }
302
+ };
303
+ (0, jostraca_1.Folder)({ name: toRel }, () => emit(fromDir, toRel));
304
+ }
177
305
  // Path patterns that keep a target's unwanted feature source out of the
178
306
  // project: the source of every AVAILABLE feature the model did not select,
179
307
  // plus the templates that only compile with the complete feature set.
@@ -202,7 +330,7 @@ const TargetRoot = (0, jostraca_1.cmp)(function TargetRoot(props) {
202
330
  // model/guide/guide.aontu is the one file a user owns (merged separately by
203
331
  // create-sdkgen) — so removing what the toolchain says should not be there is
204
332
  // consistent with how the rest of that tree is already treated.
205
- function pruneStaleTemplates(ctx$, fromDir, toRel, trim) {
333
+ function pruneStaleTemplates(ctx$, fromDir, toRel, trim, dryrun) {
206
334
  const { log } = ctx$;
207
335
  const fs = ctx$.fs();
208
336
  const folder = ctx$.folder ?? '.';
@@ -218,6 +346,15 @@ function pruneStaleTemplates(ctx$, fromDir, toRel, trim) {
218
346
  return;
219
347
  }
220
348
  for (const ent of entries) {
349
+ // Junk is invisible to this listing on BOTH sides, and it has to be
350
+ // both. In the source it is never copied, so counting it would want a
351
+ // file that can never arrive. In the destination it was never written
352
+ // by this toolchain, so counting it as stale would have `target add`
353
+ // delete a maintainer's own `__pycache__` out of their SDK repo —
354
+ // this prune's remit is the tree it writes, not the tree it finds.
355
+ if ((0, junk_1.isJunk)(ent.name)) {
356
+ continue;
357
+ }
221
358
  const child = node_path_1.default.join(dir, ent.name);
222
359
  const childRel = '' === rel ? ent.name : rel + '/' + ent.name;
223
360
  if (ent.isDirectory()) {
@@ -246,6 +383,28 @@ function pruneStaleTemplates(ctx$, fromDir, toRel, trim) {
246
383
  if (0 === stale.length) {
247
384
  return;
248
385
  }
386
+ // A DRY RUN must not delete. This prune calls `fs.unlinkSync` directly, and
387
+ // jostraca enforces `control.dryrun` only inside its own write layer — so
388
+ // `-y target add <t>` previewed the copies and then really removed every
389
+ // stale template, which is the opposite of what the flag promises and
390
+ // exactly the blast radius a maintainer runs `-y` to inspect. Report the
391
+ // deletions instead, in the same shape the copies are reported.
392
+ if (dryrun) {
393
+ log.info({
394
+ point: 'target-template-prune', target: toRel, count: stale.length,
395
+ files: stale, dryrun: true,
396
+ note: toRel + ': would remove ' + stale.length +
397
+ ' stale template(s) — ** DRY RUN **, nothing was written'
398
+ });
399
+ for (const rel of stale) {
400
+ log.info({
401
+ point: 'target-template-prune-file', target: toRel,
402
+ file: toRel + '/' + rel, dryrun: true,
403
+ note: 'would remove ' + toRel + '/' + rel
404
+ });
405
+ }
406
+ return;
407
+ }
249
408
  const removed = [];
250
409
  for (const rel of stale) {
251
410
  try {
@@ -268,6 +427,48 @@ function pruneStaleTemplates(ctx$, fromDir, toRel, trim) {
268
427
  });
269
428
  }
270
429
  }
430
+ // WHICH NAMES COUNT AS FEATURE SOURCE, when deciding what to trim.
431
+ //
432
+ // This used to be the SOURCE folder's own `model/feature/` listing, which is
433
+ // right only while every target ships in the same package as every feature.
434
+ // An external target package declares no feature models of its own — it has
435
+ // no reason to — so nothing was discovered, nothing was trimmed, and the
436
+ // consumer received the target's source for EVERY feature regardless of what
437
+ // its model selected. Measured on a target copied from the bundled `go`: the
438
+ // bundled one keeps 2 feature source files, the external one kept all 18.
439
+ //
440
+ // That is the failure `helpers/featureSource` was written to end (272 stray
441
+ // files in one repo), arriving again by the one route it did not cover.
442
+ //
443
+ // The catalogue is therefore the union of every place a feature this project
444
+ // could select can come from:
445
+ //
446
+ // - the bundled scaffold, which is what a bare `feature add <name>` means;
447
+ // - the source package's own declarations, for a package shipping both;
448
+ // - the consumer's OWN installed feature models, which is how an EXTERNAL
449
+ // feature's source becomes trimmable at all.
450
+ //
451
+ // Every term is a place feature DEFINITIONS live, deliberately. Taking the
452
+ // third from the model's feature KEYS instead would make any name a project
453
+ // happens to declare a trim candidate — and a file in a `feature/` directory
454
+ // is not necessarily a feature. `tm/rust/feature/support.rs` and its siblings
455
+ // are shared machinery that `Main_rust` emits unconditionally (`pub mod
456
+ // support`), so a project that declared a feature called `support` would have
457
+ // had that file pruned and produced a crate that cannot compile. A definition
458
+ // file is evidence that the name really denotes a feature; a model key is not.
459
+ //
460
+ // For a bundled add this is `bundled ∪ bundled ∪ (⊆ bundled)`, so the trim is
461
+ // byte-identical to what it always was — the goldens hold it to that.
462
+ function featureCatalogue(ctx$, tfolder) {
463
+ const fs = ctx$.fs();
464
+ const root = ctx$.folder ?? '.';
465
+ const names = new Set([
466
+ ...(0, featureSource_1.availableFeatures)(fs, node_path_1.default.join(root, resolve_1.BUNDLED)),
467
+ ...(0, featureSource_1.availableFeatures)(fs, tfolder),
468
+ ...(0, featureSource_1.availableFeatures)(fs, root),
469
+ ]);
470
+ return Array.from(names).sort();
471
+ }
271
472
  function trimFeatures(ctx$, tfolder, torigname, tname, features) {
272
473
  const { log } = ctx$;
273
474
  const fs = ctx$.fs();
@@ -281,8 +482,8 @@ function trimFeatures(ctx$, tfolder, torigname, tname, features) {
281
482
  }
282
483
  // `base` is not a declared feature — it is the always-present foundation
283
484
  // every other feature builds on — so it is never a trim candidate.
284
- const selected = new Set(['base', ...(features ?? [])]);
285
- const available = (0, featureSource_1.availableFeatures)(fs, tfolder);
485
+ const selected = new Set([featureSource_1.BASE_FEATURE, ...(features ?? [])]);
486
+ const available = featureCatalogue(ctx$, tfolder);
286
487
  const drop = (0, featureSource_1.findFeatureSources)(fs, tfolder + '/tm/' + torigname, available)
287
488
  .filter((s) => !selected.has(s.name));
288
489
  const trimmed = 0 < drop.length;
@@ -332,76 +533,18 @@ function readTargetFeature(ctx$, tfolder, torigname, tname) {
332
533
  return { trim: false, fullset: [] };
333
534
  }
334
535
  }
335
- // Last path segment of a ref. A ref may be a bare target name ('go'), a
336
- // package-relative path ('@acme/kit/go'), or an ABSOLUTE path and on Windows
337
- // an absolute path is separated by `\`, so splitting on '/' alone hands back
338
- // the whole path as the target name and every tree lookup below then misses.
339
- // On POSIX Path.sep IS '/', so this is the same split it always was.
340
- function lastSegment(ref) {
341
- return (0, struct_1.getelem)(ref.split('/').flatMap((p) => p.split(node_path_1.default.sep)), -1);
342
- }
536
+ // `target add`'s view of the shared resolver: the same resolution every kind
537
+ // uses, with this action's historical field names. Kept as a wrapper so its
538
+ // callers (TargetRoot, doctor) and their tests do not have to move with the
539
+ // extraction.
343
540
  function resolveTarget(tref, ctx$) {
344
- let tname = tref;
345
- let torigname = tref;
346
- let tfolder = 'node_modules/@voxgig/sdkgen/project/.sdk';
347
- const root = ctx$.folder;
348
- const fs = ctx$.fs();
349
- let fulltfolder = node_path_1.default.normalize(node_path_1.default.join(root, tfolder));
350
- tname = lastSegment(tref);
351
- let aliasref = tref;
352
- torigname = lastSegment(aliasref);
353
- const aliasing = tref.split('~');
354
- if (1 < aliasing.length) {
355
- aliasref = aliasing[0];
356
- tname = aliasing.slice(1).join('~');
357
- torigname = lastSegment(aliasref);
358
- }
359
- const search = [];
360
- let found = false;
361
- // Windows: an absolute ref is `D:\a\...` or `D:/a/...`, and a Path.join'd
362
- // one carries backslashes, so neither `includes('/')` nor `startsWith('/')`
363
- // recognises it. Path.isAbsolute and Path.sep are platform-correct and
364
- // reduce to the same answers on POSIX.
365
- if (aliasref.includes('/') || aliasref.includes(node_path_1.default.sep)) {
366
- // NOTE: the last path element of the ref is the target name, not a folder.
367
- const aliasbase = node_path_1.default.dirname(aliasref);
368
- if (!node_path_1.default.isAbsolute(aliasref)) {
369
- fulltfolder = node_path_1.default.normalize(node_path_1.default.join(root, 'node_modules', aliasbase, '.sdk'));
370
- search.push(fulltfolder);
371
- found = fs.existsSync(fulltfolder);
372
- if (!found) {
373
- fulltfolder = node_path_1.default.normalize(node_path_1.default.join(root, aliasbase, '.sdk'));
374
- search.push(fulltfolder);
375
- found = fs.existsSync(fulltfolder);
376
- }
377
- }
378
- else {
379
- fulltfolder = node_path_1.default.normalize(node_path_1.default.join(aliasbase, '.sdk'));
380
- search.push(fulltfolder);
381
- found = fs.existsSync(fulltfolder);
382
- }
383
- }
384
- else {
385
- search.push(fulltfolder);
386
- found = fs.existsSync(fulltfolder);
387
- }
388
- if (!found) {
389
- throw new Error('Target folder not found in:\n' + search.join('\n '));
390
- }
391
- // `base` is the target folder relative to the project root. Compare with the
392
- // PLATFORM separator: on Windows `root + '/'` never prefixes a normalised
393
- // absolute path, so the root would not be stripped and `base` would stay
394
- // absolute. Normalise both sides first for the same reason.
395
- const nroot = node_path_1.default.normalize(root);
396
- const rootslash = nroot.endsWith(node_path_1.default.sep) ? nroot : nroot + node_path_1.default.sep;
397
- const out = {
398
- tname,
399
- tfolder: fulltfolder,
400
- torigname,
401
- base: fulltfolder.startsWith(rootslash)
402
- ? fulltfolder.slice(rootslash.length)
403
- : fulltfolder
541
+ const src = (0, resolve_1.resolveSource)(tref, 'target', ctx$);
542
+ return {
543
+ tname: src.name,
544
+ tfolder: src.folder,
545
+ torigname: src.origname,
546
+ base: src.base,
547
+ package: src.package,
404
548
  };
405
- return out;
406
549
  }
407
550
  //# sourceMappingURL=target.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/action/target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/action/target.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ declare function prepareModel(model: any, ctx$: any): void;
2
+ declare const DocsItem: import("jostraca").Component;
3
+ declare const Docs: import("jostraca").Component;
4
+ export { Docs, DocsItem, prepareModel, };
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ // GENERATING A DOCS ITEM. See docs/design/sdkgen-packages.md §20.3.
3
+ //
4
+ // A docs item is dispatched by the same convention a target is —
5
+ // `cmp/docs/<n>/Main_<n>` — so an item's package supplies the emitter and
6
+ // sdkgen supplies only the call.
7
+ //
8
+ // WHY THIS IS NOT RENDERED BY THE CONSUMER'S Root.ts
9
+ //
10
+ // A project's `Root.ts` is written once, by create-sdkgen, and is never
11
+ // touched again (doctor has an `unwired` category precisely because of it).
12
+ // So a kind introduced later can reach generation in one of two ways: every
13
+ // existing project edits its Root, or sdkgen runs the kind's own pass. The
14
+ // second is what happens here — `docs add` in a project scaffolded years ago
15
+ // generates with no scaffold change at all, which is the whole point of
16
+ // putting the destinations in packages.
17
+ //
18
+ // The cost is honest and small: a second `generate()` call over the same
19
+ // root, so the changes report arrives in two parts.
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.DocsItem = exports.Docs = void 0;
22
+ exports.prepareModel = prepareModel;
23
+ const jostraca_1 = require("jostraca");
24
+ const utility_1 = require("../utility");
25
+ const stdrep_1 = require("../helpers/stdrep");
26
+ const types_1 = require("../types");
27
+ // The model preamble every pass performs before rendering: the case-variant
28
+ // name constants (`Name`, `NAME`, …) and the ProjectName replacement map that
29
+ // template substitution reads.
30
+ //
31
+ // Done HERE rather than relied upon, because a docs pass does NOT go through
32
+ // the consumer's Root — nothing else has set `ctx$.model`, and when there are
33
+ // out-of-tree items the Root was handed a FILTERED COPY, so the preamble it
34
+ // performed did not touch this object at all.
35
+ function prepareModel(model, ctx$) {
36
+ ctx$.model = model;
37
+ model.const = model.const || { name: model.name };
38
+ (0, jostraca_1.names)(model.const, model.name);
39
+ if (null == model.const.year) {
40
+ model.const.year = new Date().getFullYear();
41
+ }
42
+ (0, jostraca_1.names)(model, model.name);
43
+ ctx$.stdrep = ctx$.stdrep || {};
44
+ (0, jostraca_1.names)(ctx$.stdrep, model.Name, 'Project' + 'Name');
45
+ }
46
+ // One item: its emitter, called with the item and the shared replace map.
47
+ //
48
+ // No Folder here — WHERE it lands is the caller's business, because that is
49
+ // exactly what differs between the two passes: in-tree the item owns
50
+ // `<sdk-repo>/<name>/`, out-of-tree the destination IS the item's root.
51
+ const DocsItem = (0, jostraca_1.cmp)(function DocsItem(props) {
52
+ const { item, ctx$ } = props;
53
+ const log = ctx$.log;
54
+ const model = props.model ?? ctx$.model;
55
+ const stdrep = (0, stdrep_1.ensureStdrep)(ctx$);
56
+ // The MODEL KEY is the fallback, and it is not paranoia: `name` comes from
57
+ // the base schema's `name: key()`, so an item whose project has not
58
+ // included that schema — or whose own definition omits it — reached
59
+ // `require('cmp/docs/undefined/Main_undefined')`, a message naming nothing
60
+ // the author wrote. Seen in the first real install of a docs package.
61
+ const name = item.name ?? item.key$;
62
+ if (null == name || '' === name) {
63
+ throw new Error('Docs item has no name and no model key, so its component cannot be ' +
64
+ 'located: ' + JSON.stringify(Object.keys(item ?? {})));
65
+ }
66
+ const Main_docs = (0, utility_1.requirePath)(ctx$, `cmp/docs/${name}/Main_${name}`);
67
+ Main_docs['Main']({ model, docs: item, stdrep });
68
+ log.info({
69
+ point: 'generate-docs', docs: name, note: 'docs:' + name
70
+ });
71
+ });
72
+ exports.DocsItem = DocsItem;
73
+ // Every IN-TREE docs item, each in its own folder.
74
+ //
75
+ // Items with `output: path` are excluded: they get their own pass rooted at
76
+ // that path, and rendering them here as well would ALSO write them into
77
+ // `<sdk-repo>/<name>/` — the same reason `withoutExternal` exists for
78
+ // targets.
79
+ const Docs = (0, jostraca_1.cmp)(function Docs(props) {
80
+ const { ctx$ } = props;
81
+ const model = props.model ?? ctx$.model;
82
+ prepareModel(model, ctx$);
83
+ const items = model?.main?.[types_1.KIT]?.docs ?? {};
84
+ (0, jostraca_1.each)(items, (item) => {
85
+ if (false === item.active) {
86
+ return;
87
+ }
88
+ const path = item.output?.path;
89
+ if (null != path && '' !== path) {
90
+ return;
91
+ }
92
+ const name = item.name ?? item.key$;
93
+ (0, jostraca_1.names)(item, name);
94
+ (0, jostraca_1.Folder)({ name }, () => DocsItem({ item }));
95
+ });
96
+ });
97
+ exports.Docs = Docs;
98
+ //# sourceMappingURL=Docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Docs.js","sourceRoot":"","sources":["../../src/cmp/Docs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare const ExternalDocs: import("jostraca").Component;
2
+ export { ExternalDocs };