@voxgig/sdkgen 4.6.0 → 4.8.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.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/cmp/Feature.js +5 -0
- package/dist/cmp/Feature.js.map +1 -1
- package/dist/cmp/TestControl.d.ts +4 -0
- package/dist/cmp/TestControl.js +51 -0
- package/dist/cmp/TestControl.js.map +1 -0
- package/dist/helpers/featureSource.d.ts +3 -1
- package/dist/helpers/featureSource.js +105 -0
- package/dist/helpers/featureSource.js.map +1 -1
- package/dist/helpers/opShape.js +8 -11
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/pointPath.d.ts +10 -0
- package/dist/helpers/pointPath.js +54 -0
- package/dist/helpers/pointPath.js.map +1 -0
- package/dist/sdkgen.d.ts +6 -3
- package/dist/sdkgen.js +14 -4
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.d.ts +2 -1
- package/dist/utility.js +78 -1
- package/dist/utility.js.map +1 -1
- package/model/sdkgen.aon +58 -0
- package/package.json +2 -2
- package/project/.sdk/model/feature/secrets.aon +82 -0
- package/project/.sdk/src/cmp/c/Config_c.ts +7 -8
- package/project/.sdk/src/cmp/c/TestDirect_c.ts +4 -3
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +2 -1
- package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +4 -3
- package/project/.sdk/src/cmp/cpp/Test_cpp.ts +5 -1
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +2 -1
- package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +34 -9
- package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +29 -5
- package/project/.sdk/src/cmp/csharp/Test_csharp.ts +5 -1
- package/project/.sdk/src/cmp/dart/Config_dart.ts +7 -8
- package/project/.sdk/src/cmp/dart/Main_dart.ts +2 -1
- package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +28 -10
- package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +28 -7
- package/project/.sdk/src/cmp/dart/Test_dart.ts +5 -1
- package/project/.sdk/src/cmp/elixir/Config_elixir.ts +9 -8
- package/project/.sdk/src/cmp/go/Config_go.ts +1 -7
- package/project/.sdk/src/cmp/go/Main_go.ts +2 -1
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +5 -4
- package/project/.sdk/src/cmp/go/Test_go.ts +5 -1
- package/project/.sdk/src/cmp/java/Config_java.ts +7 -7
- package/project/.sdk/src/cmp/java/Main_java.ts +2 -1
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +5 -4
- package/project/.sdk/src/cmp/java/Test_java.ts +5 -1
- package/project/.sdk/src/cmp/js/Config_js.ts +7 -8
- package/project/.sdk/src/cmp/js/Main_js.ts +2 -1
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +34 -8
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +35 -5
- package/project/.sdk/src/cmp/js/Test_js.ts +5 -1
- package/project/.sdk/src/cmp/js/fragment/Direct.test.fragment.js +7 -1
- package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +7 -1
- package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +7 -7
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +2 -1
- package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +5 -4
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +5 -1
- package/project/.sdk/src/cmp/lean/Config_lean.ts +9 -8
- package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -7
- package/project/.sdk/src/cmp/lua/Main_lua.ts +2 -1
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +32 -7
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +24 -4
- package/project/.sdk/src/cmp/lua/Test_lua.ts +5 -1
- package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
- package/project/.sdk/src/cmp/perl/Main_perl.ts +2 -1
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +29 -7
- package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +24 -4
- package/project/.sdk/src/cmp/perl/Test_perl.ts +5 -1
- package/project/.sdk/src/cmp/perl/utility_perl.ts +10 -0
- package/project/.sdk/src/cmp/php/Config_php.ts +1 -7
- package/project/.sdk/src/cmp/php/Main_php.ts +2 -1
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +28 -8
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +28 -4
- package/project/.sdk/src/cmp/php/Test_php.ts +5 -1
- package/project/.sdk/src/cmp/py/Config_py.ts +1 -7
- package/project/.sdk/src/cmp/py/Main_py.ts +2 -1
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +5 -4
- package/project/.sdk/src/cmp/py/Test_py.ts +5 -1
- package/project/.sdk/src/cmp/rb/Config_rb.ts +1 -7
- package/project/.sdk/src/cmp/rb/Main_rb.ts +2 -1
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +28 -8
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +24 -4
- package/project/.sdk/src/cmp/rb/Test_rb.ts +5 -1
- package/project/.sdk/src/cmp/rb/utility_rb.ts +3 -1
- package/project/.sdk/src/cmp/rust/Main_rust.ts +2 -1
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +35 -7
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +37 -4
- package/project/.sdk/src/cmp/rust/Test_rust.ts +5 -1
- package/project/.sdk/src/cmp/scala/Config_scala.ts +9 -7
- package/project/.sdk/src/cmp/scala/Main_scala.ts +2 -1
- package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +4 -3
- package/project/.sdk/src/cmp/scala/Test_scala.ts +5 -1
- package/project/.sdk/src/cmp/seneca-provider/Extras_seneca-provider.ts +3 -1
- package/project/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +9 -5
- package/project/.sdk/src/cmp/ts/Config_ts.ts +57 -16
- package/project/.sdk/src/cmp/ts/Main_ts.ts +10 -2
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +15 -7
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +11 -3
- package/project/.sdk/src/cmp/ts/Test_ts.ts +5 -1
- package/project/.sdk/tm/csharp/test/Runner.cs +45 -0
- package/project/.sdk/tm/dart/test/utility.dart +39 -0
- package/project/.sdk/tm/js/test/sdk-test-control.json +19 -0
- package/project/.sdk/tm/js/test/utility.js +91 -1
- package/project/.sdk/tm/lua/test/runner.lua +40 -0
- package/project/.sdk/tm/ocaml/test/harness.ml +14 -4
- package/project/.sdk/tm/perl/t/runner.pm +30 -0
- package/project/.sdk/tm/php/test/Runner.php +36 -0
- package/project/.sdk/tm/rb/test/runner.rb +25 -0
- package/project/.sdk/tm/rust/tests/common/mod.rs +32 -0
- package/project/.sdk/tm/rust/utility/make_options.rs +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +8 -2
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sigv4.ts +29 -5
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +30 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +90 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +48 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/aws.ts +219 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/azuresecrets.ts +144 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/boru.ts +113 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/doppler.ts +77 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +51 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +31 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +54 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/gcpsecrets.ts +118 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/hashicorp.ts +159 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +66 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/infisical.ts +107 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +33 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/onepassword.ts +120 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +176 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +15 -13
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +25 -19
- package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +1 -1
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
- package/project/.sdk/tm/zig/core/utility.zig +1 -1
- package/project/sdkgen-package.json +1 -1
- package/src/cmp/Feature.ts +5 -0
- package/src/cmp/TestControl.ts +64 -0
- package/src/helpers/featureSource.ts +130 -0
- package/src/helpers/opShape.ts +9 -14
- package/src/helpers/pointPath.ts +88 -0
- package/src/sdkgen.ts +18 -0
- package/src/utility.ts +92 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Providers.ts +0 -1221
package/dist/utility.js
CHANGED
|
@@ -8,6 +8,7 @@ exports.resolvePath = resolvePath;
|
|
|
8
8
|
exports.requirePath = requirePath;
|
|
9
9
|
exports.isAuthActive = isAuthActive;
|
|
10
10
|
exports.resolveAuthPrefix = resolveAuthPrefix;
|
|
11
|
+
exports.resolveAuthExchange = resolveAuthExchange;
|
|
11
12
|
exports.isHttpBasicAuth = isHttpBasicAuth;
|
|
12
13
|
exports.isConfigData = isConfigData;
|
|
13
14
|
exports.configRepr = configRepr;
|
|
@@ -20,6 +21,7 @@ const jostraca_1 = require("jostraca");
|
|
|
20
21
|
const apidef_1 = require("@voxgig/apidef");
|
|
21
22
|
const applicability_1 = require("./helpers/applicability");
|
|
22
23
|
const serverVars_1 = require("./helpers/serverVars");
|
|
24
|
+
const pointPath_1 = require("./helpers/pointPath");
|
|
23
25
|
const packageMeta_1 = require("./helpers/packageMeta");
|
|
24
26
|
// Where a per-target component is loaded from: `<project>/.sdk/dist/<path>`.
|
|
25
27
|
//
|
|
@@ -78,6 +80,29 @@ function isHttpBasicAuth(model) {
|
|
|
78
80
|
return null != security && 'http' === security.type &&
|
|
79
81
|
'basic' === String(security.prefix || '').toLowerCase();
|
|
80
82
|
}
|
|
83
|
+
// The API's ACCESS-TOKEN EXCHANGE, as apidef recorded it from the spec
|
|
84
|
+
// (main.kit.info.security.exchange): where the token endpoint lives, and the
|
|
85
|
+
// field names it sends and answers with. Null when the spec describes none,
|
|
86
|
+
// which is the common case.
|
|
87
|
+
//
|
|
88
|
+
// These are FACTS ABOUT THE API, so they belong in the generated config
|
|
89
|
+
// rather than in a project's hand-written model: an SDK whose spec says the
|
|
90
|
+
// exchange is at `auth/token` should not need to be told so again. A feature
|
|
91
|
+
// opts in to receiving them with `spec: { authexchange: '<options-key>' }`;
|
|
92
|
+
// configDefinition does the overlay.
|
|
93
|
+
//
|
|
94
|
+
// Deliberately NOT included: `active`. Whether a client performs the
|
|
95
|
+
// exchange is the project's decision (some resolve a static credential
|
|
96
|
+
// through the same feature on an API that also has a token endpoint), so
|
|
97
|
+
// apidef records only what the exchange IS, never that it should run.
|
|
98
|
+
function resolveAuthExchange(model) {
|
|
99
|
+
const security = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.info.security`, { only_active: false, required: false });
|
|
100
|
+
const exchange = security?.exchange;
|
|
101
|
+
if (null == exchange || 'object' !== typeof exchange) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return exchange;
|
|
105
|
+
}
|
|
81
106
|
function requirePath(ctx$, path, flags) {
|
|
82
107
|
const fullpath = resolvePath(ctx$, path);
|
|
83
108
|
const ignore = null == flags?.ignore ? false : flags.ignore;
|
|
@@ -263,6 +288,13 @@ function clean(o, dropDefaults) {
|
|
|
263
288
|
function rawStringLiteral(s) {
|
|
264
289
|
return "'" + s.replace(/\\/g, '\\\\').replace(/'/g, "\\'") + "'";
|
|
265
290
|
}
|
|
291
|
+
// The closed vocabulary of spec-derived facts a feature may ask for by
|
|
292
|
+
// declaring `spec: { <fact>: <options-key> }`. Closed, and resolved through
|
|
293
|
+
// one function each, so a feature cannot reach arbitrarily into the model
|
|
294
|
+
// and a fact's shape is defined in exactly one place.
|
|
295
|
+
const SPEC_FACTS = {
|
|
296
|
+
authexchange: resolveAuthExchange,
|
|
297
|
+
};
|
|
266
298
|
// THE CANONICAL CONFIG OBJECT, and the JSON the threshold is measured on.
|
|
267
299
|
//
|
|
268
300
|
// Every target builds its config from this one function, so the literal a
|
|
@@ -274,6 +306,30 @@ function rawStringLiteral(s) {
|
|
|
274
306
|
//
|
|
275
307
|
// Key order is `each`'s order, which is sorted, so the JSON is byte-stable
|
|
276
308
|
// across runs exactly like the literal it replaces.
|
|
309
|
+
// The embedded config still speaks the braced-string path form
|
|
310
|
+
// (`['element', '{id}']`) that every generated runtime reads. apidef now
|
|
311
|
+
// emits the resolved vector instead (its ADR-003), so the old shape is
|
|
312
|
+
// reconstructed HERE — the single point at which a point reaches generated
|
|
313
|
+
// output — via the single reconstruction in helpers/pointPath.
|
|
314
|
+
//
|
|
315
|
+
// Both are written: `parts` for the runtimes as they stand, `segments`
|
|
316
|
+
// alongside it so a runtime can be moved over one language at a time. That
|
|
317
|
+
// duplication is deliberate and temporary, and it lives in GENERATED output,
|
|
318
|
+
// not in the model — which is what ADR-003 forbids. It ends when the last
|
|
319
|
+
// runtime reads segments and `parts` is dropped from this function.
|
|
320
|
+
function withPointParts(op) {
|
|
321
|
+
if (null == op) {
|
|
322
|
+
return op;
|
|
323
|
+
}
|
|
324
|
+
const out = {};
|
|
325
|
+
(0, jostraca_1.each)(op, (o, opname) => {
|
|
326
|
+
out[opname] = null == o || null == o.points ? o : {
|
|
327
|
+
...o,
|
|
328
|
+
points: (0, jostraca_1.each)(o.points).map((pt) => null == pt ? pt : { ...pt, parts: (0, pointPath_1.pointParts)(pt) }),
|
|
329
|
+
};
|
|
330
|
+
});
|
|
331
|
+
return out;
|
|
332
|
+
}
|
|
277
333
|
function configDefinition(model, targetname) {
|
|
278
334
|
const entity = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.entity`);
|
|
279
335
|
// Gated by the target when one is named, so the embedded config cannot
|
|
@@ -298,7 +354,7 @@ function configDefinition(model, targetname) {
|
|
|
298
354
|
entityDefs[e.name] = clean({
|
|
299
355
|
fields: e.fields,
|
|
300
356
|
name: e.name,
|
|
301
|
-
op: e.op,
|
|
357
|
+
op: withPointParts(e.op),
|
|
302
358
|
relations: e.relations,
|
|
303
359
|
}, true);
|
|
304
360
|
entityStubs[e.name] = {};
|
|
@@ -319,6 +375,27 @@ function configDefinition(model, targetname) {
|
|
|
319
375
|
if (null != f.transport && '' !== f.transport) {
|
|
320
376
|
fdef.transport = String(f.transport);
|
|
321
377
|
}
|
|
378
|
+
// SPEC-DERIVED OPTIONS. A feature declares `spec: { <fact>: <options
|
|
379
|
+
// key> }` to receive facts apidef recorded from the OpenAPI spec — the
|
|
380
|
+
// same declare-never-infer rule `needs` and `transport` follow, and for
|
|
381
|
+
// the same reason: the alternative is this function knowing feature
|
|
382
|
+
// names, which is exactly the coupling the generic feature loop exists
|
|
383
|
+
// to avoid.
|
|
384
|
+
//
|
|
385
|
+
// The fact overlays the feature's DECLARED DEFAULTS, and rightly: a
|
|
386
|
+
// default like `path: 'auth/token'` is a generic guess, while the spec
|
|
387
|
+
// states where this API's endpoint actually is. A project that needs
|
|
388
|
+
// something else still overrides at runtime through `options.feature`,
|
|
389
|
+
// which beats the embedded config either way.
|
|
390
|
+
for (const factname of Object.keys(f.spec || {}).sort()) {
|
|
391
|
+
const optkey = f.spec[factname];
|
|
392
|
+
const fact = SPEC_FACTS[factname]?.(model);
|
|
393
|
+
if (null == fact || null == optkey || '' === optkey) {
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
fdef.options = { ...(fdef.options || {}) };
|
|
397
|
+
fdef.options[optkey] = { ...(fdef.options[optkey] || {}), ...fact };
|
|
398
|
+
}
|
|
322
399
|
featureDefs[f.name] = fdef;
|
|
323
400
|
});
|
|
324
401
|
const options = { base: baseUrl };
|
package/dist/utility.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":"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"}
|
package/model/sdkgen.aon
CHANGED
|
@@ -469,6 +469,64 @@ main: kit: feature: &: {
|
|
|
469
469
|
# feature that both wraps AND dispatches hooks (station does).
|
|
470
470
|
transport: *'none' | 'base' | 'wrap'
|
|
471
471
|
|
|
472
|
+
# SPEC-DERIVED OPTIONS. Facts apidef records from the OpenAPI spec, mapped
|
|
473
|
+
# onto the key in this feature's `config.options` that should carry them:
|
|
474
|
+
#
|
|
475
|
+
# spec: { authexchange: 'exchange' }
|
|
476
|
+
#
|
|
477
|
+
# configDefinition performs the overlay at generation time, so the fact
|
|
478
|
+
# reaches the SDK's embedded config without a project restating what its
|
|
479
|
+
# own spec already says. The fact name comes from a CLOSED vocabulary
|
|
480
|
+
# (`SPEC_FACTS` in ts/src/utility.ts); an unknown name is ignored rather
|
|
481
|
+
# than failing, so a project on an older sdkgen is unaffected.
|
|
482
|
+
#
|
|
483
|
+
# A map keyed by fact name, for the same reason `needs` is a map: aontu
|
|
484
|
+
# unifies maps by key, so a package can add one entry without restating
|
|
485
|
+
# the others.
|
|
486
|
+
spec: &: string
|
|
487
|
+
|
|
488
|
+
# PLUGINS — a feature's optional, separately-trimmed parts.
|
|
489
|
+
#
|
|
490
|
+
# A feature whose implementation is a thin layer over a library with
|
|
491
|
+
# OPTIONAL pieces (secrets over sekreto, whose thirteen provider kinds
|
|
492
|
+
# each carry their own platform cost) declares them here. Each plugin
|
|
493
|
+
# owns a template subfolder under the feature's own tree, and the
|
|
494
|
+
# feature trim removes an inactive one exactly as it removes an
|
|
495
|
+
# inactive feature — the same walk, one level deeper.
|
|
496
|
+
#
|
|
497
|
+
# This is what makes a generated SDK lean: a project whose chain is
|
|
498
|
+
# `[dotenv, env]` should not carry AWS request signing and seven HTTP
|
|
499
|
+
# vault clients, and before this it carried all of them because they
|
|
500
|
+
# were reachable from one import.
|
|
501
|
+
#
|
|
502
|
+
# `needs` is the same closed applicability vocabulary a feature uses,
|
|
503
|
+
# so a plugin requiring something of its target is gated the same way.
|
|
504
|
+
plugin: &: {
|
|
505
|
+
name: key()
|
|
506
|
+
active: *false | boolean
|
|
507
|
+
title: *'' | string
|
|
508
|
+
|
|
509
|
+
# What this plugin needs of the RUNTIME - 'fs', 'fetch', 'crypto'.
|
|
510
|
+
# Declared so a target that cannot provide it is refused at
|
|
511
|
+
# generation rather than at the consumer's first lookup.
|
|
512
|
+
needs: &: boolean
|
|
513
|
+
|
|
514
|
+
# The template paths this plugin OWNS, relative to the target
|
|
515
|
+
# template root, dropped when it is inactive.
|
|
516
|
+
#
|
|
517
|
+
# Declared rather than derived from a `plugin/<name>/` directory
|
|
518
|
+
# convention, because the files a plugin owns are frequently NOT
|
|
519
|
+
# free to move. sekreto's provider modules are VENDORED: the
|
|
520
|
+
# vendoring guard holds each file against its upstream path, and
|
|
521
|
+
# their relative imports (`./support`, `../Sigv4`) only resolve at
|
|
522
|
+
# upstream's own directory depth. Relocating them under a
|
|
523
|
+
# convention would break both at once.
|
|
524
|
+
#
|
|
525
|
+
# Empty means the convention — `src/feature/<feature>/plugin/<name>/`
|
|
526
|
+
# — which is right for a plugin whose files sdkgen owns outright.
|
|
527
|
+
path: *[] | [&: string]
|
|
528
|
+
}
|
|
529
|
+
|
|
472
530
|
hook: &: {
|
|
473
531
|
active: *false | boolean
|
|
474
532
|
await: *false | boolean
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/sdkgen",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.0",
|
|
4
4
|
"main": "dist/sdkgen.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"engines": {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"peerDependencies": {
|
|
89
89
|
"@tabnas/jsonic": "0.6.0",
|
|
90
90
|
"@tabnas/parser": "0.8.0",
|
|
91
|
-
"@voxgig/apidef": ">=8.
|
|
91
|
+
"@voxgig/apidef": ">=8.2",
|
|
92
92
|
"@voxgig/struct": ">=0.2",
|
|
93
93
|
"@voxgig/util": ">=0.5",
|
|
94
94
|
"aontu": ">=0.52",
|
|
@@ -23,6 +23,88 @@ main: kit: feature: secrets: {
|
|
|
23
23
|
# carry an import for a class it has no source for.
|
|
24
24
|
needs: { sekreto: true }
|
|
25
25
|
|
|
26
|
+
# SPEC-DERIVED OPTIONS. apidef recognises an API's access-token exchange
|
|
27
|
+
# in the spec and records it as model facts (info.security.exchange): the
|
|
28
|
+
# endpoint's path and method, and the field names it sends and answers
|
|
29
|
+
# with. This maps those facts onto `options.exchange` below, so a project
|
|
30
|
+
# whose spec describes an exchange does not hand-copy its own API's token
|
|
31
|
+
# endpoint into its model.
|
|
32
|
+
#
|
|
33
|
+
# What arrives is WHAT THE EXCHANGE IS, never that it should run:
|
|
34
|
+
# `exchange.active` stays the project's call, because resolving a static
|
|
35
|
+
# credential through this feature on an API that also has a token endpoint
|
|
36
|
+
# is a legitimate configuration. Turning it on remains a deliberate act.
|
|
37
|
+
spec: { authexchange: 'exchange' }
|
|
38
|
+
|
|
39
|
+
# PLUGINS — the provider kinds, each carrying its own platform cost.
|
|
40
|
+
#
|
|
41
|
+
# This is what keeps a generated SDK lean. sekreto's core resolves a
|
|
42
|
+
# chain and ships `env` and `memory`, which import nothing; every other
|
|
43
|
+
# kind lives in its own module and REGISTERS ITSELF at import, so a kind
|
|
44
|
+
# nobody imports is not in the build. These entries decide which of
|
|
45
|
+
# those modules are generated at all.
|
|
46
|
+
#
|
|
47
|
+
# An SDK whose chain is `[dotenv, env]` — the common case, and
|
|
48
|
+
# elementdemo's — needs `dotenv` alone. Before this it carried AWS
|
|
49
|
+
# request signing and seven HTTP vault clients as well, because one
|
|
50
|
+
# import reached every kind.
|
|
51
|
+
#
|
|
52
|
+
# `path` is DECLARED rather than conventional: these files are vendored
|
|
53
|
+
# from sekreto, and both the vendoring guard and their own relative
|
|
54
|
+
# imports pin them at upstream's directory depth.
|
|
55
|
+
#
|
|
56
|
+
# All inactive by default, like the feature itself. A project turns on
|
|
57
|
+
# what its chain actually names.
|
|
58
|
+
plugin: {
|
|
59
|
+
dotenv: {
|
|
60
|
+
title: 'Read secrets from a .env file or a directory of files'
|
|
61
|
+
needs: { fs: true }
|
|
62
|
+
path: [
|
|
63
|
+
'src/feature/secrets/sekreto/provider/dotenv.ts'
|
|
64
|
+
'src/feature/secrets/sekreto/provider/file.ts'
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
vault: {
|
|
69
|
+
title: 'HashiCorp Vault and boru'
|
|
70
|
+
needs: { fs: true, fetch: true }
|
|
71
|
+
path: [
|
|
72
|
+
'src/feature/secrets/sekreto/provider/hashicorp.ts'
|
|
73
|
+
'src/feature/secrets/sekreto/provider/boru.ts'
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
cloud: {
|
|
78
|
+
title: 'GCP Secret Manager and Azure Key Vault'
|
|
79
|
+
needs: { fetch: true }
|
|
80
|
+
path: [
|
|
81
|
+
'src/feature/secrets/sekreto/provider/gcpsecrets.ts'
|
|
82
|
+
'src/feature/secrets/sekreto/provider/azuresecrets.ts'
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
saas: {
|
|
87
|
+
title: '1Password, Doppler and Infisical'
|
|
88
|
+
needs: { fetch: true }
|
|
89
|
+
path: [
|
|
90
|
+
'src/feature/secrets/sekreto/provider/onepassword.ts'
|
|
91
|
+
'src/feature/secrets/sekreto/provider/doppler.ts'
|
|
92
|
+
'src/feature/secrets/sekreto/provider/infisical.ts'
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# The only plugin that costs node:crypto: AWS request signing.
|
|
97
|
+
# `Sigv4.ts` goes with it, and goes only with it.
|
|
98
|
+
aws: {
|
|
99
|
+
title: 'AWS Secrets Manager and Parameter Store (SigV4 signing)'
|
|
100
|
+
needs: { fetch: true, crypto: true }
|
|
101
|
+
path: [
|
|
102
|
+
'src/feature/secrets/sekreto/provider/aws.ts'
|
|
103
|
+
'src/feature/secrets/sekreto/Sigv4.ts'
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
26
108
|
# Transport role (station design §8.4).
|
|
27
109
|
#
|
|
28
110
|
# 'wrap', because the access-token exchange below has to SEE the response:
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
|
|
23
23
|
import {
|
|
24
24
|
cStringLiteral,
|
|
25
|
-
clean,
|
|
26
25
|
formatCValue,
|
|
27
26
|
} from './utility_c'
|
|
28
27
|
|
|
@@ -81,13 +80,13 @@ const Config = cmp(async function Config(props: any) {
|
|
|
81
80
|
options.auth = { prefix: authPrefix }
|
|
82
81
|
}
|
|
83
82
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
83
|
+
// configDefinition's `def.entity` verbatim, NOT rebuilt here. This reduce
|
|
84
|
+
// was one of fourteen copies of that function's entityDefs loop, and when
|
|
85
|
+
// configDefinition started reconstructing a point's `parts` from apidef's
|
|
86
|
+
// segment vector (its ADR-003), only the copies that read `configDef` got
|
|
87
|
+
// it — this target's literal config emitted paths with no parts at all
|
|
88
|
+
// while its data config had them. One rule, one place.
|
|
89
|
+
const entityConfig = configDef.entity
|
|
91
90
|
|
|
92
91
|
const config = {
|
|
93
92
|
// main from configDefinition's def, not re-derived here, so the literal
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
File,
|
|
12
12
|
cmp,
|
|
13
13
|
snakify,
|
|
14
|
+
pointParts,
|
|
14
15
|
} from '@voxgig/sdkgen'
|
|
15
16
|
|
|
16
17
|
|
|
@@ -75,10 +76,10 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
75
76
|
const listOp = (entity.op as any)?.list
|
|
76
77
|
|
|
77
78
|
const loadPoint = loadOp?.points?.[0]
|
|
78
|
-
const loadPath = loadPoint ? normalizePathParams(loadPoint
|
|
79
|
+
const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.args?.params || [], loadPoint?.rename?.param) : ''
|
|
79
80
|
const allLoadParams = loadPoint?.args?.params || []
|
|
80
81
|
const _pathPlaceholders = new Set<string>()
|
|
81
|
-
for (const part of (loadPoint
|
|
82
|
+
for (const part of pointParts(loadPoint)) {
|
|
82
83
|
if (typeof part === 'string' && part.startsWith('{') && part.endsWith('}')) {
|
|
83
84
|
_pathPlaceholders.add(part.slice(1, -1))
|
|
84
85
|
}
|
|
@@ -95,7 +96,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
95
96
|
_renamedPlaceholders.has(p.name) || _renamedPlaceholders.has(p.orig))
|
|
96
97
|
|
|
97
98
|
const listPoint = listOp?.points?.[0]
|
|
98
|
-
const listPath = listPoint ? normalizePathParams(listPoint
|
|
99
|
+
const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.args?.params || [], listPoint?.rename?.param) : ''
|
|
99
100
|
const listParams = listPoint?.args?.params || []
|
|
100
101
|
|
|
101
102
|
File({ name: entity.name + '_direct_test.c' }, () => {
|
|
@@ -4,6 +4,7 @@ import * as Path from 'node:path'
|
|
|
4
4
|
import {
|
|
5
5
|
cmp, each,
|
|
6
6
|
File, Content, Copy, Folder, Fragment,
|
|
7
|
+
TEST_CONTROL_EXCLUDE
|
|
7
8
|
} from '@voxgig/sdkgen'
|
|
8
9
|
|
|
9
10
|
|
|
@@ -41,7 +42,7 @@ const Main = cmp(async function Main(props: any) {
|
|
|
41
42
|
// only stages the per-feature custom-source dirs (target add), so exclude it.
|
|
42
43
|
Copy({
|
|
43
44
|
from: 'tm/' + target.name,
|
|
44
|
-
exclude: [/src
|
|
45
|
+
exclude: [/src\//, TEST_CONTROL_EXCLUDE],
|
|
45
46
|
replace: {
|
|
46
47
|
...props.ctx$.stdrep,
|
|
47
48
|
}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
File,
|
|
12
12
|
cmp,
|
|
13
13
|
snakify,
|
|
14
|
+
pointParts,
|
|
14
15
|
} from '@voxgig/sdkgen'
|
|
15
16
|
|
|
16
17
|
|
|
@@ -71,10 +72,10 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
71
72
|
const listOp = (entity.op as any)?.list
|
|
72
73
|
|
|
73
74
|
const loadPoint = loadOp?.points?.[0]
|
|
74
|
-
const loadPath = loadPoint ? normalizePathParams(loadPoint
|
|
75
|
+
const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.args?.params || [], loadPoint?.rename?.param) : ''
|
|
75
76
|
const allLoadParams = loadPoint?.args?.params || []
|
|
76
77
|
const _pathPlaceholders = new Set<string>()
|
|
77
|
-
for (const part of (loadPoint
|
|
78
|
+
for (const part of pointParts(loadPoint)) {
|
|
78
79
|
if (typeof part === 'string' && part.startsWith('{') && part.endsWith('}')) {
|
|
79
80
|
_pathPlaceholders.add(part.slice(1, -1))
|
|
80
81
|
}
|
|
@@ -91,7 +92,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
91
92
|
_renamedPlaceholders.has(p.name) || _renamedPlaceholders.has(p.orig))
|
|
92
93
|
|
|
93
94
|
const listPoint = listOp?.points?.[0]
|
|
94
|
-
const listPath = listPoint ? normalizePathParams(listPoint
|
|
95
|
+
const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.args?.params || [], listPoint?.rename?.param) : ''
|
|
95
96
|
const listParams = listPoint?.args?.params || []
|
|
96
97
|
|
|
97
98
|
const evar = cppVarName(entity.name)
|
|
@@ -3,7 +3,8 @@ import type {
|
|
|
3
3
|
ModelEntity
|
|
4
4
|
} from '@voxgig/apidef'
|
|
5
5
|
|
|
6
|
-
import { cmp, each, Folder, entityCollection
|
|
6
|
+
import { cmp, each, Folder, entityCollection,
|
|
7
|
+
TestControl } from '@voxgig/sdkgen'
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
import { TestEntity } from './TestEntity_cpp'
|
|
@@ -19,6 +20,9 @@ const Test = cmp(function Test(props: any) {
|
|
|
19
20
|
// netsim / struct corpus) ships as tm/cpp/test templates (copied verbatim).
|
|
20
21
|
// Here we generate the per-entity model-driven tests into test/.
|
|
21
22
|
Folder({ name: 'test' }, () => {
|
|
23
|
+
|
|
24
|
+
// Write-once: a project's edited control file survives regeneration.
|
|
25
|
+
TestControl({ target, dir: 'test' })
|
|
22
26
|
const entity = each(entityCollection(model))
|
|
23
27
|
.filter((e: any) => false !== e.active)
|
|
24
28
|
each(entity, (entity: ModelEntity) => {
|
|
@@ -4,6 +4,7 @@ import * as Path from 'node:path'
|
|
|
4
4
|
import {
|
|
5
5
|
cmp, each,
|
|
6
6
|
File, Content, Copy, Folder, Fragment,
|
|
7
|
+
TEST_CONTROL_EXCLUDE
|
|
7
8
|
} from '@voxgig/sdkgen'
|
|
8
9
|
|
|
9
10
|
|
|
@@ -42,7 +43,7 @@ const Main = cmp(async function Main(props: any) {
|
|
|
42
43
|
// per-feature extension folders (not shipped into the SDK output).
|
|
43
44
|
Copy({
|
|
44
45
|
from: 'tm/' + target.name,
|
|
45
|
-
exclude: [/src
|
|
46
|
+
exclude: [/src\//, TEST_CONTROL_EXCLUDE],
|
|
46
47
|
replace: {
|
|
47
48
|
...props.ctx$.stdrep,
|
|
48
49
|
}
|
|
@@ -11,7 +11,10 @@ import {
|
|
|
11
11
|
File,
|
|
12
12
|
cmp,
|
|
13
13
|
snakify,
|
|
14
|
-
isAuthActive, envName, envToken
|
|
14
|
+
isAuthActive, envName, envToken,
|
|
15
|
+
serverVarEnv,
|
|
16
|
+
serverVariables,
|
|
17
|
+
pointParts,
|
|
15
18
|
} from '@voxgig/sdkgen'
|
|
16
19
|
|
|
17
20
|
import { formatCsValue } from './utility_csharp'
|
|
@@ -67,12 +70,26 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
67
70
|
|
|
68
71
|
const authActive = isAuthActive(model)
|
|
69
72
|
const apikeyEnvEntry = authActive
|
|
70
|
-
? `\n ["${PROJECTNAME}_APIKEY"] = "
|
|
73
|
+
? `\n ["${PROJECTNAME}_APIKEY"] = "",`
|
|
71
74
|
: ''
|
|
72
75
|
const apikeyLiveField = authActive
|
|
73
76
|
? `\n ["apikey"] = env["${PROJECTNAME}_APIKEY"],`
|
|
74
77
|
: ''
|
|
75
78
|
|
|
79
|
+
// A templated server URL (OpenAPI server variables) makes a LIVE client
|
|
80
|
+
// impossible to construct without values: makeOptions raises rather than
|
|
81
|
+
// request a URL with a literal `{account_id}` in it. So the live suite
|
|
82
|
+
// takes them from the environment the same way it takes the apikey.
|
|
83
|
+
const svars = serverVariables(model)
|
|
84
|
+
const serverEnvEntry = svars
|
|
85
|
+
.map((v: any) => `\n ["${serverVarEnv(PROJECTNAME, v.name)}"] = ${JSON.stringify(v.dflt)},`).join('')
|
|
86
|
+
const serverLiveField = 0 === svars.length ? '' : `
|
|
87
|
+
["server"] = new Dictionary<string, object?>
|
|
88
|
+
{${svars
|
|
89
|
+
.map((v: any) => `
|
|
90
|
+
["${v.name}"] = env["${serverVarEnv(PROJECTNAME, v.name)}"],`).join('')}
|
|
91
|
+
},`
|
|
92
|
+
|
|
76
93
|
const opnames = Object.keys(entity.op || {})
|
|
77
94
|
const hasLoad = opnames.includes('load')
|
|
78
95
|
const hasList = opnames.includes('list')
|
|
@@ -86,12 +103,12 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
86
103
|
|
|
87
104
|
// Get load point info
|
|
88
105
|
const loadPoint = loadOp?.points?.[0]
|
|
89
|
-
const loadPath = loadPoint ? normalizePathParams(loadPoint
|
|
106
|
+
const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.args?.params || [], loadPoint?.rename?.param) : ''
|
|
90
107
|
const allLoadParams = loadPoint?.args?.params || []
|
|
91
108
|
// Only path params that actually appear in the URL template drive direct
|
|
92
109
|
// path-param setup and URL-substitution asserts.
|
|
93
110
|
const _pathPlaceholders = new Set<string>()
|
|
94
|
-
for (const part of (loadPoint
|
|
111
|
+
for (const part of pointParts(loadPoint)) {
|
|
95
112
|
if (typeof part === 'string' && part.startsWith('{') && part.endsWith('}')) {
|
|
96
113
|
_pathPlaceholders.add(part.slice(1, -1))
|
|
97
114
|
}
|
|
@@ -109,7 +126,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
109
126
|
|
|
110
127
|
// Get list point info
|
|
111
128
|
const listPoint = listOp?.points?.[0]
|
|
112
|
-
const listPath = listPoint ? normalizePathParams(listPoint
|
|
129
|
+
const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.args?.params || [], listPoint?.rename?.param) : ''
|
|
113
130
|
const listParams = listPoint?.args?.params || []
|
|
114
131
|
|
|
115
132
|
// Required query params with spec-provided examples - needed in live mode.
|
|
@@ -475,16 +492,24 @@ ${loadSkipBlock} var client = setup.Client;
|
|
|
475
492
|
var env = TestRunner.EnvOverride(new Dictionary<string, object?>
|
|
476
493
|
{
|
|
477
494
|
["${entidEnvVar}"] = new Dictionary<string, object?>(),
|
|
478
|
-
["${PROJECTNAME}_TEST_LIVE"] = "FALSE",${apikeyEnvEntry}
|
|
495
|
+
["${PROJECTNAME}_TEST_LIVE"] = "FALSE",${apikeyEnvEntry}${serverEnvEntry}
|
|
479
496
|
});
|
|
480
497
|
|
|
481
498
|
var live = Equals(env["${PROJECTNAME}_TEST_LIVE"], "TRUE");
|
|
482
499
|
|
|
483
500
|
if (live)
|
|
484
501
|
{
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
502
|
+
// sdk-test-control.json's test.client.options goes UNDER the
|
|
503
|
+
// generated fields: it adds to the live client, it does not
|
|
504
|
+
// redirect it, so the generated entries overwrite it here.
|
|
505
|
+
var liveOpts = TestRunner.LiveClientOptions();
|
|
506
|
+
foreach (var _kv in new Dictionary<string, object?>
|
|
507
|
+
{${apikeyLiveField}${serverLiveField}
|
|
508
|
+
})
|
|
509
|
+
{
|
|
510
|
+
liveOpts[_kv.Key] = _kv.Value;
|
|
511
|
+
}
|
|
512
|
+
var liveClient = new ${Name}SDK(liveOpts);
|
|
488
513
|
|
|
489
514
|
var idmap = new Dictionary<string, object?>();
|
|
490
515
|
var entidRaw = env["${entidEnvVar}"];
|
|
@@ -17,7 +17,9 @@ import {
|
|
|
17
17
|
each,
|
|
18
18
|
buildIdNames,
|
|
19
19
|
getMatchEntries,
|
|
20
|
-
isAuthActive, envName, envToken
|
|
20
|
+
isAuthActive, envName, envToken,
|
|
21
|
+
serverVarEnv,
|
|
22
|
+
serverVariables
|
|
21
23
|
} from '@voxgig/sdkgen'
|
|
22
24
|
|
|
23
25
|
|
|
@@ -59,12 +61,26 @@ const TestEntity = cmp(function TestEntity(props: any) {
|
|
|
59
61
|
|
|
60
62
|
const authActive = isAuthActive(model)
|
|
61
63
|
const apikeyEnvEntry = authActive
|
|
62
|
-
? `\n ["${PROJUPPER}_APIKEY"] = "
|
|
64
|
+
? `\n ["${PROJUPPER}_APIKEY"] = "",`
|
|
63
65
|
: ''
|
|
64
66
|
const apikeyLiveField = authActive
|
|
65
67
|
? `\n ["apikey"] = env["${PROJUPPER}_APIKEY"],`
|
|
66
68
|
: ''
|
|
67
69
|
|
|
70
|
+
// A templated server URL (OpenAPI server variables) makes a LIVE client
|
|
71
|
+
// impossible to construct without values: makeOptions raises rather than
|
|
72
|
+
// request a URL with a literal `{account_id}` in it. So the live suite
|
|
73
|
+
// takes them from the environment the same way it takes the apikey.
|
|
74
|
+
const svars = serverVariables(model)
|
|
75
|
+
const serverEnvEntry = svars
|
|
76
|
+
.map((v: any) => `\n ["${serverVarEnv(PROJUPPER, v.name)}"] = ${JSON.stringify(v.dflt)},`).join('')
|
|
77
|
+
const serverLiveField = 0 === svars.length ? '' : `
|
|
78
|
+
["server"] = new Dictionary<string, object?>
|
|
79
|
+
{${svars
|
|
80
|
+
.map((v: any) => `
|
|
81
|
+
["${v.name}"] = env["${serverVarEnv(PROJUPPER, v.name)}"],`).join('')}
|
|
82
|
+
},`
|
|
83
|
+
|
|
68
84
|
const idnames = buildIdNames(entity, basicflow)
|
|
69
85
|
const idnamesStr = idnames.map(n => `"${n}"`).join(', ')
|
|
70
86
|
|
|
@@ -266,7 +282,7 @@ ${allSteps.length > 0 ? ' var client = setup.Client;\n\n' : ''}`)
|
|
|
266
282
|
{
|
|
267
283
|
["${PROJUPPER}_TEST_${ENTUPPER}_ENTID"] = idmap,
|
|
268
284
|
["${PROJUPPER}_TEST_LIVE"] = "FALSE",
|
|
269
|
-
["${PROJUPPER}_TEST_EXPLAIN"] = "FALSE",${apikeyEnvEntry}
|
|
285
|
+
["${PROJUPPER}_TEST_EXPLAIN"] = "FALSE",${apikeyEnvEntry}${serverEnvEntry}
|
|
270
286
|
});
|
|
271
287
|
|
|
272
288
|
var idmapResolved = Helpers.ToMapAny(env["${PROJUPPER}_TEST_${ENTUPPER}_ENTID"])
|
|
@@ -288,12 +304,20 @@ ${allSteps.length > 0 ? ' var client = setup.Client;\n\n' : ''}`)
|
|
|
288
304
|
Content(`
|
|
289
305
|
if (Equals(env["${PROJUPPER}_TEST_LIVE"], "TRUE"))
|
|
290
306
|
{
|
|
307
|
+
// 'extra ?? new ...', not a bare 'extra': Merge returns null when
|
|
308
|
+
// the last entry is null, and BasicSetup is normally called with no
|
|
309
|
+
// argument at all - so a bare 'extra' silently discarded the apikey
|
|
310
|
+
// and server values above and handed the SDK null.
|
|
311
|
+
var extraOpts = extra ?? new Dictionary<string, object?>();
|
|
291
312
|
var mergedOpts = StructUtils.Merge(new List<object?>
|
|
292
313
|
{
|
|
314
|
+
// FIRST, so the generated fields below win: sdk-test-control.json's
|
|
315
|
+
// test.client.options adds to the live client, it does not redirect it.
|
|
316
|
+
TestRunner.LiveClientOptions(),
|
|
293
317
|
new Dictionary<string, object?>
|
|
294
|
-
{${apikeyLiveField}
|
|
318
|
+
{${apikeyLiveField}${serverLiveField}
|
|
295
319
|
},
|
|
296
|
-
|
|
320
|
+
extraOpts,
|
|
297
321
|
});
|
|
298
322
|
client = new ${Name}SDK(Helpers.ToMapAny(mergedOpts));
|
|
299
323
|
}
|