@techspokes/typescript-wsdl-client 0.39.0 → 1.0.2
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/README.md +10 -8
- package/dist/app/generateApp.js +2 -2
- package/dist/cli.js +5 -6
- package/dist/compiler/schemaCompiler.d.ts +2 -2
- package/dist/compiler/shapeResolver.js +1 -1
- package/docs/api-reference.md +4 -4
- package/docs/cli-reference.md +18 -16
- package/docs/gateway-guide.md +5 -5
- package/docs/migration-playbook.md +18 -18
- package/docs/migration.md +35 -0
- package/docs/output-anatomy.md +2 -2
- package/docs/production.md +1 -1
- package/docs/releases/README.md +32 -0
- package/docs/releases/v0.40.0.md +45 -0
- package/docs/releases/v0.40.1.md +34 -0
- package/docs/releases/v1.0.0.md +42 -0
- package/docs/releases/v1.0.1.md +38 -0
- package/docs/releases/v1.0.2.md +51 -0
- package/docs/roadmap/README.md +9 -9
- package/docs/roadmap/v1.0-capability-conformance-framework.md +14 -12
- package/docs/roadmap/v1.0-contract-audit.md +3 -3
- package/docs/roadmap/v1.0-release-candidate-gates.md +10 -6
- package/docs/roadmap/v1.0-wsdl-coverage-matrix.md +12 -2
- package/docs/roadmap/v1.0-xs-anyattribute-wildcard-bag.md +49 -49
- package/docs/start-here.md +8 -8
- package/docs/testing.md +6 -6
- package/package.json +14 -7
|
@@ -4,7 +4,7 @@ Status: shipped in `0.36.0`.
|
|
|
4
4
|
|
|
5
5
|
## Agentic Worker Requirement
|
|
6
6
|
|
|
7
|
-
REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [
|
|
7
|
+
REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [x]`) syntax for tracking.
|
|
8
8
|
|
|
9
9
|
## Goal
|
|
10
10
|
|
|
@@ -85,7 +85,7 @@ Modify generated support docs through `npm run docs:support-matrix`, then manual
|
|
|
85
85
|
- Modify: `test/unit/compiler-wildcards.test.ts`
|
|
86
86
|
- Modify: `test/unit/mock-data.test.ts`
|
|
87
87
|
|
|
88
|
-
- [
|
|
88
|
+
- [x] Step 1: Add a compiler test for local extension wildcard metadata
|
|
89
89
|
|
|
90
90
|
Append this test inside the existing `describe("compiler: wildcard retention", () => { ... })` block in `test/unit/compiler-wildcards.test.ts`:
|
|
91
91
|
|
|
@@ -128,7 +128,7 @@ Append this test inside the existing `describe("compiler: wildcard retention", (
|
|
|
128
128
|
});
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
-
- [
|
|
131
|
+
- [x] Step 2: Add mock-data tests for wildcard bags
|
|
132
132
|
|
|
133
133
|
Add these tests after `it("generates attribute-only types (no elements)", ... )` in `test/unit/mock-data.test.ts`:
|
|
134
134
|
|
|
@@ -192,7 +192,7 @@ Add these tests after `it("generates attribute-only types (no elements)", ... )`
|
|
|
192
192
|
});
|
|
193
193
|
```
|
|
194
194
|
|
|
195
|
-
- [
|
|
195
|
+
- [x] Step 3: Run the focused tests and verify they fail
|
|
196
196
|
|
|
197
197
|
Run:
|
|
198
198
|
|
|
@@ -208,7 +208,7 @@ Expected result: the new compiler test fails because `localAttributeWildcards` i
|
|
|
208
208
|
|
|
209
209
|
- Create: `src/util/attributeWildcards.ts`
|
|
210
210
|
|
|
211
|
-
- [
|
|
211
|
+
- [x] Step 1: Create the helper module
|
|
212
212
|
|
|
213
213
|
Create `src/util/attributeWildcards.ts`:
|
|
214
214
|
|
|
@@ -240,7 +240,7 @@ export function wildcardAttributeBagSchema(): {type: "object"; additionalPropert
|
|
|
240
240
|
}
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
-
- [
|
|
243
|
+
- [x] Step 2: Run typecheck and verify the helper compiles
|
|
244
244
|
|
|
245
245
|
Run:
|
|
246
246
|
|
|
@@ -257,7 +257,7 @@ Expected result: the command still fails because Task 1 intentionally introduced
|
|
|
257
257
|
- Modify: `src/compiler/schemaCompiler.ts`
|
|
258
258
|
- Modify: `src/compiler/shapeResolver.ts`
|
|
259
259
|
|
|
260
|
-
- [
|
|
260
|
+
- [x] Step 1: Extend `CompiledType` with local wildcard metadata
|
|
261
261
|
|
|
262
262
|
In `src/compiler/schemaCompiler.ts`, add this documentation line after the `localElems` JSDoc line:
|
|
263
263
|
|
|
@@ -271,7 +271,7 @@ Add this property to the `CompiledType` type after `attributeWildcards?: Compile
|
|
|
271
271
|
localAttributeWildcards?: CompiledAttributeWildcard[];
|
|
272
272
|
```
|
|
273
273
|
|
|
274
|
-
- [
|
|
274
|
+
- [x] Step 2: Store local wildcard metadata on complex-content extensions
|
|
275
275
|
|
|
276
276
|
In the complex-content extension result object in `getOrCompileComplex`, replace:
|
|
277
277
|
|
|
@@ -286,7 +286,7 @@ with:
|
|
|
286
286
|
...(localAttributeWildcards.length > 0 ? {localAttributeWildcards} : {}),
|
|
287
287
|
```
|
|
288
288
|
|
|
289
|
-
- [
|
|
289
|
+
- [x] Step 3: Preserve local wildcard metadata in shape canonicalization
|
|
290
290
|
|
|
291
291
|
In `src/compiler/shapeResolver.ts`, find the canonicalized type object that already maps `attributeWildcards`. Add this property immediately after it:
|
|
292
292
|
|
|
@@ -299,7 +299,7 @@ In `src/compiler/shapeResolver.ts`, find the canonicalized type object that alre
|
|
|
299
299
|
|
|
300
300
|
If the surrounding function omits empty optional arrays for `wildcards` and `attributeWildcards`, use the same conditional style already present in that function. The final emitted catalog must not add `localAttributeWildcards` to types that do not have local wildcard declarations.
|
|
301
301
|
|
|
302
|
-
- [
|
|
302
|
+
- [x] Step 4: Run the compiler wildcard test
|
|
303
303
|
|
|
304
304
|
Run:
|
|
305
305
|
|
|
@@ -315,7 +315,7 @@ Expected result: the new `localAttributeWildcards` test passes. Existing wildcar
|
|
|
315
315
|
|
|
316
316
|
- Modify: `src/client/generateTypes.ts`
|
|
317
317
|
|
|
318
|
-
- [
|
|
318
|
+
- [x] Step 1: Import the shared helpers
|
|
319
319
|
|
|
320
320
|
Add this import near the existing imports in `src/client/generateTypes.ts`:
|
|
321
321
|
|
|
@@ -323,7 +323,7 @@ Add this import near the existing imports in `src/client/generateTypes.ts`:
|
|
|
323
323
|
import {hasAttributeWildcards, wildcardAttributeBagName} from "../util/attributeWildcards.js";
|
|
324
324
|
```
|
|
325
325
|
|
|
326
|
-
- [
|
|
326
|
+
- [x] Step 2: Add a bag-name constant inside `generateTypes`
|
|
327
327
|
|
|
328
328
|
After `const isChoiceUnionMode = compiled.options.choice === "union";`, add:
|
|
329
329
|
|
|
@@ -331,7 +331,7 @@ After `const isChoiceUnionMode = compiled.options.choice === "union";`, add:
|
|
|
331
331
|
const wildcardBagName = wildcardAttributeBagName(compiled.options);
|
|
332
332
|
```
|
|
333
333
|
|
|
334
|
-
- [
|
|
334
|
+
- [x] Step 3: Add an emitter for wildcard bags
|
|
335
335
|
|
|
336
336
|
After `emitAttributeProperty`, add:
|
|
337
337
|
|
|
@@ -347,7 +347,7 @@ After `emitAttributeProperty`, add:
|
|
|
347
347
|
};
|
|
348
348
|
```
|
|
349
349
|
|
|
350
|
-
- [
|
|
350
|
+
- [x] Step 4: Compute local wildcard bags for normal and choice-mode interfaces
|
|
351
351
|
|
|
352
352
|
After the `attrsToEmit` line, add:
|
|
353
353
|
|
|
@@ -357,7 +357,7 @@ After the `attrsToEmit` line, add:
|
|
|
357
357
|
: {attributeWildcards: t.attributeWildcards};
|
|
358
358
|
```
|
|
359
359
|
|
|
360
|
-
- [
|
|
360
|
+
- [x] Step 5: Emit the bag in choice union base interfaces
|
|
361
361
|
|
|
362
362
|
In the choice-union branch, after the loop that emits attributes:
|
|
363
363
|
|
|
@@ -375,7 +375,7 @@ add:
|
|
|
375
375
|
}
|
|
376
376
|
```
|
|
377
377
|
|
|
378
|
-
- [
|
|
378
|
+
- [x] Step 6: Emit the bag in normal interfaces
|
|
379
379
|
|
|
380
380
|
In the normal interface branch, after the loop that emits attributes:
|
|
381
381
|
|
|
@@ -393,7 +393,7 @@ add:
|
|
|
393
393
|
}
|
|
394
394
|
```
|
|
395
395
|
|
|
396
|
-
- [
|
|
396
|
+
- [x] Step 7: Run snapshot tests to see the intentional diff
|
|
397
397
|
|
|
398
398
|
Run:
|
|
399
399
|
|
|
@@ -409,7 +409,7 @@ Expected result: snapshots may fail only if the weather fixture contains `xs:any
|
|
|
409
409
|
|
|
410
410
|
- Modify: `src/openapi/generateSchemas.ts`
|
|
411
411
|
|
|
412
|
-
- [
|
|
412
|
+
- [x] Step 1: Import the shared helpers
|
|
413
413
|
|
|
414
414
|
Add this import near the existing imports:
|
|
415
415
|
|
|
@@ -417,7 +417,7 @@ Add this import near the existing imports:
|
|
|
417
417
|
import {hasAttributeWildcards, wildcardAttributeBagName, wildcardAttributeBagSchema} from "../util/attributeWildcards.js";
|
|
418
418
|
```
|
|
419
419
|
|
|
420
|
-
- [
|
|
420
|
+
- [x] Step 2: Add an `attributesKey` parameter to `buildComplexSchema`
|
|
421
421
|
|
|
422
422
|
Change the `buildComplexSchema` signature from:
|
|
423
423
|
|
|
@@ -446,7 +446,7 @@ function buildComplexSchema(
|
|
|
446
446
|
): any {
|
|
447
447
|
```
|
|
448
448
|
|
|
449
|
-
- [
|
|
449
|
+
- [x] Step 3: Add the bag property after known attributes
|
|
450
450
|
|
|
451
451
|
After the `for (const a of t.attrs) { ... }` loop, add:
|
|
452
452
|
|
|
@@ -456,7 +456,7 @@ After the `for (const a of t.attrs) { ... }` loop, add:
|
|
|
456
456
|
}
|
|
457
457
|
```
|
|
458
458
|
|
|
459
|
-
- [
|
|
459
|
+
- [x] Step 4: Pass the configured key from `generateSchemas`
|
|
460
460
|
|
|
461
461
|
In `generateSchemas`, add this constant after `const choiceUnionMode = ...` or near the other derived options:
|
|
462
462
|
|
|
@@ -471,7 +471,7 @@ Update the call to `buildComplexSchema` so the final argument list includes `att
|
|
|
471
471
|
attributesKey,
|
|
472
472
|
```
|
|
473
473
|
|
|
474
|
-
- [
|
|
474
|
+
- [x] Step 5: Run OpenAPI unit and conformance tests enough to observe failure movement
|
|
475
475
|
|
|
476
476
|
Run:
|
|
477
477
|
|
|
@@ -488,7 +488,7 @@ Expected result: conformance still fails until Task 7 updates the registry asser
|
|
|
488
488
|
- Modify: `src/test/mockData.ts`
|
|
489
489
|
- Modify: `test/unit/mock-data.test.ts`
|
|
490
490
|
|
|
491
|
-
- [
|
|
491
|
+
- [x] Step 1: Import helpers
|
|
492
492
|
|
|
493
493
|
Add this import to `src/test/mockData.ts`:
|
|
494
494
|
|
|
@@ -496,7 +496,7 @@ Add this import to `src/test/mockData.ts`:
|
|
|
496
496
|
import {hasAttributeWildcards, wildcardAttributeBagName} from "../util/attributeWildcards.js";
|
|
497
497
|
```
|
|
498
498
|
|
|
499
|
-
- [
|
|
499
|
+
- [x] Step 2: Extend mock catalog types
|
|
500
500
|
|
|
501
501
|
Change the `CatalogForMocks` `options` type from:
|
|
502
502
|
|
|
@@ -528,7 +528,7 @@ to:
|
|
|
528
528
|
attributeWildcards?: Array<{namespace?: string; processContents?: "lax" | "strict" | "skip"}>;
|
|
529
529
|
```
|
|
530
530
|
|
|
531
|
-
- [
|
|
531
|
+
- [x] Step 3: Keep wildcard-only types from returning early
|
|
532
532
|
|
|
533
533
|
After `const typeMeta = catalog.types?.find((t) => t.name === typeName);`, add:
|
|
534
534
|
|
|
@@ -544,7 +544,7 @@ Move the existing early return below that line and change it to:
|
|
|
544
544
|
}
|
|
545
545
|
```
|
|
546
546
|
|
|
547
|
-
- [
|
|
547
|
+
- [x] Step 4: Add deterministic wildcard bag data
|
|
548
548
|
|
|
549
549
|
Before `return result;`, add:
|
|
550
550
|
|
|
@@ -559,7 +559,7 @@ Before `return result;`, add:
|
|
|
559
559
|
}
|
|
560
560
|
```
|
|
561
561
|
|
|
562
|
-
- [
|
|
562
|
+
- [x] Step 5: Run mock-data tests
|
|
563
563
|
|
|
564
564
|
Run:
|
|
565
565
|
|
|
@@ -575,7 +575,7 @@ Expected result: all mock-data tests pass, including the new wildcard attribute
|
|
|
575
575
|
|
|
576
576
|
- Modify: `test/conformance/registry.ts`
|
|
577
577
|
|
|
578
|
-
- [
|
|
578
|
+
- [x] Step 1: Change row status and contract
|
|
579
579
|
|
|
580
580
|
In the `xs-anyattribute` row, replace:
|
|
581
581
|
|
|
@@ -597,7 +597,7 @@ Replace the current `publicContract` and `decisionReason` with:
|
|
|
597
597
|
decisionReason: "The compiler retains attribute wildcard metadata, and generated TypeScript, OpenAPI, gateway, generated-test, and app artifacts can represent wildcard attributes through the existing attribute-bag runtime path.",
|
|
598
598
|
```
|
|
599
599
|
|
|
600
|
-
- [
|
|
600
|
+
- [x] Step 2: Strengthen client expectations
|
|
601
601
|
|
|
602
602
|
Replace the `client` block for `xs-anyattribute` with:
|
|
603
603
|
|
|
@@ -610,7 +610,7 @@ Replace the `client` block for `xs-anyattribute` with:
|
|
|
610
610
|
},
|
|
611
611
|
```
|
|
612
612
|
|
|
613
|
-
- [
|
|
613
|
+
- [x] Step 3: Strengthen OpenAPI expectations
|
|
614
614
|
|
|
615
615
|
Replace the existing `openapi.assert` body with:
|
|
616
616
|
|
|
@@ -628,7 +628,7 @@ Replace the existing `openapi.assert` body with:
|
|
|
628
628
|
},
|
|
629
629
|
```
|
|
630
630
|
|
|
631
|
-
- [
|
|
631
|
+
- [x] Step 4: Exercise the bag through the generated gateway
|
|
632
632
|
|
|
633
633
|
Change the gateway request payload from:
|
|
634
634
|
|
|
@@ -663,7 +663,7 @@ Change the gateway schema assertion from rejecting `$attributes` to requiring it
|
|
|
663
663
|
},
|
|
664
664
|
```
|
|
665
665
|
|
|
666
|
-
- [
|
|
666
|
+
- [x] Step 5: Strengthen generated-test expectations
|
|
667
667
|
|
|
668
668
|
Replace the `generatedTests` block with:
|
|
669
669
|
|
|
@@ -677,7 +677,7 @@ Replace the `generatedTests` block with:
|
|
|
677
677
|
},
|
|
678
678
|
```
|
|
679
679
|
|
|
680
|
-
- [
|
|
680
|
+
- [x] Step 6: Run conformance and verify failure points
|
|
681
681
|
|
|
682
682
|
Run:
|
|
683
683
|
|
|
@@ -696,7 +696,7 @@ Expected result before Tasks 3 through 6 are complete: this fails on missing gen
|
|
|
696
696
|
- Modify: `docs/roadmap/v1.0-capability-conformance-framework.md`
|
|
697
697
|
- Modify: `CHANGELOG.md`
|
|
698
698
|
|
|
699
|
-
- [
|
|
699
|
+
- [x] Step 1: Regenerate the support matrix
|
|
700
700
|
|
|
701
701
|
Run:
|
|
702
702
|
|
|
@@ -706,7 +706,7 @@ npm run docs:support-matrix
|
|
|
706
706
|
|
|
707
707
|
Expected result: the generated matrix in `docs/supported-patterns.md` changes the `xs-anyattribute` status from `partial` to `supported` and uses the updated public contract.
|
|
708
708
|
|
|
709
|
-
- [
|
|
709
|
+
- [x] Step 2: Update the explanatory `xs:anyAttribute` section
|
|
710
710
|
|
|
711
711
|
In `docs/supported-patterns.md`, replace the `### xs:anyAttribute` paragraph with:
|
|
712
712
|
|
|
@@ -718,7 +718,7 @@ Attribute wildcards are retained as catalog metadata and emitted as an optional
|
|
|
718
718
|
Known XML attributes remain flattened as peer properties. Wildcard attributes stay inside the bag so unknown names do not collide with child elements or known attributes.
|
|
719
719
|
```
|
|
720
720
|
|
|
721
|
-
- [
|
|
721
|
+
- [x] Step 3: Move `xs:anyAttribute` from partial to supported in the full support list
|
|
722
722
|
|
|
723
723
|
In `docs/supported-patterns.md`, add this bullet under `## Fully Supported`:
|
|
724
724
|
|
|
@@ -738,7 +738,7 @@ Do not remove `xs:any` particle limitations unless a separate `xs:any` content i
|
|
|
738
738
|
- Full `xs:any` element serialization: arbitrary wildcard element content is not emitted as a typed contract
|
|
739
739
|
```
|
|
740
740
|
|
|
741
|
-
- [
|
|
741
|
+
- [x] Step 4: Update roadmap wording
|
|
742
742
|
|
|
743
743
|
In `docs/roadmap/v1.0-wsdl-coverage-matrix.md`, change the priority row for `xs:anyAttribute` from:
|
|
744
744
|
|
|
@@ -766,7 +766,7 @@ with:
|
|
|
766
766
|
For partial rows, prove the documented subset and avoid implying full support. External `PolicyReference` should not imply fetched or enforced external policy. The `xs-anyattribute` row is supported once generated TypeScript, OpenAPI, gateway, generated-test, and app evidence prove the configured wildcard attribute bag.
|
|
767
767
|
```
|
|
768
768
|
|
|
769
|
-
- [
|
|
769
|
+
- [x] Step 5: Update changelog
|
|
770
770
|
|
|
771
771
|
If the existing Unreleased roadmap bullet is still present, add this bullet under `## [Unreleased]` in `CHANGELOG.md`:
|
|
772
772
|
|
|
@@ -785,7 +785,7 @@ Do not remove the existing `docs(roadmap): align 1.0 readiness docs with the 0.3
|
|
|
785
785
|
- Test: `test/conformance/`
|
|
786
786
|
- Test: `test/snapshot/`
|
|
787
787
|
|
|
788
|
-
- [
|
|
788
|
+
- [x] Step 1: Run unit tests for changed internals
|
|
789
789
|
|
|
790
790
|
Run:
|
|
791
791
|
|
|
@@ -795,7 +795,7 @@ npx vitest run test/unit/compiler-wildcards.test.ts test/unit/mock-data.test.ts
|
|
|
795
795
|
|
|
796
796
|
Expected result: all tests pass.
|
|
797
797
|
|
|
798
|
-
- [
|
|
798
|
+
- [x] Step 2: Run conformance
|
|
799
799
|
|
|
800
800
|
Run:
|
|
801
801
|
|
|
@@ -805,7 +805,7 @@ npm run test:conformance
|
|
|
805
805
|
|
|
806
806
|
Expected result: all conformance tests pass, and `xs-anyattribute` is now a supported row.
|
|
807
807
|
|
|
808
|
-
- [
|
|
808
|
+
- [x] Step 3: Run snapshot tests
|
|
809
809
|
|
|
810
810
|
Run:
|
|
811
811
|
|
|
@@ -827,7 +827,7 @@ npm run test:snap
|
|
|
827
827
|
|
|
828
828
|
Expected result: snapshot tests pass after reviewing the diff.
|
|
829
829
|
|
|
830
|
-
- [
|
|
830
|
+
- [x] Step 4: Run docs validation
|
|
831
831
|
|
|
832
832
|
Run:
|
|
833
833
|
|
|
@@ -843,7 +843,7 @@ Expected result: Markdown links, TypeScript fenced snippets, and support matrix
|
|
|
843
843
|
|
|
844
844
|
- No source edits expected.
|
|
845
845
|
|
|
846
|
-
- [
|
|
846
|
+
- [x] Step 1: Run typecheck
|
|
847
847
|
|
|
848
848
|
Run:
|
|
849
849
|
|
|
@@ -853,7 +853,7 @@ npm run typecheck
|
|
|
853
853
|
|
|
854
854
|
Expected result: TypeScript reports no errors.
|
|
855
855
|
|
|
856
|
-
- [
|
|
856
|
+
- [x] Step 2: Run the required smoke pipeline
|
|
857
857
|
|
|
858
858
|
Run:
|
|
859
859
|
|
|
@@ -863,7 +863,7 @@ npm run smoke:pipeline
|
|
|
863
863
|
|
|
864
864
|
Expected result: the command regenerates disposable output under `tmp/smoke/`, generates client, OpenAPI, gateway, and app artifacts, and `tsc -p tsconfig.smoke.json` passes.
|
|
865
865
|
|
|
866
|
-
- [
|
|
866
|
+
- [x] Step 3: Run the full test suite
|
|
867
867
|
|
|
868
868
|
Run:
|
|
869
869
|
|
|
@@ -873,7 +873,7 @@ npm test
|
|
|
873
873
|
|
|
874
874
|
Expected result: all Vitest tests pass.
|
|
875
875
|
|
|
876
|
-
- [
|
|
876
|
+
- [x] Step 4: Run full CI before release-candidate work
|
|
877
877
|
|
|
878
878
|
Run:
|
|
879
879
|
|
|
@@ -889,7 +889,7 @@ Expected result: build, typecheck, skill validation, package validation, docs va
|
|
|
889
889
|
|
|
890
890
|
- Review: all modified files from Tasks 1 through 10.
|
|
891
891
|
|
|
892
|
-
- [
|
|
892
|
+
- [x] Step 1: Inspect changed files
|
|
893
893
|
|
|
894
894
|
Run:
|
|
895
895
|
|
|
@@ -900,7 +900,7 @@ git diff --stat
|
|
|
900
900
|
|
|
901
901
|
Expected result: only implementation, test, docs, changelog, and possible snapshot files are modified.
|
|
902
902
|
|
|
903
|
-
- [
|
|
903
|
+
- [x] Step 2: Review semantic diff
|
|
904
904
|
|
|
905
905
|
Run:
|
|
906
906
|
|
|
@@ -910,7 +910,7 @@ git diff
|
|
|
910
910
|
|
|
911
911
|
Expected result: the diff shows `xs:anyAttribute` moving from metadata-only partial support to supported wildcard-bag output. It must not include unrelated formatting churn or generated output under `tmp/`.
|
|
912
912
|
|
|
913
|
-
- [
|
|
913
|
+
- [x] Step 3: Commit the implementation if requested by the maintainer
|
|
914
914
|
|
|
915
915
|
Run:
|
|
916
916
|
|
package/docs/start-here.md
CHANGED
|
@@ -24,7 +24,7 @@ Run the `client` command. This generates TypeScript interfaces for all WSDL type
|
|
|
24
24
|
```bash
|
|
25
25
|
npx wsdl-tsc client \
|
|
26
26
|
--wsdl-source your-service.wsdl \
|
|
27
|
-
--client-dir
|
|
27
|
+
--client-dir ./.generated/client
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
You get `types.ts`, `client.ts`, `operations.ts`, and `utils.ts`. Import the client, call typed methods, and let TypeScript catch contract mismatches at compile time.
|
|
@@ -38,7 +38,7 @@ Run the `openapi` command. This generates an OpenAPI 3.1 specification with sche
|
|
|
38
38
|
```bash
|
|
39
39
|
npx wsdl-tsc openapi \
|
|
40
40
|
--wsdl-source your-service.wsdl \
|
|
41
|
-
--openapi-file
|
|
41
|
+
--openapi-file ./.generated/openapi.json
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
The spec includes paths for each SOAP operation, request/response schemas, and descriptions propagated from WSDL documentation annotations.
|
|
@@ -52,9 +52,9 @@ Run the `pipeline` command with `--init-app`. This generates the typed client, O
|
|
|
52
52
|
```bash
|
|
53
53
|
npx wsdl-tsc pipeline \
|
|
54
54
|
--wsdl-source your-service.wsdl \
|
|
55
|
-
--client-dir
|
|
56
|
-
--openapi-file
|
|
57
|
-
--gateway-dir
|
|
55
|
+
--client-dir ./.generated/client \
|
|
56
|
+
--openapi-file ./.generated/openapi.json \
|
|
57
|
+
--gateway-dir ./.generated/gateway \
|
|
58
58
|
--gateway-service-name my-service \
|
|
59
59
|
--gateway-version-prefix v1 \
|
|
60
60
|
--init-app
|
|
@@ -71,9 +71,9 @@ Some SOAP services return payloads that are too large or too slow to buffer in m
|
|
|
71
71
|
```bash
|
|
72
72
|
npx wsdl-tsc pipeline \
|
|
73
73
|
--wsdl-source your-service.wsdl \
|
|
74
|
-
--client-dir
|
|
75
|
-
--openapi-file
|
|
76
|
-
--gateway-dir
|
|
74
|
+
--client-dir ./.generated/client \
|
|
75
|
+
--openapi-file ./.generated/openapi.json \
|
|
76
|
+
--gateway-dir ./.generated/gateway \
|
|
77
77
|
--gateway-service-name my-service \
|
|
78
78
|
--gateway-version-prefix v1 \
|
|
79
79
|
--stream-config ./stream.config.json
|
package/docs/testing.md
CHANGED
|
@@ -45,7 +45,7 @@ Repository test and release automation keeps disposable output classified under
|
|
|
45
45
|
- `tmp/conformance/`: conformance mini-projects that need repository-local module resolution
|
|
46
46
|
- `tmp/test-generation/`: generated-test integration spikes
|
|
47
47
|
|
|
48
|
-
Keep new repository-owned temporary writers under the closest existing subfolder. Public CLI examples
|
|
48
|
+
Keep new repository-owned temporary writers under the closest existing subfolder. Public CLI examples use the git-ignored `.generated/` convention instead of repository `tmp/` paths.
|
|
49
49
|
|
|
50
50
|
## Unit Tests
|
|
51
51
|
|
|
@@ -221,12 +221,12 @@ The `--test-dir` flag generates a complete, runnable Vitest test suite that vali
|
|
|
221
221
|
```bash
|
|
222
222
|
npx wsdl-tsc pipeline \
|
|
223
223
|
--wsdl-source service.wsdl \
|
|
224
|
-
--client-dir
|
|
225
|
-
--openapi-file
|
|
226
|
-
--gateway-dir
|
|
224
|
+
--client-dir ./.generated/client \
|
|
225
|
+
--openapi-file ./.generated/openapi.json \
|
|
226
|
+
--gateway-dir ./.generated/gateway \
|
|
227
227
|
--gateway-service-name myservice \
|
|
228
228
|
--gateway-version-prefix v1 \
|
|
229
|
-
--test-dir
|
|
229
|
+
--test-dir ./.generated/tests
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
### Generated Structure
|
|
@@ -251,7 +251,7 @@ npx wsdl-tsc pipeline \
|
|
|
251
251
|
### Running Generated Tests
|
|
252
252
|
|
|
253
253
|
```bash
|
|
254
|
-
npx vitest run --config
|
|
254
|
+
npx vitest run --config ./.generated/tests/vitest.config.ts
|
|
255
255
|
```
|
|
256
256
|
|
|
257
257
|
### Skip-if-Exists Behavior
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@techspokes/typescript-wsdl-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Turn legacy WSDL/SOAP services into typed TypeScript clients, OpenAPI 3.1 specs, and production-ready Fastify REST gateways. Built for enterprise SOAP modernization.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wsdl",
|
|
@@ -71,10 +71,17 @@
|
|
|
71
71
|
"test:snap": "vitest run test/snapshot",
|
|
72
72
|
"test:integration": "vitest run test/integration",
|
|
73
73
|
"test:github": "vitest run test/unit test/snapshot test/integration",
|
|
74
|
-
"test:conformance": "vitest run test/conformance",
|
|
74
|
+
"test:conformance": "vitest run test/conformance --reporter=verbose",
|
|
75
|
+
"test:conformance:contracts": "vitest run --config vitest.conformance.config.ts test/conformance/stages/contracts.stage.ts --reporter=verbose",
|
|
76
|
+
"test:conformance:compile": "vitest run --config vitest.conformance.config.ts test/conformance/stages/compile.stage.ts --reporter=verbose",
|
|
77
|
+
"test:conformance:client": "vitest run --config vitest.conformance.config.ts test/conformance/stages/client.stage.ts --reporter=verbose",
|
|
78
|
+
"test:conformance:openapi": "vitest run --config vitest.conformance.config.ts test/conformance/stages/openapi.stage.ts --reporter=verbose",
|
|
79
|
+
"test:conformance:gateway": "vitest run --config vitest.conformance.config.ts test/conformance/stages/gateway.stage.ts --reporter=verbose",
|
|
80
|
+
"test:conformance:generated-tests": "vitest run --config vitest.conformance.config.ts test/conformance/stages/generated-tests.stage.ts --reporter=verbose",
|
|
81
|
+
"test:conformance:app": "vitest run --config vitest.conformance.config.ts test/conformance/stages/app.stage.ts --reporter=verbose",
|
|
75
82
|
"test:watch": "vitest",
|
|
76
83
|
"prepublishOnly": "npm run clean && npm run build && npm run package:validate",
|
|
77
|
-
"smoke:reset": "
|
|
84
|
+
"smoke:reset": "rimraf tmp/smoke",
|
|
78
85
|
"smoke:compile": "npm run smoke:reset && tsx src/cli.ts compile --wsdl-source examples/minimal/weather.wsdl --catalog-file tmp/smoke/catalog.json",
|
|
79
86
|
"smoke:client": "npm run smoke:reset && tsx src/cli.ts client --wsdl-source examples/minimal/weather.wsdl --client-dir tmp/smoke/client && tsc -p tsconfig.smoke.json",
|
|
80
87
|
"smoke:openapi": "npm run smoke:reset && tsx src/cli.ts openapi --wsdl-source examples/minimal/weather.wsdl --openapi-file tmp/smoke/openapi.json --openapi-format json && tsc -p tsconfig.smoke.json",
|
|
@@ -97,18 +104,18 @@
|
|
|
97
104
|
},
|
|
98
105
|
"devDependencies": {
|
|
99
106
|
"@types/js-yaml": "^4.0.9",
|
|
100
|
-
"@types/node": "^26.1.
|
|
107
|
+
"@types/node": "^26.1.1",
|
|
101
108
|
"@types/yargs": "^17.0.35",
|
|
102
|
-
"fastify": "^5.
|
|
109
|
+
"fastify": "^5.10.0",
|
|
103
110
|
"fastify-plugin": "^6.0.0",
|
|
104
111
|
"rimraf": "^6.1.3",
|
|
105
112
|
"tsx": "^4.23.0",
|
|
106
113
|
"typescript": "^6.0.3",
|
|
107
|
-
"vitest": "^4.1.
|
|
114
|
+
"vitest": "^4.1.10"
|
|
108
115
|
},
|
|
109
116
|
"dependencies": {
|
|
110
117
|
"@apidevtools/swagger-parser": "^12.1.0",
|
|
111
|
-
"fast-xml-parser": "^5.
|
|
118
|
+
"fast-xml-parser": "^5.10.0",
|
|
112
119
|
"js-yaml": "^5.2.1",
|
|
113
120
|
"saxes": "^6.0.0",
|
|
114
121
|
"soap": "^1.9.3",
|