@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.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/cmp/AgentGuideContent.js +1 -1
- package/dist/sdkgen.d.ts +2 -2
- package/dist/sdkgen.js +6 -3
- package/dist/sdkgen.js.map +1 -1
- package/dist/testkit.js +2 -2
- package/dist/testkit.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.d.ts +4 -1
- package/dist/utility.js +60 -0
- package/dist/utility.js.map +1 -1
- package/model/sdkgen.aon +10 -0
- package/package.json +1 -1
- package/project/.sdk/model/feature/feature-index.aon +20 -20
- package/project/.sdk/src/cmp/c/Config_c.ts +15 -0
- package/project/.sdk/src/cmp/c/Main_c.ts +15 -0
- package/project/.sdk/src/cmp/c/PrepareAuth_c.ts +371 -0
- package/project/.sdk/src/cmp/clojure/Config_clojure.ts +47 -1
- package/project/.sdk/src/cmp/clojure/Main_clojure.ts +11 -1
- package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +374 -0
- package/project/.sdk/src/cmp/cpp/Config_cpp.ts +40 -0
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +17 -0
- package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +441 -0
- package/project/.sdk/src/cmp/csharp/Config_csharp.ts +42 -1
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +18 -0
- package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +392 -0
- package/project/.sdk/src/cmp/elixir/Config_elixir.ts +36 -1
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +15 -0
- package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +418 -0
- package/project/.sdk/src/cmp/go/Config_go.ts +12 -1
- package/project/.sdk/src/cmp/go/Main_go.ts +14 -0
- package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +322 -0
- package/project/.sdk/src/cmp/java/Config_java.ts +20 -1
- package/project/.sdk/src/cmp/java/Main_java.ts +14 -0
- package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +298 -0
- package/project/.sdk/src/cmp/js/Config_js.ts +12 -1
- package/project/.sdk/src/cmp/js/Main_js.ts +6 -0
- package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +244 -0
- package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +23 -1
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +20 -0
- package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +440 -0
- package/project/.sdk/src/cmp/lua/Config_lua.ts +15 -1
- package/project/.sdk/src/cmp/lua/Main_lua.ts +11 -0
- package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +364 -0
- package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +31 -1
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +19 -0
- package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +454 -0
- package/project/.sdk/src/cmp/perl/Config_perl.ts +30 -0
- package/project/.sdk/src/cmp/perl/Main_perl.ts +14 -0
- package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +387 -0
- package/project/.sdk/src/cmp/php/Config_php.ts +12 -1
- package/project/.sdk/src/cmp/php/Main_php.ts +7 -0
- package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +325 -0
- package/project/.sdk/src/cmp/py/Config_py.ts +12 -1
- package/project/.sdk/src/cmp/py/Main_py.ts +12 -0
- package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +389 -0
- package/project/.sdk/src/cmp/rb/Config_rb.ts +18 -1
- package/project/.sdk/src/cmp/rb/Main_rb.ts +10 -0
- package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +305 -0
- package/project/.sdk/src/cmp/rust/Config_rust.ts +41 -1
- package/project/.sdk/src/cmp/rust/Main_rust.ts +16 -0
- package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +410 -0
- package/project/.sdk/src/cmp/scala/Config_scala.ts +21 -1
- package/project/.sdk/src/cmp/scala/Main_scala.ts +14 -0
- package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +415 -0
- package/project/.sdk/src/cmp/swift/Config_swift.ts +37 -1
- package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
- package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +439 -0
- package/project/.sdk/src/cmp/ts/Config_ts.ts +12 -1
- package/project/.sdk/src/cmp/ts/Main_ts.ts +5 -0
- package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +237 -0
- package/project/.sdk/src/cmp/zig/Config_zig.ts +33 -1
- package/project/.sdk/src/cmp/zig/Main_zig.ts +16 -0
- package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +545 -0
- package/project/.sdk/tm/clojure/src/sdk/core.clj +31 -20
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +36 -40
- package/project/.sdk/tm/csharp/utility/MakeOptions.cs +11 -0
- package/project/.sdk/tm/elixir/lib/projectname/utility.ex +19 -32
- package/project/.sdk/tm/java/utility/MakeOptions.java +13 -1
- package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +14 -1
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +13 -46
- package/project/.sdk/tm/ocaml/Makefile +11 -1
- package/project/.sdk/tm/ocaml/sdk_helpers.ml +15 -0
- package/project/.sdk/tm/ocaml/sdk_runtime.ml +31 -25
- package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +125 -12
- package/project/.sdk/tm/ocaml/test/t_pipeline.ml +64 -6
- package/project/.sdk/tm/perl/utility/make_options.pm +10 -1
- package/project/.sdk/tm/php/utility/MakeOptions.php +8 -1
- package/project/.sdk/tm/rust/utility/make_options.rs +13 -1
- package/project/.sdk/tm/scala/utility/Make.scala +14 -1
- package/project/.sdk/tm/scala/utility/Prepare.scala +16 -40
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +30 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +21 -39
- package/project/.sdk/tm/zig/core/utility.zig +37 -45
- package/project/.sdk/tm/zig/test/pipeline_test.zig +34 -0
- package/project/sdkgen-package.json +1 -1
- package/src/cmp/AgentGuideContent.ts +1 -1
- package/src/sdkgen.ts +4 -1
- package/src/testkit.ts +2 -2
- package/src/utility.ts +75 -0
- package/project/.sdk/tm/c/utility/prepare_auth.c +0 -65
- package/project/.sdk/tm/csharp/utility/PrepareAuth.cs +0 -54
- package/project/.sdk/tm/go/utility/prepare_auth.go +0 -59
- package/project/.sdk/tm/java/utility/PrepareAuth.java +0 -66
- package/project/.sdk/tm/js/src/utility/PrepareAuthUtility.js +0 -49
- package/project/.sdk/tm/lua/utility/prepare_auth.lua +0 -52
- package/project/.sdk/tm/perl/utility/prepare_auth.pm +0 -56
- package/project/.sdk/tm/php/utility/PrepareAuth.php +0 -45
- package/project/.sdk/tm/py/pkg/utility/prepare_auth.py +0 -46
- package/project/.sdk/tm/rb/utility/prepare_auth.rb +0 -35
- package/project/.sdk/tm/rust/utility/prepare_auth.rs +0 -65
- 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:
|
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
|
@@ -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,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
|
+
}
|