@techspokes/typescript-wsdl-client 0.39.0 → 1.0.1
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 +30 -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/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
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# TypeScript WSDL Client v1.0.1
|
|
2
|
+
|
|
3
|
+
## Reliable npmjs Publication for the Stable Contract
|
|
4
|
+
|
|
5
|
+
Version 1.0.1 delivers the stable contract intended for 1.0 with corrected npm 12 package validation and an npmjs-only release path.
|
|
6
|
+
|
|
7
|
+
## What This Improves
|
|
8
|
+
|
|
9
|
+
Maintainers can publish with the tested npm 12 toolchain without the package-content validator rejecting npm's package-keyed JSON output. The validator remains compatible with npm 11 for local and maintenance workflows.
|
|
10
|
+
|
|
11
|
+
Package delivery now has one authoritative registry. The guarded release workflow publishes only to npmjs with provenance and no longer grants or uses GitHub Packages capability.
|
|
12
|
+
|
|
13
|
+
## Highlights
|
|
14
|
+
|
|
15
|
+
- Preserves the stable TypeScript, OpenAPI, Fastify, app, test-generation, and programmatic contracts.
|
|
16
|
+
- Accepts the package manifest formats emitted by npm 11 and npm 12.
|
|
17
|
+
- Pins the tested npm release used by publication automation.
|
|
18
|
+
- Publishes packages only to npmjs with provenance.
|
|
19
|
+
- Removes the legacy GitHub Packages distribution and prevents recreation.
|
|
20
|
+
- Keeps the abandoned `v1.0.0` candidate and marker as immutable release evidence.
|
|
21
|
+
|
|
22
|
+
## Upgrade Notes
|
|
23
|
+
|
|
24
|
+
No generated-code or runtime migration is required relative to `0.40.1`. Consumers must continue using Node.js 24 or newer.
|
|
25
|
+
|
|
26
|
+
Version `1.0.0` was permanently abandoned before npmjs publication. Install `1.0.1` as the first supported stable package.
|
|
27
|
+
|
|
28
|
+
## Validation
|
|
29
|
+
|
|
30
|
+
- CI passed.
|
|
31
|
+
- NPM package contents were validated with npm 11 and npm 12.
|
|
32
|
+
- The npm publication lifecycle passed with npm 12 in dry-run mode.
|
|
33
|
+
- Agent skill artifact was validated and packaged.
|
|
34
|
+
- Release preflight passed against the target tag.
|
|
35
|
+
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
Release tag: `v1.0.1`.
|
package/docs/roadmap/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Version 1.0 Roadmap Plan
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Completed plan for moving `@techspokes/typescript-wsdl-client` from the `0.x` line to the stable `1.0.0` release.
|
|
4
4
|
|
|
5
5
|
See the root [README.md](../../README.md) for project overview and the root [ROADMAP.md](../../ROADMAP.md) for the public roadmap summary.
|
|
6
6
|
|
|
@@ -8,20 +8,20 @@ See the root [README.md](../../README.md) for project overview and the root [ROA
|
|
|
8
8
|
|
|
9
9
|
This plan turns the 1.0 roadmap into implementation slices that can be picked up independently. Each slice has its own plan document with scope, testing strategy, acceptance gates, and release implications.
|
|
10
10
|
|
|
11
|
-
The plan
|
|
11
|
+
The plan preserves the stable 1.0 contract. Choice union mode, JSON array streaming, `xs:anyAttribute` wildcard bags, stage-specific conformance, executable unsupported diagnostics, and repeatable release gates shipped before or with `1.0.0`.
|
|
12
12
|
|
|
13
13
|
## Route Summary
|
|
14
14
|
|
|
15
15
|
| Slice | Document | Status | Outcome |
|
|
16
16
|
|-----------------------|------------------------------------------------------------------------------|-------------------|---------------------------------|
|
|
17
|
-
| Contract audit | [Contract Audit](v1.0-contract-audit.md) |
|
|
17
|
+
| Contract audit | [Contract Audit](v1.0-contract-audit.md) | complete | Public surfaces match behavior |
|
|
18
18
|
| OpenAPI compatibility | [OpenAPI Fastify Compatibility](v1.0-openapi-fastify-compatibility.md) | baseline complete | Schema strategy is proven |
|
|
19
19
|
| Choice union mode | [Choice Union Mode](v1.0-choice-union-mode.md) | complete | Implemented in `0.26.0` |
|
|
20
20
|
| JSON array streaming | [JSON Array Streaming](v1.0-json-array-streaming.md) | complete | Implemented in `0.28.0` |
|
|
21
21
|
| Conformance framework | [Capability Conformance Framework](v1.0-capability-conformance-framework.md) | gate wired | Pipeline claims are test-backed |
|
|
22
22
|
| WSDL coverage matrix | [WSDL Coverage Matrix](v1.0-wsdl-coverage-matrix.md) | baseline complete | Public support is test-backed |
|
|
23
23
|
| `xs:anyAttribute` bag | [`xs:anyAttribute` Wildcard Bag](v1.0-xs-anyattribute-wildcard-bag.md) | complete | Implemented in `0.36.0` |
|
|
24
|
-
| Release candidate | [Release Candidate Gates](v1.0-release-candidate-gates.md) |
|
|
24
|
+
| Release candidate | [Release Candidate Gates](v1.0-release-candidate-gates.md) | complete | 1.0 release is repeatable |
|
|
25
25
|
|
|
26
26
|
## Execution Order
|
|
27
27
|
|
|
@@ -47,7 +47,7 @@ The registry, fixture strategy, compile runner, client evidence, OpenAPI evidenc
|
|
|
47
47
|
|
|
48
48
|
### Slice 6: WSDL Coverage Matrix
|
|
49
49
|
|
|
50
|
-
The WSDL matrix rows now exist as conformance registry entries with compile, client, OpenAPI, gateway runtime, generated-test, app, documentation, and release-gate evidence.
|
|
50
|
+
The WSDL matrix rows now exist as conformance registry entries with compile, client, OpenAPI, gateway runtime, generated-test, app, documentation, and release-gate evidence. Version `0.40.1` accepts the remaining partial and terminal rows as the 1.0 boundary. Keep those rows current while preparing release candidate gates.
|
|
51
51
|
|
|
52
52
|
### Slice 7: xs:anyAttribute Wildcard Bag
|
|
53
53
|
|
|
@@ -57,11 +57,11 @@ The [`xs:anyAttribute` wildcard bag plan](v1.0-xs-anyattribute-wildcard-bag.md)
|
|
|
57
57
|
|
|
58
58
|
Run the release candidate gates after feature work and documentation have converged. This slice validates docs, tests, generated examples, package contents, skill artifact, release notes, and provenance workflow readiness.
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## 1.0 Release State
|
|
61
61
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
62
|
+
- Public contract surfaces are audited against implementation and tests.
|
|
63
|
+
- Capability boundaries are documented and backed by executable evidence.
|
|
64
|
+
- Release metadata and the final candidate pass release preflight before tagging.
|
|
65
65
|
|
|
66
66
|
## Quality Principles
|
|
67
67
|
|
|
@@ -125,7 +125,7 @@ Third-party suites can inform future rows:
|
|
|
125
125
|
|
|
126
126
|
The conformance framework should be designed so its fixtures can later seed a standalone public project, tentatively named `wsdl-conformance-fixtures`.
|
|
127
127
|
|
|
128
|
-
The public fixture project would be an experimental, curated corpus of small WSDL and XSD fixtures for SOAP client and code-generation tools. It should not claim to be an official standards suite. It should provide practical, source-backed examples for valid, partial, diagnostic, unsupported, recovery, and real-world-compatible behaviors.
|
|
128
|
+
The public fixture project would be an experimental, curated corpus of small WSDL and XSD fixtures for SOAP client and code-generation tools. It should not claim to be an official standards' suite. It should provide practical, source-backed examples for valid, partial, diagnostic, unsupported, recovery, and real-world-compatible behaviors.
|
|
129
129
|
|
|
130
130
|
The public corpus should preserve clean licensing and clear provenance. Do not copy external corpora wholesale. Prefer original minimized fixtures derived from standards, profiles, and observed real-world patterns.
|
|
131
131
|
|
|
@@ -152,11 +152,11 @@ The corpus should be explainable. Each fixture should say what behavior it exerc
|
|
|
152
152
|
|
|
153
153
|
## Decision Framework
|
|
154
154
|
|
|
155
|
-
Use this framework before changing a capability from `research` to a final status. The decision should optimize for truthful generation, deterministic output, and maintainable SOAP modernization rather than broad standards completeness.
|
|
155
|
+
Use this framework before changing a capability from `research` to a final status. The decision should optimize for truthful generation, deterministic output, and maintainable SOAP modernization rather than broad standards' completeness.
|
|
156
156
|
|
|
157
157
|
First decide whether the construct is important enough for this project. Favor support when the feature is common in WSDLs, important for enterprise modernization, or already required by existing generated outputs. Favor deferral when the feature is rare, can be worked around, or requires a runtime contract outside the current product surface.
|
|
158
158
|
|
|
159
|
-
Then decide whether the construct can be modeled honestly in `catalog.json`. If the catalog can represent the shape without losing semantics, support or partial support may be appropriate. If the catalog
|
|
159
|
+
Then decide whether the construct can be modeled honestly in `catalog.json`. If the catalog can represent the shape without losing semantics, support or partial support may be appropriate. If the catalog hid polymorphism, transport behavior, binary parts, external network policy, or runtime ambiguity, prefer a diagnostic or unsupported decision.
|
|
160
160
|
|
|
161
161
|
Then check downstream stages. A `supported` row must work through every relevant stage. A feature that compiles but cannot be represented in generated TypeScript, OpenAPI, gateway runtime, or generated tests should be `partial` unless those stages do not apply.
|
|
162
162
|
|
|
@@ -170,7 +170,7 @@ Use these decisions:
|
|
|
170
170
|
- `defer`: keep a fixture and rationale, but do not claim support yet.
|
|
171
171
|
- `out-of-scope`: document that the feature is intentionally outside the 1.0 product contract.
|
|
172
172
|
|
|
173
|
-
When full support is clearly local, deterministic, and representable, implement it rather than leaving unnecessary diagnostics. When full support would imply semantics the generator cannot preserve, prefer diagnostics
|
|
173
|
+
When full support is clearly local, deterministic, and representable, implement it rather than leaving unnecessary diagnostics. When full support would imply semantics the generator cannot preserve, prefer diagnostics to partial, misleading output.
|
|
174
174
|
|
|
175
175
|
## Phase 1 Decisions
|
|
176
176
|
|
|
@@ -437,7 +437,7 @@ The runner should perform these steps:
|
|
|
437
437
|
7. Pass `clientDir`, `catalogFile`, `versionSlug`, and `serviceSlug` to `generateGateway`.
|
|
438
438
|
8. Type-check generated client and gateway artifacts together.
|
|
439
439
|
9. Dynamically import `<temp>/gateway/plugin.ts`.
|
|
440
|
-
10. Register the plugin with `Fastify({logger: false})` and the row's mock operations client.
|
|
440
|
+
10. Register the plugin with `Fastify({logger: false})` and the row's mock operations' client.
|
|
441
441
|
11. Resolve each request path from the generated OpenAPI operation when possible.
|
|
442
442
|
12. Execute `fastify.inject` and run row-specific status and body assertions.
|
|
443
443
|
|
|
@@ -547,7 +547,9 @@ Acceptance criteria:
|
|
|
547
547
|
|
|
548
548
|
Phase 5 is implemented. Keep this section as the baseline for conformance gate ownership.
|
|
549
549
|
|
|
550
|
-
`npm run test:conformance` remains the
|
|
550
|
+
`npm run test:conformance` remains the complete maintainer command for WSDL capability rows. Stage commands under `test:conformance:<stage>` provide contracts, compile, client, OpenAPI, gateway, generated-test, and app feedback without running unrelated evidence layers. `npm test` and `npm run ci` cover the canonical full suite through broad Vitest discovery, so release preflight does not run a duplicate full conformance pass. Release preflight instead runs a cheap `conformance-gate` script check that fails if the full command disappears, if `npm test` becomes scoped away from `test/conformance`, or if `npm run ci` stops running the broad test command.
|
|
551
|
+
|
|
552
|
+
The complete suite generates consumer-style projects and launches nested TypeScript and Vitest processes. A maintained Windows run takes about three to four minutes. Maintainers and agents should allow at least six minutes and inspect the active process before diagnosing a quiet interval as a stall.
|
|
551
553
|
|
|
552
554
|
Acceptance criteria:
|
|
553
555
|
|
|
@@ -557,9 +559,9 @@ Acceptance criteria:
|
|
|
557
559
|
- Full conformance can run locally before `1.0.0`.
|
|
558
560
|
- Release notes can cite capability IDs for behavior changes.
|
|
559
561
|
|
|
560
|
-
##
|
|
562
|
+
## Post-1.0 WSDL Inspector
|
|
561
563
|
|
|
562
|
-
|
|
564
|
+
The WSDL inspector is explicitly deferred until after `1.0.0`. Build it after the registry has enough stable coverage to be useful, starting with a programmatic API and internal CLI output before committing to public command semantics.
|
|
563
565
|
|
|
564
566
|
Acceptance criteria:
|
|
565
567
|
|
|
@@ -568,13 +570,13 @@ Acceptance criteria:
|
|
|
568
570
|
- Human output includes status, limitation, and workaround text.
|
|
569
571
|
- Inspector findings link back to matrix evidence.
|
|
570
572
|
|
|
571
|
-
##
|
|
573
|
+
## Post-1.0 Decisions
|
|
572
574
|
|
|
573
|
-
- Decide
|
|
575
|
+
- Decide whether an inspector output format should become public.
|
|
574
576
|
- Decide whether docs should remain manually maintained or eventually generated from the registry.
|
|
575
577
|
|
|
576
578
|
## Release Implications
|
|
577
579
|
|
|
578
|
-
This framework is 1.0 readiness infrastructure.
|
|
580
|
+
This framework is 1.0 readiness infrastructure. Stage-specific maintainer commands ship in `0.40.1`, while the canonical full suite stays release-blocking.
|
|
579
581
|
|
|
580
|
-
Do not block
|
|
582
|
+
Do not block `1.0.0` on the WSDL inspector. The registry and runner create the durable foundation; the post-1.0 inspector should reuse that foundation after it proves useful.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Version 1.0 Contract Audit
|
|
2
2
|
|
|
3
|
-
Status:
|
|
3
|
+
Status: final 1.0 audit completed after `0.40.1`; ongoing as release hygiene.
|
|
4
4
|
|
|
5
5
|
Plan for keeping public flags, programmatic options, docs, generated behavior, and roadmap statements aligned through `1.0.0`.
|
|
6
6
|
|
|
@@ -41,7 +41,7 @@ This slice prevents later work from building on ambiguous behavior. Choice union
|
|
|
41
41
|
|
|
42
42
|
### Roadmap State
|
|
43
43
|
|
|
44
|
-
`ROADMAP.md` must reflect the current
|
|
44
|
+
`ROADMAP.md` must reflect the current `0.40.x` line. Choice union mode, JSON array streaming, conformance gate wiring, baseline WSDL coverage, wildcard attribute bags, dependency refreshes, and stage-specific conformance commands must be treated as shipped work before final release-candidate gates begin.
|
|
45
45
|
|
|
46
46
|
### Release Metadata
|
|
47
47
|
|
|
@@ -63,7 +63,7 @@ Add negative tests only for newly identified contract gaps that a follow-up slic
|
|
|
63
63
|
|
|
64
64
|
## Acceptance Criteria
|
|
65
65
|
|
|
66
|
-
- `ROADMAP.md` names released `0.
|
|
66
|
+
- `ROADMAP.md` names released `0.40.x` work accurately.
|
|
67
67
|
- `docs/roadmap/README.md` links every 1.0 slice.
|
|
68
68
|
- CLI, API, and configuration docs agree on required 1.0 behavior.
|
|
69
69
|
- Known contract gaps are linked to implementation slices.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Version 1.0 Release Candidate Gates
|
|
2
2
|
|
|
3
|
-
Status:
|
|
3
|
+
Status: completed for the `1.0.0` final candidate.
|
|
4
4
|
|
|
5
5
|
Plan for validating that `1.0.0` is repeatable, documented, test-backed, and ready to publish.
|
|
6
6
|
|
|
@@ -33,19 +33,21 @@ Run `npm run docs:validate`. Confirm README, CLI reference, API reference, confi
|
|
|
33
33
|
|
|
34
34
|
### Test Gate
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Release preflight runs the broad Vitest suite through `npm run ci`. Use focused tests while developing and avoid a separate final `npm test` pass.
|
|
37
37
|
|
|
38
38
|
### Conformance Gate
|
|
39
39
|
|
|
40
|
-
Run `npm run test:conformance` when changing capability rows
|
|
40
|
+
Use the narrowest `npm run test:conformance:<stage>` command while changing one evidence layer. Run `npm run test:conformance` when changing capability rows, fixture-backed behavior, shared runner behavior, or the final candidate. Confirm `npm test` and `npm run ci` keep broad Vitest discovery so the canonical full suite stays covered, and confirm release preflight reports a passing `conformance-gate` script check.
|
|
41
|
+
|
|
42
|
+
Allow at least six minutes for the full command on Windows. It generates several consumer-style projects and may stay quiet while nested TypeScript or Vitest processes run.
|
|
41
43
|
|
|
42
44
|
### Smoke Gate
|
|
43
45
|
|
|
44
|
-
|
|
46
|
+
Release preflight runs `npm run smoke:pipeline` through `npm run ci`. Use the focused smoke command while developing pipeline changes and avoid a separate final smoke pass.
|
|
45
47
|
|
|
46
48
|
### CI Gate
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
Release preflight runs `npm run ci` once for the final candidate. Do not run a separate final CI pass immediately before or after preflight.
|
|
49
51
|
|
|
50
52
|
### Example Gate
|
|
51
53
|
|
|
@@ -57,7 +59,9 @@ Run Node 24 as the supported Node.js floor and Node 26 as the current line in CI
|
|
|
57
59
|
|
|
58
60
|
### Release Gate
|
|
59
61
|
|
|
60
|
-
Run `npm run release:preflight -- v1.0.0`
|
|
62
|
+
Run `npm run release:preflight -- v1.0.0` once on the final uncommitted release tree. Confirm release notes, changelog, dependency pins, conformance wiring, generated examples, CI, and skill packaging pass, then commit the exact validated tree.
|
|
63
|
+
|
|
64
|
+
Set the release version before preflight. Preflight verifies tracked release files without rewriting them and fails if any preflight step changes tracked content; generated checks and the skill ZIP remain under ignored `tmp/` and `dist/` paths.
|
|
61
65
|
|
|
62
66
|
The post-release package workflow should run `npm run release:publish-check` before publishing from the tag. It must not rerun full CI because `release:preflight` is the release-blocking gate before the tag is pushed.
|
|
63
67
|
|
|
@@ -34,6 +34,16 @@ Each matrix row should have a minimal fixture, an expected support status, and a
|
|
|
34
34
|
- Keep fixture metadata useful for a future public conformance fixture corpus.
|
|
35
35
|
- Preserve the weather smoke fixture as the canonical end-to-end demo while the copied conformance fixture proves the baseline support claim.
|
|
36
36
|
|
|
37
|
+
## Accepted 1.0 Boundaries
|
|
38
|
+
|
|
39
|
+
The remaining partial and terminal rows are accepted for `1.0.0`. They are explicit compatibility boundaries rather than unfinished release blockers.
|
|
40
|
+
|
|
41
|
+
- Abstract complex types remain compile-terminal until polymorphic instance handling is designed.
|
|
42
|
+
- Substitution groups remain compile-terminal until polymorphic element expansion is designed.
|
|
43
|
+
- Multi-binding WSDLs keep deterministic first SOAP binding selection without a new selection option.
|
|
44
|
+
- External `PolicyReference` documents are not fetched, resolved, or enforced.
|
|
45
|
+
- MTOM/XOP attachments remain outside the typed SOAP-to-REST transport contract.
|
|
46
|
+
|
|
37
47
|
## Out Of Scope
|
|
38
48
|
|
|
39
49
|
- Do not implement every unsupported WSDL feature in this slice.
|
|
@@ -159,7 +169,7 @@ Partial rows must prove only the documented subset. External `PolicyReference` s
|
|
|
159
169
|
|
|
160
170
|
### Next Slice
|
|
161
171
|
|
|
162
|
-
|
|
172
|
+
Version `0.40.1` adds stage-specific conformance commands and records the accepted 1.0 boundaries. After that release, the next slice is release-candidate preparation. Run it before adding more feature rows unless a production bug requires a focused diagnostic or support decision.
|
|
163
173
|
|
|
164
174
|
Work items:
|
|
165
175
|
|
|
@@ -169,7 +179,7 @@ Work items:
|
|
|
169
179
|
- Keep release preflight's Node gate aligned with the package engine, Node 24 CI coverage, Node 26 CI coverage, and Node 24 release workflows.
|
|
170
180
|
- Confirm release preflight runtime remains acceptable.
|
|
171
181
|
- Keep diagnostic and unsupported rows stopped at compile.
|
|
172
|
-
-
|
|
182
|
+
- Preserve the accepted partial and terminal 1.0 decisions unless production evidence requires a patch.
|
|
173
183
|
- Update public docs only when a row status or public contract changes.
|
|
174
184
|
|
|
175
185
|
### Verification
|