@skmtc/core 0.16.1 → 0.16.3

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.
Files changed (67) hide show
  1. package/esm/context/ParseContext.d.ts.map +1 -1
  2. package/esm/context/ParseContext.js +10 -0
  3. package/esm/context/ParseIssue.d.ts +24 -4
  4. package/esm/context/ParseIssue.d.ts.map +1 -1
  5. package/esm/context/ParseIssue.js +12 -4
  6. package/esm/context/parseTypes.d.ts +23 -1
  7. package/esm/context/parseTypes.d.ts.map +1 -1
  8. package/esm/oas/operation/Operation.d.ts.map +1 -1
  9. package/esm/oas/operation/Operation.js +2 -11
  10. package/esm/oas/response/toPrimaryResponseCode.d.ts +19 -0
  11. package/esm/oas/response/toPrimaryResponseCode.d.ts.map +1 -0
  12. package/esm/oas/response/toPrimaryResponseCode.js +33 -0
  13. package/esm/oas/webhook/Webhook.d.ts +40 -3
  14. package/esm/oas/webhook/Webhook.d.ts.map +1 -1
  15. package/esm/oas/webhook/Webhook.js +52 -3
  16. package/esm/parse/v3-0/integer/toInteger.js +4 -1
  17. package/esm/parse/v3-0/number/toNumber.js +4 -1
  18. package/esm/parse/v3-0/operation/toOperationsV3.d.ts.map +1 -1
  19. package/esm/parse/v3-0/operation/toOperationsV3.js +5 -1
  20. package/esm/parse/v3-0/schema/toSchemasV3.d.ts.map +1 -1
  21. package/esm/parse/v3-0/schema/toSchemasV3.js +27 -1
  22. package/esm/parse/v3-0/string/toString.d.ts.map +1 -1
  23. package/esm/parse/v3-0/string/toString.js +4 -11
  24. package/esm/parse/v3-1/integer/toInteger.js +4 -1
  25. package/esm/parse/v3-1/number/toNumber.js +4 -1
  26. package/esm/parse/v3-1/operation/toOperationsV3.d.ts.map +1 -1
  27. package/esm/parse/v3-1/operation/toOperationsV3.js +5 -1
  28. package/esm/parse/v3-1/schema/toSchemasV3.d.ts.map +1 -1
  29. package/esm/parse/v3-1/schema/toSchemasV3.js +26 -7
  30. package/esm/parse/v3-1/string/toString.d.ts.map +1 -1
  31. package/esm/parse/v3-1/string/toString.js +4 -11
  32. package/esm/types/Manifest.d.ts.map +1 -1
  33. package/esm/types/Manifest.js +14 -0
  34. package/package.json +1 -1
  35. package/script/context/ParseContext.d.ts.map +1 -1
  36. package/script/context/ParseContext.js +10 -0
  37. package/script/context/ParseIssue.d.ts +24 -4
  38. package/script/context/ParseIssue.d.ts.map +1 -1
  39. package/script/context/ParseIssue.js +12 -4
  40. package/script/context/parseTypes.d.ts +23 -1
  41. package/script/context/parseTypes.d.ts.map +1 -1
  42. package/script/oas/operation/Operation.d.ts.map +1 -1
  43. package/script/oas/operation/Operation.js +2 -11
  44. package/script/oas/response/toPrimaryResponseCode.d.ts +19 -0
  45. package/script/oas/response/toPrimaryResponseCode.d.ts.map +1 -0
  46. package/script/oas/response/toPrimaryResponseCode.js +37 -0
  47. package/script/oas/webhook/Webhook.d.ts +40 -3
  48. package/script/oas/webhook/Webhook.d.ts.map +1 -1
  49. package/script/oas/webhook/Webhook.js +52 -3
  50. package/script/parse/v3-0/integer/toInteger.js +4 -1
  51. package/script/parse/v3-0/number/toNumber.js +4 -1
  52. package/script/parse/v3-0/operation/toOperationsV3.d.ts.map +1 -1
  53. package/script/parse/v3-0/operation/toOperationsV3.js +5 -1
  54. package/script/parse/v3-0/schema/toSchemasV3.d.ts.map +1 -1
  55. package/script/parse/v3-0/schema/toSchemasV3.js +27 -1
  56. package/script/parse/v3-0/string/toString.d.ts.map +1 -1
  57. package/script/parse/v3-0/string/toString.js +3 -10
  58. package/script/parse/v3-1/integer/toInteger.js +4 -1
  59. package/script/parse/v3-1/number/toNumber.js +4 -1
  60. package/script/parse/v3-1/operation/toOperationsV3.d.ts.map +1 -1
  61. package/script/parse/v3-1/operation/toOperationsV3.js +5 -1
  62. package/script/parse/v3-1/schema/toSchemasV3.d.ts.map +1 -1
  63. package/script/parse/v3-1/schema/toSchemasV3.js +26 -7
  64. package/script/parse/v3-1/string/toString.d.ts.map +1 -1
  65. package/script/parse/v3-1/string/toString.js +3 -10
  66. package/script/types/Manifest.d.ts.map +1 -1
  67. package/script/types/Manifest.js +14 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ParseContext.d.ts","sourceRoot":"","sources":["../../src/context/ParseContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ParseContext.d.ts","sourceRoot":"","sources":["../../src/context/ParseContext.ts"],"names":[],"mappings":"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"}
@@ -413,6 +413,16 @@ export class ParseContext {
413
413
  }, parent);
414
414
  break;
415
415
  }
416
+ case 'debug': {
417
+ this.logIssueAt({
418
+ protocol,
419
+ level: 'debug',
420
+ type,
421
+ location,
422
+ message: issue.message
423
+ }, parent);
424
+ break;
425
+ }
416
426
  default: {
417
427
  const _exhaustive = issue;
418
428
  throw new Error(`Unhandled parse-issue level: ${JSON.stringify(_exhaustive)}`);
@@ -3,10 +3,18 @@
3
3
  * GraphQL parsing. Each variant stands on its own — no shared base —
4
4
  * so TypeScript narrows cleanly on `protocol` and `level`.
5
5
  *
6
- * `cause?: unknown` is only present on the error variants. Warnings are
7
- * synthesized by the parser with all the information needed for the
8
- * `message`; errors usually wrap a thrown `Error`, which we keep in
9
- * `cause` for debugging without forcing renderers to know about it.
6
+ * `cause?: unknown` is only present on the error variants. Warnings and
7
+ * `debug` issues are synthesized by the parser with all the information
8
+ * needed for the `message`; errors usually wrap a thrown `Error`, which
9
+ * we keep in `cause` for debugging without forcing renderers to know
10
+ * about it.
11
+ *
12
+ * Three severities: `error` (broken — drives exit status), `warning` (a
13
+ * real deviation that was handled, e.g. a 3.0 schema missing `type`), and
14
+ * `debug` (informational — the parser handled the input gracefully and
15
+ * recorded what it assumed or dropped; spec-legal-but-lossy or
16
+ * dialect-benign cases live here). All three are recorded on the manifest;
17
+ * consumers filter `debug` out of the default view.
10
18
  *
11
19
  * `location` is the schema-level address of the issue: for OAS it's the
12
20
  * stringified stack trail (e.g. `components.schemas.User.properties.email`);
@@ -63,6 +71,12 @@ export type ParseIssue = {
63
71
  type: OasIssueType;
64
72
  location: string;
65
73
  message: string;
74
+ } | {
75
+ protocol: 'oas';
76
+ level: 'debug';
77
+ type: OasIssueType;
78
+ location: string;
79
+ message: string;
66
80
  } | {
67
81
  protocol: 'gql';
68
82
  level: 'error';
@@ -76,5 +90,11 @@ export type ParseIssue = {
76
90
  type: GqlIssueType;
77
91
  location: string;
78
92
  message: string;
93
+ } | {
94
+ protocol: 'gql';
95
+ level: 'debug';
96
+ type: GqlIssueType;
97
+ location: string;
98
+ message: string;
79
99
  };
80
100
  //# sourceMappingURL=ParseIssue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ParseIssue.d.ts","sourceRoot":"","sources":["../../src/context/ParseIssue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,yBAAyB,GACzB,iBAAiB,GACjB,yBAAyB,GACzB,wBAAwB,CAAA;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,kYAQvB,CAAA;AAKF,MAAM,MAAM,UAAU,GAClB;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA"}
1
+ {"version":3,"file":"ParseIssue.d.ts","sourceRoot":"","sources":["../../src/context/ParseIssue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,yBAAyB,GACzB,iBAAiB,GACjB,yBAAyB,GACzB,wBAAwB,CAAA;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,kYAQvB,CAAA;AAKF,MAAM,MAAM,UAAU,GAClB;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD;IACE,QAAQ,EAAE,KAAK,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA"}
@@ -3,10 +3,18 @@
3
3
  * GraphQL parsing. Each variant stands on its own — no shared base —
4
4
  * so TypeScript narrows cleanly on `protocol` and `level`.
5
5
  *
6
- * `cause?: unknown` is only present on the error variants. Warnings are
7
- * synthesized by the parser with all the information needed for the
8
- * `message`; errors usually wrap a thrown `Error`, which we keep in
9
- * `cause` for debugging without forcing renderers to know about it.
6
+ * `cause?: unknown` is only present on the error variants. Warnings and
7
+ * `debug` issues are synthesized by the parser with all the information
8
+ * needed for the `message`; errors usually wrap a thrown `Error`, which
9
+ * we keep in `cause` for debugging without forcing renderers to know
10
+ * about it.
11
+ *
12
+ * Three severities: `error` (broken — drives exit status), `warning` (a
13
+ * real deviation that was handled, e.g. a 3.0 schema missing `type`), and
14
+ * `debug` (informational — the parser handled the input gracefully and
15
+ * recorded what it assumed or dropped; spec-legal-but-lossy or
16
+ * dialect-benign cases live here). All three are recorded on the manifest;
17
+ * consumers filter `debug` out of the default view.
10
18
  *
11
19
  * `location` is the schema-level address of the issue: for OAS it's the
12
20
  * stringified stack trail (e.g. `components.schemas.User.properties.email`);
@@ -48,7 +48,17 @@ export type ParseWarningInput = {
48
48
  level: 'warning';
49
49
  message: string;
50
50
  };
51
- export type ParseIssueInput = ParseErrorInput | ParseWarningInput;
51
+ /**
52
+ * Informational diagnostic — the parser handled the input gracefully and
53
+ * is recording what it assumed or dropped (a spec-legal-but-lossy or
54
+ * dialect-benign case). Recorded on the manifest but filtered out of the
55
+ * default view; never affects exit status.
56
+ */
57
+ export type ParseDebugInput = {
58
+ level: 'debug';
59
+ message: string;
60
+ };
61
+ export type ParseIssueInput = ParseErrorInput | ParseWarningInput | ParseDebugInput;
52
62
  /**
53
63
  * Arguments accepted by `ParseContext.logIssue` (StackTrail-based
54
64
  * location, computed via `stackTrail.trace(key, ...)`).
@@ -149,6 +159,12 @@ export type LogIssueAtArgs = {
149
159
  type: OasIssueType;
150
160
  location: string;
151
161
  message: string;
162
+ } | {
163
+ protocol: 'oas';
164
+ level: 'debug';
165
+ type: OasIssueType;
166
+ location: string;
167
+ message: string;
152
168
  } | {
153
169
  protocol: 'gql';
154
170
  level: 'error';
@@ -162,6 +178,12 @@ export type LogIssueAtArgs = {
162
178
  type: GqlIssueType;
163
179
  location: string;
164
180
  message: string;
181
+ } | {
182
+ protocol: 'gql';
183
+ level: 'debug';
184
+ type: GqlIssueType;
185
+ location: string;
186
+ message: string;
165
187
  };
166
188
  /**
167
189
  * Options accepted by the GQL parse phase. Passed through the
@@ -1 +1 @@
1
- {"version":3,"file":"parseTypes.d.ts","sourceRoot":"","sources":["../../src/context/parseTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseTypes.d.ts","sourceRoot":"","sources":["../../src/context/parseTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Operation.d.ts","sourceRoot":"","sources":["../../../src/oas/operation/Operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Operation.d.ts","sourceRoot":"","sources":["../../../src/oas/operation/Operation.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import "../../_dnt.polyfills.js";
2
2
  import { OasObject } from '../object/Object.js';
3
+ import { toPrimaryResponseCode } from '../response/toPrimaryResponseCode.js';
3
4
  import { OasBase } from '../../types/OasBase.js';
4
5
  export class OasOperation extends OasBase {
5
6
  /**
@@ -156,17 +157,7 @@ export class OasOperation extends OasBase {
156
157
  * @returns Success status code as string or undefined if none found
157
158
  */
158
159
  toSuccessResponseCode() {
159
- const successCode = Object.keys(this.responses)
160
- .map(httpCode => parseInt(httpCode))
161
- .sort((a, b) => a - b)
162
- .find(httpCode => httpCode >= 200 && httpCode < 300);
163
- if (successCode) {
164
- return successCode.toString();
165
- }
166
- if (this.responses.default) {
167
- return 'default';
168
- }
169
- return undefined;
160
+ return toPrimaryResponseCode(this.responses);
170
161
  }
171
162
  /**
172
163
  * Maps the request body schema to a custom value using the provided mapping function.
@@ -0,0 +1,19 @@
1
+ import type { OasResponse } from './Response.js';
2
+ import type { OasRef } from '../ref/Ref.js';
3
+ /**
4
+ * The status code of the primary success/ack response in a `responses` map.
5
+ *
6
+ * OpenAPI response keys may be a specific code (`200`), a range (`2XX`, `4XX`,
7
+ * …), or `default`. The primary 2xx is resolved in that order of specificity:
8
+ * 1. the lowest specific `2xx` numeric code,
9
+ * 2. otherwise a `2XX` range key (case-insensitive),
10
+ * 3. otherwise `default`,
11
+ * 4. otherwise `undefined`.
12
+ *
13
+ * `parseInt('2XX')` is `2` (< 200), so the numeric scan never mis-claims a
14
+ * range key — the range step handles it explicitly. Shared by
15
+ * `OasOperation.toSuccessResponseCode` and `OasWebhook.toAckResponseCode` so
16
+ * the two cannot drift.
17
+ */
18
+ export declare const toPrimaryResponseCode: (responses: Record<string, OasResponse | OasRef<"response">>) => string | undefined;
19
+ //# sourceMappingURL=toPrimaryResponseCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toPrimaryResponseCode.d.ts","sourceRoot":"","sources":["../../../src/oas/response/toPrimaryResponseCode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,KAC1D,MAAM,GAAG,SAqBX,CAAA"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * The status code of the primary success/ack response in a `responses` map.
3
+ *
4
+ * OpenAPI response keys may be a specific code (`200`), a range (`2XX`, `4XX`,
5
+ * …), or `default`. The primary 2xx is resolved in that order of specificity:
6
+ * 1. the lowest specific `2xx` numeric code,
7
+ * 2. otherwise a `2XX` range key (case-insensitive),
8
+ * 3. otherwise `default`,
9
+ * 4. otherwise `undefined`.
10
+ *
11
+ * `parseInt('2XX')` is `2` (< 200), so the numeric scan never mis-claims a
12
+ * range key — the range step handles it explicitly. Shared by
13
+ * `OasOperation.toSuccessResponseCode` and `OasWebhook.toAckResponseCode` so
14
+ * the two cannot drift.
15
+ */
16
+ export const toPrimaryResponseCode = (responses) => {
17
+ const keys = Object.keys(responses);
18
+ const [lowest2xx] = keys
19
+ .map(code => parseInt(code))
20
+ .filter(code => code >= 200 && code < 300)
21
+ .sort((a, b) => a - b);
22
+ if (lowest2xx !== undefined) {
23
+ return lowest2xx.toString();
24
+ }
25
+ const range2xx = keys.find(code => /^2XX$/i.test(code));
26
+ if (range2xx !== undefined) {
27
+ return range2xx;
28
+ }
29
+ if (responses.default) {
30
+ return 'default';
31
+ }
32
+ return undefined;
33
+ };
@@ -2,6 +2,8 @@ import "../../_dnt.polyfills.js";
2
2
  import type { Method } from '../../types/Method.js';
3
3
  import type { OasPathItem } from '../pathItem/PathItem.js';
4
4
  import type { OasParameter } from '../parameter/Parameter.js';
5
+ import type { OasParameterLocation } from '../parameter/parameter-types.js';
6
+ import type { OasSchema } from '../schema/Schema.js';
5
7
  import type { OasRequestBody } from '../requestBody/RequestBody.js';
6
8
  import type { OasResponse } from '../response/Response.js';
7
9
  import type { OasRef } from '../ref/Ref.js';
@@ -63,9 +65,12 @@ export type WebhookFields = {
63
65
  * receive one: webhook code generation is a *receiver/handler* concern,
64
66
  * not a client-call concern.
65
67
  *
66
- * This is intentionally a parse-only data class. Webhook-semantic helpers
67
- * (payload schema, ack response, signature verification) accrue when a
68
- * webhook generator needs them (Phase 4), not preemptively.
68
+ * Carries webhook-semantic accessors named for the RECEIVER
69
+ * `toPayload`/`toPayloadSchema` (the received payload), `toParams` (inbound
70
+ * params), `toAckResponse`/`toAckResponseCode` (the ack the handler returns).
71
+ * These deliberately avoid the client-framed {@link OasOperation} names
72
+ * (`toRequestBody`, `toSuccessResponse`) so the inversion stays explicit in
73
+ * generator code. (Signature-verification helpers still accrue on demand.)
69
74
  */
70
75
  export declare class OasWebhook extends OasBase {
71
76
  /** Type identifier for OAS webhook objects */
@@ -101,6 +106,38 @@ export declare class OasWebhook extends OasBase {
101
106
  /** Servers for this webhook */
102
107
  servers: OasServer[] | undefined;
103
108
  constructor(fields: WebhookFields, context?: ParseContextType);
109
+ /**
110
+ * The received-payload body — the request body the API delivers TO the
111
+ * consumer's handler. Webhook semantics are inverted: this is what the
112
+ * handler RECEIVES, not what a client sends. A `$ref` body is resolved.
113
+ */
114
+ toPayload(): OasRequestBody | undefined;
115
+ /**
116
+ * The schema of the received payload for `mediaType` (default
117
+ * `application/json`) — the inbound body shape a handler generator emits a
118
+ * type for. `undefined` when there is no body or no schema for that media
119
+ * type.
120
+ */
121
+ toPayloadSchema(mediaType?: string): OasSchema | OasRef<'schema'> | undefined;
122
+ /**
123
+ * Resolve the inbound parameters (e.g. the signature/headers a handler
124
+ * receives), optionally filtered by location. Mirrors
125
+ * {@link OasOperation.toParams}; the parameters carry the same shape, only
126
+ * their direction is inbound.
127
+ */
128
+ toParams(filter?: OasParameterLocation[]): OasParameter[];
129
+ /**
130
+ * The status code of the primary acknowledgement response — the lowest 2xx
131
+ * the handler returns to ack the delivery, falling back to `default`. Named
132
+ * for the receiver: a webhook's `responses` are what the handler RETURNS,
133
+ * not what a client receives (cf. {@link OasOperation.toSuccessResponseCode}).
134
+ */
135
+ toAckResponseCode(): string | undefined;
136
+ /**
137
+ * The primary acknowledgement response definition (the body/headers the
138
+ * handler returns), or `undefined` when none is declared.
139
+ */
140
+ toAckResponse(): OasResponse | OasRef<'response'> | undefined;
104
141
  /**
105
142
  * Serializes the webhook to a plain JavaScript object.
106
143
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Webhook.d.ts","sourceRoot":"","sources":["../../../src/oas/webhook/Webhook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Webhook.d.ts","sourceRoot":"","sources":["../../../src/oas/webhook/Webhook.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import "../../_dnt.polyfills.js";
2
+ import { toPrimaryResponseCode } from '../response/toPrimaryResponseCode.js';
2
3
  import { OasBase } from '../../types/OasBase.js';
3
4
  /**
4
5
  * Represents an OpenAPI 3.1 webhook — a third OAS subject, peer to
@@ -9,9 +10,12 @@ import { OasBase } from '../../types/OasBase.js';
9
10
  * receive one: webhook code generation is a *receiver/handler* concern,
10
11
  * not a client-call concern.
11
12
  *
12
- * This is intentionally a parse-only data class. Webhook-semantic helpers
13
- * (payload schema, ack response, signature verification) accrue when a
14
- * webhook generator needs them (Phase 4), not preemptively.
13
+ * Carries webhook-semantic accessors named for the RECEIVER
14
+ * `toPayload`/`toPayloadSchema` (the received payload), `toParams` (inbound
15
+ * params), `toAckResponse`/`toAckResponseCode` (the ack the handler returns).
16
+ * These deliberately avoid the client-framed {@link OasOperation} names
17
+ * (`toRequestBody`, `toSuccessResponse`) so the inversion stays explicit in
18
+ * generator code. (Signature-verification helpers still accrue on demand.)
15
19
  */
16
20
  export class OasWebhook extends OasBase {
17
21
  constructor(fields, context) {
@@ -144,6 +148,51 @@ export class OasWebhook extends OasBase {
144
148
  this.extensionFields = fields.extensionFields;
145
149
  this.servers = fields.servers;
146
150
  }
151
+ /**
152
+ * The received-payload body — the request body the API delivers TO the
153
+ * consumer's handler. Webhook semantics are inverted: this is what the
154
+ * handler RECEIVES, not what a client sends. A `$ref` body is resolved.
155
+ */
156
+ toPayload() {
157
+ return this.requestBody?.resolve();
158
+ }
159
+ /**
160
+ * The schema of the received payload for `mediaType` (default
161
+ * `application/json`) — the inbound body shape a handler generator emits a
162
+ * type for. `undefined` when there is no body or no schema for that media
163
+ * type.
164
+ */
165
+ toPayloadSchema(mediaType = 'application/json') {
166
+ return this.toPayload()?.content[mediaType]?.schema;
167
+ }
168
+ /**
169
+ * Resolve the inbound parameters (e.g. the signature/headers a handler
170
+ * receives), optionally filtered by location. Mirrors
171
+ * {@link OasOperation.toParams}; the parameters carry the same shape, only
172
+ * their direction is inbound.
173
+ */
174
+ toParams(filter) {
175
+ return (this.parameters
176
+ ?.map(param => param.resolve())
177
+ .filter(param => (filter?.length ? filter.includes(param.location) : true)) ?? []);
178
+ }
179
+ /**
180
+ * The status code of the primary acknowledgement response — the lowest 2xx
181
+ * the handler returns to ack the delivery, falling back to `default`. Named
182
+ * for the receiver: a webhook's `responses` are what the handler RETURNS,
183
+ * not what a client receives (cf. {@link OasOperation.toSuccessResponseCode}).
184
+ */
185
+ toAckResponseCode() {
186
+ return toPrimaryResponseCode(this.responses);
187
+ }
188
+ /**
189
+ * The primary acknowledgement response definition (the body/headers the
190
+ * handler returns), or `undefined` when none is declared.
191
+ */
192
+ toAckResponse() {
193
+ const ackCode = this.toAckResponseCode();
194
+ return ackCode ? this.responses[ackCode] : undefined;
195
+ }
147
196
  /**
148
197
  * Serializes the webhook to a plain JavaScript object.
149
198
  */
@@ -95,9 +95,12 @@ const parseIntegerFormat = ({ format, context, parent, stackTrail }) => {
95
95
  return undefined;
96
96
  }
97
97
  if (!v.is(integerFormat, format)) {
98
+ // `format` is an open vocabulary; a value the IR's integerFormat can't
99
+ // hold is dropped. Recorded at `debug` — the dropped hint is
100
+ // informational, not a correctness issue.
98
101
  context.logIssue({
99
102
  key: 'format',
100
- level: 'warning',
103
+ level: 'debug',
101
104
  message: `Invalid format: ${format}`,
102
105
  parent,
103
106
  stackTrail,
@@ -95,9 +95,12 @@ const parseNumberFormat = ({ format, context, parent, stackTrail }) => {
95
95
  return undefined;
96
96
  }
97
97
  if (!v.is(numberFormat, format)) {
98
+ // `format` is an open vocabulary; a value the IR's numberFormat can't
99
+ // hold (e.g. `decimal`) is dropped. Recorded at `debug` — the dropped
100
+ // hint is informational, not a correctness issue.
98
101
  context.logIssue({
99
102
  key: 'format',
100
- level: 'warning',
103
+ level: 'debug',
101
104
  message: `Invalid format: ${format}`,
102
105
  parent,
103
106
  stackTrail,
@@ -1 +1 @@
1
- {"version":3,"file":"toOperationsV3.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-0/operation/toOperationsV3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAItE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAOpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,SAAS,CAAC,eAAe,CAAA;IACpC,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAOD,eAAO,MAAM,aAAa,GAAI,mDAK3B,iBAAiB,KAAG,YAmEtB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC,WAAW,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,gCAI5B,kBAAkB,KAAG,YAAY,EA6EnC,CAAA"}
1
+ {"version":3,"file":"toOperationsV3.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-0/operation/toOperationsV3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAItE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAOpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,SAAS,CAAC,eAAe,CAAA;IACpC,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAOD,eAAO,MAAM,aAAa,GAAI,mDAK3B,iBAAiB,KAAG,YAuEtB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC,WAAW,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,gCAI5B,kBAAkB,KAAG,YAAY,EA6EnC,CAAA"}
@@ -11,7 +11,11 @@ import { toExternalDocs } from '../externalDocs/toExternalDocs.js';
11
11
  import { toOptionalServersV3 } from '../server/toServerV3.js';
12
12
  export const toOperationV3 = ({ operation, operationInfo, stackTrail, context }) => {
13
13
  const { method, path, pathItem } = operationInfo;
14
- const { operationId, tags, summary, description, parameters, requestBody, responses, deprecated, security, externalDocs, servers, ...skipped } = operation;
14
+ const { operationId, tags, summary, description, parameters, requestBody, responses, deprecated, security, externalDocs, servers,
15
+ // Callbacks are a deliberate non-goal (no out-of-band callback codegen).
16
+ // Pull it out so it is dropped silently instead of warned as an
17
+ // unexpected property on every operation that declares one.
18
+ callbacks: _callbacks, ...skipped } = operation;
15
19
  const extensionFields = toSpecificationExtensionsV3({
16
20
  skipped,
17
21
  parent: operation,
@@ -1 +1 @@
1
- {"version":3,"file":"toSchemasV3.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-0/schema/toSchemasV3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAarD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;IAC3E,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,kCAIzB,eAAe,KAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAmB/D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;IACvF,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,kCAIjC,uBAAuB,KAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAM3E,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAA;IAC1D,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AA0CD,eAAO,MAAM,UAAU,GAAI,iCAIxB,cAAc,KAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAsN9C,CAAA;AA+CD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAA;IACtE,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,iCAIhC,sBAAsB,KAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,SAM1D,CAAA"}
1
+ {"version":3,"file":"toSchemasV3.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-0/schema/toSchemasV3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAarD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;IAC3E,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,WAAW,GAAI,kCAIzB,eAAe,KAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAmB/D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAA;IACvF,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,kCAIjC,uBAAuB,KAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,SAM3E,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,CAAA;IAC1D,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AA0CD,eAAO,MAAM,UAAU,GAAI,iCAIxB,cAAc,KAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAoP9C,CAAA;AA+CD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,SAAS,CAAC,eAAe,GAAG,SAAS,CAAC,YAAY,GAAG,SAAS,CAAA;IACtE,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,iCAIhC,sBAAsB,KAAG,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,SAM1D,CAAA"}
@@ -75,6 +75,27 @@ export const toSchemaV3 = ({ schema, stackTrail, context }) => {
75
75
  }
76
76
  if ('allOf' in schema && Array.isArray(schema.allOf)) {
77
77
  return stackTrail.trace('allOf', st => {
78
+ // A single-member allOf collapses to its sole member — the value must
79
+ // satisfy exactly that one schema. When the member is a `$ref`, keep it
80
+ // LAZY (as an OasRef) rather than resolving + merging its target: a
81
+ // `{ allOf: [{$ref: self}], nullable: true }` (a nullable reference
82
+ // written as a one-member allOf — common in real specs) is
83
+ // self-referential, and eagerly resolving it would not terminate. The
84
+ // ref resolves at use time like every other ref. This mirrors the
85
+ // single-member oneOf/anyOf handling below.
86
+ const { allOf, ...value } = schema;
87
+ const members = allOf ?? [];
88
+ if (members.length === 1) {
89
+ const [member] = members;
90
+ if (isRef(member) && value.nullable) {
91
+ return toRefV31({ ref: member, refType: 'schema', nullable: true, stackTrail: st, context });
92
+ }
93
+ return toSchemaV3({
94
+ schema: collapseSingleMember(value, member),
95
+ stackTrail: st,
96
+ context
97
+ });
98
+ }
78
99
  const merged = mergeIntersection({
79
100
  schema,
80
101
  getRef: toGetRef(context.documentObject)
@@ -185,8 +206,13 @@ export const toSchemaV3 = ({ schema, stackTrail, context }) => {
185
206
  }
186
207
  // Otherwise cases
187
208
  if (possibleObject(schema)) {
209
+ // 3.0 requires `type`, so its absence is a real (if benign) deviation —
210
+ // recorded at `debug` rather than `warning`: `properties` makes the
211
+ // intent unambiguous and inferring `object` is reliable, so it is noise
212
+ // in the default view but worth keeping in the record. (The v3-1 parser
213
+ // is silent here — type-less is valid in 3.1.)
188
214
  context.logIssueNoKey({
189
- level: 'warning',
215
+ level: 'debug',
190
216
  message: 'Object has "properties" property, but is missing type="object" property',
191
217
  parent: schema,
192
218
  stackTrail,
@@ -1 +1 @@
1
- {"version":3,"file":"toString.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-0/string/toString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAQzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,wEAAwE;IACxE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAA;IAC7B,kCAAkC;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,iEAAiE;IACjE,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,eAAO,MAAM,QAAQ,GAAI,gCAAgC,YAAY,KAAG,SAwDvE,CAAA;AAED,KAAK,kBAAkB,CAAC,QAAQ,SAAS,OAAO,GAAG,SAAS,IAAI;IAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;IACjF,OAAO,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,QAAQ,SAAS,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/E,KAAK,EAAE,QAAQ,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;IACnF,YAAY,EAAE,QAAQ,SAAS,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACpF,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,OAAO,GAAG,SAAS,EAAE,wEAQlE,kBAAkB,CAAC,QAAQ,CAAC,KAAG,SAAS,CAAC,QAAQ,CA2DnD,CAAA"}
1
+ {"version":3,"file":"toString.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-0/string/toString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AAQzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,wEAAwE;IACxE,KAAK,EAAE,SAAS,CAAC,YAAY,CAAA;IAC7B,kCAAkC;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,iEAAiE;IACjE,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,eAAO,MAAM,QAAQ,GAAI,gCAAgC,YAAY,KAAG,SAwDvE,CAAA;AAED,KAAK,kBAAkB,CAAC,QAAQ,SAAS,OAAO,GAAG,SAAS,IAAI;IAC9D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;IACjF,OAAO,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,EAAE,QAAQ,SAAS,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IAC/E,KAAK,EAAE,QAAQ,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;IACnF,YAAY,EAAE,QAAQ,SAAS,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAA;IACpF,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,OAAO,GAAG,SAAS,EAAE,wEAQlE,kBAAkB,CAAC,QAAQ,CAAC,KAAG,SAAS,CAAC,QAAQ,CAoDnD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { OasString } from '../../../oas/string/String.js';
2
2
  import { toSpecificationExtensionsV3 } from '../specificationExtensions/toSpecificationExtensionsV3.js';
3
- import { oasStringData, stringFormat } from '../../../oas/string/string-types.js';
3
+ import { oasStringData } from '../../../oas/string/string-types.js';
4
4
  import * as v from 'valibot';
5
5
  import { parseNullable } from '../_helpers/parseNullable.js';
6
6
  import { parseEnum } from '../_helpers/parseEnum.js';
@@ -186,16 +186,9 @@ export const toParsedString = ({ context, nullable, example, enums, defaultValue
186
186
  stackTrail,
187
187
  parentType: 'schema:string'
188
188
  });
189
- if (format && !v.is(stringFormat, format)) {
190
- context.logIssue({
191
- key: 'format',
192
- level: 'warning',
193
- message: `Unexpected format: ${format}`,
194
- parent: value,
195
- stackTrail,
196
- type: 'UNEXPECTED_FORMAT'
197
- });
198
- }
189
+ // `format` is an open vocabulary — custom string formats (e.g. `decimal`,
190
+ // `utc_datetime`) are spec-legal. The value is preserved on the OasString
191
+ // below, so an unrecognised format is passed through, not warned.
199
192
  return context.withStackTrail(stackTrail, () => new OasString({
200
193
  title,
201
194
  description,
@@ -95,9 +95,12 @@ const parseIntegerFormat = ({ format, context, parent, stackTrail }) => {
95
95
  return undefined;
96
96
  }
97
97
  if (!v.is(integerFormat, format)) {
98
+ // `format` is an open vocabulary; a value the IR's integerFormat can't
99
+ // hold is dropped. Recorded at `debug` — the dropped hint is
100
+ // informational, not a correctness issue.
98
101
  context.logIssue({
99
102
  key: 'format',
100
- level: 'warning',
103
+ level: 'debug',
101
104
  message: `Invalid format: ${format}`,
102
105
  parent,
103
106
  stackTrail,
@@ -95,9 +95,12 @@ const parseNumberFormat = ({ format, context, parent, stackTrail }) => {
95
95
  return undefined;
96
96
  }
97
97
  if (!v.is(numberFormat, format)) {
98
+ // `format` is an open vocabulary; a value the IR's numberFormat can't
99
+ // hold (e.g. `decimal`) is dropped. Recorded at `debug` — the dropped
100
+ // hint is informational, not a correctness issue.
98
101
  context.logIssue({
99
102
  key: 'format',
100
- level: 'warning',
103
+ level: 'debug',
101
104
  message: `Invalid format: ${format}`,
102
105
  parent,
103
106
  stackTrail,
@@ -1 +1 @@
1
- {"version":3,"file":"toOperationsV3.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-1/operation/toOperationsV3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAItE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAOpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,SAAS,CAAC,eAAe,CAAA;IACpC,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAOD,eAAO,MAAM,aAAa,GAAI,mDAK3B,iBAAiB,KAAG,YAmEtB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAG/B,KAAK,EAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAA;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,gCAI5B,kBAAkB,KAAG,YAAY,EAiFnC,CAAA"}
1
+ {"version":3,"file":"toOperationsV3.d.ts","sourceRoot":"","sources":["../../../../src/parse/v3-1/operation/toOperationsV3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAItE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAA;AAOpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,KAAK,aAAa,GAAG;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,SAAS,CAAC,eAAe,CAAA;IACpC,aAAa,EAAE,aAAa,CAAA;IAC5B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAOD,eAAO,MAAM,aAAa,GAAI,mDAK3B,iBAAiB,KAAG,YAuEtB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAG/B,KAAK,EAAE,SAAS,CAAC,WAAW,GAAG,SAAS,CAAA;IACxC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,gBAAgB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,gCAI5B,kBAAkB,KAAG,YAAY,EAiFnC,CAAA"}
@@ -11,7 +11,11 @@ import { toExternalDocs } from '../externalDocs/toExternalDocs.js';
11
11
  import { toOptionalServersV3 } from '../server/toServerV3.js';
12
12
  export const toOperationV3 = ({ operation, operationInfo, stackTrail, context }) => {
13
13
  const { method, path, pathItem } = operationInfo;
14
- const { operationId, tags, summary, description, parameters, requestBody, responses, deprecated, security, externalDocs, servers, ...skipped } = operation;
14
+ const { operationId, tags, summary, description, parameters, requestBody, responses, deprecated, security, externalDocs, servers,
15
+ // Callbacks are a deliberate non-goal (no out-of-band callback codegen).
16
+ // Pull it out so it is dropped silently instead of warned as an
17
+ // unexpected property on every operation that declares one.
18
+ callbacks: _callbacks, ...skipped } = operation;
15
19
  const extensionFields = toSpecificationExtensionsV3({
16
20
  skipped,
17
21
  parent: operation,