@scalar/postman-to-openapi 0.5.2 → 0.6.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 (69) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/convert.d.ts +29 -1
  3. package/dist/convert.d.ts.map +1 -1
  4. package/dist/convert.js +375 -215
  5. package/dist/helpers/auth.js +116 -92
  6. package/dist/helpers/contact.js +24 -20
  7. package/dist/helpers/external-docs.js +33 -25
  8. package/dist/helpers/form-data.js +42 -36
  9. package/dist/helpers/generate-unique-value.d.ts +23 -0
  10. package/dist/helpers/generate-unique-value.d.ts.map +1 -0
  11. package/dist/helpers/generate-unique-value.js +29 -0
  12. package/dist/helpers/get-operation-examples.d.ts +40 -0
  13. package/dist/helpers/get-operation-examples.d.ts.map +1 -0
  14. package/dist/helpers/get-operation-examples.js +76 -0
  15. package/dist/helpers/license.js +21 -17
  16. package/dist/helpers/logo.js +22 -21
  17. package/dist/helpers/markdown.js +33 -30
  18. package/dist/helpers/merge-operation.d.ts +55 -0
  19. package/dist/helpers/merge-operation.d.ts.map +1 -0
  20. package/dist/helpers/merge-operation.js +125 -0
  21. package/dist/helpers/merge-path-item.d.ts +5 -0
  22. package/dist/helpers/merge-path-item.d.ts.map +1 -0
  23. package/dist/helpers/merge-path-item.js +37 -0
  24. package/dist/helpers/parameters.d.ts +2 -2
  25. package/dist/helpers/parameters.d.ts.map +1 -1
  26. package/dist/helpers/parameters.js +124 -96
  27. package/dist/helpers/path-items.d.ts +1 -1
  28. package/dist/helpers/path-items.d.ts.map +1 -1
  29. package/dist/helpers/path-items.js +245 -202
  30. package/dist/helpers/post-response-scripts.js +12 -12
  31. package/dist/helpers/pre-request-scripts.js +12 -12
  32. package/dist/helpers/prune-document.js +42 -35
  33. package/dist/helpers/rename-operation-example.d.ts +40 -0
  34. package/dist/helpers/rename-operation-example.d.ts.map +1 -0
  35. package/dist/helpers/rename-operation-example.js +61 -0
  36. package/dist/helpers/request-body.d.ts +1 -1
  37. package/dist/helpers/request-body.d.ts.map +1 -1
  38. package/dist/helpers/request-body.js +118 -94
  39. package/dist/helpers/responses.js +62 -57
  40. package/dist/helpers/schemas.js +43 -37
  41. package/dist/helpers/servers.js +83 -57
  42. package/dist/helpers/status-codes.js +40 -30
  43. package/dist/helpers/urls.js +74 -51
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -5
  47. package/dist/types.js +1 -1
  48. package/package.json +7 -11
  49. package/dist/convert.js.map +0 -7
  50. package/dist/helpers/auth.js.map +0 -7
  51. package/dist/helpers/contact.js.map +0 -7
  52. package/dist/helpers/external-docs.js.map +0 -7
  53. package/dist/helpers/form-data.js.map +0 -7
  54. package/dist/helpers/license.js.map +0 -7
  55. package/dist/helpers/logo.js.map +0 -7
  56. package/dist/helpers/markdown.js.map +0 -7
  57. package/dist/helpers/parameters.js.map +0 -7
  58. package/dist/helpers/path-items.js.map +0 -7
  59. package/dist/helpers/post-response-scripts.js.map +0 -7
  60. package/dist/helpers/pre-request-scripts.js.map +0 -7
  61. package/dist/helpers/prune-document.js.map +0 -7
  62. package/dist/helpers/request-body.js.map +0 -7
  63. package/dist/helpers/responses.js.map +0 -7
  64. package/dist/helpers/schemas.js.map +0 -7
  65. package/dist/helpers/servers.js.map +0 -7
  66. package/dist/helpers/status-codes.js.map +0 -7
  67. package/dist/helpers/urls.js.map +0 -7
  68. package/dist/index.js.map +0 -7
  69. package/dist/types.js.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/helpers/status-codes.ts"],
4
- "sourcesContent": ["import type { Item } from '@/types'\n\n/**\n * Extracts expected status codes from the test scripts of a Postman item.\n * Looks for patterns like:\n * - pm.response.to.have.status(201)\n * - pm.expect(pm.response.code).to.eql(202)\n * - pm.expect(pm.response.status).to.equal(201)\n */\nexport function extractStatusCodesFromTests(item: Item): number[] {\n const statusCodes: number[] = []\n\n if (item.event?.length) {\n item.event.forEach((event) => {\n if (event.listen === 'test' && event.script?.exec) {\n const scriptLines = Array.isArray(event.script.exec) ? event.script.exec : [event.script.exec]\n\n scriptLines.forEach((line: string) => {\n const statusCode = parseStatusCodeFromLine(line)\n if (statusCode) {\n statusCodes.push(statusCode)\n }\n })\n }\n })\n }\n\n return statusCodes\n}\n\n/**\n * Parses a line of script to extract a status code.\n * Supports patterns like:\n * - pm.response.to.have.status(201)\n * - pm.expect(pm.response.code).to.eql(202)\n * - pm.expect(pm.response.status).to.equal(201)\n */\nfunction parseStatusCodeFromLine(line: string): number | null {\n const patterns = [\n /pm\\.response\\.to\\.have\\.status\\((\\d{3})\\)/,\n /pm\\.expect\\(pm\\.response\\.code\\)\\.to\\.(?:eql|equal)\\((\\d{3})\\)/,\n /pm\\.expect\\(pm\\.response\\.status\\)\\.to\\.(?:eql|equal)\\(['\"](\\d{3})['\"]\\)/,\n ]\n\n for (const pattern of patterns) {\n const match = pattern.exec(line)?.at(1)\n if (match) {\n return Number.parseInt(match, 10)\n }\n }\n\n return null\n}\n"],
5
- "mappings": "AASO,SAAS,4BAA4B,MAAsB;AAChE,QAAM,cAAwB,CAAC;AAE/B,MAAI,KAAK,OAAO,QAAQ;AACtB,SAAK,MAAM,QAAQ,CAAC,UAAU;AAC5B,UAAI,MAAM,WAAW,UAAU,MAAM,QAAQ,MAAM;AACjD,cAAM,cAAc,MAAM,QAAQ,MAAM,OAAO,IAAI,IAAI,MAAM,OAAO,OAAO,CAAC,MAAM,OAAO,IAAI;AAE7F,oBAAY,QAAQ,CAAC,SAAiB;AACpC,gBAAM,aAAa,wBAAwB,IAAI;AAC/C,cAAI,YAAY;AACd,wBAAY,KAAK,UAAU;AAAA,UAC7B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AASA,SAAS,wBAAwB,MAA6B;AAC5D,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,aAAW,WAAW,UAAU;AAC9B,UAAM,QAAQ,QAAQ,KAAK,IAAI,GAAG,GAAG,CAAC;AACtC,QAAI,OAAO;AACT,aAAO,OAAO,SAAS,OAAO,EAAE;AAAA,IAClC;AAAA,EACF;AAEA,SAAO;AACT;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/helpers/urls.ts"],
4
- "sourcesContent": ["import { REGEX } from '@scalar/helpers/regex/regex-helpers'\n\nimport type { ParsedUrl } from '@/types'\n\n/**\n * Parses a URL string into its component parts.\n */\nfunction parseUrl(urlString: string): ParsedUrl {\n const url = new URL(urlString)\n return {\n protocol: url.protocol,\n hostname: url.hostname,\n port: url.port,\n }\n}\n\n/**\n * Extracts the domain (including protocol and port if present) from a given URL.\n */\nexport function getDomainFromUrl(url: string): string {\n const { protocol, hostname, port } = parseUrl(url)\n return `${protocol}//${hostname}${port ? `:${port}` : ''}`\n}\n\n/**\n * Extracts the path from a given URL, removing any Postman variables.\n */\nexport function extractPathFromUrl(url: string | undefined): string {\n if (!url) {\n return '/'\n }\n\n // Remove scheme, domain, query parameters, and hash fragments\n const path = url.replace(/^(?:https?:\\/\\/)?[^/]+(\\/|$)/, '/').split(/[?#]/)[0] ?? ''\n\n // Replace Postman variables and ensure single leading slash\n const finalPath = ('/' + path.replace(/\\{\\{([^{}]{0,1000})\\}\\}/g, '{$1}').replace(/^\\/+/, '')).replace(/\\/\\/+/g, '/')\n\n return finalPath\n}\n\n/**\n * Normalizes a path by converting colon-style parameters to curly brace style\n * e.g., '/users/:id' becomes '/users/{id}'\n */\nexport const normalizePath = (path: string): string => path.replace(/:(\\w+)/g, '{$1}')\n\n/**\n * Extracts parameter names from a path string.\n * Handles double curly braces {{param}}, single curly braces {param}, and colon format :param.\n */\nexport function extractPathParameterNames(path: string): string[] {\n const params = new Set<string>()\n let match\n\n while ((match = REGEX.TEMPLATE_VARIABLE.exec(path)) !== null) {\n // match[1] contains the parameter name from {{param}}\n // match[2] contains the parameter name from {param}\n // match[0].slice(1) gets the parameter name from :param\n const param = match[1] || match[2] || match[0].slice(1)\n params.add(param.trim())\n }\n\n return Array.from(params)\n}\n\n/**\n * Extracts the server URL from a request URL string.\n * Handles URLs with or without protocol, with ports, etc.\n * Returns undefined if no valid server URL can be extracted.\n */\nexport function extractServerFromUrl(url: string | undefined): string | undefined {\n if (!url) {\n return undefined\n }\n\n try {\n // Check if URL has a protocol\n const protocolMatch = url.match(/^(https?:\\/\\/)/i)\n const protocol = protocolMatch ? protocolMatch[1] : null\n\n // Extract domain from URL\n const urlMatch = url.match(/^(?:https?:\\/\\/)?([^/?#]+)/i)\n if (!urlMatch?.[1]) {\n return undefined\n }\n\n const hostPart = urlMatch[1]\n // Preserve the original protocol if present, otherwise default to https\n const serverUrl = protocol ? `${protocol}${hostPart}`.replace(/\\/$/, '') : `https://${hostPart}`.replace(/\\/$/, '')\n\n return serverUrl\n } catch (error) {\n console.error(`Error extracting server from URL \"${url}\":`, error)\n return undefined\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,aAAa;AAOtB,SAAS,SAAS,WAA8B;AAC9C,QAAM,MAAM,IAAI,IAAI,SAAS;AAC7B,SAAO;AAAA,IACL,UAAU,IAAI;AAAA,IACd,UAAU,IAAI;AAAA,IACd,MAAM,IAAI;AAAA,EACZ;AACF;AAKO,SAAS,iBAAiB,KAAqB;AACpD,QAAM,EAAE,UAAU,UAAU,KAAK,IAAI,SAAS,GAAG;AACjD,SAAO,GAAG,QAAQ,KAAK,QAAQ,GAAG,OAAO,IAAI,IAAI,KAAK,EAAE;AAC1D;AAKO,SAAS,mBAAmB,KAAiC;AAClE,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAGA,QAAM,OAAO,IAAI,QAAQ,gCAAgC,GAAG,EAAE,MAAM,MAAM,EAAE,CAAC,KAAK;AAGlF,QAAM,aAAa,MAAM,KAAK,QAAQ,4BAA4B,MAAM,EAAE,QAAQ,QAAQ,EAAE,GAAG,QAAQ,UAAU,GAAG;AAEpH,SAAO;AACT;AAMO,MAAM,gBAAgB,CAAC,SAAyB,KAAK,QAAQ,WAAW,MAAM;AAM9E,SAAS,0BAA0B,MAAwB;AAChE,QAAM,SAAS,oBAAI,IAAY;AAC/B,MAAI;AAEJ,UAAQ,QAAQ,MAAM,kBAAkB,KAAK,IAAI,OAAO,MAAM;AAI5D,UAAM,QAAQ,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC;AACtD,WAAO,IAAI,MAAM,KAAK,CAAC;AAAA,EACzB;AAEA,SAAO,MAAM,KAAK,MAAM;AAC1B;AAOO,SAAS,qBAAqB,KAA6C;AAChF,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,MAAI;AAEF,UAAM,gBAAgB,IAAI,MAAM,iBAAiB;AACjD,UAAM,WAAW,gBAAgB,cAAc,CAAC,IAAI;AAGpD,UAAM,WAAW,IAAI,MAAM,6BAA6B;AACxD,QAAI,CAAC,WAAW,CAAC,GAAG;AAClB,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,SAAS,CAAC;AAE3B,UAAM,YAAY,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO,EAAE,IAAI,WAAW,QAAQ,GAAG,QAAQ,OAAO,EAAE;AAElH,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,qCAAqC,GAAG,MAAM,KAAK;AACjE,WAAO;AAAA,EACT;AACF;",
6
- "names": []
7
- }
package/dist/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts"],
4
- "sourcesContent": ["export { convert } from './convert'\n"],
5
- "mappings": "AAAA,SAAS,eAAe;",
6
- "names": []
7
- }
package/dist/types.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }