@postman/sdk-config 0.3.4 → 0.4.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/README.md +3 -1
- package/dist/index.cjs +56 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +55 -10
- package/dist/index.js.map +1 -1
- package/dist/sdk-config/index.cjs +51 -9
- package/dist/sdk-config/index.cjs.map +1 -1
- package/dist/sdk-config/index.d.cts +2 -2
- package/dist/sdk-config/index.d.ts +2 -2
- package/dist/sdk-config/index.js +51 -10
- package/dist/sdk-config/index.js.map +1 -1
- package/dist/sdk-config/v1/index.cjs +51 -9
- package/dist/sdk-config/v1/index.cjs.map +1 -1
- package/dist/sdk-config/v1/index.d.cts +95 -6
- package/dist/sdk-config/v1/index.d.ts +95 -6
- package/dist/sdk-config/v1/index.js +51 -10
- package/dist/sdk-config/v1/index.js.map +1 -1
- package/dist/sdk-config-ir/index.cjs +19 -0
- package/dist/sdk-config-ir/index.cjs.map +1 -1
- package/dist/sdk-config-ir/index.d.cts +2 -2
- package/dist/sdk-config-ir/index.d.ts +2 -2
- package/dist/sdk-config-ir/index.js +19 -1
- package/dist/sdk-config-ir/index.js.map +1 -1
- package/dist/sdk-config-ir/v1/index.cjs +19 -0
- package/dist/sdk-config-ir/v1/index.cjs.map +1 -1
- package/dist/sdk-config-ir/v1/index.d.cts +84 -9
- package/dist/sdk-config-ir/v1/index.d.ts +84 -9
- package/dist/sdk-config-ir/v1/index.js +19 -1
- package/dist/sdk-config-ir/v1/index.js.map +1 -1
- package/dist/{typescript-CKRe_6MB.d.cts → typescript-BruxA5zG.d.cts} +10 -2
- package/dist/{typescript-CKRe_6MB.d.ts → typescript-BruxA5zG.d.ts} +10 -2
- package/package.json +1 -1
- package/src/sdk-config/v1/README.md +3 -0
- package/src/sdk-config-ir/v1/README.md +64 -37
|
@@ -54,6 +54,7 @@ messages. Valid IR requests route only to the IR bridge and never fall through t
|
|
|
54
54
|
- Package and publication identity belongs in `package`; publication mechanics belong in
|
|
55
55
|
`output.publish`.
|
|
56
56
|
- Shared client behavior belongs in `client`; shared generator behavior belongs in `generation`.
|
|
57
|
+
- Request replay behavior belongs in the top-level `replay` block.
|
|
57
58
|
- `generation.language` contains only behavior that remains language-specific after normalization.
|
|
58
59
|
- A simple on/off option is a boolean. A feature with additional settings is an object containing a
|
|
59
60
|
required `enabled` boolean so settings can be added without changing its shape.
|
|
@@ -63,7 +64,7 @@ messages. Valid IR requests route only to the IR bridge and never fall through t
|
|
|
63
64
|
Examples of the boolean rule:
|
|
64
65
|
|
|
65
66
|
- Boolean: `generation.webSockets`, `generation.multipleResponses`.
|
|
66
|
-
- Configurable feature: `client.retry`, `client.tokenRefresh`, `docs.snippets`,
|
|
67
|
+
- Configurable feature: `replay`, `client.retry`, `client.tokenRefresh`, `docs.snippets`,
|
|
67
68
|
`generation.analytics`, `generation.hooks`, `generation.streams`, `generation.wireTests`, and
|
|
68
69
|
`generation.unitTests`.
|
|
69
70
|
|
|
@@ -142,6 +143,7 @@ For Python Fern configs, `skip_validation` is read from the nested `pydantic_con
|
|
|
142
143
|
| `license`, `authors`, `developers`, `homepage` | `package` and `output.github.license` | Manifest metadata and GitHub-specific repository license settings. |
|
|
143
144
|
| TypeScript package privacy / JSR publication | `output.publish.isPackagePrivate` / `output.publish.publishToJsr` | NPM-specific publication options. |
|
|
144
145
|
| registry workflow, credential, and env-var settings | `output.publish` | Per-registry workflow toggles, credential values/refs/env vars, and trusted publishing flags. |
|
|
146
|
+
| request replay | `replay` | `enabled` is explicit when the object is present. |
|
|
145
147
|
| `documentation.url` | `docs.referenceBaseUrl` | Base URL for generated reference-file links. |
|
|
146
148
|
| `documentation.snippets` | `docs.snippets` | `enabled` is explicit when the object is present. |
|
|
147
149
|
| `docs[]` | `docs` | Legacy API/snippet selections are lowered to typed documentation settings. |
|
|
@@ -274,22 +276,28 @@ normalized contract.
|
|
|
274
276
|
These settings remain under `source.apiImportSettings` because they affect spec conversion rather
|
|
275
277
|
than generated-language presentation.
|
|
276
278
|
|
|
277
|
-
| Fern setting
|
|
278
|
-
|
|
|
279
|
-
| `respect-nullable-schemas`
|
|
280
|
-
| `title-as-schema-name`
|
|
281
|
-
| `ignore-tags`
|
|
282
|
-
| `disambiguate-request-names`
|
|
283
|
-
| `
|
|
284
|
-
| `
|
|
285
|
-
| `
|
|
286
|
-
| `
|
|
287
|
-
| `
|
|
288
|
-
| `
|
|
289
|
-
| `
|
|
290
|
-
| `
|
|
291
|
-
| `
|
|
292
|
-
| `
|
|
279
|
+
| Fern setting | Normalized field | Observed projects |
|
|
280
|
+
| ----------------------------------------------------------- | ------------------------------------ | --------------------------------------: |
|
|
281
|
+
| `respect-nullable-schemas` | `respectNullableSchemas` | 10 |
|
|
282
|
+
| `title-as-schema-name` | `titleAsSchemaName` | 16 |
|
|
283
|
+
| `ignore-tags` | `ignoreTags` | Not in the project snapshot; see below. |
|
|
284
|
+
| `disambiguate-request-names` | `disambiguateRequestNames` | Not in the project snapshot; see below. |
|
|
285
|
+
| `respect-readonly-schemas` | `respectReadonlySchemas` | Not in the project snapshot; see below. |
|
|
286
|
+
| `unions: v1`, `prefer-undiscriminated-unions-with-literals` | `discriminatedUnionV2` | Not in the project snapshot; see below. |
|
|
287
|
+
| `prefer-undiscriminated-unions-with-literals` | `undiscriminatedUnionsWithLiterals` | Not in the project snapshot; see below. |
|
|
288
|
+
| `inline-all-of-schemas` | `inlineAllOfSchemas` | Not in the project snapshot; see below. |
|
|
289
|
+
| `resolve-schema-collisions` | `resolveSchemaCollisions` | Not in the project snapshot; see below. |
|
|
290
|
+
| `message-naming` | `asyncApiMessageNaming` | Not in the project snapshot; see below. |
|
|
291
|
+
| `coerce-enums-to-literals` | `coerceEnumsToLiterals` | 14 |
|
|
292
|
+
| `idiomatic-request-names` | `idiomaticRequestNames` | 12 |
|
|
293
|
+
| `wrap-references-to-nullable-in-optional` | `wrapReferencesToNullableInOptional` | 9 |
|
|
294
|
+
| `coerce-optional-schemas-to-nullable` | `coerceOptionalSchemasToNullable` | 9 |
|
|
295
|
+
| `object-query-parameters` | `objectQueryParameters` | 9 |
|
|
296
|
+
| `only-include-referenced-schemas` | `onlyIncludeReferencedSchemas` | 4 |
|
|
297
|
+
| `group-multi-api-environments` | `groupMultiApiEnvironments` | 2 |
|
|
298
|
+
| `path-parameter-order` | `pathParameterOrder` | 2 |
|
|
299
|
+
| `type-dates-as-strings` | `typeDatesAsStrings` | 12 |
|
|
300
|
+
| `default-integer-format` | `defaultIntegerFormat` | Importer defaults to `int32`. |
|
|
293
301
|
|
|
294
302
|
`ignoreTags` and `disambiguateRequestNames` postdate the project snapshot. Twilio declares both
|
|
295
303
|
across its namespaced API specs. They stay undefaulted so omission remains distinguishable from an
|
|
@@ -298,23 +306,44 @@ of authored tags, not generation-time service-name inference; `disambiguateReque
|
|
|
298
306
|
request/schema collisions, not idiomatic request naming. Producers and generators must map and
|
|
299
307
|
honour these fields before they change generated output.
|
|
300
308
|
|
|
309
|
+
`respectReadonlySchemas` and `discriminatedUnionV2` also postdate the snapshot. The 2026-07-17 audit
|
|
310
|
+
read declared project configuration, which is why the first pass recorded no use: both are reached
|
|
311
|
+
through effective-setting resolution rather than a literal key in `generators.yml`. Auth0 declares
|
|
312
|
+
`respect-readonly-schemas` directly, but `discriminatedUnionV2` has two declared spellings that
|
|
313
|
+
resolve to it — `prefer-undiscriminated-unions-with-literals` and `unions: v1` — so a config can be
|
|
314
|
+
refused for a key that appears nowhere in it. The two spellings are not interchangeable, which is
|
|
315
|
+
why `undiscriminatedUnionsWithLiterals` is a separate field rather than an alias: `unions: v1` sets
|
|
316
|
+
only `discriminatedUnionV2`, while `prefer-undiscriminated-unions-with-literals` sets both. A
|
|
317
|
+
contract carrying one of the pair cannot reproduce a config that set the other. All three stay
|
|
318
|
+
undefaulted for the same reason as the
|
|
319
|
+
fields above: `respectReadonlySchemas` changes which properties an imported schema exposes, and
|
|
320
|
+
`discriminatedUnionV2` changes how union variants are converted, so an absent value must leave an
|
|
321
|
+
existing SDK's shapes alone rather than assert one.
|
|
322
|
+
|
|
323
|
+
`inlineAllOfSchemas`, `resolveSchemaCollisions`, and `asyncApiMessageNaming` complete the retained
|
|
324
|
+
import settings with observed customer use. Each is refused today whenever it differs from the
|
|
325
|
+
importer default, which blocks the declaring customer from a post-cutover generator version.
|
|
326
|
+
`asyncApiMessageNaming` is the only enum of the three, and `v2` is its sole non-default value. It
|
|
327
|
+
names AsyncAPI messages, but the importer resolves it as part of one shared settings object, so a
|
|
328
|
+
project's OpenAPI specs carry it too and are refused for it.
|
|
329
|
+
|
|
301
330
|
## Fern language-specific migration map
|
|
302
331
|
|
|
303
332
|
Only options that remain language-specific stay in `generation.language`.
|
|
304
333
|
|
|
305
|
-
| Language | Fern fields retained in language config
|
|
306
|
-
| ----------- |
|
|
307
|
-
| TypeScript | `packageManager` (1), `testFramework` (2), `namespaceExportName`, `allowCustomFetcher` (13), branded aliases (1), legacy exports (1), `useBigInt`, and positive `serdeLayer` from `noSerdeLayer` (8)
|
|
308
|
-
| Python | Python/Pydantic versions, client filenames
|
|
309
|
-
| Java/Kotlin | Package layout (3), local dates (2), optional-nullable collapse (2), Gradle settings (7), and JVM async-client style
|
|
310
|
-
| Go | Legacy complex models, union version (3), legacy client options (1), and the fern root-client constructor name
|
|
311
|
-
| C# | Optional wrapper, simplified dictionaries (1), explicit namespaces (7), core namespace behavior (1), exception handler (5), and the experimental explicit-nullable-optional switch
|
|
312
|
-
| PHP | Property access (2) and generated client interfaces (1)
|
|
313
|
-
| Ruby | Require paths (2)
|
|
314
|
-
| Rust | Datetime representation, initialism casing, and Cargo features/default-features
|
|
315
|
-
| Swift | Module name and the nullable-as-optional collapse
|
|
316
|
-
| CLI | Pagination parameter names and the `skills` boolean
|
|
317
|
-
| MCP | Server identity, availability exclusions, tool filters and named toolsets, plus the TypeScript options
|
|
334
|
+
| Language | Fern fields retained in language config | Shared mappings lifted out |
|
|
335
|
+
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
336
|
+
| TypeScript | `packageManager` (1), `testFramework` (2), `namespaceExportName`, `allowCustomFetcher` (13), branded aliases (1), legacy exports (1), `useBigInt`, and positive `serdeLayer` from `noSerdeLayer` (8) | Namespace, validation, inline types, dependencies, wire tests, streams, WebSockets, pager/client names |
|
|
337
|
+
| Python | Python/Pydantic versions, client filenames, model switches, TypedDict requests, redirect/chunk/recursion compatibility, and package extras | Package/module names, enum form, extra fields, response validation, request style, dependencies, timeout, layout, wire tests, WebSockets |
|
|
338
|
+
| Java/Kotlin | Package layout (3), local dates (2), optional-nullable collapse (2), Gradle settings (7), and JVM async-client style | Maven identity, namespace, names, forward-compatible enums, inline properties, dependencies, pager, wire tests |
|
|
339
|
+
| Go | Legacy complex models, union version (3), legacy client options (1), and the fern root-client constructor name | Module/package identity, client name, environments, smart casing, inline properties, pager, wire tests |
|
|
340
|
+
| C# | Optional wrapper, simplified dictionaries (1), explicit namespaces (7), core namespace behavior (1), exception handler (5), and the experimental explicit-nullable-optional switch | NuGet identity, namespace, class/error names, pager, wire tests |
|
|
341
|
+
| PHP | Property access (2) and generated client interfaces (1) | Composer identity, namespace, client/pager names, request style, dependencies, wire tests |
|
|
342
|
+
| Ruby | Require paths (2) | Gem identity, client name, dependencies, pager, wire tests |
|
|
343
|
+
| Rust | Datetime representation, initialism casing, and Cargo features/default-features | Crate identity, client name, and package metadata use shared fields. |
|
|
344
|
+
| Swift | Module name and the nullable-as-optional collapse | Client, environment and error naming use shared fields. |
|
|
345
|
+
| CLI | Pagination parameter names and the `skills` boolean | Go module and package identity use `package`. |
|
|
346
|
+
| MCP | Server identity, availability exclusions, tool filters and named toolsets, plus the TypeScript options | npm package identity, client and serialization behavior |
|
|
318
347
|
|
|
319
348
|
## Removed and deferred legacy configuration
|
|
320
349
|
|
|
@@ -327,16 +356,14 @@ the migration.
|
|
|
327
356
|
- Common Fern generation: include/omit platform-header overrides. Output-profile defaults own this
|
|
328
357
|
compatibility behavior instead of a second permanent switch.
|
|
329
358
|
- Source import: optional-additional-properties defaults, environment grouping strategies,
|
|
330
|
-
discriminant removal,
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
discriminated-union inference, and AsyncAPI message naming.
|
|
359
|
+
discriminant removal, forward-compatible inference, default environment inference, const
|
|
360
|
+
coercion, endpoint filters, example-depth controls, alias resolution, single-schema oneOf
|
|
361
|
+
preservation, read-variant responses, binary-response import coercion, form encoding defaults,
|
|
362
|
+
additional-properties defaults, and discriminated-union inference.
|
|
335
363
|
- TypeScript: linter/formatter selection, consolidated type files, subpackage exports, and endpoint
|
|
336
364
|
metadata.
|
|
337
365
|
- Python: ORM/smart-union/coercion/wrapped-alias/positional-constructor/inheritance/validator
|
|
338
|
-
switches, flattened union bodies,
|
|
339
|
-
transport.
|
|
366
|
+
switches, flattened union bodies, lazy imports, and custom transport.
|
|
340
367
|
- Java/JVM: JSON include, required-builder checks, public/extensible constructors, unknown-as-node,
|
|
341
368
|
nullable annotations, and custom interceptors.
|
|
342
369
|
- C#: union implementation switches, root-client access, generated error-type toggle, interceptor
|