@sdk-it/spec 0.46.3 → 0.46.5

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 (77) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/find-unique-schema-name.d.ts +2 -2
  6. package/dist/lib/find-unique-schema-name.d.ts.map +1 -1
  7. package/dist/lib/find-unique-schema-name.js.map +2 -2
  8. package/dist/lib/loaders/load-spec.d.ts.map +1 -1
  9. package/dist/lib/loaders/load-spec.js +13 -3
  10. package/dist/lib/loaders/load-spec.js.map +2 -2
  11. package/dist/lib/options.d.ts +7 -2
  12. package/dist/lib/options.d.ts.map +1 -1
  13. package/dist/lib/options.js +11 -1
  14. package/dist/lib/options.js.map +2 -2
  15. package/dist/lib/overview-docs/doc-text-utils.d.ts +0 -20
  16. package/dist/lib/overview-docs/doc-text-utils.d.ts.map +1 -1
  17. package/dist/lib/overview-docs/doc-text-utils.js +0 -37
  18. package/dist/lib/overview-docs/doc-text-utils.js.map +2 -2
  19. package/dist/lib/overview-docs/overview-docs.d.ts +8 -1
  20. package/dist/lib/overview-docs/overview-docs.d.ts.map +1 -1
  21. package/dist/lib/overview-docs/overview-docs.js +37 -12
  22. package/dist/lib/overview-docs/overview-docs.js.map +2 -2
  23. package/dist/lib/overview-docs/overview-page.d.ts +5 -0
  24. package/dist/lib/overview-docs/overview-page.d.ts.map +1 -0
  25. package/dist/lib/overview-docs/overview-page.js +60 -0
  26. package/dist/lib/overview-docs/overview-page.js.map +7 -0
  27. package/dist/lib/overview-docs/overview-sdks.d.ts +3 -0
  28. package/dist/lib/overview-docs/overview-sdks.d.ts.map +1 -0
  29. package/dist/lib/overview-docs/overview-sdks.js +42 -0
  30. package/dist/lib/overview-docs/overview-sdks.js.map +7 -0
  31. package/dist/lib/overview-docs/types.d.ts +23 -0
  32. package/dist/lib/overview-docs/types.d.ts.map +1 -0
  33. package/dist/lib/overview-docs/types.js +29 -0
  34. package/dist/lib/overview-docs/types.js.map +7 -0
  35. package/dist/lib/processing-plugins/create-default-processing-plugins.d.ts.map +1 -1
  36. package/dist/lib/processing-plugins/create-default-processing-plugins.js +4 -0
  37. package/dist/lib/processing-plugins/create-default-processing-plugins.js.map +2 -2
  38. package/dist/lib/processing-plugins/extract-overview-docs.d.ts.map +1 -1
  39. package/dist/lib/processing-plugins/extract-overview-docs.js +96 -3
  40. package/dist/lib/processing-plugins/extract-overview-docs.js.map +2 -2
  41. package/dist/lib/processing-plugins/index.d.ts +2 -0
  42. package/dist/lib/processing-plugins/index.d.ts.map +1 -1
  43. package/dist/lib/processing-plugins/index.js +2 -0
  44. package/dist/lib/processing-plugins/index.js.map +2 -2
  45. package/dist/lib/processing-plugins/normalize-request-bodies.d.ts +2 -2
  46. package/dist/lib/processing-plugins/normalize-request-bodies.d.ts.map +1 -1
  47. package/dist/lib/processing-plugins/normalize-request-bodies.js +6 -21
  48. package/dist/lib/processing-plugins/normalize-request-bodies.js.map +2 -2
  49. package/dist/lib/processing-plugins/normalize-schemas.d.ts.map +1 -1
  50. package/dist/lib/processing-plugins/normalize-schemas.js +10 -1
  51. package/dist/lib/processing-plugins/normalize-schemas.js.map +2 -2
  52. package/dist/lib/processing-plugins/normalize-security.d.ts +3 -0
  53. package/dist/lib/processing-plugins/normalize-security.d.ts.map +1 -0
  54. package/dist/lib/processing-plugins/normalize-security.js +142 -0
  55. package/dist/lib/processing-plugins/normalize-security.js.map +7 -0
  56. package/dist/lib/processing-plugins/resolve-security-scheme-uris.d.ts +9 -0
  57. package/dist/lib/processing-plugins/resolve-security-scheme-uris.d.ts.map +1 -0
  58. package/dist/lib/processing-plugins/resolve-security-scheme-uris.js +139 -0
  59. package/dist/lib/processing-plugins/resolve-security-scheme-uris.js.map +7 -0
  60. package/dist/lib/processing.js.map +1 -1
  61. package/dist/lib/sidebar.js +1 -1
  62. package/dist/lib/sidebar.js.map +2 -2
  63. package/dist/lib/types.d.ts +8 -5
  64. package/dist/lib/types.d.ts.map +1 -1
  65. package/package.json +2 -2
  66. package/dist/lib/overview-docs/doc-templates.d.ts +0 -51
  67. package/dist/lib/overview-docs/doc-templates.d.ts.map +0 -1
  68. package/dist/lib/overview-docs/doc-templates.js +0 -123
  69. package/dist/lib/overview-docs/doc-templates.js.map +0 -7
  70. package/dist/lib/overview-docs/overview-intro.d.ts +0 -4
  71. package/dist/lib/overview-docs/overview-intro.d.ts.map +0 -1
  72. package/dist/lib/overview-docs/overview-intro.js +0 -82
  73. package/dist/lib/overview-docs/overview-intro.js.map +0 -7
  74. package/dist/lib/security.d.ts +0 -12
  75. package/dist/lib/security.d.ts.map +0 -1
  76. package/dist/lib/security.js +0 -78
  77. package/dist/lib/security.js.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lib/overview-docs/doc-templates.ts"],
4
- "sourcesContent": ["import pluralize from 'pluralize';\n\nexport const docTemplates = {\n servers: {\n sectionTitle: 'API Server',\n description: 'The following {count} {isAre} available for this API:',\n },\n authMethods: {\n sectionTitle: 'Available Authentication Method',\n introText:\n \"This API provides secure access through {countText} authentication {method}. Below you'll find details about {articleCount} available authentication {scheme} and how to use {pronoun}.\",\n noAuthText: 'This API does not require authentication.',\n },\n apiClients: {\n sectionTitle: 'Official API Client',\n description:\n '{apiTitle} provides official client SDK{sdkPlural} for {languageText}. We recommend using {clientText} to interact with all stable endpoints. You can find {pronoun} here:',\n },\n needHelp: {\n sectionTitle: 'Need Help?',\n },\n} as const;\n\ninterface CountTextOptions {\n count: number;\n word: string;\n includeCount?: boolean;\n}\n\nexport function getCountText(options: CountTextOptions): string {\n const { count, word, includeCount = false } = options;\n const pluralizedWord =\n count === 1 ? pluralize.singular(word) : pluralize.plural(word);\n return includeCount ? `${count} ${pluralizedWord}` : pluralizedWord;\n}\n\nexport function getPronoun(\n count: number,\n type: 'subject' | 'object' = 'object',\n): string {\n if (type === 'subject') {\n return count === 1 ? 'it' : 'they';\n }\n return count === 1 ? 'it' : 'them';\n}\n\nexport function getArticle(count: number, word: string): string {\n if (count === 1) {\n const firstLetter = word.charAt(0).toLowerCase();\n return ['a', 'e', 'i', 'o', 'u'].includes(firstLetter) ? 'an' : 'a';\n }\n return '';\n}\n\nexport function getIsAre(count: number): string {\n return count === 1 ? 'is' : 'are';\n}\n\nexport function getThisThese(count: number): string {\n return count === 1 ? 'this' : 'these';\n}\n\nexport function processTemplate(\n template: string,\n replacements: Record<string, string | number>,\n): string {\n return template.replace(/\\{([^}]+)\\}/g, (match, key) => {\n const value = replacements[key];\n return value !== undefined ? String(value) : match;\n });\n}\n\nexport function getServerText(count: number): {\n title: string;\n description: string;\n} {\n return {\n title: `## ${getCountText({ count, word: 'server', includeCount: false })}`,\n description: processTemplate(docTemplates.servers.description, {\n count: getCountText({ count, word: 'server', includeCount: true }),\n isAre: getIsAre(count),\n }),\n };\n}\n\nexport function getAuthMethodText(count: number): {\n title: string;\n intro: string;\n} {\n const countText =\n count === 1 ? getArticle(count, 'authentication method') : 'various';\n const articleCount = count === 1 ? 'the' : 'each';\n\n return {\n title: `## ${getCountText({ count, word: docTemplates.authMethods.sectionTitle })}`,\n intro: processTemplate(docTemplates.authMethods.introText, {\n countText,\n method: getCountText({ count, word: 'method' }),\n articleCount,\n scheme: getCountText({ count, word: 'scheme' }),\n pronoun: getPronoun(count),\n }),\n };\n}\n\nexport function getApiClientText(\n count: number,\n apiTitle: string,\n): {\n title: string;\n description: string;\n} {\n const languageText =\n count === 1 ? 'a programming language' : 'multiple programming languages';\n const clientText =\n count === 1\n ? getThisThese(count) + ' client'\n : getThisThese(count) + ' clients';\n\n return {\n title: `## ${getCountText({ count, word: docTemplates.apiClients.sectionTitle })}`,\n description: processTemplate(docTemplates.apiClients.description, {\n apiTitle,\n sdkPlural: count === 1 ? '' : 's',\n languageText,\n clientText,\n pronoun: getPronoun(count),\n }),\n };\n}\n\nexport function getAuthText(count: number): {\n title: string;\n intro: string;\n} {\n const countText =\n count === 1 ? getArticle(count, 'authentication method') : 'various';\n const articleCount = count === 1 ? 'the' : 'each';\n\n return {\n title: `## ${getCountText({ count, word: docTemplates.authMethods.sectionTitle })}`,\n intro: processTemplate(docTemplates.authMethods.introText, {\n countText,\n method: getCountText({ count, word: 'method' }),\n articleCount,\n scheme: getCountText({ count, word: 'scheme' }),\n pronoun: getPronoun(count),\n }),\n };\n}\n\nexport function getErrorsApiClientText(\n count: number,\n apiTitle: string,\n sdkList: string[],\n): {\n title: string;\n description: string;\n} {\n const languageText = count === 1 ? sdkList[0] : sdkList.join(', ');\n const clientText =\n count === 1\n ? getThisThese(count) + ' client'\n : getThisThese(count) + ' clients';\n\n return {\n title: `## ${getCountText({ count, word: docTemplates.apiClients.sectionTitle })}`,\n description: `${apiTitle} maintains official API ${getCountText({ count, word: 'client' })}${count > 0 ? ` for ${languageText}` : ''}. We recommend using ${clientText} to interact with all stable endpoints. You can find ${getPronoun(count)} here:`,\n };\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,4 +0,0 @@
1
- import type { NavItem } from '../sidebar.js';
2
- import type { IR } from '../types.js';
3
- export declare function generateIntroOverview(spec: IR, availablesdks: string[]): NavItem;
4
- //# sourceMappingURL=overview-intro.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overview-intro.d.ts","sourceRoot":"","sources":["../../../src/lib/overview-docs/overview-intro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAOtC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,EAAE,EACR,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CA2FT"}
@@ -1,82 +0,0 @@
1
- import {
2
- getClientIntroText,
3
- getTextByCount,
4
- presetDocs
5
- } from "./doc-text-utils.js";
6
- function generateIntroOverview(spec, availablesdks) {
7
- const info = spec.info;
8
- const markdown = [];
9
- if (spec.info.title) {
10
- markdown.push(`# ${spec.info.title || "API Reference"}
11
- `);
12
- }
13
- if (spec.info.description) {
14
- markdown.push(`${spec.info.description}
15
- `);
16
- }
17
- if (spec.info.version) {
18
- markdown.push(`**Version:** ${spec.info.version}
19
- `);
20
- }
21
- if (info.license) {
22
- let licenseString = `**License:** ${info.license.name}`;
23
- if (info.license.url) {
24
- licenseString += ` ([${info.license.url}](${info.license.url}))`;
25
- }
26
- markdown.push(`${licenseString}
27
- `);
28
- }
29
- if (spec.servers && spec.servers.length > 0) {
30
- const serverCount = spec.servers.length;
31
- markdown.push(
32
- `## ${getTextByCount(serverCount, presetDocs.server.section)}`
33
- );
34
- markdown.push(getTextByCount(serverCount, presetDocs.server.description));
35
- markdown.push("");
36
- for (const server of spec.servers) {
37
- let serverLine = `- **${server.url}**`;
38
- if (server.description) {
39
- serverLine += ` - ${server.description}`;
40
- }
41
- markdown.push(serverLine);
42
- }
43
- markdown.push("");
44
- }
45
- const sdkCount = availablesdks.length;
46
- markdown.push(`## ${getTextByCount(sdkCount, presetDocs.client.section)}`);
47
- markdown.push(getClientIntroText(info.title || "This API", sdkCount));
48
- for (const link of availablesdks) {
49
- const sdkName = link.replace("/", "").replace("-sdk", "").toUpperCase();
50
- markdown.push(`- [${sdkName} SDK](${link})`);
51
- }
52
- const hasSupportInfo = info.contact?.email || info.contact?.url || spec.externalDocs?.url && spec.externalDocs?.description?.toLowerCase().includes("support");
53
- if (hasSupportInfo) {
54
- markdown.push(`## Need Help?`);
55
- if (info.contact?.email) {
56
- markdown.push(
57
- `For support, reach out to us at [${info.contact.email}](mailto:${info.contact.email}).`
58
- );
59
- }
60
- if (info.contact?.url) {
61
- markdown.push(
62
- `Visit our support page: [${info.contact.url}](${info.contact.url})`
63
- );
64
- }
65
- if (spec.externalDocs?.url && spec.externalDocs?.description?.toLowerCase().includes("support")) {
66
- markdown.push(
67
- `For additional support, visit our [${spec.externalDocs.description}](${spec.externalDocs.url}).`
68
- );
69
- }
70
- }
71
- return {
72
- id: "generated-introduction",
73
- title: "Introduction",
74
- url: "/introduction",
75
- description: "API overview and getting started guide",
76
- content: markdown.join("\n\n")
77
- };
78
- }
79
- export {
80
- generateIntroOverview
81
- };
82
- //# sourceMappingURL=overview-intro.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lib/overview-docs/overview-intro.ts"],
4
- "sourcesContent": ["import type { NavItem } from '../sidebar.js';\nimport type { IR } from '../types.js';\nimport {\n getClientIntroText,\n getTextByCount,\n presetDocs,\n} from './doc-text-utils.js';\n\nexport function generateIntroOverview(\n spec: IR,\n availablesdks: string[],\n): NavItem {\n const info = spec.info;\n const markdown: string[] = [];\n\n if (spec.info.title) {\n markdown.push(`# ${spec.info.title || 'API Reference'}\\n`);\n }\n\n if (spec.info.description) {\n markdown.push(`${spec.info.description}\\n`);\n }\n\n if (spec.info.version) {\n markdown.push(`**Version:** ${spec.info.version}\\n`);\n }\n\n if (info.license) {\n let licenseString = `**License:** ${info.license.name}`;\n if (info.license.url) {\n licenseString += ` ([${info.license.url}](${info.license.url}))`;\n }\n markdown.push(`${licenseString}\\n`);\n }\n\n if (spec.servers && spec.servers.length > 0) {\n const serverCount = spec.servers.length;\n\n markdown.push(\n `## ${getTextByCount(serverCount, presetDocs.server.section)}`,\n );\n markdown.push(getTextByCount(serverCount, presetDocs.server.description));\n markdown.push('');\n\n for (const server of spec.servers) {\n let serverLine = `- **${server.url}**`;\n if (server.description) {\n serverLine += ` - ${server.description}`;\n }\n markdown.push(serverLine);\n }\n markdown.push('');\n }\n\n const sdkCount = availablesdks.length;\n markdown.push(`## ${getTextByCount(sdkCount, presetDocs.client.section)}`);\n markdown.push(getClientIntroText(info.title || 'This API', sdkCount));\n\n for (const link of availablesdks) {\n const sdkName = link.replace('/', '').replace('-sdk', '').toUpperCase();\n markdown.push(`- [${sdkName} SDK](${link})`);\n }\n\n // Add \"Need Help?\" section if support information is available\n const hasSupportInfo =\n info.contact?.email ||\n info.contact?.url ||\n (spec.externalDocs?.url &&\n spec.externalDocs?.description?.toLowerCase().includes('support'));\n\n if (hasSupportInfo) {\n markdown.push(`## Need Help?`);\n\n if (info.contact?.email) {\n markdown.push(\n `For support, reach out to us at [${info.contact.email}](mailto:${info.contact.email}).`,\n );\n }\n\n if (info.contact?.url) {\n markdown.push(\n `Visit our support page: [${info.contact.url}](${info.contact.url})`,\n );\n }\n\n if (\n spec.externalDocs?.url &&\n spec.externalDocs?.description?.toLowerCase().includes('support')\n ) {\n markdown.push(\n `For additional support, visit our [${spec.externalDocs.description}](${spec.externalDocs.url}).`,\n );\n }\n }\n\n return {\n id: 'generated-introduction',\n title: 'Introduction',\n url: '/introduction',\n description: 'API overview and getting started guide',\n content: markdown.join('\\n\\n'),\n };\n}\n"],
5
- "mappings": "AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,SAAS,sBACd,MACA,eACS;AACT,QAAM,OAAO,KAAK;AAClB,QAAM,WAAqB,CAAC;AAE5B,MAAI,KAAK,KAAK,OAAO;AACnB,aAAS,KAAK,KAAK,KAAK,KAAK,SAAS,eAAe;AAAA,CAAI;AAAA,EAC3D;AAEA,MAAI,KAAK,KAAK,aAAa;AACzB,aAAS,KAAK,GAAG,KAAK,KAAK,WAAW;AAAA,CAAI;AAAA,EAC5C;AAEA,MAAI,KAAK,KAAK,SAAS;AACrB,aAAS,KAAK,gBAAgB,KAAK,KAAK,OAAO;AAAA,CAAI;AAAA,EACrD;AAEA,MAAI,KAAK,SAAS;AAChB,QAAI,gBAAgB,gBAAgB,KAAK,QAAQ,IAAI;AACrD,QAAI,KAAK,QAAQ,KAAK;AACpB,uBAAiB,MAAM,KAAK,QAAQ,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,IAC9D;AACA,aAAS,KAAK,GAAG,aAAa;AAAA,CAAI;AAAA,EACpC;AAEA,MAAI,KAAK,WAAW,KAAK,QAAQ,SAAS,GAAG;AAC3C,UAAM,cAAc,KAAK,QAAQ;AAEjC,aAAS;AAAA,MACP,MAAM,eAAe,aAAa,WAAW,OAAO,OAAO,CAAC;AAAA,IAC9D;AACA,aAAS,KAAK,eAAe,aAAa,WAAW,OAAO,WAAW,CAAC;AACxE,aAAS,KAAK,EAAE;AAEhB,eAAW,UAAU,KAAK,SAAS;AACjC,UAAI,aAAa,OAAO,OAAO,GAAG;AAClC,UAAI,OAAO,aAAa;AACtB,sBAAc,MAAM,OAAO,WAAW;AAAA,MACxC;AACA,eAAS,KAAK,UAAU;AAAA,IAC1B;AACA,aAAS,KAAK,EAAE;AAAA,EAClB;AAEA,QAAM,WAAW,cAAc;AAC/B,WAAS,KAAK,MAAM,eAAe,UAAU,WAAW,OAAO,OAAO,CAAC,EAAE;AACzE,WAAS,KAAK,mBAAmB,KAAK,SAAS,YAAY,QAAQ,CAAC;AAEpE,aAAW,QAAQ,eAAe;AAChC,UAAM,UAAU,KAAK,QAAQ,KAAK,EAAE,EAAE,QAAQ,QAAQ,EAAE,EAAE,YAAY;AACtE,aAAS,KAAK,MAAM,OAAO,SAAS,IAAI,GAAG;AAAA,EAC7C;AAGA,QAAM,iBACJ,KAAK,SAAS,SACd,KAAK,SAAS,OACb,KAAK,cAAc,OAClB,KAAK,cAAc,aAAa,YAAY,EAAE,SAAS,SAAS;AAEpE,MAAI,gBAAgB;AAClB,aAAS,KAAK,eAAe;AAE7B,QAAI,KAAK,SAAS,OAAO;AACvB,eAAS;AAAA,QACP,oCAAoC,KAAK,QAAQ,KAAK,YAAY,KAAK,QAAQ,KAAK;AAAA,MACtF;AAAA,IACF;AAEA,QAAI,KAAK,SAAS,KAAK;AACrB,eAAS;AAAA,QACP,4BAA4B,KAAK,QAAQ,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,MACnE;AAAA,IACF;AAEA,QACE,KAAK,cAAc,OACnB,KAAK,cAAc,aAAa,YAAY,EAAE,SAAS,SAAS,GAChE;AACA,eAAS;AAAA,QACP,sCAAsC,KAAK,aAAa,WAAW,KAAK,KAAK,aAAa,GAAG;AAAA,MAC/F;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,KAAK;AAAA,IACL,aAAa;AAAA,IACb,SAAS,SAAS,KAAK,MAAM;AAAA,EAC/B;AACF;",
6
- "names": []
7
- }
@@ -1,12 +0,0 @@
1
- import type { ParameterLocation, ParameterObject, ReferenceObject, SchemaObject, SecurityRequirementObject, SecuritySchemeObject } from 'openapi3-ts/oas31';
2
- import type { IR } from './types.js';
3
- type OIn = ParameterLocation | 'input';
4
- export type OurParameter = Omit<ParameterObject, 'in' | 'schema'> & {
5
- in: OIn;
6
- 'x-optionName'?: string;
7
- schema: SchemaObject;
8
- };
9
- export declare function securityToOptions(spec: IR, security: SecurityRequirementObject[], securitySchemes: Record<string, SecuritySchemeObject | ReferenceObject>, staticIn?: OIn): OurParameter[];
10
- export declare function security(spec: IR): OurParameter[];
11
- export {};
12
- //# sourceMappingURL=security.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAErC,KAAK,GAAG,GAAG,iBAAiB,GAAG,OAAO,CAAC;AAEvC,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG;IAClE,EAAE,EAAE,GAAG,CAAC;IACR,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,EAAE,EACR,QAAQ,EAAE,yBAAyB,EAAE,EACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,eAAe,CAAC,EACvE,QAAQ,CAAC,EAAE,GAAG,kBAkDf;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,EAAE,kBAiChC"}
@@ -1,78 +0,0 @@
1
- import { methods } from "@sdk-it/core/paths.js";
2
- import { resolveRef } from "@sdk-it/core/ref.js";
3
- function securityToOptions(spec, security2, securitySchemes, staticIn) {
4
- const parameters = /* @__PURE__ */ new Map();
5
- for (const it of security2) {
6
- const [name] = Object.keys(it);
7
- if (!name) {
8
- continue;
9
- }
10
- const schema = resolveRef(
11
- spec,
12
- securitySchemes[name]
13
- );
14
- if (schema.type === "http") {
15
- parameters.set(`${staticIn ?? "header"}:authorization`, {
16
- in: staticIn ?? "header",
17
- name: "authorization",
18
- required: false,
19
- schema: { type: "string", "x-prefix": "Bearer " },
20
- "x-optionName": "token",
21
- example: schema.scheme === "bearer" ? '"<token>"' : `<${schema.scheme}> <token>`
22
- });
23
- continue;
24
- }
25
- if (schema.type === "apiKey") {
26
- if (!schema.in) {
27
- throw new Error(`apiKey security schema must have an "in" field`);
28
- }
29
- if (!schema.name) {
30
- throw new Error(`apiKey security schema must have a "name" field`);
31
- }
32
- const paramIn = staticIn ?? schema.in;
33
- parameters.set(`${paramIn}:${schema.name}`, {
34
- in: paramIn,
35
- name: schema.name,
36
- required: false,
37
- schema: { type: "string" },
38
- example: `"proj-${crypto.randomUUID().slice(0, 12)}"`
39
- });
40
- continue;
41
- }
42
- }
43
- return [...parameters.values()];
44
- }
45
- function security(spec) {
46
- const security2 = spec.security || [];
47
- const paths = Object.values(spec.paths ?? {});
48
- const options = /* @__PURE__ */ new Map();
49
- for (const option of securityToOptions(
50
- spec,
51
- security2,
52
- spec.components.securitySchemes
53
- )) {
54
- options.set(`${option.in}:${option.name}`, option);
55
- }
56
- for (const it of paths) {
57
- for (const method of methods) {
58
- const operation = it[method];
59
- if (!operation) {
60
- continue;
61
- }
62
- for (const option of securityToOptions(
63
- spec,
64
- operation.security || [],
65
- spec.components.securitySchemes,
66
- "input"
67
- )) {
68
- options.set(`${option.in}:${option.name}`, option);
69
- }
70
- }
71
- }
72
- return [...options.values()];
73
- }
74
- export {
75
- security,
76
- securityToOptions
77
- };
78
- //# sourceMappingURL=security.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/lib/security.ts"],
4
- "sourcesContent": ["import type {\n ParameterLocation,\n ParameterObject,\n ReferenceObject,\n SchemaObject,\n SecurityRequirementObject,\n SecuritySchemeObject,\n} from 'openapi3-ts/oas31';\n\nimport { methods } from '@sdk-it/core/paths.js';\nimport { resolveRef } from '@sdk-it/core/ref.js';\n\nimport type { IR } from './types.js';\n\ntype OIn = ParameterLocation | 'input';\n\nexport type OurParameter = Omit<ParameterObject, 'in' | 'schema'> & {\n in: OIn;\n 'x-optionName'?: string;\n schema: SchemaObject;\n};\n\nexport function securityToOptions(\n spec: IR,\n security: SecurityRequirementObject[],\n securitySchemes: Record<string, SecuritySchemeObject | ReferenceObject>,\n staticIn?: OIn,\n) {\n // Distinct schemes can resolve to the same parameter (e.g. Figma's\n // PersonalAccessToken and PlanAccessToken both use the X-Figma-Token\n // header), so key by location + name to avoid duplicate options.\n const parameters = new Map<string, OurParameter>();\n for (const it of security) {\n const [name] = Object.keys(it);\n if (!name) {\n // this means the operation doesn't necessarily require security\n continue;\n }\n\n const schema = resolveRef<SecuritySchemeObject>(\n spec,\n securitySchemes[name],\n );\n if (schema.type === 'http') {\n parameters.set(`${staticIn ?? 'header'}:authorization`, {\n in: staticIn ?? 'header',\n name: 'authorization',\n required: false,\n schema: { type: 'string', 'x-prefix': 'Bearer ' },\n 'x-optionName': 'token',\n example:\n schema.scheme === 'bearer'\n ? '\"<token>\"'\n : `<${schema.scheme}> <token>`,\n });\n continue;\n }\n if (schema.type === 'apiKey') {\n if (!schema.in) {\n throw new Error(`apiKey security schema must have an \"in\" field`);\n }\n if (!schema.name) {\n throw new Error(`apiKey security schema must have a \"name\" field`);\n }\n const paramIn = staticIn ?? (schema.in as ParameterLocation);\n parameters.set(`${paramIn}:${schema.name}`, {\n in: paramIn,\n name: schema.name,\n required: false,\n schema: { type: 'string' },\n example: `\"proj-${crypto.randomUUID().slice(0, 12)}\"`,\n });\n continue;\n }\n }\n return [...parameters.values()];\n}\n\nexport function security(spec: IR) {\n const security = spec.security || [];\n const paths = Object.values(spec.paths ?? {});\n\n // Same keying as securityToOptions: two parameters may share a name but\n // differ in location (e.g. header vs query api keys), so name alone drops\n // credentials.\n const options = new Map<string, OurParameter>();\n for (const option of securityToOptions(\n spec,\n security,\n spec.components.securitySchemes,\n )) {\n options.set(`${option.in}:${option.name}`, option);\n }\n\n for (const it of paths) {\n for (const method of methods) {\n const operation = it[method];\n if (!operation) {\n continue;\n }\n for (const option of securityToOptions(\n spec,\n operation.security || [],\n spec.components.securitySchemes,\n 'input',\n )) {\n options.set(`${option.in}:${option.name}`, option);\n }\n }\n }\n return [...options.values()];\n}\n"],
5
- "mappings": "AASA,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAYpB,SAAS,kBACd,MACAA,WACA,iBACA,UACA;AAIA,QAAM,aAAa,oBAAI,IAA0B;AACjD,aAAW,MAAMA,WAAU;AACzB,UAAM,CAAC,IAAI,IAAI,OAAO,KAAK,EAAE;AAC7B,QAAI,CAAC,MAAM;AAET;AAAA,IACF;AAEA,UAAM,SAAS;AAAA,MACb;AAAA,MACA,gBAAgB,IAAI;AAAA,IACtB;AACA,QAAI,OAAO,SAAS,QAAQ;AAC1B,iBAAW,IAAI,GAAG,YAAY,QAAQ,kBAAkB;AAAA,QACtD,IAAI,YAAY;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV,QAAQ,EAAE,MAAM,UAAU,YAAY,UAAU;AAAA,QAChD,gBAAgB;AAAA,QAChB,SACE,OAAO,WAAW,WACd,cACA,IAAI,OAAO,MAAM;AAAA,MACzB,CAAC;AACD;AAAA,IACF;AACA,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI,CAAC,OAAO,IAAI;AACd,cAAM,IAAI,MAAM,gDAAgD;AAAA,MAClE;AACA,UAAI,CAAC,OAAO,MAAM;AAChB,cAAM,IAAI,MAAM,iDAAiD;AAAA,MACnE;AACA,YAAM,UAAU,YAAa,OAAO;AACpC,iBAAW,IAAI,GAAG,OAAO,IAAI,OAAO,IAAI,IAAI;AAAA,QAC1C,IAAI;AAAA,QACJ,MAAM,OAAO;AAAA,QACb,UAAU;AAAA,QACV,QAAQ,EAAE,MAAM,SAAS;AAAA,QACzB,SAAS,SAAS,OAAO,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC;AAAA,MACpD,CAAC;AACD;AAAA,IACF;AAAA,EACF;AACA,SAAO,CAAC,GAAG,WAAW,OAAO,CAAC;AAChC;AAEO,SAAS,SAAS,MAAU;AACjC,QAAMA,YAAW,KAAK,YAAY,CAAC;AACnC,QAAM,QAAQ,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC;AAK5C,QAAM,UAAU,oBAAI,IAA0B;AAC9C,aAAW,UAAU;AAAA,IACnB;AAAA,IACAA;AAAA,IACA,KAAK,WAAW;AAAA,EAClB,GAAG;AACD,YAAQ,IAAI,GAAG,OAAO,EAAE,IAAI,OAAO,IAAI,IAAI,MAAM;AAAA,EACnD;AAEA,aAAW,MAAM,OAAO;AACtB,eAAW,UAAU,SAAS;AAC5B,YAAM,YAAY,GAAG,MAAM;AAC3B,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AACA,iBAAW,UAAU;AAAA,QACnB;AAAA,QACA,UAAU,YAAY,CAAC;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB;AAAA,MACF,GAAG;AACD,gBAAQ,IAAI,GAAG,OAAO,EAAE,IAAI,OAAO,IAAI,IAAI,MAAM;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACA,SAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;AAC7B;",
6
- "names": ["security"]
7
- }