diff --git a/.devcontainer/README.md b/.devcontainer/README.md
index cdef18c..24de35b 100644
--- a/.devcontainer/README.md
+++ b/.devcontainer/README.md
@@ -1,4 +1,9 @@
+
+

+
+
+
> **Remember to shutdown a GitHub Codespace when it is not in use!**
# Dev Containers Quick Start
diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index cf467a0..4ce1f1f 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -3,38 +3,40 @@ id: bb9fbe39-0cc0-477c-83ed-4287efb73030
management:
docChecksum: cbdbb55b781de735d194bd761a125aeb
docVersion: 1.0.0
- speakeasyVersion: 1.680.3
- generationVersion: 2.788.5
- releaseVersion: 0.1.3
- configChecksum: 303b383000c4e13c9eb1b790381dffa0
+ speakeasyVersion: 1.706.1
+ generationVersion: 2.809.2
+ releaseVersion: 0.2.0
+ configChecksum: e20363149d04f3c48acba962099bafe1
+ repoURL: https://github.com/WaveShieldDev/waveshield-sdk-typescript.git
+ installationURL: https://github.com/WaveShieldDev/waveshield-sdk-typescript
published: true
persistentEdits:
- generation_id: dafb8776-49d1-498f-9203-bd545e3dcb54
- pristine_commit_hash: 5ee899f3270e988c66dd54438ab32f6af9262f00
- pristine_tree_hash: 322c6ebfe48cb9d159f5dabacfe558e22c45a235
+ generation_id: 952b50ef-578a-43a6-a42b-9029cf61df12
+ pristine_commit_hash: ed31eaf1ddb6cb75277e81d3fb29cac57c56c5ec
+ pristine_tree_hash: 09031ee22dba8225244f33ec53eb6249216e6d59
features:
typescript:
additionalDependencies: 0.1.0
- constsAndDefaults: 0.1.12
- core: 3.26.16
+ constsAndDefaults: 0.1.13
+ core: 3.26.27
defaultEnabledRetries: 0.1.0
devContainers: 2.90.1
enumUnions: 0.1.0
envVarSecurityUsage: 0.1.2
- globalSecurity: 2.82.14
+ globalSecurity: 2.82.15
globalSecurityCallbacks: 0.1.0
globalServerURLs: 2.83.0
methodArguments: 0.1.2
nameOverrides: 2.81.2
nullables: 0.1.1
- responseFormat: 0.2.3
+ responseFormat: 0.3.0
retries: 2.83.0
sdkHooks: 0.4.0
trackedFiles:
.devcontainer/README.md:
id: b170c0f184ac
- last_write_checksum: sha1:b6564d2a7c8ae764fff6d1b4666dcd787210a000
- pristine_git_object: cdef18c30e383534a868742e1b9148f2670606f9
+ last_write_checksum: sha1:667cae9c93d407d906714e48ec0febb8d59b2190
+ pristine_git_object: 24de35b7489d0890a9545cb5c0202635e13fd74b
.devcontainer/devcontainer.json:
id: b34062a34eb1
last_write_checksum: sha1:d0b15193202c961e7d1875864ddb15f9d17c84dd
@@ -621,12 +623,12 @@ trackedFiles:
pristine_git_object: 68d3ec3935f19be0925166a2932fa2eea594e8aa
jsr.json:
id: 7f6ab7767282
- last_write_checksum: sha1:7ba0bcca5e9b667f90d53e0e1011e2983ba9f142
- pristine_git_object: 0be6c8d07ed9db40567193761408517413b15688
+ last_write_checksum: sha1:f41299ac2863e4d06205a75a4399f75891bb6ef5
+ pristine_git_object: 8275cea99043700fae1eca7e6c18cc9eeaa05c33
package.json:
id: 7030d0b2f71b
- last_write_checksum: sha1:89848460ca21382d1f9ac907b8526873dd31a30e
- pristine_git_object: a1f8779fcd95fe7a9f3d309a5d7491a2ccb60a08
+ last_write_checksum: sha1:e9edbbcaa29a967edc7534233994a505c2336cc5
+ pristine_git_object: 991a64911e9e12dfde1641a67fc891a5bbf418b7
src/core.ts:
id: f431fdbcd144
last_write_checksum: sha1:c9afa55f684e53734a7a103bcd1c4f2ece9ec0b7
@@ -785,8 +787,8 @@ trackedFiles:
pristine_git_object: 6078490b881a9600d20ca51000a2ab754a3e1bc6
src/hooks/hooks.ts:
id: a2463fc6f69b
- last_write_checksum: sha1:7dd975bbcc46a32dd394f86a4652b74ecc70d874
- pristine_git_object: 7ed9e0445ac189e0f90687c6ef602212702bde90
+ last_write_checksum: sha1:3a90d88b4c6c07247db8e5f6441a79538232394e
+ pristine_git_object: 94ad0a323123b34dc638717c5d67a3c23c54d5c6
src/hooks/index.ts:
id: 5f2dab62b520
last_write_checksum: sha1:1a11c073a6cd792932218e1d4ed36b8567bad8ef
@@ -805,8 +807,8 @@ trackedFiles:
pristine_git_object: 44be0eae8246521b230e8e711a88eff738fc015d
src/lib/config.ts:
id: 320761608fb3
- last_write_checksum: sha1:c02d3f05d61610ba4bfc4726fe6f293ec30e0cac
- pristine_git_object: 2d455d61317a9b2ca66b72d52b9be35c5e237faa
+ last_write_checksum: sha1:55a1ae8a1ca480f621268e2a3730c44e86fb993d
+ pristine_git_object: 606796077893ce818b727ac1df87e251b2158c38
src/lib/dlv.ts:
id: b1988214835a
last_write_checksum: sha1:1dd3e3fbb4550c4bf31f5ef997faff355d6f3250
@@ -853,8 +855,8 @@ trackedFiles:
pristine_git_object: 61d7649b3d804f5c3ce4b2e3f7cc7ab8d087c4e1
src/lib/sdks.ts:
id: 8a6d91f1218d
- last_write_checksum: sha1:9716dfab1669821b30b725196422faaefb53bb49
- pristine_git_object: 698f95540a5cc9ffe4b2f96a0a582cc41c33c690
+ last_write_checksum: sha1:0489fcda80da9efa9394787210effa7609ac298e
+ pristine_git_object: 390cfdeb01c1acc45660563c88af93068998722d
src/lib/security.ts:
id: 0502afa7922e
last_write_checksum: sha1:c6f389b8b83c310eb72bc1341baa1d3ee391b1b9
@@ -1149,8 +1151,8 @@ trackedFiles:
pristine_git_object: c79b3f53a3dd922aa2ace5a4191c8652cf9a8e89
src/types/smartUnion.ts:
id: b65a1bd4c0e9
- last_write_checksum: sha1:d6c9754e1231a36cffe46c384849be413d5e2a72
- pristine_git_object: 266e39ba2e58c1b8eba39834612ca34c36e186a8
+ last_write_checksum: sha1:aa3829a12a514b6c9a8ae76aab95086d7ccbc30f
+ pristine_git_object: 1eabf9aa2e6dd5052f2a337279b6ba0452122958
src/types/streams.ts:
id: f99be9c4bf14
last_write_checksum: sha1:cc9ced2dd34a76c3a1bd7784ccda1cc3b37ab9a9
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 917b8da..34cbd5f 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -16,22 +16,24 @@ generation:
requestResponseComponentNamesFeb2024: true
securityFeb2025: true
sharedErrorComponentsApr2025: true
+ sharedNestedComponentsJan2026: false
auth:
- oAuth2ClientCredentialsEnabled: true
- oAuth2PasswordEnabled: true
+ oAuth2ClientCredentialsEnabled: false
+ oAuth2PasswordEnabled: false
hoistGlobalSecurity: true
inferSSEOverload: true
sdkHooksConfigAccess: true
schemas:
allOfMergeStrategy: shallowMerge
requestBodyFieldName: body
+ versioningStrategy: automatic
persistentEdits: {}
tests:
generateTests: false
generateNewTests: true
skipResponseBodyAssertions: false
typescript:
- version: 0.1.3
+ version: 0.2.0
acceptHeaderEnum: false
additionalDependencies:
dependencies: {}
@@ -51,6 +53,7 @@ typescript:
enumFormat: union
envVarPrefix: WAVESHIELD
exportZodModelNamespace: false
+ flatAdditionalProperties: false
flattenGlobalSecurity: true
flatteningOrder: parameters-first
formStringArrayEncodeMode: array
@@ -69,6 +72,7 @@ typescript:
inputModelSuffix: input
jsonpath: rfc9535
laxMode: lax
+ legacyFileNaming: true
maxMethodParams: 0
methodArguments: infer-optional-args
modelPropertyCasing: camel
@@ -77,6 +81,7 @@ typescript:
outputModelSuffix: output
packageName: waveshield
preApplyUnionDiscriminators: true
+ preserveModelFieldNames: false
responseFormat: flat
sseFlatResponse: false
templateVersion: v2
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 3044c96..f07b217 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -1,20 +1,21 @@
-speakeasyVersion: 1.680.3
+speakeasyVersion: 1.706.1
sources:
WaveShield API:
sourceNamespace: wave-shield-api
- sourceRevisionDigest: sha256:1a52ea5c2d3808d09db6786a0eef0b363d7007d02083551a4cd3fc1990868a19
+ sourceRevisionDigest: sha256:49e600cf6eafc2602bef1b4490724feae3a2bfd04d69a14260eb89ed1f7ea3b3
sourceBlobDigest: sha256:5e4220899ecf4ec9d9f3e80bb13d139c5b71386d0ab9c1d5b2b5b38b406ba572
tags:
- latest
+ - speakeasy-sdk-regen-speakeasy-sdk-regen-1766985461-1770172145
- 1.0.0
targets:
wave-shield:
source: WaveShield API
sourceNamespace: wave-shield-api
- sourceRevisionDigest: sha256:1a52ea5c2d3808d09db6786a0eef0b363d7007d02083551a4cd3fc1990868a19
+ sourceRevisionDigest: sha256:49e600cf6eafc2602bef1b4490724feae3a2bfd04d69a14260eb89ed1f7ea3b3
sourceBlobDigest: sha256:5e4220899ecf4ec9d9f3e80bb13d139c5b71386d0ab9c1d5b2b5b38b406ba572
codeSamplesNamespace: wave-shield-api-typescript-code-samples
- codeSamplesRevisionDigest: sha256:d4e9344a86ab5aa47969ea3cb05e66f910e8d0090d9ad1ab43a7012e0b94f489
+ codeSamplesRevisionDigest: sha256:0bc30aeef58881e42ad00d1f0ed7ac4ec78e1cc0b09c175bc72328e810474a39
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
diff --git a/RELEASES.md b/RELEASES.md
new file mode 100644
index 0000000..f11a24b
--- /dev/null
+++ b/RELEASES.md
@@ -0,0 +1,11 @@
+
+
+## 2026-02-06 02:28:27
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.706.1 (2.809.2) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [typescript v0.2.0] .
+### Releases
+- [NPM v0.2.0] https://www.npmjs.com/package/waveshield/v/0.2.0 - .
\ No newline at end of file
diff --git a/examples/package-lock.json b/examples/package-lock.json
index aed8f3d..6813d5f 100644
--- a/examples/package-lock.json
+++ b/examples/package-lock.json
@@ -18,13 +18,13 @@
},
"..": {
"name": "waveshield",
- "version": "0.1.3",
+ "version": "0.2.0",
"dependencies": {
"zod": "^3.25.65 || ^4.0.0"
},
"devDependencies": {
- "@eslint/js": "^9.19.0",
- "eslint": "^9.19.0",
+ "@eslint/js": "^9.26.0",
+ "eslint": "^9.26.0",
"globals": "^15.14.0",
"tshy": "^2.0.0",
"typescript": "~5.8.3",
diff --git a/jsr.json b/jsr.json
index 0be6c8d..8275cea 100644
--- a/jsr.json
+++ b/jsr.json
@@ -2,7 +2,7 @@
{
"name": "waveshield",
- "version": "0.1.3",
+ "version": "0.2.0",
"exports": {
".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts",
diff --git a/package-lock.json b/package-lock.json
index cca5c1d..131319e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,18 +1,18 @@
{
"name": "waveshield",
- "version": "0.1.3",
+ "version": "0.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "waveshield",
- "version": "0.1.3",
+ "version": "0.2.0",
"dependencies": {
"zod": "^3.25.65 || ^4.0.0"
},
"devDependencies": {
- "@eslint/js": "^9.19.0",
- "eslint": "^9.19.0",
+ "@eslint/js": "^9.26.0",
+ "eslint": "^9.26.0",
"globals": "^15.14.0",
"tshy": "^2.0.0",
"typescript": "~5.8.3",
diff --git a/package.json b/package.json
index a1f8779..991a649 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "waveshield",
- "version": "0.1.3",
+ "version": "0.2.0",
"author": "Speakeasy",
"type": "module",
"tshy": {
@@ -19,6 +19,10 @@
}
},
"sideEffects": false,
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/WaveShieldDev/waveshield-sdk-typescript.git"
+ },
"scripts": {
"lint": "eslint --cache --max-warnings=0 src",
"build": "tshy",
@@ -26,8 +30,8 @@
},
"peerDependencies": {},
"devDependencies": {
- "@eslint/js": "^9.19.0",
- "eslint": "^9.19.0",
+ "@eslint/js": "^9.26.0",
+ "eslint": "^9.26.0",
"globals": "^15.14.0",
"tshy": "^2.0.0",
"typescript": "~5.8.3",
diff --git a/src/hooks/hooks.ts b/src/hooks/hooks.ts
index 7ed9e04..94ad0a3 100644
--- a/src/hooks/hooks.ts
+++ b/src/hooks/hooks.ts
@@ -18,8 +18,6 @@ import {
SDKInitHook,
} from "./types.js";
-import { initHooks } from "./registration.js";
-
export class SDKHooks implements Hooks {
sdkInitHooks: SDKInitHook[] = [];
beforeCreateRequestHooks: BeforeCreateRequestHook[] = [];
@@ -47,7 +45,6 @@ export class SDKHooks implements Hooks {
this.registerAfterErrorHook(hook);
}
}
- initHooks(this);
}
registerSDKInitHook(hook: SDKInitHook) {
diff --git a/src/lib/config.ts b/src/lib/config.ts
index 2d455d6..6067960 100644
--- a/src/lib/config.ts
+++ b/src/lib/config.ts
@@ -65,7 +65,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
export const SDK_METADATA = {
language: "typescript",
openapiDocVersion: "1.0.0",
- sdkVersion: "0.1.3",
- genVersion: "2.788.5",
- userAgent: "speakeasy-sdk/typescript 0.1.3 2.788.5 1.0.0 waveshield",
+ sdkVersion: "0.2.0",
+ genVersion: "2.809.2",
+ userAgent: "speakeasy-sdk/typescript 0.2.0 2.809.2 1.0.0 waveshield",
} as const;
diff --git a/src/lib/sdks.ts b/src/lib/sdks.ts
index 698f955..390cfde 100644
--- a/src/lib/sdks.ts
+++ b/src/lib/sdks.ts
@@ -307,9 +307,9 @@ export class ClientSDK {
}
}
-const jsonLikeContentTypeRE = /(application|text)\/.*?\+*json.*/;
+const jsonLikeContentTypeRE = /^(application|text)\/([^+]+\+)*json.*/;
const jsonlLikeContentTypeRE =
- /(application|text)\/(.*?\+*\bjsonl\b.*|.*?\+*\bx-ndjson\b.*)/;
+ /^(application|text)\/([^+]+\+)*(jsonl|x-ndjson)\b.*/;
async function logRequest(logger: Logger | undefined, req: Request) {
if (!logger) {
return;
diff --git a/src/types/smartUnion.ts b/src/types/smartUnion.ts
index 266e39b..1eabf9a 100644
--- a/src/types/smartUnion.ts
+++ b/src/types/smartUnion.ts
@@ -88,6 +88,14 @@ export function smartUnion<
}
function better(a: Candidate, b: Candidate): Candidate {
+ // First prefer exact matches over inexact ones
+ const aIsExact = a.inexactCount === 0;
+ const bIsExact = b.inexactCount === 0;
+ if (aIsExact !== bIsExact) {
+ return aIsExact ? a : b;
+ }
+
+ // Then compare field counts
const actualFieldCountA = a.fieldCount - a.zeroDefaultCount;
const actualFieldCountB = b.fieldCount - b.zeroDefaultCount;
if (actualFieldCountA !== actualFieldCountB) {