@thymian/plugin-openapi 0.1.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.
Files changed (118) hide show
  1. package/README.md +11 -0
  2. package/dist/cli/commands/openapi/info.d.ts +10 -0
  3. package/dist/cli/commands/openapi/info.d.ts.map +1 -0
  4. package/dist/cli/commands/openapi/info.js +35 -0
  5. package/dist/cli/commands/openapi/info.js.map +1 -0
  6. package/dist/cli/commands/openapi/load.d.ts +10 -0
  7. package/dist/cli/commands/openapi/load.d.ts.map +1 -0
  8. package/dist/cli/commands/openapi/load.js +32 -0
  9. package/dist/cli/commands/openapi/load.js.map +1 -0
  10. package/dist/cli/commands/openapi/validate.d.ts +10 -0
  11. package/dist/cli/commands/openapi/validate.d.ts.map +1 -0
  12. package/dist/cli/commands/openapi/validate.js +28 -0
  13. package/dist/cli/commands/openapi/validate.js.map +1 -0
  14. package/dist/cli/init-hook.d.ts +5 -0
  15. package/dist/cli/init-hook.d.ts.map +1 -0
  16. package/dist/cli/init-hook.js +55 -0
  17. package/dist/cli/init-hook.js.map +1 -0
  18. package/dist/cli/spec-search-hook.d.ts +4 -0
  19. package/dist/cli/spec-search-hook.d.ts.map +1 -0
  20. package/dist/cli/spec-search-hook.js +11 -0
  21. package/dist/cli/spec-search-hook.js.map +1 -0
  22. package/dist/error.d.ts +4 -0
  23. package/dist/error.d.ts.map +1 -0
  24. package/dist/error.js +4 -0
  25. package/dist/error.js.map +1 -0
  26. package/dist/http-filter-expression-to-operation-filter.d.ts +14 -0
  27. package/dist/http-filter-expression-to-operation-filter.d.ts.map +1 -0
  28. package/dist/http-filter-expression-to-operation-filter.js +221 -0
  29. package/dist/http-filter-expression-to-operation-filter.js.map +1 -0
  30. package/dist/index.d.ts +51 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +116 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/load-openapi.d.ts +27 -0
  35. package/dist/load-openapi.d.ts.map +1 -0
  36. package/dist/load-openapi.js +76 -0
  37. package/dist/load-openapi.js.map +1 -0
  38. package/dist/loc-mapper/json-loc-mapper.d.ts +15 -0
  39. package/dist/loc-mapper/json-loc-mapper.d.ts.map +1 -0
  40. package/dist/loc-mapper/json-loc-mapper.js +105 -0
  41. package/dist/loc-mapper/json-loc-mapper.js.map +1 -0
  42. package/dist/loc-mapper/loc-mapper-for-file.d.ts +4 -0
  43. package/dist/loc-mapper/loc-mapper-for-file.d.ts.map +1 -0
  44. package/dist/loc-mapper/loc-mapper-for-file.js +20 -0
  45. package/dist/loc-mapper/loc-mapper-for-file.js.map +1 -0
  46. package/dist/loc-mapper/loc-mapper.d.ts +9 -0
  47. package/dist/loc-mapper/loc-mapper.d.ts.map +1 -0
  48. package/dist/loc-mapper/loc-mapper.js +22 -0
  49. package/dist/loc-mapper/loc-mapper.js.map +1 -0
  50. package/dist/loc-mapper/noop-loc-mapper.d.ts +6 -0
  51. package/dist/loc-mapper/noop-loc-mapper.d.ts.map +1 -0
  52. package/dist/loc-mapper/noop-loc-mapper.js +10 -0
  53. package/dist/loc-mapper/noop-loc-mapper.js.map +1 -0
  54. package/dist/loc-mapper/yaml-loc-mapper.d.ts +13 -0
  55. package/dist/loc-mapper/yaml-loc-mapper.d.ts.map +1 -0
  56. package/dist/loc-mapper/yaml-loc-mapper.js +105 -0
  57. package/dist/loc-mapper/yaml-loc-mapper.js.map +1 -0
  58. package/dist/processors/extract-server-info.d.ts +10 -0
  59. package/dist/processors/extract-server-info.d.ts.map +1 -0
  60. package/dist/processors/extract-server-info.js +40 -0
  61. package/dist/processors/extract-server-info.js.map +1 -0
  62. package/dist/processors/headers-object.processor.d.ts +4 -0
  63. package/dist/processors/headers-object.processor.d.ts.map +1 -0
  64. package/dist/processors/headers-object.processor.js +20 -0
  65. package/dist/processors/headers-object.processor.js.map +1 -0
  66. package/dist/processors/json-schema.processor.d.ts +19 -0
  67. package/dist/processors/json-schema.processor.d.ts.map +1 -0
  68. package/dist/processors/json-schema.processor.js +40 -0
  69. package/dist/processors/json-schema.processor.js.map +1 -0
  70. package/dist/processors/link-object.processor.d.ts +5 -0
  71. package/dist/processors/link-object.processor.d.ts.map +1 -0
  72. package/dist/processors/link-object.processor.js +58 -0
  73. package/dist/processors/link-object.processor.js.map +1 -0
  74. package/dist/processors/media-type-object.processor.d.ts +9 -0
  75. package/dist/processors/media-type-object.processor.d.ts.map +1 -0
  76. package/dist/processors/media-type-object.processor.js +43 -0
  77. package/dist/processors/media-type-object.processor.js.map +1 -0
  78. package/dist/processors/openapi.processor.d.ts +27 -0
  79. package/dist/processors/openapi.processor.d.ts.map +1 -0
  80. package/dist/processors/openapi.processor.js +166 -0
  81. package/dist/processors/openapi.processor.js.map +1 -0
  82. package/dist/processors/parameter-object.processor.d.ts +6 -0
  83. package/dist/processors/parameter-object.processor.d.ts.map +1 -0
  84. package/dist/processors/parameter-object.processor.js +90 -0
  85. package/dist/processors/parameter-object.processor.js.map +1 -0
  86. package/dist/processors/request-body-object.processor.d.ts +14 -0
  87. package/dist/processors/request-body-object.processor.d.ts.map +1 -0
  88. package/dist/processors/request-body-object.processor.js +61 -0
  89. package/dist/processors/request-body-object.processor.js.map +1 -0
  90. package/dist/processors/response-object.processor.d.ts +12 -0
  91. package/dist/processors/response-object.processor.d.ts.map +1 -0
  92. package/dist/processors/response-object.processor.js +44 -0
  93. package/dist/processors/response-object.processor.js.map +1 -0
  94. package/dist/processors/responses-object.processor.d.ts +5 -0
  95. package/dist/processors/responses-object.processor.d.ts.map +1 -0
  96. package/dist/processors/responses-object.processor.js +27 -0
  97. package/dist/processors/responses-object.processor.js.map +1 -0
  98. package/dist/processors/runtime-expression.processor.d.ts +4 -0
  99. package/dist/processors/runtime-expression.processor.d.ts.map +1 -0
  100. package/dist/processors/runtime-expression.processor.js +24 -0
  101. package/dist/processors/runtime-expression.processor.js.map +1 -0
  102. package/dist/processors/security-scheme-object.processor.d.ts +4 -0
  103. package/dist/processors/security-scheme-object.processor.d.ts.map +1 -0
  104. package/dist/processors/security-scheme-object.processor.js +50 -0
  105. package/dist/processors/security-scheme-object.processor.js.map +1 -0
  106. package/dist/processors/utils.d.ts +9 -0
  107. package/dist/processors/utils.d.ts.map +1 -0
  108. package/dist/processors/utils.js +21 -0
  109. package/dist/processors/utils.js.map +1 -0
  110. package/dist/runtime-expression.d.ts +8 -0
  111. package/dist/runtime-expression.d.ts.map +1 -0
  112. package/dist/runtime-expression.js +2 -0
  113. package/dist/runtime-expression.js.map +1 -0
  114. package/dist/search-for-openapi-files.d.ts +8 -0
  115. package/dist/search-for-openapi-files.d.ts.map +1 -0
  116. package/dist/search-for-openapi-files.js +44 -0
  117. package/dist/search-for-openapi-files.js.map +1 -0
  118. package/package.json +43 -0
@@ -0,0 +1,40 @@
1
+ export const defaultServerInfo = {
2
+ basePath: '',
3
+ host: 'localhost',
4
+ port: 8080,
5
+ protocol: 'http',
6
+ };
7
+ export function extractServerInfo(serverObjects = [], defaultInfo = defaultServerInfo) {
8
+ const serverInfo = {
9
+ ...defaultInfo,
10
+ };
11
+ const localServer = serverObjects.find((serverObject) => {
12
+ serverObject.url.includes('localhost');
13
+ }) ?? serverObjects[0];
14
+ if (localServer) {
15
+ const urlWithVariables = localServer.url.replaceAll(/\{(.*?)}/g, (match, variable) => {
16
+ if (localServer?.variables?.[variable]) {
17
+ return (localServer.variables[variable].default ??
18
+ localServer.variables[variable].enum?.[0] ??
19
+ match);
20
+ }
21
+ return match;
22
+ });
23
+ try {
24
+ const url = new URL(urlWithVariables);
25
+ serverInfo.host = url.hostname;
26
+ serverInfo.port = url.port
27
+ ? parseInt(url.port)
28
+ : url.protocol === 'https:'
29
+ ? 443
30
+ : 80;
31
+ serverInfo.protocol = url.protocol.replace(':', '');
32
+ serverInfo.basePath = url.pathname;
33
+ }
34
+ catch (_) {
35
+ /**/
36
+ }
37
+ }
38
+ return serverInfo;
39
+ }
40
+ //# sourceMappingURL=extract-server-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-server-info.js","sourceRoot":"","sources":["../../src/processors/extract-server-info.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,MAAM;CACjB,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,gBAA2C,EAAE,EAC7C,cAA0B,iBAAiB;IAE3C,MAAM,UAAU,GAAe;QAC7B,GAAG,WAAW;KACf,CAAC;IAEF,MAAM,WAAW,GACf,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;QAClC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;IAEzB,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CACjD,WAAW,EACX,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAClB,IAAI,WAAW,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,OAAO,CACL,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO;oBACvC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzC,KAAK,CACN,CAAC;YACJ,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CACF,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAEtC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC/B,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;gBACxB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBACpB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ;oBACzB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,EAAE,CAAC;YACT,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CACxC,GAAG,EACH,EAAE,CACuB,CAAC;YAC5B,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI;QACN,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Parameter } from '@thymian/core';
2
+ import type { OpenAPIV3_1 as OpenApiV31 } from 'openapi-types';
3
+ export declare function processHeadersObject(headersObject: Record<string, OpenApiV31.HeaderObject> | undefined, ignoreContentTypeHeader?: boolean): Record<string, Parameter>;
4
+ //# sourceMappingURL=headers-object.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers-object.processor.d.ts","sourceRoot":"","sources":["../../src/processors/headers-object.processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AAI/D,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,EAElE,uBAAuB,UAAO,GAC7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAoB3B"}
@@ -0,0 +1,20 @@
1
+ import { processParameterObject } from './parameter-object.processor.js';
2
+ export function processHeadersObject(headersObject,
3
+ // https://swagger.io/specification/v3/#response-object
4
+ ignoreContentTypeHeader = true) {
5
+ return Object.entries(headersObject ?? {}).reduce((acc, [name, headerObject]) => {
6
+ if (ignoreContentTypeHeader && name.toLowerCase() === 'content-type') {
7
+ return acc;
8
+ }
9
+ const [, parameter] = processParameterObject({
10
+ ...headerObject,
11
+ name,
12
+ in: 'header',
13
+ });
14
+ return {
15
+ ...acc,
16
+ [name]: parameter,
17
+ };
18
+ }, {});
19
+ }
20
+ //# sourceMappingURL=headers-object.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers-object.processor.js","sourceRoot":"","sources":["../../src/processors/headers-object.processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,MAAM,UAAU,oBAAoB,CAClC,aAAkE;AAClE,uDAAuD;AACvD,uBAAuB,GAAG,IAAI;IAE9B,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,MAAM,CAC/C,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE;QAC5B,IAAI,uBAAuB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,EAAE,CAAC;YACrE,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,sBAAsB,CAAC;YAC3C,GAAG,YAAY;YACf,IAAI;YACJ,EAAE,EAAE,QAAQ;SACb,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,GAAG;YACN,CAAC,IAAI,CAAC,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC,EACD,EAA+B,CAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type ThymianSchema } from '@thymian/core';
2
+ import type { OpenAPIV3_1 as OpenAPIV31 } from 'openapi-types';
3
+ export type Draft202012SchemaObject = OpenAPIV31.SchemaObject & {
4
+ prefixItems?: Draft202012SchemaObject[];
5
+ unevaluatedItems?: boolean;
6
+ contains?: Draft202012SchemaObject;
7
+ minContains?: number;
8
+ maxContains?: number;
9
+ patternProperties?: {
10
+ [pattern: string]: Draft202012SchemaObject;
11
+ };
12
+ unevaluatedProperties?: boolean;
13
+ exclusiveMaximum?: number;
14
+ exclusiveMinimum?: number;
15
+ contentEncoding?: string;
16
+ } & boolean;
17
+ export declare function processSchema(schema: Draft202012SchemaObject): ThymianSchema;
18
+ export declare function addExampleToSchema(schema: ThymianSchema, example: unknown): ThymianSchema;
19
+ //# sourceMappingURL=json-schema.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.processor.d.ts","sourceRoot":"","sources":["../../src/processors/json-schema.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AAa/D,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC,YAAY,GAAG;IAC9D,WAAW,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE;QAClB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAAC;KAC5C,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC;AAEZ,wBAAgB,aAAa,CAAC,MAAM,EAAE,uBAAuB,GAAG,aAAa,CA4B5E;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,OAAO,GACf,aAAa,CAMf"}
@@ -0,0 +1,40 @@
1
+ import { isRecord } from '@thymian/core';
2
+ import traverse from 'traverse';
3
+ const keysToRemove = new Set([
4
+ 'nullable',
5
+ 'example',
6
+ 'deprecated',
7
+ 'discriminator',
8
+ 'externalDocs',
9
+ 'readOnly',
10
+ 'writeOnly',
11
+ ]);
12
+ export function processSchema(schema) {
13
+ // https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-01#name-boolean-json-schemas
14
+ if (schema === false) {
15
+ return { not: {} };
16
+ }
17
+ if (schema === true) {
18
+ return {};
19
+ }
20
+ return traverse(schema).map(function (node) {
21
+ if (!this.isLeaf && isRecord(node) && node['example']) {
22
+ node.examples ??= [];
23
+ if (!Array.isArray(node.examples)) {
24
+ throw new Error(`Property "examples" must be an array but got type ${typeof node.examples}.`);
25
+ }
26
+ node.examples.push(node.example);
27
+ this.update(node, !!this.circular);
28
+ }
29
+ if (this.key && keysToRemove.has(this.key)) {
30
+ this.remove(!!this.circular);
31
+ }
32
+ });
33
+ }
34
+ export function addExampleToSchema(schema, example) {
35
+ if (isRecord(schema) && typeof example !== 'undefined') {
36
+ (schema.examples ??= []).push(example);
37
+ }
38
+ return schema;
39
+ }
40
+ //# sourceMappingURL=json-schema.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.processor.js","sourceRoot":"","sources":["../../src/processors/json-schema.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAE7D,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,UAAU;IACV,SAAS;IACT,YAAY;IACZ,eAAe;IACf,cAAc;IACd,UAAU;IACV,WAAW;CACZ,CAAC,CAAC;AAiBH,MAAM,UAAU,aAAa,CAAC,MAA+B;IAC3D,+FAA+F;IAC/F,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,KAAK,EAAE,CAAC;YAErB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,qDAAqD,OAAO,IAAI,CAAC,QAAQ,GAAG,CAC7E,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,MAAqB,EACrB,OAAgB;IAEhB,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACvD,CAAC,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { HttpLink, ThymianHttpRequest } from '@thymian/core';
2
+ import type { RunExpression } from '../runtime-expression.js';
3
+ export declare function findPartsInRequest(req: ThymianHttpRequest, name: string): string[];
4
+ export declare function processLinkObjectParameters(parameters: Record<string, unknown | RunExpression> | undefined, req: ThymianHttpRequest): Pick<HttpLink, 'pathParameters' | 'queryParameters' | 'headers' | 'cookies'>;
5
+ //# sourceMappingURL=link-object.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-object.processor.d.ts","sourceRoot":"","sources":["../../src/processors/link-object.processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM9D,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,MAAM,GACX,MAAM,EAAE,CAoBV;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,CAAC,GAAG,SAAS,EAC/D,GAAG,EAAE,kBAAkB,GACtB,IAAI,CACL,QAAQ,EACR,gBAAgB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAC7D,CA+CA"}
@@ -0,0 +1,58 @@
1
+ import { isOpenApiRuntimeExpression, processOpenApiRuntimeExpression, } from './runtime-expression.processor.js';
2
+ export function findPartsInRequest(req, name) {
3
+ const parts = [];
4
+ if (name in req.queryParameters) {
5
+ parts.push('query');
6
+ }
7
+ if (name in req.pathParameters) {
8
+ parts.push('path');
9
+ }
10
+ if (name in req.cookies) {
11
+ parts.push('cookie');
12
+ }
13
+ if (name in req.headers) {
14
+ parts.push('header');
15
+ }
16
+ return parts;
17
+ }
18
+ export function processLinkObjectParameters(parameters, req) {
19
+ const result = {
20
+ pathParameters: {},
21
+ queryParameters: {},
22
+ headers: {},
23
+ cookies: {},
24
+ };
25
+ if (!parameters) {
26
+ return result;
27
+ }
28
+ for (const [key, value] of Object.entries(parameters)) {
29
+ const match = /((path|header|cookie|query).)?(.+)/gm.exec(key);
30
+ if (!match) {
31
+ continue;
32
+ }
33
+ const [, , part, name] = match;
34
+ if (!name) {
35
+ continue;
36
+ }
37
+ const finalValue = isOpenApiRuntimeExpression(value)
38
+ ? processOpenApiRuntimeExpression(value)
39
+ : value;
40
+ const parts = part ? [part] : findPartsInRequest(req, name);
41
+ parts.forEach((part) => {
42
+ if (part === 'cookie') {
43
+ result.cookies[name] = finalValue;
44
+ }
45
+ else if (part === 'path') {
46
+ result.pathParameters[name] = finalValue;
47
+ }
48
+ else if (part === 'query') {
49
+ result.queryParameters[name] = finalValue;
50
+ }
51
+ else {
52
+ result.headers[name] = finalValue;
53
+ }
54
+ });
55
+ }
56
+ return result;
57
+ }
58
+ //# sourceMappingURL=link-object.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-object.processor.js","sourceRoot":"","sources":["../../src/processors/link-object.processor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAE3C,MAAM,UAAU,kBAAkB,CAChC,GAAuB,EACvB,IAAY;IAEZ,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,IAAI,IAAI,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,IAAI,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAA+D,EAC/D,GAAuB;IAKvB,MAAM,MAAM,GAER;QACF,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE;QACnB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,CAAC,EAAE,AAAD,EAAG,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC;YAClD,CAAC,CAAC,+BAA+B,CAAC,KAAK,CAAC;YACxC,CAAC,CAAC,KAAK,CAAC;QAEV,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;YACpC,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type Encoding, type Parameter, type SerializationStyle, type ThymianSchema } from '@thymian/core';
2
+ import type { OpenAPIV3_1 as OpenApiV31 } from 'openapi-types';
3
+ export declare function extractSerializationStyle(encodingObj: OpenApiV31.EncodingObject): SerializationStyle;
4
+ export declare function processMediaTypeObject(mediaTypeObject: OpenApiV31.MediaTypeObject, addEncodings?: boolean, isMultipart?: boolean): {
5
+ schema?: ThymianSchema;
6
+ headers: Record<string, Parameter>;
7
+ encoding?: Encoding;
8
+ };
9
+ //# sourceMappingURL=media-type-object.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-type-object.processor.d.ts","sourceRoot":"","sources":["../../src/processors/media-type-object.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AAS/D,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,UAAU,CAAC,cAAc,GACrC,kBAAkB,CAQpB;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,UAAU,CAAC,eAAe,EAC3C,YAAY,UAAQ,EACpB,WAAW,UAAQ,GAClB;IACD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAkDA"}
@@ -0,0 +1,43 @@
1
+ import { SerializationStyleBuilder, } from '@thymian/core';
2
+ import { processHeadersObject } from './headers-object.processor.js';
3
+ import { addExampleToSchema, processSchema, } from './json-schema.processor.js';
4
+ export function extractSerializationStyle(encodingObj) {
5
+ const style = encodingObj.style ?? 'form';
6
+ const explode = encodingObj.explode ?? style === 'form';
7
+ return new SerializationStyleBuilder(style, explode).build();
8
+ }
9
+ export function processMediaTypeObject(mediaTypeObject, addEncodings = false, isMultipart = false) {
10
+ const schema = mediaTypeObject.schema
11
+ ? processSchema(mediaTypeObject.schema)
12
+ : undefined;
13
+ if (schema) {
14
+ Object.values(mediaTypeObject.examples ?? {}).forEach((example) => {
15
+ addExampleToSchema(schema, example.value);
16
+ });
17
+ }
18
+ let headers = {};
19
+ if (isMultipart && mediaTypeObject.encoding) {
20
+ Object.values(mediaTypeObject.encoding).forEach((encodingObject) => {
21
+ headers = processHeadersObject(encodingObject.headers);
22
+ });
23
+ }
24
+ if (schema) {
25
+ addExampleToSchema(schema, mediaTypeObject.example);
26
+ }
27
+ const result = {
28
+ headers,
29
+ schema,
30
+ };
31
+ if (addEncodings) {
32
+ result.encoding = Object.entries(mediaTypeObject.encoding ?? {}).reduce((acc, [propertyName, encodingObj]) => ({
33
+ ...acc,
34
+ [propertyName]: {
35
+ contentType: encodingObj.contentType,
36
+ headers: processHeadersObject(encodingObj.headers),
37
+ serializationStyle: extractSerializationStyle(encodingObj),
38
+ },
39
+ }), {});
40
+ }
41
+ return result;
42
+ }
43
+ //# sourceMappingURL=media-type-object.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-type-object.processor.js","sourceRoot":"","sources":["../../src/processors/media-type-object.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,yBAAyB,GAE1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,kBAAkB,EAElB,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,MAAM,UAAU,yBAAyB,CACvC,WAAsC;IAEtC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC;IAExD,OAAO,IAAI,yBAAyB,CAClC,KAAoC,EACpC,OAAO,CACR,CAAC,KAAK,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,eAA2C,EAC3C,YAAY,GAAG,KAAK,EACpB,WAAW,GAAG,KAAK;IAMnB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM;QACnC,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,MAAiC,CAAC;QAClE,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAChE,kBAAkB,CAAC,MAAM,EAAG,OAAoC,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,GAA8B,EAAE,CAAC;IAC5C,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;YACjE,OAAO,GAAG,oBAAoB,CAC5B,cAAc,CAAC,OAAkD,CAClE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,kBAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,MAAM,GAIR;QACF,OAAO;QACP,MAAM;KACP,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CACrE,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,GAAG,GAAG;YACN,CAAC,YAAY,CAAC,EAAE;gBACd,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,OAAO,EAAE,oBAAoB,CAC3B,WAAW,CAAC,OAAkD,CAC/D;gBACD,kBAAkB,EAAE,yBAAyB,CAAC,WAAW,CAAC;aAC3D;SACF,CAAC,EACF,EAAc,CACf,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { type HttpFilterExpression, type Logger, ThymianFormat } from '@thymian/core';
2
+ import type { OpenAPIV3_1 as OpenApiV31 } from 'openapi-types';
3
+ import type { LocMapper } from '../loc-mapper/loc-mapper.js';
4
+ import { type ServerInfo } from './extract-server-info.js';
5
+ export type OpenapiV30ParserOptions = ServerInfo;
6
+ export type LinkObjectToProcess = {
7
+ linkObj: OpenApiV31.LinkObject;
8
+ name: string;
9
+ responseIds: string[];
10
+ };
11
+ export declare const supportedMethods: string[];
12
+ export declare class OpenapiProcessor {
13
+ private readonly logger;
14
+ private readonly options;
15
+ private readonly locMapper;
16
+ private readonly format;
17
+ private readonly linkObjects;
18
+ private readonly securitySchemeToNodeId;
19
+ private globalSecuritySchemes;
20
+ private sourceName;
21
+ constructor(logger: Logger, options: OpenapiV30ParserOptions, locMapper: LocMapper, format?: ThymianFormat);
22
+ private processLinkObject;
23
+ private processOperationObject;
24
+ process(document: OpenApiV31.Document, filter: HttpFilterExpression, sourceName?: string): ThymianFormat;
25
+ }
26
+ export type OperationObjectFilterFn = (operationObject: OpenApiV31.OperationObject, document: OpenApiV31.Document) => boolean;
27
+ //# sourceMappingURL=openapi.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.processor.d.ts","sourceRoot":"","sources":["../../src/processors/openapi.processor.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,MAAM,EACX,aAAa,EAEd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAQ9E,MAAM,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAS5B,CAAC;AAKF,qBAAa,gBAAgB;IAUzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IAEzD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA8B;IAErE,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,OAAO,CAAC,UAAU,CAAU;gBAGT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,SAAS,EACpB,MAAM,gBAAsB;IAG/C,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,sBAAsB;IAsGvB,OAAO,CACZ,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAC7B,MAAM,EAAE,oBAAoB,EAC5B,UAAU,GAAE,MAA4B,GACvC,aAAa;CA+EjB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACpC,eAAe,EAAE,UAAU,CAAC,eAAe,EAC3C,QAAQ,EAAE,UAAU,CAAC,QAAQ,KAC1B,OAAO,CAAC"}
@@ -0,0 +1,166 @@
1
+ import { join } from 'node:path';
2
+ import { isNodeType, ThymianFormat, } from '@thymian/core';
3
+ import { httpFilterExpressionToOperationFilter } from '../http-filter-expression-to-operation-filter.js';
4
+ import { extractServerInfo } from './extract-server-info.js';
5
+ import { processLinkObjectParameters } from './link-object.processor.js';
6
+ import { processParameterObjects } from './parameter-object.processor.js';
7
+ import { processRequestBodyObjet } from './request-body-object.processor.js';
8
+ import { processResponsesObject } from './responses-object.processor.js';
9
+ import { processSecuritySchemes } from './security-scheme-object.processor.js';
10
+ import { mergeParameters } from './utils.js';
11
+ export const supportedMethods = [
12
+ 'get',
13
+ 'put',
14
+ 'post',
15
+ 'delete',
16
+ 'options',
17
+ 'head',
18
+ 'patch',
19
+ 'trace',
20
+ ];
21
+ /*
22
+ https://swagger.io/specification/v3/
23
+ */
24
+ export class OpenapiProcessor {
25
+ logger;
26
+ options;
27
+ locMapper;
28
+ format;
29
+ linkObjects = [];
30
+ securitySchemeToNodeId = {};
31
+ globalSecuritySchemes = [];
32
+ sourceName;
33
+ constructor(logger, options, locMapper, format = new ThymianFormat()) {
34
+ this.logger = logger;
35
+ this.options = options;
36
+ this.locMapper = locMapper;
37
+ this.format = format;
38
+ }
39
+ processLinkObject(linkObjectToProcess) {
40
+ if (!linkObjectToProcess.linkObj.operationId) {
41
+ return;
42
+ }
43
+ const reqs = this.format.graph.filterNodes((id, attributes) => isNodeType(attributes, 'http-request') &&
44
+ attributes.extensions?.openapi?.operationId ===
45
+ linkObjectToProcess.linkObj.operationId);
46
+ linkObjectToProcess.responseIds.forEach((resId) => {
47
+ reqs.forEach((reqId) => {
48
+ if (this.format.graph.hasNode(resId) &&
49
+ this.format.graph.hasNode(reqId)) {
50
+ this.format.addHttpLink(resId, reqId, {
51
+ ...processLinkObjectParameters(linkObjectToProcess.linkObj.parameters, this.format.getNode(reqId)),
52
+ sourceName: this.sourceName,
53
+ });
54
+ }
55
+ });
56
+ });
57
+ }
58
+ processOperationObject(operationObject, params, method, path, serverInfo) {
59
+ if (operationObject.deprecated) {
60
+ this.logger.debug(`Operation with id "${operationObject.operationId ?? '(no operationId provided)'}" is deprecated but still used by Thymian.`);
61
+ }
62
+ const parameters = mergeParameters(params, processParameterObjects(operationObject.parameters));
63
+ const operationServerInfo = extractServerInfo(operationObject.servers, serverInfo);
64
+ const requests = processRequestBodyObjet(operationObject.requestBody, parameters, this.locMapper, {
65
+ host: operationServerInfo.host,
66
+ port: operationServerInfo.port,
67
+ protocol: operationServerInfo.protocol,
68
+ operationId: operationObject.operationId,
69
+ method,
70
+ path: join(operationServerInfo.basePath, path),
71
+ sourceName: this.sourceName,
72
+ });
73
+ const responsesAndLinks = processResponsesObject(operationObject.responses, parameters);
74
+ const securitySchemes = this.globalSecuritySchemes.length
75
+ ? this.globalSecuritySchemes
76
+ : operationObject.security?.length
77
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
78
+ operationObject.security.map((sec) => Object.keys(sec)[0])
79
+ : [];
80
+ for (const req of requests) {
81
+ const reqId = this.format.addRequest({
82
+ sourceName: this.sourceName,
83
+ ...req,
84
+ });
85
+ for (const { responses, links } of responsesAndLinks) {
86
+ const responseIds = [];
87
+ for (const res of responses) {
88
+ const sourceLocation = operationObject.operationId
89
+ ? this.locMapper.locationForOperationId(operationObject.operationId)
90
+ : undefined;
91
+ const [resId] = this.format.addResponseToRequest(reqId, {
92
+ ...res,
93
+ sourceLocation,
94
+ sourceName: this.sourceName,
95
+ }, {
96
+ sourceLocation,
97
+ sourceName: this.sourceName,
98
+ });
99
+ responseIds.push(resId);
100
+ securitySchemes.forEach((scheme) => {
101
+ if (typeof this.securitySchemeToNodeId[scheme] === 'string') {
102
+ this.format.addEdge(reqId, this.securitySchemeToNodeId[scheme], {
103
+ type: 'is-secured',
104
+ sourceName: this.sourceName,
105
+ });
106
+ }
107
+ });
108
+ }
109
+ links.forEach(({ name, linkObj }) => {
110
+ this.linkObjects.push({
111
+ name,
112
+ linkObj,
113
+ responseIds,
114
+ });
115
+ });
116
+ }
117
+ }
118
+ }
119
+ process(document, filter, sourceName = document.info.title) {
120
+ this.sourceName = sourceName;
121
+ const filterFn = httpFilterExpressionToOperationFilter(filter);
122
+ const securitySchemes = processSecuritySchemes(document.components?.securitySchemes ?? {});
123
+ securitySchemes.forEach((scheme) => {
124
+ this.securitySchemeToNodeId[scheme.extensions.openapi.schemeName] =
125
+ this.format.addSecurityScheme({
126
+ ...scheme,
127
+ sourceName: this.sourceName,
128
+ });
129
+ });
130
+ document.security?.forEach((security) => {
131
+ const name = Object.keys(security)[0];
132
+ if (name) {
133
+ this.globalSecuritySchemes.push(name);
134
+ }
135
+ });
136
+ const serverInfo = extractServerInfo(document.servers, this.options);
137
+ for (const [path, pathItem] of Object.entries(document.paths ?? {})) {
138
+ if (typeof pathItem === 'undefined') {
139
+ continue;
140
+ }
141
+ const parameters = processParameterObjects(pathItem.parameters);
142
+ for (const [method, op] of Object.entries(pathItem)) {
143
+ if (!supportedMethods.includes(method)) {
144
+ continue;
145
+ }
146
+ const operation = op;
147
+ const operationParameters = processParameterObjects(operation.parameters);
148
+ const allParameters = mergeParameters(parameters, operationParameters);
149
+ if (filterFn({
150
+ document,
151
+ method,
152
+ params: allParameters,
153
+ path,
154
+ operationObject: operation,
155
+ serverInfo,
156
+ })) {
157
+ this.logger.debug('Do not skip operation:' + operation.operationId);
158
+ this.processOperationObject(operation, allParameters, method, path, serverInfo);
159
+ }
160
+ }
161
+ }
162
+ this.linkObjects.forEach((linkToProcess) => this.processLinkObject(linkToProcess));
163
+ return this.format;
164
+ }
165
+ }
166
+ //# sourceMappingURL=openapi.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.processor.js","sourceRoot":"","sources":["../../src/processors/openapi.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAEL,UAAU,EAEV,aAAa,GAEd,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,qCAAqC,EAAE,MAAM,kDAAkD,CAAC;AAEzG,OAAO,EAAE,iBAAiB,EAAmB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAmB,MAAM,YAAY,CAAC;AAU9D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,OAAO;CACR,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAUR;IACA;IACA;IACA;IAZF,WAAW,GAA0B,EAAE,CAAC;IAExC,sBAAsB,GAA2B,EAAE,CAAC;IAE7D,qBAAqB,GAAa,EAAE,CAAC;IAErC,UAAU,CAAU;IAE5B,YACmB,MAAc,EACd,OAAgC,EAChC,SAAoB,EACpB,SAAS,IAAI,aAAa,EAAE;QAH5B,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAyB;QAChC,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAsB;IAC5C,CAAC;IAEI,iBAAiB,CAAC,mBAAwC;QAChE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CACxC,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,CACjB,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC;YACtC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW;gBACzC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAC5C,CAAC;QAEF,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,IACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAChC,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE;wBACpC,GAAG,2BAA2B,CAC5B,mBAAmB,CAAC,OAAO,CAAC,UAAU,EACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAuB,CACjD;wBACD,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAC5B,eAA2C,EAC3C,MAAkB,EAClB,MAAc,EACd,IAAY,EACZ,UAAsB;QAEtB,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,sBACE,eAAe,CAAC,WAAW,IAAI,2BACjC,4CAA4C,CAC7C,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,eAAe,CAChC,MAAM,EACN,uBAAuB,CACrB,eAAe,CAAC,UAA0C,CAC3D,CACF,CAAC;QAEF,MAAM,mBAAmB,GAAG,iBAAiB,CAC3C,eAAe,CAAC,OAAO,EACvB,UAAU,CACX,CAAC;QAEF,MAAM,QAAQ,GAAG,uBAAuB,CACtC,eAAe,CAAC,WAA2C,EAC3D,UAAU,EACV,IAAI,CAAC,SAAS,EACd;YACE,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,QAAQ,EAAE,mBAAmB,CAAC,QAAQ;YACtC,WAAW,EAAE,eAAe,CAAC,WAAW;YACxC,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC;YAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CACF,CAAC;QACF,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,eAAe,CAAC,SAAS,EACzB,UAAU,CACX,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM;YACvD,CAAC,CAAC,IAAI,CAAC,qBAAqB;YAC5B,CAAC,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM;gBAChC,CAAC,CAAC,oEAAoE;oBACpE,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;gBAC7D,CAAC,CAAC,EAAE,CAAC;QAET,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;gBACnC,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,GAAG,GAAG;aACP,CAAC,CAAC;YAEH,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,iBAAiB,EAAE,CAAC;gBACrD,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW;wBAChD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC;wBACpE,CAAC,CAAC,SAAS,CAAC;oBAEd,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAC9C,KAAK,EACL;wBACE,GAAG,GAAG;wBACN,cAAc;wBACd,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,EACD;wBACE,cAAc;wBACd,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CACF,CAAC;oBAEF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAExB,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;wBACjC,IAAI,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;4BAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE;gCAC9D,IAAI,EAAE,YAAY;gCAClB,UAAU,EAAE,IAAI,CAAC,UAAU;6BAC5B,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;oBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;wBACpB,IAAI;wBACJ,OAAO;wBACP,WAAW;qBACZ,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEM,OAAO,CACZ,QAA6B,EAC7B,MAA4B,EAC5B,aAAqB,QAAQ,CAAC,IAAI,CAAC,KAAK;QAExC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,QAAQ,GAAG,qCAAqC,CAAC,MAAM,CAAC,CAAC;QAE/D,MAAM,eAAe,GAAG,sBAAsB,CAC3C,QAAQ,CAAC,UAAU,EAAE,eAGpB,IAAI,EAAE,CACT,CAAC;QAEF,eAAe,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACjC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC/D,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;oBAC5B,GAAG,MAAM;oBACT,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAEtC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErE,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,uBAAuB,CACxC,QAAQ,CAAC,UAAsD,CAChE,CAAC;YAEF,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvC,SAAS;gBACX,CAAC;gBAED,MAAM,SAAS,GAAG,EAAgC,CAAC;gBAEnD,MAAM,mBAAmB,GAAG,uBAAuB,CACjD,SAAS,CAAC,UAA0C,CACrD,CAAC;gBAEF,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;gBAEvE,IACE,QAAQ,CAAC;oBACP,QAAQ;oBACR,MAAM;oBACN,MAAM,EAAE,aAAa;oBACrB,IAAI;oBACJ,eAAe,EAAE,SAAS;oBAC1B,UAAU;iBACX,CAAC,EACF,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;oBACpE,IAAI,CAAC,sBAAsB,CACzB,SAAS,EACT,aAAa,EACb,MAAM,EACN,IAAI,EACJ,UAAU,CACX,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE,CACzC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACtC,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { type Parameter } from '@thymian/core';
2
+ import type { OpenAPIV3_1 as OpenApiV31 } from 'openapi-types';
3
+ import type { Parameters } from './utils.js';
4
+ export declare function processParameterObjects(parameterObjects: OpenApiV31.ParameterObject[] | undefined): Parameters;
5
+ export declare function processParameterObject(parameterObject: OpenApiV31.ParameterObject): [string, Parameter];
6
+ //# sourceMappingURL=parameter-object.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-object.processor.d.ts","sourceRoot":"","sources":["../../src/processors/parameter-object.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AAQ/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,UAAU,CAAC,eAAe,EAAE,GAAG,SAAS,GACzD,UAAU,CA2BZ;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,UAAU,CAAC,eAAe,GAC1C,CAAC,MAAM,EAAE,SAAS,CAAC,CA2FrB"}
@@ -0,0 +1,90 @@
1
+ import { capitalizeFirstChar, CookieSerializationStyleBuilder, HeaderSerializationStyleBuilder, PathSerializationStyleBuilder, QuerySerializationStyleBuilder, } from '@thymian/core';
2
+ import { addExampleToSchema, processSchema, } from './json-schema.processor.js';
3
+ import { processMediaTypeObject } from './media-type-object.processor.js';
4
+ export function processParameterObjects(parameterObjects) {
5
+ const parameters = {
6
+ headers: {},
7
+ queryParameters: {},
8
+ cookies: {},
9
+ pathParameters: {},
10
+ };
11
+ if (!parameterObjects) {
12
+ return parameters;
13
+ }
14
+ for (const parameterObject of parameterObjects) {
15
+ const [name, param] = processParameterObject(parameterObject);
16
+ if (parameterObject.in === 'query') {
17
+ parameters.queryParameters[name] = param;
18
+ }
19
+ else if (parameterObject.in === 'path') {
20
+ parameters.pathParameters[name] = param;
21
+ }
22
+ else if (parameterObject.in === 'cookie') {
23
+ parameters.cookies[name] = param;
24
+ }
25
+ else if (parameterObject.in === 'header') {
26
+ parameters.headers[name] = param;
27
+ }
28
+ }
29
+ return parameters;
30
+ }
31
+ export function processParameterObject(parameterObject) {
32
+ let thymianSchema;
33
+ let parameterContentType;
34
+ if (parameterObject.schema) {
35
+ thymianSchema = processSchema(parameterObject.schema);
36
+ }
37
+ else if (parameterObject.content) {
38
+ const entries = Object.entries(parameterObject.content);
39
+ if (entries.length !== 1 || !entries[0]) {
40
+ throw new Error('ParameterObject.content MUST contain exactly one entry.');
41
+ }
42
+ const [contentType, mediaTypeObject] = entries[0];
43
+ const isMultipart = /^multipart\/.*/i.test(contentType);
44
+ const addEncoding = contentType === 'application/x-www-form-urlencoded' || isMultipart;
45
+ const { schema } = processMediaTypeObject(mediaTypeObject, addEncoding, isMultipart);
46
+ if (!schema) {
47
+ throw new Error(`${capitalizeFirstChar(parameterObject.in)} parameter "${parameterObject.name}" object must define either a schema or a content property.`);
48
+ }
49
+ thymianSchema = schema;
50
+ parameterContentType = contentType;
51
+ }
52
+ else {
53
+ throw new Error(`${capitalizeFirstChar(parameterObject.in)} parameter "${parameterObject.name}" object must define either a schema or a content property.`);
54
+ }
55
+ addExampleToSchema(thymianSchema, parameterObject.example);
56
+ Object.values(parameterObject.examples ?? {}).forEach((example) => {
57
+ addExampleToSchema(thymianSchema, example.value);
58
+ });
59
+ const style = parameterObject.in === 'header'
60
+ ? new HeaderSerializationStyleBuilder()
61
+ .withExplode(parameterObject.explode)
62
+ .build()
63
+ : parameterObject.in === 'query'
64
+ ? new QuerySerializationStyleBuilder()
65
+ .withStyle(parameterObject.style)
66
+ .withExplode(parameterObject.explode)
67
+ .build()
68
+ : parameterObject.in === 'path'
69
+ ? new PathSerializationStyleBuilder()
70
+ .withStyle(parameterObject.style)
71
+ .withExplode(parameterObject.explode)
72
+ .build()
73
+ : new CookieSerializationStyleBuilder()
74
+ .withStyle(parameterObject.style)
75
+ .withExplode(parameterObject.explode)
76
+ .build();
77
+ const param = {
78
+ required: parameterObject.required ?? false,
79
+ schema: thymianSchema,
80
+ style,
81
+ };
82
+ if (parameterObject.description) {
83
+ param.description = parameterObject.description;
84
+ }
85
+ if (parameterContentType) {
86
+ param.contentType = parameterContentType;
87
+ }
88
+ return [parameterObject.name, param];
89
+ }
90
+ //# sourceMappingURL=parameter-object.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-object.processor.js","sourceRoot":"","sources":["../../src/processors/parameter-object.processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type PartialBy, type ThymianHttpRequest } from '@thymian/core';
2
+ import type { OpenAPIV3_1 as OpenApiV31 } from 'openapi-types';
3
+ import type { LocMapper } from '../loc-mapper/loc-mapper.js';
4
+ import type { Parameters } from './utils.js';
5
+ export declare function processRequestBodyObjet(requestBodyObject: OpenApiV31.RequestBodyObject | undefined, parameters: Parameters, locMapper: LocMapper, context: {
6
+ path: string;
7
+ operationId?: string;
8
+ method: string;
9
+ host: string;
10
+ port: number;
11
+ protocol: 'http' | 'https';
12
+ sourceName: string;
13
+ }): PartialBy<ThymianHttpRequest, 'label' | 'sourceName'>[];
14
+ //# sourceMappingURL=request-body-object.processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-body-object.processor.d.ts","sourceRoot":"","sources":["../../src/processors/request-body-object.processor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,GAAG,SAAS,EAC3D,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB,GACA,SAAS,CAAC,kBAAkB,EAAE,OAAO,GAAG,YAAY,CAAC,EAAE,CAuEzD"}