@voxgig/sdkgen 4.19.0 → 4.20.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 (112) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/cmp/AgentGuideContent.js +1 -1
  3. package/dist/sdkgen.d.ts +2 -2
  4. package/dist/sdkgen.js +6 -3
  5. package/dist/sdkgen.js.map +1 -1
  6. package/dist/testkit.js +2 -2
  7. package/dist/testkit.js.map +1 -1
  8. package/dist/tsconfig.tsbuildinfo +1 -1
  9. package/dist/utility.d.ts +4 -1
  10. package/dist/utility.js +60 -0
  11. package/dist/utility.js.map +1 -1
  12. package/model/sdkgen.aon +10 -0
  13. package/package.json +1 -1
  14. package/project/.sdk/model/feature/feature-index.aon +20 -20
  15. package/project/.sdk/src/cmp/c/Config_c.ts +15 -0
  16. package/project/.sdk/src/cmp/c/Main_c.ts +15 -0
  17. package/project/.sdk/src/cmp/c/PrepareAuth_c.ts +371 -0
  18. package/project/.sdk/src/cmp/clojure/Config_clojure.ts +47 -1
  19. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +11 -1
  20. package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +374 -0
  21. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +40 -0
  22. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +17 -0
  23. package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +441 -0
  24. package/project/.sdk/src/cmp/csharp/Config_csharp.ts +42 -1
  25. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +18 -0
  26. package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +392 -0
  27. package/project/.sdk/src/cmp/elixir/Config_elixir.ts +36 -1
  28. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +15 -0
  29. package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +418 -0
  30. package/project/.sdk/src/cmp/go/Config_go.ts +12 -1
  31. package/project/.sdk/src/cmp/go/Main_go.ts +14 -0
  32. package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +322 -0
  33. package/project/.sdk/src/cmp/java/Config_java.ts +20 -1
  34. package/project/.sdk/src/cmp/java/Main_java.ts +14 -0
  35. package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +298 -0
  36. package/project/.sdk/src/cmp/js/Config_js.ts +12 -1
  37. package/project/.sdk/src/cmp/js/Main_js.ts +6 -0
  38. package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +244 -0
  39. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +23 -1
  40. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +20 -0
  41. package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +440 -0
  42. package/project/.sdk/src/cmp/lua/Config_lua.ts +15 -1
  43. package/project/.sdk/src/cmp/lua/Main_lua.ts +11 -0
  44. package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +364 -0
  45. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +31 -1
  46. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +19 -0
  47. package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +454 -0
  48. package/project/.sdk/src/cmp/perl/Config_perl.ts +30 -0
  49. package/project/.sdk/src/cmp/perl/Main_perl.ts +14 -0
  50. package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +387 -0
  51. package/project/.sdk/src/cmp/php/Config_php.ts +12 -1
  52. package/project/.sdk/src/cmp/php/Main_php.ts +7 -0
  53. package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +325 -0
  54. package/project/.sdk/src/cmp/py/Config_py.ts +12 -1
  55. package/project/.sdk/src/cmp/py/Main_py.ts +12 -0
  56. package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +389 -0
  57. package/project/.sdk/src/cmp/rb/Config_rb.ts +18 -1
  58. package/project/.sdk/src/cmp/rb/Main_rb.ts +10 -0
  59. package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +305 -0
  60. package/project/.sdk/src/cmp/rust/Config_rust.ts +41 -1
  61. package/project/.sdk/src/cmp/rust/Main_rust.ts +16 -0
  62. package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +410 -0
  63. package/project/.sdk/src/cmp/scala/Config_scala.ts +21 -1
  64. package/project/.sdk/src/cmp/scala/Main_scala.ts +14 -0
  65. package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +415 -0
  66. package/project/.sdk/src/cmp/swift/Config_swift.ts +37 -1
  67. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  68. package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +439 -0
  69. package/project/.sdk/src/cmp/ts/Config_ts.ts +12 -1
  70. package/project/.sdk/src/cmp/ts/Main_ts.ts +5 -0
  71. package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +237 -0
  72. package/project/.sdk/src/cmp/zig/Config_zig.ts +33 -1
  73. package/project/.sdk/src/cmp/zig/Main_zig.ts +16 -0
  74. package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +545 -0
  75. package/project/.sdk/tm/clojure/src/sdk/core.clj +31 -20
  76. package/project/.sdk/tm/cpp/utility/pipeline.hpp +36 -40
  77. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +11 -0
  78. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +19 -32
  79. package/project/.sdk/tm/java/utility/MakeOptions.java +13 -1
  80. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +14 -1
  81. package/project/.sdk/tm/kotlin/utility/Prepare.kt +13 -46
  82. package/project/.sdk/tm/ocaml/Makefile +11 -1
  83. package/project/.sdk/tm/ocaml/sdk_helpers.ml +15 -0
  84. package/project/.sdk/tm/ocaml/sdk_runtime.ml +31 -25
  85. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +125 -12
  86. package/project/.sdk/tm/ocaml/test/t_pipeline.ml +64 -6
  87. package/project/.sdk/tm/perl/utility/make_options.pm +10 -1
  88. package/project/.sdk/tm/php/utility/MakeOptions.php +8 -1
  89. package/project/.sdk/tm/rust/utility/make_options.rs +13 -1
  90. package/project/.sdk/tm/scala/utility/Make.scala +14 -1
  91. package/project/.sdk/tm/scala/utility/Prepare.scala +16 -40
  92. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +30 -3
  93. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +21 -39
  94. package/project/.sdk/tm/zig/core/utility.zig +37 -45
  95. package/project/.sdk/tm/zig/test/pipeline_test.zig +34 -0
  96. package/project/sdkgen-package.json +1 -1
  97. package/src/cmp/AgentGuideContent.ts +1 -1
  98. package/src/sdkgen.ts +4 -1
  99. package/src/testkit.ts +2 -2
  100. package/src/utility.ts +75 -0
  101. package/project/.sdk/tm/c/utility/prepare_auth.c +0 -65
  102. package/project/.sdk/tm/csharp/utility/PrepareAuth.cs +0 -54
  103. package/project/.sdk/tm/go/utility/prepare_auth.go +0 -59
  104. package/project/.sdk/tm/java/utility/PrepareAuth.java +0 -66
  105. package/project/.sdk/tm/js/src/utility/PrepareAuthUtility.js +0 -49
  106. package/project/.sdk/tm/lua/utility/prepare_auth.lua +0 -52
  107. package/project/.sdk/tm/perl/utility/prepare_auth.pm +0 -56
  108. package/project/.sdk/tm/php/utility/PrepareAuth.php +0 -45
  109. package/project/.sdk/tm/py/pkg/utility/prepare_auth.py +0 -46
  110. package/project/.sdk/tm/rb/utility/prepare_auth.rb +0 -35
  111. package/project/.sdk/tm/rust/utility/prepare_auth.rs +0 -65
  112. package/project/.sdk/tm/ts/src/utility/PrepareAuthUtility.ts +0 -78
package/dist/utility.js CHANGED
@@ -8,6 +8,9 @@ exports.resolvePath = resolvePath;
8
8
  exports.requirePath = requirePath;
9
9
  exports.isAuthActive = isAuthActive;
10
10
  exports.resolveAuthPrefix = resolveAuthPrefix;
11
+ exports.resolveAuthIn = resolveAuthIn;
12
+ exports.resolveAuthName = resolveAuthName;
13
+ exports.isAuthSuppressed = isAuthSuppressed;
11
14
  exports.resolveAuthExchange = resolveAuthExchange;
12
15
  exports.isHttpBasicAuth = isHttpBasicAuth;
13
16
  exports.isConfigData = isConfigData;
@@ -76,6 +79,63 @@ function resolveAuthPrefix(model) {
76
79
  return String(security.prefix);
77
80
  return 'Bearer';
78
81
  }
82
+ // AUTH SUPPRESSED AT GENERATION TIME — and ONLY by an explicit opt-out.
83
+ //
84
+ // NOT `isAuthActive`, and the difference is load-bearing. That helper is
85
+ // also false when `main.kit.info.auth` is false, which only means the SPEC
86
+ // declared no security scheme. Such an SDK still carries a credential:
87
+ // `optspec` always declares `apikey`, and makeOptions fills `options.auth`
88
+ // from the optspec defaults, so the runtime `null == options.auth` guard
89
+ // never fires and the credential has always been sent. Emitting a no-op
90
+ // prepareAuth for those SDKs silently breaks a working credential — and
91
+ // takes the secrets feature with it, since that resolves a secret into
92
+ // `options.apikey` and prepareAuth then places nothing.
93
+ //
94
+ // `main.kit.config.auth.active: false` is the project saying "this SDK
95
+ // sends no credential, ever". That is the only signal that can be honoured
96
+ // before runtime, so it is the only one used here.
97
+ function isAuthSuppressed(model) {
98
+ const auth = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.config.auth`, { only_active: false, required: false });
99
+ return null != auth && false === auth.active;
100
+ }
101
+ // WHERE the credential goes, and UNDER WHAT NAME. Same priority order as
102
+ // resolveAuthPrefix: a per-SDK override first, then what apidef derived
103
+ // from the spec's securityScheme, then the convention.
104
+ //
105
+ // THESE EXISTED IN THE MODEL AND WERE DROPPED AT GENERATION. apidef has
106
+ // always resolved `in` and `name` (transform/top.ts resolveSecurity), and
107
+ // api-info.aon records them — joplin's says `in: "query", name: "token"`.
108
+ // But nothing read them: every target's prepare_auth template hardcoded an
109
+ // `authorization` header, so an apiKey-in-query API got a header it does
110
+ // not read and never got the query parameter it does. Four repos in the
111
+ // cedar fleet ship SDKs that cannot authenticate for this reason
112
+ // (joplin `token`, pipedrive `api_token`, trello `key`,
113
+ // lm-umbrella `apiKey`).
114
+ //
115
+ // 'header' and 'Authorization' remain the defaults, so every SDK whose
116
+ // scheme is header-based generates exactly what it generated before.
117
+ function resolveAuthIn(model) {
118
+ const auth = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.config.auth`, { only_active: false, required: false });
119
+ if (null != auth && null != auth.in && '' !== auth.in) {
120
+ return String(auth.in).toLowerCase();
121
+ }
122
+ const security = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.info.security`, { only_active: false, required: false });
123
+ if (null != security && null != security.in && '' !== security.in) {
124
+ return String(security.in).toLowerCase();
125
+ }
126
+ return 'header';
127
+ }
128
+ function resolveAuthName(model) {
129
+ const auth = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.config.auth`, { only_active: false, required: false });
130
+ if (null != auth && null != auth.name && '' !== auth.name) {
131
+ return String(auth.name);
132
+ }
133
+ const security = (0, apidef_1.getModelPath)(model, `main.${apidef_1.KIT}.info.security`, { only_active: false, required: false });
134
+ if (null != security && null != security.name && '' !== security.name) {
135
+ return String(security.name);
136
+ }
137
+ return 'Authorization';
138
+ }
79
139
  // True when the spec's security scheme is genuine HTTP Basic Auth (two
80
140
  // credentials, base64-joined) rather than a single bearer-style token with
81
141
  // a prefix. Priority order mirrors resolveAuthPrefix:
@@ -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
@@ -638,6 +638,16 @@ main: kit: optspec: {
638
638
  auth: {
639
639
  prefix: ''
640
640
  basic: false
641
+
642
+ # WHERE the credential goes and UNDER WHAT NAME. apidef resolves both
643
+ # from the spec's securityScheme into main.kit.info.security; these are
644
+ # the per-SDK override, and they are what the generated prepareAuth is
645
+ # built from. '' means "take what the spec said", so an SDK that does
646
+ # not set them behaves exactly as it did before.
647
+ # in: header | query | cookie
648
+ # name: the header, query parameter or cookie name
649
+ in: ''
650
+ name: ''
641
651
  }
642
652
 
643
653
  # Extra headers sent with every request: any name, string values.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/sdkgen",
3
- "version": "4.19.0",
3
+ "version": "4.20.0",
4
4
  "main": "dist/sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "engines": {
@@ -1,27 +1,27 @@
1
1
  # Features
2
2
 
3
3
  # Core
4
- @"test.aon"
5
- @"log.aon"
6
- @"secrets.aon"
4
+ @"./test.aon"
5
+ @"./log.aon"
6
+ @"./secrets.aon"
7
7
 
8
8
  # Enterprise capabilities
9
- @"retry.aon"
10
- @"timeout.aon"
11
- @"ratelimit.aon"
12
- @"cache.aon"
13
- @"cost.aon"
14
- @"idempotency.aon"
15
- @"paging.aon"
16
- @"streaming.aon"
17
- @"proxy.aon"
18
- @"telemetry.aon"
19
- @"metrics.aon"
20
- @"debug.aon"
21
- @"audit.aon"
22
- @"clienttrack.aon"
23
- @"rbac.aon"
24
- @"validate.aon"
9
+ @"./retry.aon"
10
+ @"./timeout.aon"
11
+ @"./ratelimit.aon"
12
+ @"./cache.aon"
13
+ @"./cost.aon"
14
+ @"./idempotency.aon"
15
+ @"./paging.aon"
16
+ @"./streaming.aon"
17
+ @"./proxy.aon"
18
+ @"./telemetry.aon"
19
+ @"./metrics.aon"
20
+ @"./debug.aon"
21
+ @"./audit.aon"
22
+ @"./clienttrack.aon"
23
+ @"./rbac.aon"
24
+ @"./validate.aon"
25
25
 
26
26
  # Test support: network behaviour simulation
27
- @"netsim.aon"
27
+ @"./netsim.aon"
@@ -9,6 +9,8 @@ import {
9
9
  each,
10
10
  isAuthActive,
11
11
  isConfigData,
12
+ resolveAuthIn,
13
+ resolveAuthName,
12
14
  resolveAuthPrefix,
13
15
  targetFeatures,
14
16
  } from '@voxgig/sdkgen'
@@ -352,6 +354,13 @@ const Config = cmp(async function Config(props: any) {
352
354
 
353
355
  const authActive = isAuthActive(model)
354
356
  const authPrefix = resolveAuthPrefix(model)
357
+ // `in` and `name` travel with the prefix now. They were resolved by apidef
358
+ // all along and dropped here, so an apiKey-in-query API got an
359
+ // Authorization header it does not read. Emitted only when they differ from
360
+ // the defaults, so a header/Authorization SDK's config.c is byte-identical
361
+ // to what it generated before (Config_ts and Config_go do the same).
362
+ const authIn = resolveAuthIn(model)
363
+ const authName = resolveAuthName(model)
355
364
 
356
365
  let baseUrl = ''
357
366
  try { baseUrl = getModelPath(model, `main.${KIT}.info.servers.0.url`) } catch (_e) { }
@@ -385,6 +394,12 @@ const Config = cmp(async function Config(props: any) {
385
394
  }
386
395
  if (authActive) {
387
396
  options.auth = { prefix: authPrefix }
397
+ if ('header' !== authIn) {
398
+ options.auth.in = authIn
399
+ }
400
+ if ('Authorization' !== authName) {
401
+ options.auth.name = authName
402
+ }
388
403
  }
389
404
 
390
405
  // configDefinition's `def.entity` verbatim, NOT rebuilt here. This reduce
@@ -26,6 +26,7 @@ import { Gitignore } from './Gitignore_c'
26
26
  import { MainEntity } from './MainEntity_c'
27
27
  import { EntityBase } from './EntityBase_c'
28
28
  import { EntityTypes } from './EntityTypes_c'
29
+ import { PrepareAuth } from './PrepareAuth_c'
29
30
 
30
31
 
31
32
  const Main = cmp(async function Main(props: any) {
@@ -122,6 +123,20 @@ const Main = cmp(async function Main(props: any) {
122
123
  Config({ target })
123
124
  })
124
125
 
126
+ // utility/prepare_auth.c is GENERATED, not templated: where the credential
127
+ // goes (header / query / cookie, and under what name) is a fact about the
128
+ // API, and tm/ can only hold one answer. See PrepareAuth_c.
129
+ //
130
+ // AT ROOT LEVEL, and OUTSIDE the `core` Folder above. c's layout is flat at
131
+ // the target root (core/, utility/, feature/, entity/, tests/), the template
132
+ // this replaces lived at `tm/c/utility/prepare_auth.c`, and the whole-tree
133
+ // `Copy({from:'tm/c'})` landed it at `<root>/utility/`. The component opens
134
+ // `utility` itself, so calling it beside Config - inside `Folder({name:
135
+ // 'core'})` - would emit `core/utility/prepare_auth.c`, which the Makefile's
136
+ // `$(wildcard core/*.c utility/*.c ...)` does not match: nothing would
137
+ // compile it and `prepare_auth_util` would be unresolved at link time.
138
+ PrepareAuth({ target })
139
+
125
140
  // feature/<name>/kinds.c — the plugin definitions an active plugin-bearing
126
141
  // feature selected, and the Makefile's wiring gate for that feature's
127
142
  // vendored payload (see Config_c). Nothing is emitted when no such
@@ -0,0 +1,371 @@
1
+
2
+ import {
3
+ Content,
4
+ File,
5
+ Folder,
6
+ cmp,
7
+ isHttpBasicAuth,
8
+ resolveAuthIn,
9
+ resolveAuthName,
10
+ resolveAuthPrefix,
11
+ } from '@voxgig/sdkgen'
12
+
13
+
14
+ import {
15
+ KIT,
16
+ getModelPath,
17
+ } from '@voxgig/apidef'
18
+
19
+
20
+ // WHERE THE CREDENTIAL GOES IS A FACT ABOUT THE API, so it is generated
21
+ // rather than templated. This is the c peer of PrepareAuth_ts and
22
+ // PrepareAuth_go; read PrepareAuth_ts first, it carries the full account of
23
+ // the defect.
24
+ //
25
+ // This was a static file at `tm/c/utility/prepare_auth.c` that hardcoded
26
+ //
27
+ // #define HEADER_AUTH "authorization"
28
+ //
29
+ // apidef has always resolved the scheme's `in` and `name` into
30
+ // `main.kit.info.security` — joplin's says `in: "query", name: "token"` —
31
+ // and generation dropped both, so the SDK sent a header the API does not
32
+ // read and never sent the query parameter it does.
33
+ //
34
+ // A template cannot fix this, because the three placements need three
35
+ // different bodies and a template has to pick one. A component emits the
36
+ // branch this API actually uses and nothing else — no dead query code in a
37
+ // bearer-token SDK, and no runtime `if` on a value fixed at generation
38
+ // time. In c that also keeps the includes honest: `<stdio.h>` is pulled in
39
+ // only by the placements that actually call snprintf, and the base64
40
+ // encoder only by the one placement that can use it.
41
+ const PrepareAuth = cmp(async function PrepareAuth(props: any) {
42
+ const { target } = props
43
+ const { model } = props.ctx$
44
+
45
+ const active = authSwitchedOn(model)
46
+ const where = resolveAuthIn(model)
47
+ const name = resolveAuthName(model)
48
+ const prefix = resolveAuthPrefix(model)
49
+ const basic = isHttpBasicAuth(model)
50
+
51
+ // FOLDER NESTING. Main_c opens NO folder around this call, so `utility` is
52
+ // opened HERE and the file lands at `<root>/utility/prepare_auth.c` —
53
+ // exactly where `Copy({from:'tm/c'})` used to land the template, which is
54
+ // what the Makefile's `$(wildcard core/*.c utility/*.c ...)` compiles and
55
+ // what `core/sdk.h` declares `prepare_auth_util` for.
56
+ //
57
+ // The call site matters as much as the folder. Config_c is inside
58
+ // `Folder({name:'core'})`, and putting PrepareAuth beside it would write
59
+ // `core/utility/prepare_auth.c` — a path no glob in the Makefile matches,
60
+ // so nothing would compile it, `prepare_auth_util` would be an unresolved
61
+ // symbol at link time, and any stale `utility/prepare_auth.c` left in the
62
+ // tree would keep being the one that runs. Main_c calls this at ROOT
63
+ // level, after the `core` Folder closes.
64
+ Folder({ name: 'utility' }, () => {
65
+ File({ name: 'prepare_auth.c' }, () => {
66
+ Content(render({ active, where, name, prefix, basic }))
67
+ })
68
+ })
69
+ })
70
+
71
+
72
+ // NOT `isAuthActive`, AND THE DIFFERENCE IS LOAD-BEARING (the py port found
73
+ // this first, php's lane proved it, and c's lane proves it again here).
74
+ //
75
+ // `isAuthActive` is false whenever the SPEC declares no security scheme
76
+ // (`main.kit.info.auth: false`). That is a statement about the DEFINITION,
77
+ // not a ban on ever sending a credential: apidef writes it for every spec
78
+ // with no securitySchemes block, and those SDKs are still expected to honour
79
+ // an `apikey` the caller passes. The template placed the credential
80
+ // unconditionally, so they did.
81
+ //
82
+ // Gating the body on `isAuthActive` therefore does not trim dead code, it
83
+ // deletes working authentication. MEASURED, not assumed: with the wider gate
84
+ // this component emitted the no-op for generatedcompile's own fixture
85
+ // (`main: kit: info: { ... auth: false }`) and the c lane went red -
86
+ //
87
+ // c: auth null beats an explicit apikey
88
+ // FAIL: baseline broken: an ordinary apikey was not sent
89
+ //
90
+ // So the no-op is emitted only when the PROJECT says so:
91
+ // `config.auth.active: false`, an explicit per-SDK switch nobody sets by
92
+ // accident. A spec that is merely silent keeps the credential path it has
93
+ // always had.
94
+ function authSwitchedOn(model: any): boolean {
95
+ const auth = getModelPath(model, `main.${KIT}.config.auth`,
96
+ { only_active: false, required: false })
97
+ return !(null != auth && false === auth.active)
98
+ }
99
+
100
+
101
+ type AuthSpec = {
102
+ active: boolean
103
+ where: string
104
+ name: string
105
+ prefix: string
106
+ basic: boolean
107
+ }
108
+
109
+
110
+ function render(spec: AuthSpec): string {
111
+
112
+ // AUTH SWITCHED OFF BY THE PROJECT (see authSwitchedOn for why only an
113
+ // EXPLICIT switch counts). The SDK gets a prepare_auth that is honest
114
+ // about it rather than one that deletes a header nobody set. Nothing
115
+ // beyond sdk.h is included: this body calls neither snprintf nor strcmp.
116
+ if (!spec.active) {
117
+ return `// prepare_auth utility (mirrors utility/prepare_auth.rs).
118
+ //
119
+ // GENERATED, not templated - see PrepareAuth_c.
120
+ //
121
+ // This API declares no authentication, so there is no credential to place.
122
+ // The function stays in the pipeline because make_spec calls it
123
+ // unconditionally.
124
+
125
+ #include "sdk.h"
126
+
127
+ Spec* prepare_auth_util(Context* ctx, PNError** err) {
128
+ *err = NULL;
129
+ Spec* spec = ctx->spec;
130
+ if (!spec) {
131
+ *err = context_make_error(ctx, "auth_no_spec", "Expected context spec property to be defined.");
132
+ return NULL;
133
+ }
134
+
135
+ return spec;
136
+ }
137
+ `
138
+ }
139
+
140
+ // HTTP Basic is header-only by definition: the scheme is
141
+ // `Authorization: Basic base64(user:pass)`. It cannot be expressed as a
142
+ // query parameter or a cookie, so the branch - and the base64 encoder it
143
+ // needs, which the c core does not otherwise ship - is emitted only where
144
+ // it can mean something.
145
+ const withBasic = spec.basic && 'header' === spec.where
146
+
147
+ // snprintf is used by every placement except query, which writes the raw
148
+ // credential straight in.
149
+ const withStdio = 'query' !== spec.where
150
+
151
+ const bag = bagName(spec.where)
152
+
153
+ const head = `// prepare_auth utility (mirrors utility/prepare_auth.rs).
154
+ //
155
+ // GENERATED, not templated: where the credential goes - header, query or
156
+ // cookie, and under what name - is a fact about THIS API, and tm/ can only
157
+ // hold one answer. See PrepareAuth_c.
158
+
159
+ #include "sdk.h"
160
+
161
+ ${withStdio ? `#include <stdio.h>
162
+ ` : ''}#include <string.h>
163
+
164
+ #define CRED_NAME "${cstr(credLiteral(spec.where, spec.name))}"
165
+ ${'cookie' === spec.where ? `#define COOKIE_HEADER "cookie"
166
+ ` : ''}#define OPTION_APIKEY "apikey"
167
+ ${withBasic ? `#define OPTION_SECRET "secret"
168
+ ` : ''}#define NOT_FOUND "__NOTFOUND__"
169
+ ${withBasic ? `
170
+ // The c core ships no base64 (the vendored encoder under
171
+ // feature/secrets/plugins/ is gated behind that feature and is not linked
172
+ // into a plain SDK), so the one placement that needs it carries its own.
173
+ static const char B64_ALPHABET[] =
174
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
175
+
176
+ static void b64_encode(const char* in, char* out, size_t outcap) {
177
+ size_t n = strlen(in);
178
+ size_t o = 0;
179
+ for (size_t i = 0; i < n; i += 3) {
180
+ unsigned int v = (unsigned char)in[i] << 16;
181
+ if (i + 1 < n) v |= (unsigned int)(unsigned char)in[i + 1] << 8;
182
+ if (i + 2 < n) v |= (unsigned int)(unsigned char)in[i + 2];
183
+ if (o + 5 > outcap) break;
184
+ out[o++] = B64_ALPHABET[(v >> 18) & 0x3f];
185
+ out[o++] = B64_ALPHABET[(v >> 12) & 0x3f];
186
+ out[o++] = (i + 1 < n) ? B64_ALPHABET[(v >> 6) & 0x3f] : '=';
187
+ out[o++] = (i + 2 < n) ? B64_ALPHABET[v & 0x3f] : '=';
188
+ }
189
+ out[o] = '\\0';
190
+ }
191
+ ` : ''}
192
+ Spec* prepare_auth_util(Context* ctx, PNError** err) {
193
+ *err = NULL;
194
+ Spec* spec = ctx->spec;
195
+ if (!spec) {
196
+ *err = context_make_error(ctx, "auth_no_spec", "Expected context spec property to be defined.");
197
+ return NULL;
198
+ }
199
+
200
+ voxgig_value* ${bag} = spec->${bag};
201
+ voxgig_value* options = ctx->client ? sdk_options_map(ctx->client) : ctx->options;
202
+
203
+ voxgig_value* auth = getp(options, "auth");
204
+ if (v_is_noval(auth) || v_is_null(auth)) {
205
+ ${clear(spec.where, 4)}
206
+ return spec;
207
+ }
208
+
209
+ voxgig_value* akey_key = voxgig_new_string(OPTION_APIKEY);
210
+ voxgig_value* nf = voxgig_new_string(NOT_FOUND);
211
+ voxgig_value* apikey = voxgig_getprop(options, akey_key, nf);
212
+ voxgig_release(akey_key);
213
+ voxgig_release(nf);
214
+
215
+ bool skip;
216
+ if (v_is_noval(apikey) || v_is_null(apikey)) {
217
+ skip = true;
218
+ } else if (voxgig_is_string(apikey)) {
219
+ const char* s = voxgig_as_string(apikey);
220
+ skip = (strcmp(s, NOT_FOUND) == 0 || s[0] == '\\0');
221
+ } else {
222
+ skip = false;
223
+ }
224
+ `
225
+
226
+ const basicBlock = !withBasic ? '' : `
227
+ // True HTTP Basic Auth needs TWO credentials, base64-joined - a single
228
+ // token in the header (the branch below) can never authenticate against
229
+ // an API that actually checks \`Authorization: Basic base64(user:pass)\`.
230
+ bool want_basic = false;
231
+ get_bool(auth, "basic", &want_basic);
232
+ if (want_basic) {
233
+ voxgig_value* sec_key = voxgig_new_string(OPTION_SECRET);
234
+ voxgig_value* snf = voxgig_new_string(NOT_FOUND);
235
+ voxgig_value* secret = voxgig_getprop(options, sec_key, snf);
236
+ voxgig_release(sec_key);
237
+ voxgig_release(snf);
238
+
239
+ bool no_secret;
240
+ if (v_is_noval(secret) || v_is_null(secret)) {
241
+ no_secret = true;
242
+ } else if (voxgig_is_string(secret)) {
243
+ const char* s = voxgig_as_string(secret);
244
+ no_secret = (strcmp(s, NOT_FOUND) == 0 || s[0] == '\\0');
245
+ } else {
246
+ no_secret = false;
247
+ }
248
+
249
+ if (skip || no_secret) {
250
+ ${clear(spec.where, 6)}
251
+ } else {
252
+ voxgig_value* prefix_v = getpath2(options, "auth", "prefix");
253
+ const char* auth_prefix = voxgig_is_string(prefix_v) ? voxgig_as_string(prefix_v) : "";
254
+ char pair[1024];
255
+ char b64[1400];
256
+ snprintf(pair, sizeof(pair), "%s:%s",
257
+ voxgig_is_string(apikey) ? voxgig_as_string(apikey) : "",
258
+ voxgig_is_string(secret) ? voxgig_as_string(secret) : "");
259
+ b64_encode(pair, b64, sizeof(b64));
260
+ if (auth_prefix[0] == '\\0') {
261
+ setp(headers, CRED_NAME, v_str(b64));
262
+ } else {
263
+ char buf[1536];
264
+ snprintf(buf, sizeof(buf), "%s %s", auth_prefix, b64);
265
+ setp(headers, CRED_NAME, v_str(buf));
266
+ }
267
+ }
268
+
269
+ return spec;
270
+ }
271
+ `
272
+
273
+ return head + basicBlock + `
274
+ if (skip) {
275
+ ${clear(spec.where, 4)}
276
+ } else {
277
+ ${place(spec.where)}
278
+ }
279
+
280
+ return spec;
281
+ }
282
+ `
283
+ }
284
+
285
+
286
+ // The credential's key, as it goes into the bag.
287
+ //
288
+ // A HEADER name is lowercased. HTTP header names are case-insensitive
289
+ // (RFC 9110 5.1), and this SDK's own header map is keyed in lowercase
290
+ // throughout - `content-type` in make_spec.c, and the `authorization` that
291
+ // the shipped tests/pipeline_test.c asserts on - while the template this
292
+ // replaces said `"authorization"`. Emitting the resolver's title-cased
293
+ // default here would have left every header SDK's own suite failing on a
294
+ // purely cosmetic difference. (PrepareAuth_go reaches the same conclusion
295
+ // for the same reason.)
296
+ //
297
+ // A QUERY parameter and a COOKIE name are case-SENSITIVE, so those go in
298
+ // verbatim: `?token=` is not `?Token=`.
299
+ function credLiteral(where: string, name: string): string {
300
+ return 'header' === where ? String(name).toLowerCase() : String(name)
301
+ }
302
+
303
+
304
+ // The bag the credential lands in, per placement. It is both the local
305
+ // variable name and the Spec field, which in c are spelled the same
306
+ // (spec->headers / spec->query). Cookies ride the header bag because a
307
+ // cookie IS a header.
308
+ function bagName(where: string): string {
309
+ return 'query' === where ? 'query' : 'headers'
310
+ }
311
+
312
+
313
+ // Drop any stale credential. voxgig_delprop takes a voxgig_value* key, so
314
+ // the key is built and released around the call - the template's idiom,
315
+ // kept verbatim.
316
+ function clear(where: string, indent: number): string {
317
+ const pad = ' '.repeat(indent)
318
+ return `${pad}voxgig_value* k = voxgig_new_string(CRED_NAME);
319
+ ${pad}voxgig_delprop(${bagName(where)}, k);
320
+ ${pad}voxgig_release(k);`
321
+ }
322
+
323
+
324
+ function place(where: string): string {
325
+ if ('query' === where) {
326
+ // NO PREFIX IN A QUERY STRING. `?token=Bearer%20abc` is not a thing any
327
+ // API reads; the prefix is a header convention and is dropped here
328
+ // deliberately rather than silently concatenated.
329
+ return ` const char* apikey_val = voxgig_is_string(apikey) ? voxgig_as_string(apikey) : "";
330
+ setp(query, CRED_NAME, v_str(apikey_val));`
331
+ }
332
+
333
+ if ('cookie' === where) {
334
+ // Append, never replace: the cookie header may already carry pairs this
335
+ // SDK did not set, and clobbering it would drop them. No prefix either -
336
+ // a cookie is `name=value`, not `name=Bearer value`.
337
+ return ` const char* apikey_val = voxgig_is_string(apikey) ? voxgig_as_string(apikey) : "";
338
+ const char* existing = get_str(headers, COOKIE_HEADER);
339
+ char buf[2048];
340
+ if (existing && existing[0] != '\\0') {
341
+ snprintf(buf, sizeof(buf), "%s; %s=%s", existing, CRED_NAME, apikey_val);
342
+ } else {
343
+ snprintf(buf, sizeof(buf), "%s=%s", CRED_NAME, apikey_val);
344
+ }
345
+ setp(headers, COOKIE_HEADER, v_str(buf));`
346
+ }
347
+
348
+ // The template's header body, unchanged.
349
+ return ` voxgig_value* prefix_v = getpath2(options, "auth", "prefix");
350
+ const char* auth_prefix = voxgig_is_string(prefix_v) ? voxgig_as_string(prefix_v) : "";
351
+ const char* apikey_val = voxgig_is_string(apikey) ? voxgig_as_string(apikey) : "";
352
+ // A raw credential (empty prefix, e.g. an apiKey scheme) must go in
353
+ // as-is; only a non-empty prefix (Bearer/Basic/OAuth) is space-joined.
354
+ if (auth_prefix[0] == '\\0') {
355
+ setp(headers, CRED_NAME, v_str(apikey_val));
356
+ } else {
357
+ char buf[1024];
358
+ snprintf(buf, sizeof(buf), "%s %s", auth_prefix, apikey_val);
359
+ setp(headers, CRED_NAME, v_str(buf));
360
+ }`
361
+ }
362
+
363
+
364
+ function cstr(s: string): string {
365
+ return String(s).replace(/\\/g, '\\\\').replace(/"/g, '\\"')
366
+ }
367
+
368
+
369
+ export {
370
+ PrepareAuth
371
+ }