@decohere/create 0.0.1-dev.47 → 0.0.1-dev.49

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 (124) hide show
  1. package/commonjs/src/cli.js +3 -3
  2. package/commonjs/src/resolve-launch.js +53 -0
  3. package/commonjs/src/runner.js +5 -45
  4. package/commonjs/src/version.js +1 -1
  5. package/es6/src/cli.js +3 -3
  6. package/es6/src/resolve-launch.js +46 -0
  7. package/es6/src/runner.js +8 -57
  8. package/es6/src/version.js +3 -3
  9. package/pack-builder-tgz.mjs +19 -35
  10. package/package.json +4 -11
  11. package/types/src/resolve-launch.d.ts +10 -0
  12. package/types/src/runner.d.ts +3 -13
  13. package/types/src/version.d.ts +0 -2
  14. package/commonjs/src/domain/prompt.js +0 -64
  15. package/commonjs/src/models/compose.model.js +0 -138
  16. package/commonjs/src/models/config-yaml.model.js +0 -88
  17. package/commonjs/src/models/const.js +0 -31
  18. package/commonjs/src/models/dev-container.model.js +0 -100
  19. package/commonjs/src/models/docker-image.model.js +0 -221
  20. package/commonjs/src/models/env-file.model.js +0 -47
  21. package/commonjs/src/models/gitignore.model.js +0 -31
  22. package/commonjs/src/models/launch-json.model.js +0 -74
  23. package/commonjs/src/models/package-json.model.js +0 -133
  24. package/commonjs/src/models/project.model.js +0 -134
  25. package/commonjs/src/models/source-file.js +0 -6
  26. package/commonjs/src/models/tsconfig.model.js +0 -34
  27. package/commonjs/src/models/vscode-settings.model.js +0 -31
  28. package/commonjs/src/program.js +0 -135
  29. package/commonjs/src/resolve-target-dir.js +0 -19
  30. package/commonjs/src/services/scaffold.service.js +0 -62
  31. package/commonjs/src/webapi/api-name.js +0 -95
  32. package/commonjs/src/webapi/const.js +0 -50
  33. package/commonjs/src/webapi/create-api.js +0 -285
  34. package/commonjs/src/webapi/features/auth.feature.js +0 -463
  35. package/commonjs/src/webapi/features/auth0-cli.js +0 -406
  36. package/commonjs/src/webapi/features/biome-format.js +0 -49
  37. package/commonjs/src/webapi/features/database.feature.js +0 -273
  38. package/commonjs/src/webapi/features/finalize.feature.js +0 -91
  39. package/commonjs/src/webapi/features/postman.feature.js +0 -319
  40. package/commonjs/src/webapi/models/api-package-json.model.js +0 -63
  41. package/commonjs/src/webapi/models/auth-config.model.js +0 -26
  42. package/commonjs/src/webapi/models/controller-source-file.model.js +0 -188
  43. package/commonjs/src/webapi/models/github-ci.model.js +0 -193
  44. package/commonjs/src/webapi/models/main-source-file.model.js +0 -165
  45. package/commonjs/src/webapi/models/production-dockerfile.model.js +0 -138
  46. package/commonjs/src/webapi/models/sample-files.model.js +0 -60
  47. package/commonjs/src/webapi/models/webapi-image.model.js +0 -22
  48. package/commonjs/src/webapi/postman/hello-openapi.js +0 -175
  49. package/commonjs/src/webapi/postman/local-view.js +0 -184
  50. package/commonjs/src/webapi/postman/openapi-to-postman.js +0 -202
  51. package/es6/src/domain/prompt.js +0 -43
  52. package/es6/src/models/compose.model.js +0 -132
  53. package/es6/src/models/config-yaml.model.js +0 -76
  54. package/es6/src/models/const.js +0 -21
  55. package/es6/src/models/dev-container.model.js +0 -90
  56. package/es6/src/models/docker-image.model.js +0 -185
  57. package/es6/src/models/env-file.model.js +0 -43
  58. package/es6/src/models/gitignore.model.js +0 -21
  59. package/es6/src/models/launch-json.model.js +0 -64
  60. package/es6/src/models/package-json.model.js +0 -129
  61. package/es6/src/models/project.model.js +0 -119
  62. package/es6/src/models/source-file.js +0 -3
  63. package/es6/src/models/tsconfig.model.js +0 -24
  64. package/es6/src/models/vscode-settings.model.js +0 -21
  65. package/es6/src/program.js +0 -76
  66. package/es6/src/resolve-target-dir.js +0 -9
  67. package/es6/src/services/scaffold.service.js +0 -52
  68. package/es6/src/webapi/api-name.js +0 -59
  69. package/es6/src/webapi/const.js +0 -20
  70. package/es6/src/webapi/create-api.js +0 -265
  71. package/es6/src/webapi/features/auth.feature.js +0 -412
  72. package/es6/src/webapi/features/auth0-cli.js +0 -348
  73. package/es6/src/webapi/features/biome-format.js +0 -42
  74. package/es6/src/webapi/features/database.feature.js +0 -263
  75. package/es6/src/webapi/features/finalize.feature.js +0 -81
  76. package/es6/src/webapi/features/postman.feature.js +0 -253
  77. package/es6/src/webapi/models/api-package-json.model.js +0 -58
  78. package/es6/src/webapi/models/auth-config.model.js +0 -22
  79. package/es6/src/webapi/models/controller-source-file.model.js +0 -179
  80. package/es6/src/webapi/models/github-ci.model.js +0 -186
  81. package/es6/src/webapi/models/main-source-file.model.js +0 -161
  82. package/es6/src/webapi/models/production-dockerfile.model.js +0 -126
  83. package/es6/src/webapi/models/sample-files.model.js +0 -42
  84. package/es6/src/webapi/models/webapi-image.model.js +0 -12
  85. package/es6/src/webapi/postman/hello-openapi.js +0 -168
  86. package/es6/src/webapi/postman/local-view.js +0 -169
  87. package/es6/src/webapi/postman/openapi-to-postman.js +0 -179
  88. package/types/src/domain/prompt.d.ts +0 -4
  89. package/types/src/models/compose.model.d.ts +0 -59
  90. package/types/src/models/config-yaml.model.d.ts +0 -27
  91. package/types/src/models/const.d.ts +0 -19
  92. package/types/src/models/dev-container.model.d.ts +0 -33
  93. package/types/src/models/docker-image.model.d.ts +0 -56
  94. package/types/src/models/env-file.model.d.ts +0 -15
  95. package/types/src/models/gitignore.model.d.ts +0 -6
  96. package/types/src/models/launch-json.model.d.ts +0 -7
  97. package/types/src/models/package-json.model.d.ts +0 -32
  98. package/types/src/models/project.model.d.ts +0 -60
  99. package/types/src/models/source-file.d.ts +0 -11
  100. package/types/src/models/tsconfig.model.d.ts +0 -5
  101. package/types/src/models/vscode-settings.model.d.ts +0 -7
  102. package/types/src/program.d.ts +0 -3
  103. package/types/src/resolve-target-dir.d.ts +0 -5
  104. package/types/src/services/scaffold.service.d.ts +0 -22
  105. package/types/src/webapi/api-name.d.ts +0 -14
  106. package/types/src/webapi/const.d.ts +0 -17
  107. package/types/src/webapi/create-api.d.ts +0 -15
  108. package/types/src/webapi/features/auth.feature.d.ts +0 -10
  109. package/types/src/webapi/features/auth0-cli.d.ts +0 -72
  110. package/types/src/webapi/features/biome-format.d.ts +0 -5
  111. package/types/src/webapi/features/database.feature.d.ts +0 -5
  112. package/types/src/webapi/features/finalize.feature.d.ts +0 -2
  113. package/types/src/webapi/features/postman.feature.d.ts +0 -16
  114. package/types/src/webapi/models/api-package-json.model.d.ts +0 -18
  115. package/types/src/webapi/models/auth-config.model.d.ts +0 -26
  116. package/types/src/webapi/models/controller-source-file.model.d.ts +0 -45
  117. package/types/src/webapi/models/github-ci.model.d.ts +0 -9
  118. package/types/src/webapi/models/main-source-file.model.d.ts +0 -54
  119. package/types/src/webapi/models/production-dockerfile.model.d.ts +0 -20
  120. package/types/src/webapi/models/sample-files.model.d.ts +0 -7
  121. package/types/src/webapi/models/webapi-image.model.d.ts +0 -5
  122. package/types/src/webapi/postman/hello-openapi.d.ts +0 -19
  123. package/types/src/webapi/postman/local-view.d.ts +0 -17
  124. package/types/src/webapi/postman/openapi-to-postman.d.ts +0 -62
@@ -1,168 +0,0 @@
1
- /** Minimal OpenAPI 3 document shape used for Postman conversion. */ /**
2
- * Canonical Hello WebAPI OpenAPI document used to generate Postman requests.
3
- * Keep paths aligned with scaffolded HelloController (`/hello`, `/hello/{id}`).
4
- */ export function buildHelloOpenApiDocument(projectName) {
5
- return {
6
- openapi: "3.0.3",
7
- info: {
8
- title: `${projectName} WebAPI`,
9
- version: "1.0.0",
10
- description: "Generated from OpenAPI for Postman. Auth/env overlays are applied separately."
11
- },
12
- servers: [
13
- {
14
- url: "{{baseUrl}}"
15
- }
16
- ],
17
- paths: {
18
- "/hello": {
19
- get: {
20
- operationId: "HelloController.getAll",
21
- summary: "List (anonymous)",
22
- tags: [
23
- "Hello"
24
- ],
25
- parameters: [
26
- {
27
- name: "filter",
28
- in: "query",
29
- required: false,
30
- schema: {
31
- type: "string"
32
- }
33
- }
34
- ],
35
- responses: {
36
- "200": {
37
- description: "Successful response"
38
- }
39
- }
40
- },
41
- post: {
42
- operationId: "HelloController.create",
43
- summary: "Create",
44
- tags: [
45
- "Hello"
46
- ],
47
- requestBody: {
48
- required: true,
49
- content: {
50
- "application/json": {
51
- schema: {
52
- type: "object",
53
- properties: {
54
- message: {
55
- type: "string"
56
- }
57
- },
58
- required: [
59
- "message"
60
- ],
61
- example: {
62
- message: "hello"
63
- }
64
- }
65
- }
66
- }
67
- },
68
- responses: {
69
- "200": {
70
- description: "Successful response"
71
- }
72
- }
73
- }
74
- },
75
- "/hello/{id}": {
76
- get: {
77
- operationId: "HelloController.getOne",
78
- summary: "Get by id",
79
- tags: [
80
- "Hello"
81
- ],
82
- parameters: [
83
- {
84
- name: "id",
85
- in: "path",
86
- required: true,
87
- schema: {
88
- type: "string"
89
- }
90
- }
91
- ],
92
- responses: {
93
- "200": {
94
- description: "Successful response"
95
- }
96
- }
97
- },
98
- put: {
99
- operationId: "HelloController.update",
100
- summary: "Update",
101
- tags: [
102
- "Hello"
103
- ],
104
- parameters: [
105
- {
106
- name: "id",
107
- in: "path",
108
- required: true,
109
- schema: {
110
- type: "string"
111
- }
112
- }
113
- ],
114
- requestBody: {
115
- required: true,
116
- content: {
117
- "application/json": {
118
- schema: {
119
- type: "object",
120
- properties: {
121
- message: {
122
- type: "string"
123
- }
124
- },
125
- required: [
126
- "message"
127
- ],
128
- example: {
129
- message: "updated"
130
- }
131
- }
132
- }
133
- }
134
- },
135
- responses: {
136
- "200": {
137
- description: "Successful response"
138
- }
139
- }
140
- },
141
- delete: {
142
- operationId: "HelloController.remove",
143
- summary: "Delete",
144
- tags: [
145
- "Hello"
146
- ],
147
- parameters: [
148
- {
149
- name: "id",
150
- in: "path",
151
- required: true,
152
- schema: {
153
- type: "string"
154
- }
155
- }
156
- ],
157
- responses: {
158
- "200": {
159
- description: "Successful response"
160
- }
161
- }
162
- }
163
- }
164
- }
165
- };
166
- }
167
-
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL3Bvc3RtYW4vaGVsbG8tb3BlbmFwaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogTWluaW1hbCBPcGVuQVBJIDMgZG9jdW1lbnQgc2hhcGUgdXNlZCBmb3IgUG9zdG1hbiBjb252ZXJzaW9uLiAqL1xuZXhwb3J0IHR5cGUgU2NhZmZvbGRPcGVuQXBpRG9jdW1lbnQgPSB7XG5cdG9wZW5hcGk6IFwiMy4wLjNcIjtcblx0aW5mbzogeyB0aXRsZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmc7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH07XG5cdHNlcnZlcnM/OiBBcnJheTx7IHVybDogc3RyaW5nOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9Pjtcblx0cGF0aHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcbn07XG5cbi8qKlxuICogQ2Fub25pY2FsIEhlbGxvIFdlYkFQSSBPcGVuQVBJIGRvY3VtZW50IHVzZWQgdG8gZ2VuZXJhdGUgUG9zdG1hbiByZXF1ZXN0cy5cbiAqIEtlZXAgcGF0aHMgYWxpZ25lZCB3aXRoIHNjYWZmb2xkZWQgSGVsbG9Db250cm9sbGVyIChgL2hlbGxvYCwgYC9oZWxsby97aWR9YCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEhlbGxvT3BlbkFwaURvY3VtZW50KHByb2plY3ROYW1lOiBzdHJpbmcpOiBTY2FmZm9sZE9wZW5BcGlEb2N1bWVudCB7XG5cdHJldHVybiB7XG5cdFx0b3BlbmFwaTogXCIzLjAuM1wiLFxuXHRcdGluZm86IHtcblx0XHRcdHRpdGxlOiBgJHtwcm9qZWN0TmFtZX0gV2ViQVBJYCxcblx0XHRcdHZlcnNpb246IFwiMS4wLjBcIixcblx0XHRcdGRlc2NyaXB0aW9uOlxuXHRcdFx0XHRcIkdlbmVyYXRlZCBmcm9tIE9wZW5BUEkgZm9yIFBvc3RtYW4uIEF1dGgvZW52IG92ZXJsYXlzIGFyZSBhcHBsaWVkIHNlcGFyYXRlbHkuXCIsXG5cdFx0fSxcblx0XHRzZXJ2ZXJzOiBbeyB1cmw6IFwie3tiYXNlVXJsfX1cIiB9XSxcblx0XHRwYXRoczoge1xuXHRcdFx0XCIvaGVsbG9cIjoge1xuXHRcdFx0XHRnZXQ6IHtcblx0XHRcdFx0XHRvcGVyYXRpb25JZDogXCJIZWxsb0NvbnRyb2xsZXIuZ2V0QWxsXCIsXG5cdFx0XHRcdFx0c3VtbWFyeTogXCJMaXN0IChhbm9ueW1vdXMpXCIsXG5cdFx0XHRcdFx0dGFnczogW1wiSGVsbG9cIl0sXG5cdFx0XHRcdFx0cGFyYW1ldGVyczogW1xuXHRcdFx0XHRcdFx0eyBuYW1lOiBcImZpbHRlclwiLCBpbjogXCJxdWVyeVwiLCByZXF1aXJlZDogZmFsc2UsIHNjaGVtYTogeyB0eXBlOiBcInN0cmluZ1wiIH0gfSxcblx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdHJlc3BvbnNlczogeyBcIjIwMFwiOiB7IGRlc2NyaXB0aW9uOiBcIlN1Y2Nlc3NmdWwgcmVzcG9uc2VcIiB9IH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBvc3Q6IHtcblx0XHRcdFx0XHRvcGVyYXRpb25JZDogXCJIZWxsb0NvbnRyb2xsZXIuY3JlYXRlXCIsXG5cdFx0XHRcdFx0c3VtbWFyeTogXCJDcmVhdGVcIixcblx0XHRcdFx0XHR0YWdzOiBbXCJIZWxsb1wiXSxcblx0XHRcdFx0XHRyZXF1ZXN0Qm9keToge1xuXHRcdFx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0XHRcdFwiYXBwbGljYXRpb24vanNvblwiOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2NoZW1hOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcIm9iamVjdFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydGllczogeyBtZXNzYWdlOiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ6IFtcIm1lc3NhZ2VcIl0sXG5cdFx0XHRcdFx0XHRcdFx0XHRleGFtcGxlOiB7IG1lc3NhZ2U6IFwiaGVsbG9cIiB9LFxuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cmVzcG9uc2VzOiB7IFwiMjAwXCI6IHsgZGVzY3JpcHRpb246IFwiU3VjY2Vzc2Z1bCByZXNwb25zZVwiIH0gfSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRcIi9oZWxsby97aWR9XCI6IHtcblx0XHRcdFx0Z2V0OiB7XG5cdFx0XHRcdFx0b3BlcmF0aW9uSWQ6IFwiSGVsbG9Db250cm9sbGVyLmdldE9uZVwiLFxuXHRcdFx0XHRcdHN1bW1hcnk6IFwiR2V0IGJ5IGlkXCIsXG5cdFx0XHRcdFx0dGFnczogW1wiSGVsbG9cIl0sXG5cdFx0XHRcdFx0cGFyYW1ldGVyczogW3sgbmFtZTogXCJpZFwiLCBpbjogXCJwYXRoXCIsIHJlcXVpcmVkOiB0cnVlLCBzY2hlbWE6IHsgdHlwZTogXCJzdHJpbmdcIiB9IH1dLFxuXHRcdFx0XHRcdHJlc3BvbnNlczogeyBcIjIwMFwiOiB7IGRlc2NyaXB0aW9uOiBcIlN1Y2Nlc3NmdWwgcmVzcG9uc2VcIiB9IH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHB1dDoge1xuXHRcdFx0XHRcdG9wZXJhdGlvbklkOiBcIkhlbGxvQ29udHJvbGxlci51cGRhdGVcIixcblx0XHRcdFx0XHRzdW1tYXJ5OiBcIlVwZGF0ZVwiLFxuXHRcdFx0XHRcdHRhZ3M6IFtcIkhlbGxvXCJdLFxuXHRcdFx0XHRcdHBhcmFtZXRlcnM6IFt7IG5hbWU6IFwiaWRcIiwgaW46IFwicGF0aFwiLCByZXF1aXJlZDogdHJ1ZSwgc2NoZW1hOiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9XSxcblx0XHRcdFx0XHRyZXF1ZXN0Qm9keToge1xuXHRcdFx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0XHRcdFwiYXBwbGljYXRpb24vanNvblwiOiB7XG5cdFx0XHRcdFx0XHRcdFx0c2NoZW1hOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcIm9iamVjdFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcGVydGllczogeyBtZXNzYWdlOiB7IHR5cGU6IFwic3RyaW5nXCIgfSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ6IFtcIm1lc3NhZ2VcIl0sXG5cdFx0XHRcdFx0XHRcdFx0XHRleGFtcGxlOiB7IG1lc3NhZ2U6IFwidXBkYXRlZFwiIH0sXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRyZXNwb25zZXM6IHsgXCIyMDBcIjogeyBkZXNjcmlwdGlvbjogXCJTdWNjZXNzZnVsIHJlc3BvbnNlXCIgfSB9LFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRkZWxldGU6IHtcblx0XHRcdFx0XHRvcGVyYXRpb25JZDogXCJIZWxsb0NvbnRyb2xsZXIucmVtb3ZlXCIsXG5cdFx0XHRcdFx0c3VtbWFyeTogXCJEZWxldGVcIixcblx0XHRcdFx0XHR0YWdzOiBbXCJIZWxsb1wiXSxcblx0XHRcdFx0XHRwYXJhbWV0ZXJzOiBbeyBuYW1lOiBcImlkXCIsIGluOiBcInBhdGhcIiwgcmVxdWlyZWQ6IHRydWUsIHNjaGVtYTogeyB0eXBlOiBcInN0cmluZ1wiIH0gfV0sXG5cdFx0XHRcdFx0cmVzcG9uc2VzOiB7IFwiMjAwXCI6IHsgZGVzY3JpcHRpb246IFwiU3VjY2Vzc2Z1bCByZXNwb25zZVwiIH0gfSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0fSxcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJidWlsZEhlbGxvT3BlbkFwaURvY3VtZW50IiwicHJvamVjdE5hbWUiLCJvcGVuYXBpIiwiaW5mbyIsInRpdGxlIiwidmVyc2lvbiIsImRlc2NyaXB0aW9uIiwic2VydmVycyIsInVybCIsInBhdGhzIiwiZ2V0Iiwib3BlcmF0aW9uSWQiLCJzdW1tYXJ5IiwidGFncyIsInBhcmFtZXRlcnMiLCJuYW1lIiwiaW4iLCJyZXF1aXJlZCIsInNjaGVtYSIsInR5cGUiLCJyZXNwb25zZXMiLCJwb3N0IiwicmVxdWVzdEJvZHkiLCJjb250ZW50IiwicHJvcGVydGllcyIsIm1lc3NhZ2UiLCJleGFtcGxlIiwicHV0IiwiZGVsZXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxrRUFBa0UsR0FRbEU7OztDQUdDLEdBQ0QsT0FBTyxTQUFTQSwwQkFBMEJDLFdBQW1CO0lBQzVELE9BQU87UUFDTkMsU0FBUztRQUNUQyxNQUFNO1lBQ0xDLE9BQU8sR0FBR0gsWUFBWSxPQUFPLENBQUM7WUFDOUJJLFNBQVM7WUFDVEMsYUFDQztRQUNGO1FBQ0FDLFNBQVM7WUFBQztnQkFBRUMsS0FBSztZQUFjO1NBQUU7UUFDakNDLE9BQU87WUFDTixVQUFVO2dCQUNUQyxLQUFLO29CQUNKQyxhQUFhO29CQUNiQyxTQUFTO29CQUNUQyxNQUFNO3dCQUFDO3FCQUFRO29CQUNmQyxZQUFZO3dCQUNYOzRCQUFFQyxNQUFNOzRCQUFVQyxJQUFJOzRCQUFTQyxVQUFVOzRCQUFPQyxRQUFRO2dDQUFFQyxNQUFNOzRCQUFTO3dCQUFFO3FCQUMzRTtvQkFDREMsV0FBVzt3QkFBRSxPQUFPOzRCQUFFZCxhQUFhO3dCQUFzQjtvQkFBRTtnQkFDNUQ7Z0JBQ0FlLE1BQU07b0JBQ0xWLGFBQWE7b0JBQ2JDLFNBQVM7b0JBQ1RDLE1BQU07d0JBQUM7cUJBQVE7b0JBQ2ZTLGFBQWE7d0JBQ1pMLFVBQVU7d0JBQ1ZNLFNBQVM7NEJBQ1Isb0JBQW9CO2dDQUNuQkwsUUFBUTtvQ0FDUEMsTUFBTTtvQ0FDTkssWUFBWTt3Q0FBRUMsU0FBUzs0Q0FBRU4sTUFBTTt3Q0FBUztvQ0FBRTtvQ0FDMUNGLFVBQVU7d0NBQUM7cUNBQVU7b0NBQ3JCUyxTQUFTO3dDQUFFRCxTQUFTO29DQUFRO2dDQUM3Qjs0QkFDRDt3QkFDRDtvQkFDRDtvQkFDQUwsV0FBVzt3QkFBRSxPQUFPOzRCQUFFZCxhQUFhO3dCQUFzQjtvQkFBRTtnQkFDNUQ7WUFDRDtZQUNBLGVBQWU7Z0JBQ2RJLEtBQUs7b0JBQ0pDLGFBQWE7b0JBQ2JDLFNBQVM7b0JBQ1RDLE1BQU07d0JBQUM7cUJBQVE7b0JBQ2ZDLFlBQVk7d0JBQUM7NEJBQUVDLE1BQU07NEJBQU1DLElBQUk7NEJBQVFDLFVBQVU7NEJBQU1DLFFBQVE7Z0NBQUVDLE1BQU07NEJBQVM7d0JBQUU7cUJBQUU7b0JBQ3BGQyxXQUFXO3dCQUFFLE9BQU87NEJBQUVkLGFBQWE7d0JBQXNCO29CQUFFO2dCQUM1RDtnQkFDQXFCLEtBQUs7b0JBQ0poQixhQUFhO29CQUNiQyxTQUFTO29CQUNUQyxNQUFNO3dCQUFDO3FCQUFRO29CQUNmQyxZQUFZO3dCQUFDOzRCQUFFQyxNQUFNOzRCQUFNQyxJQUFJOzRCQUFRQyxVQUFVOzRCQUFNQyxRQUFRO2dDQUFFQyxNQUFNOzRCQUFTO3dCQUFFO3FCQUFFO29CQUNwRkcsYUFBYTt3QkFDWkwsVUFBVTt3QkFDVk0sU0FBUzs0QkFDUixvQkFBb0I7Z0NBQ25CTCxRQUFRO29DQUNQQyxNQUFNO29DQUNOSyxZQUFZO3dDQUFFQyxTQUFTOzRDQUFFTixNQUFNO3dDQUFTO29DQUFFO29DQUMxQ0YsVUFBVTt3Q0FBQztxQ0FBVTtvQ0FDckJTLFNBQVM7d0NBQUVELFNBQVM7b0NBQVU7Z0NBQy9COzRCQUNEO3dCQUNEO29CQUNEO29CQUNBTCxXQUFXO3dCQUFFLE9BQU87NEJBQUVkLGFBQWE7d0JBQXNCO29CQUFFO2dCQUM1RDtnQkFDQXNCLFFBQVE7b0JBQ1BqQixhQUFhO29CQUNiQyxTQUFTO29CQUNUQyxNQUFNO3dCQUFDO3FCQUFRO29CQUNmQyxZQUFZO3dCQUFDOzRCQUFFQyxNQUFNOzRCQUFNQyxJQUFJOzRCQUFRQyxVQUFVOzRCQUFNQyxRQUFRO2dDQUFFQyxNQUFNOzRCQUFTO3dCQUFFO3FCQUFFO29CQUNwRkMsV0FBVzt3QkFBRSxPQUFPOzRCQUFFZCxhQUFhO3dCQUFzQjtvQkFBRTtnQkFDNUQ7WUFDRDtRQUNEO0lBQ0Q7QUFDRCJ9
@@ -1,169 +0,0 @@
1
- import { randomUUID } from "node:crypto";
2
- import { openApiPathParamsToColon } from "./openapi-to-postman.js";
3
- function yamlQuote(value) {
4
- if (/[:#{}[\],&*?|<>=!%@`]/.test(value) || value.includes("\n") || value === "") {
5
- return JSON.stringify(value);
6
- }
7
- return value;
8
- }
9
- /** Local View / Native Git environment (YAML). */ export function buildEnvironmentYaml(name, auth, options) {
10
- const values = [
11
- {
12
- key: "baseUrl",
13
- value: "http://localhost:3000"
14
- }
15
- ];
16
- if (auth?.auth0Domain) {
17
- values.push({
18
- key: "auth0Domain",
19
- value: auth.auth0Domain
20
- }, {
21
- key: "auth0Audience",
22
- value: auth.auth0Audience ?? ""
23
- }, {
24
- key: "auth0ClientId",
25
- value: auth.auth0ClientId ?? ""
26
- }, {
27
- key: "authUrl",
28
- value: `https://${auth.auth0Domain}/authorize?audience=${auth.auth0Audience ?? ""}`
29
- }, {
30
- key: "accessTokenUrl",
31
- value: `https://${auth.auth0Domain}/oauth/token`
32
- }, {
33
- key: "callbackUrl",
34
- value: options.callbacks[0]
35
- }, {
36
- key: "scope",
37
- value: options.scopes
38
- });
39
- }
40
- const lines = [
41
- `name: ${yamlQuote(name)}`,
42
- "values:"
43
- ];
44
- for (const v of values){
45
- lines.push(` - key: ${v.key}`);
46
- lines.push(` value: ${yamlQuote(v.value)}`);
47
- lines.push(" enabled: true");
48
- }
49
- return `${lines.join("\n")}\n`;
50
- }
51
- /**
52
- * Build Postman Local View multi-file YAML from a v2.1 collection (routes)
53
- * plus hand-authored Auth0 overlay.
54
- */ export function buildLocalViewFilesFromCollection(collection, projectName, auth, options) {
55
- const collectionDir = `postman/collections/${projectName} WebAPI`;
56
- const files = [];
57
- const authBlock = auth?.auth0Domain ? [
58
- "auth:",
59
- ` - id: ${randomUUID()}`,
60
- " type: oauth2",
61
- " name: OAuth 2.0",
62
- " credentials:",
63
- " addTokenTo: header",
64
- " grant_type: authorization_code_with_pkce",
65
- ` authUrl: https://${auth.auth0Domain}/authorize?audience=${auth.auth0Audience ?? ""}`,
66
- ` accessTokenUrl: https://${auth.auth0Domain}/oauth/token`,
67
- ` clientId: ${yamlQuote(auth.auth0ClientId ?? "")}`,
68
- ` scope: ${yamlQuote(options.scopes)}`,
69
- ` redirect_uri: ${options.callbacks[0]}`,
70
- " useBrowser: true",
71
- " challengeAlgorithm: S256",
72
- " client_authentication: body",
73
- ' clientSecret: ""',
74
- ` tokenName: ${yamlQuote(`${projectName} Access Token`)}`,
75
- ""
76
- ].join("\n") : "";
77
- files.push({
78
- filePath: `${collectionDir}/.resources/definition.yaml`,
79
- content: [
80
- "$kind: collection",
81
- `name: ${yamlQuote(`${projectName} WebAPI`)}`,
82
- "schemaVersion: '3.0'",
83
- "description: >-",
84
- " Open this project root in Postman Local View (Files → Open folder).",
85
- " Select the Local environment, then Authorization → Get New Access Token (PKCE).",
86
- " Route requests are generated from OpenAPI; Auth0 overlay is hand-authored.",
87
- authBlock
88
- ].filter((l)=>l !== undefined).join("\n").replace(/\n+$/, "\n")
89
- });
90
- let folderOrder = 1000;
91
- for (const folder of collection.item ?? []){
92
- if (folder.item == null) {
93
- continue;
94
- }
95
- const folderName = folder.name ?? "Requests";
96
- files.push({
97
- filePath: `${collectionDir}/${folderName}/.resources/definition.yaml`,
98
- content: [
99
- "$kind: folder",
100
- `name: ${yamlQuote(folderName)}`,
101
- `order: ${folderOrder}`,
102
- ""
103
- ].join("\n")
104
- });
105
- folderOrder += 1000;
106
- let requestOrder = 1000;
107
- for (const child of folder.item){
108
- const yaml = requestToLocalViewYaml(child, requestOrder);
109
- if (yaml == null) {
110
- continue;
111
- }
112
- const fileName = `${sanitizeFileName(child.name ?? "Request")}.request.yaml`;
113
- files.push({
114
- filePath: `${collectionDir}/${folderName}/${fileName}`,
115
- content: yaml
116
- });
117
- requestOrder += 1000;
118
- }
119
- }
120
- return files;
121
- }
122
- function requestToLocalViewYaml(item, order) {
123
- const request = item.request;
124
- if (request == null) {
125
- return null;
126
- }
127
- const method = (request.method ?? "GET").toUpperCase();
128
- const url = requestUrlForLocalView(request);
129
- const lines = [
130
- "$kind: http-request",
131
- `name: ${yamlQuote(item.name ?? method)}`,
132
- `method: ${method}`,
133
- `url: ${yamlQuote(url)}`
134
- ];
135
- if (request.auth?.type === "noauth") {
136
- lines.push("auth:", " type: noauth");
137
- }
138
- const contentType = request.header?.find((h)=>h.key.toLowerCase() === "content-type")?.value;
139
- const rawBody = request.body?.raw?.trim();
140
- if (rawBody) {
141
- lines.push("headers:");
142
- lines.push(` Content-Type: ${contentType ?? "application/json"}`);
143
- lines.push("body:");
144
- lines.push(" type: json");
145
- lines.push(" content: |-");
146
- for (const bodyLine of rawBody.split("\n")){
147
- lines.push(` ${bodyLine}`);
148
- }
149
- }
150
- lines.push(`order: ${order}`, "");
151
- return lines.join("\n");
152
- }
153
- function requestUrlForLocalView(request) {
154
- const url = request.url;
155
- if (typeof url === "string") {
156
- return openApiPathParamsToColon(url);
157
- }
158
- if (url?.raw) {
159
- return openApiPathParamsToColon(url.raw);
160
- }
161
- const host = url?.host?.[0] ?? "{{baseUrl}}";
162
- const path = (url?.path ?? []).map((segment)=>openApiPathParamsToColon(String(segment))).join("/");
163
- return path ? `${host}/${path}` : host;
164
- }
165
- function sanitizeFileName(name) {
166
- return name.replace(/[^\w\s()-]+/g, "").trim() || "Request";
167
- }
168
-
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL3Bvc3RtYW4vbG9jYWwtdmlldy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQge1xuXHR0eXBlIEF1dGgwRW52LFxuXHRvcGVuQXBpUGF0aFBhcmFtc1RvQ29sb24sXG5cdHR5cGUgUG9zdG1hbkNvbGxlY3Rpb24sXG5cdHR5cGUgUG9zdG1hbkl0ZW0sXG5cdHR5cGUgUG9zdG1hblJlcXVlc3QsXG59IGZyb20gXCIuL29wZW5hcGktdG8tcG9zdG1hbi5qc1wiO1xuXG5mdW5jdGlvbiB5YW1sUXVvdGUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICgvWzoje31bXFxdLCYqP3w8Pj0hJUBgXS8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuaW5jbHVkZXMoXCJcXG5cIikgfHwgdmFsdWUgPT09IFwiXCIpIHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIExvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGVudmlyb25tZW50IChZQU1MKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVudmlyb25tZW50WWFtbChcblx0bmFtZTogc3RyaW5nLFxuXHRhdXRoOiBBdXRoMEVudiB8IHVuZGVmaW5lZCxcblx0b3B0aW9uczogeyBjYWxsYmFja3M6IHJlYWRvbmx5IHN0cmluZ1tdOyBzY29wZXM6IHN0cmluZyB9LFxuKTogc3RyaW5nIHtcblx0Y29uc3QgdmFsdWVzOiBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gW1xuXHRcdHsga2V5OiBcImJhc2VVcmxcIiwgdmFsdWU6IFwiaHR0cDovL2xvY2FsaG9zdDozMDAwXCIgfSxcblx0XTtcblx0aWYgKGF1dGg/LmF1dGgwRG9tYWluKSB7XG5cdFx0dmFsdWVzLnB1c2goXG5cdFx0XHR7IGtleTogXCJhdXRoMERvbWFpblwiLCB2YWx1ZTogYXV0aC5hdXRoMERvbWFpbiB9LFxuXHRcdFx0eyBrZXk6IFwiYXV0aDBBdWRpZW5jZVwiLCB2YWx1ZTogYXV0aC5hdXRoMEF1ZGllbmNlID8/IFwiXCIgfSxcblx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGguYXV0aDBDbGllbnRJZCA/PyBcIlwiIH0sXG5cdFx0XHR7XG5cdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdHZhbHVlOiBgaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRrZXk6IFwiYWNjZXNzVG9rZW5VcmxcIixcblx0XHRcdFx0dmFsdWU6IGBodHRwczovLyR7YXV0aC5hdXRoMERvbWFpbn0vb2F1dGgvdG9rZW5gLFxuXHRcdFx0fSxcblx0XHRcdHsga2V5OiBcImNhbGxiYWNrVXJsXCIsIHZhbHVlOiBvcHRpb25zLmNhbGxiYWNrc1swXSB9LFxuXHRcdFx0eyBrZXk6IFwic2NvcGVcIiwgdmFsdWU6IG9wdGlvbnMuc2NvcGVzIH0sXG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGxpbmVzID0gW2BuYW1lOiAke3lhbWxRdW90ZShuYW1lKX1gLCBcInZhbHVlczpcIl07XG5cdGZvciAoY29uc3QgdiBvZiB2YWx1ZXMpIHtcblx0XHRsaW5lcy5wdXNoKGAgIC0ga2V5OiAke3Yua2V5fWApO1xuXHRcdGxpbmVzLnB1c2goYCAgICB2YWx1ZTogJHt5YW1sUXVvdGUodi52YWx1ZSl9YCk7XG5cdFx0bGluZXMucHVzaChcIiAgICBlbmFibGVkOiB0cnVlXCIpO1xuXHR9XG5cdHJldHVybiBgJHtsaW5lcy5qb2luKFwiXFxuXCIpfVxcbmA7XG59XG5cbi8qKlxuICogQnVpbGQgUG9zdG1hbiBMb2NhbCBWaWV3IG11bHRpLWZpbGUgWUFNTCBmcm9tIGEgdjIuMSBjb2xsZWN0aW9uIChyb3V0ZXMpXG4gKiBwbHVzIGhhbmQtYXV0aG9yZWQgQXV0aDAgb3ZlcmxheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTG9jYWxWaWV3RmlsZXNGcm9tQ29sbGVjdGlvbihcblx0Y29sbGVjdGlvbjogUG9zdG1hbkNvbGxlY3Rpb24sXG5cdHByb2plY3ROYW1lOiBzdHJpbmcsXG5cdGF1dGg6IEF1dGgwRW52IHwgdW5kZWZpbmVkLFxuXHRvcHRpb25zOiB7IGNhbGxiYWNrczogcmVhZG9ubHkgc3RyaW5nW107IHNjb3Blczogc3RyaW5nIH0sXG4pOiBBcnJheTx7IGZpbGVQYXRoOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9PiB7XG5cdGNvbnN0IGNvbGxlY3Rpb25EaXIgPSBgcG9zdG1hbi9jb2xsZWN0aW9ucy8ke3Byb2plY3ROYW1lfSBXZWJBUElgO1xuXHRjb25zdCBmaWxlczogQXJyYXk8eyBmaWxlUGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT4gPSBbXTtcblxuXHRjb25zdCBhdXRoQmxvY2sgPSBhdXRoPy5hdXRoMERvbWFpblxuXHRcdD8gW1xuXHRcdFx0XHRcImF1dGg6XCIsXG5cdFx0XHRcdGAgIC0gaWQ6ICR7cmFuZG9tVVVJRCgpfWAsXG5cdFx0XHRcdFwiICAgIHR5cGU6IG9hdXRoMlwiLFxuXHRcdFx0XHRcIiAgICBuYW1lOiBPQXV0aCAyLjBcIixcblx0XHRcdFx0XCIgICAgY3JlZGVudGlhbHM6XCIsXG5cdFx0XHRcdFwiICAgICAgYWRkVG9rZW5UbzogaGVhZGVyXCIsXG5cdFx0XHRcdFwiICAgICAgZ3JhbnRfdHlwZTogYXV0aG9yaXphdGlvbl9jb2RlX3dpdGhfcGtjZVwiLFxuXHRcdFx0XHRgICAgICAgYXV0aFVybDogaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L2F1dGhvcml6ZT9hdWRpZW5jZT0ke2F1dGguYXV0aDBBdWRpZW5jZSA/PyBcIlwifWAsXG5cdFx0XHRcdGAgICAgICBhY2Nlc3NUb2tlblVybDogaHR0cHM6Ly8ke2F1dGguYXV0aDBEb21haW59L29hdXRoL3Rva2VuYCxcblx0XHRcdFx0YCAgICAgIGNsaWVudElkOiAke3lhbWxRdW90ZShhdXRoLmF1dGgwQ2xpZW50SWQgPz8gXCJcIil9YCxcblx0XHRcdFx0YCAgICAgIHNjb3BlOiAke3lhbWxRdW90ZShvcHRpb25zLnNjb3Blcyl9YCxcblx0XHRcdFx0YCAgICAgIHJlZGlyZWN0X3VyaTogJHtvcHRpb25zLmNhbGxiYWNrc1swXX1gLFxuXHRcdFx0XHRcIiAgICAgIHVzZUJyb3dzZXI6IHRydWVcIixcblx0XHRcdFx0XCIgICAgICBjaGFsbGVuZ2VBbGdvcml0aG06IFMyNTZcIixcblx0XHRcdFx0XCIgICAgICBjbGllbnRfYXV0aGVudGljYXRpb246IGJvZHlcIixcblx0XHRcdFx0JyAgICAgIGNsaWVudFNlY3JldDogXCJcIicsXG5cdFx0XHRcdGAgICAgICB0b2tlbk5hbWU6ICR7eWFtbFF1b3RlKGAke3Byb2plY3ROYW1lfSBBY2Nlc3MgVG9rZW5gKX1gLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpXG5cdFx0OiBcIlwiO1xuXG5cdGZpbGVzLnB1c2goe1xuXHRcdGZpbGVQYXRoOiBgJHtjb2xsZWN0aW9uRGlyfS8ucmVzb3VyY2VzL2RlZmluaXRpb24ueWFtbGAsXG5cdFx0Y29udGVudDogW1xuXHRcdFx0XCIka2luZDogY29sbGVjdGlvblwiLFxuXHRcdFx0YG5hbWU6ICR7eWFtbFF1b3RlKGAke3Byb2plY3ROYW1lfSBXZWJBUElgKX1gLFxuXHRcdFx0XCJzY2hlbWFWZXJzaW9uOiAnMy4wJ1wiLFxuXHRcdFx0XCJkZXNjcmlwdGlvbjogPi1cIixcblx0XHRcdFwiICBPcGVuIHRoaXMgcHJvamVjdCByb290IGluIFBvc3RtYW4gTG9jYWwgVmlldyAoRmlsZXMg4oaSIE9wZW4gZm9sZGVyKS5cIixcblx0XHRcdFwiICBTZWxlY3QgdGhlIExvY2FsIGVudmlyb25tZW50LCB0aGVuIEF1dGhvcml6YXRpb24g4oaSIEdldCBOZXcgQWNjZXNzIFRva2VuIChQS0NFKS5cIixcblx0XHRcdFwiICBSb3V0ZSByZXF1ZXN0cyBhcmUgZ2VuZXJhdGVkIGZyb20gT3BlbkFQSTsgQXV0aDAgb3ZlcmxheSBpcyBoYW5kLWF1dGhvcmVkLlwiLFxuXHRcdFx0YXV0aEJsb2NrLFxuXHRcdF1cblx0XHRcdC5maWx0ZXIoKGwpID0+IGwgIT09IHVuZGVmaW5lZClcblx0XHRcdC5qb2luKFwiXFxuXCIpXG5cdFx0XHQucmVwbGFjZSgvXFxuKyQvLCBcIlxcblwiKSxcblx0fSk7XG5cblx0bGV0IGZvbGRlck9yZGVyID0gMTAwMDtcblx0Zm9yIChjb25zdCBmb2xkZXIgb2YgY29sbGVjdGlvbi5pdGVtID8/IFtdKSB7XG5cdFx0aWYgKGZvbGRlci5pdGVtID09IG51bGwpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRjb25zdCBmb2xkZXJOYW1lID0gZm9sZGVyLm5hbWUgPz8gXCJSZXF1ZXN0c1wiO1xuXHRcdGZpbGVzLnB1c2goe1xuXHRcdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9LyR7Zm9sZGVyTmFtZX0vLnJlc291cmNlcy9kZWZpbml0aW9uLnlhbWxgLFxuXHRcdFx0Y29udGVudDogW1xuXHRcdFx0XHRcIiRraW5kOiBmb2xkZXJcIixcblx0XHRcdFx0YG5hbWU6ICR7eWFtbFF1b3RlKGZvbGRlck5hbWUpfWAsXG5cdFx0XHRcdGBvcmRlcjogJHtmb2xkZXJPcmRlcn1gLFxuXHRcdFx0XHRcIlwiLFxuXHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdH0pO1xuXHRcdGZvbGRlck9yZGVyICs9IDEwMDA7XG5cblx0XHRsZXQgcmVxdWVzdE9yZGVyID0gMTAwMDtcblx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIGZvbGRlci5pdGVtKSB7XG5cdFx0XHRjb25zdCB5YW1sID0gcmVxdWVzdFRvTG9jYWxWaWV3WWFtbChjaGlsZCwgcmVxdWVzdE9yZGVyKTtcblx0XHRcdGlmICh5YW1sID09IG51bGwpIHtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBmaWxlTmFtZSA9IGAke3Nhbml0aXplRmlsZU5hbWUoY2hpbGQubmFtZSA/PyBcIlJlcXVlc3RcIil9LnJlcXVlc3QueWFtbGA7XG5cdFx0XHRmaWxlcy5wdXNoKHtcblx0XHRcdFx0ZmlsZVBhdGg6IGAke2NvbGxlY3Rpb25EaXJ9LyR7Zm9sZGVyTmFtZX0vJHtmaWxlTmFtZX1gLFxuXHRcdFx0XHRjb250ZW50OiB5YW1sLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXF1ZXN0T3JkZXIgKz0gMTAwMDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gZmlsZXM7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RUb0xvY2FsVmlld1lhbWwoaXRlbTogUG9zdG1hbkl0ZW0sIG9yZGVyOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcblx0Y29uc3QgcmVxdWVzdCA9IGl0ZW0ucmVxdWVzdDtcblx0aWYgKHJlcXVlc3QgPT0gbnVsbCkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG1ldGhvZCA9IChyZXF1ZXN0Lm1ldGhvZCA/PyBcIkdFVFwiKS50b1VwcGVyQ2FzZSgpO1xuXHRjb25zdCB1cmwgPSByZXF1ZXN0VXJsRm9yTG9jYWxWaWV3KHJlcXVlc3QpO1xuXHRjb25zdCBsaW5lcyA9IFtcblx0XHRcIiRraW5kOiBodHRwLXJlcXVlc3RcIixcblx0XHRgbmFtZTogJHt5YW1sUXVvdGUoaXRlbS5uYW1lID8/IG1ldGhvZCl9YCxcblx0XHRgbWV0aG9kOiAke21ldGhvZH1gLFxuXHRcdGB1cmw6ICR7eWFtbFF1b3RlKHVybCl9YCxcblx0XTtcblxuXHRpZiAocmVxdWVzdC5hdXRoPy50eXBlID09PSBcIm5vYXV0aFwiKSB7XG5cdFx0bGluZXMucHVzaChcImF1dGg6XCIsIFwiICB0eXBlOiBub2F1dGhcIik7XG5cdH1cblxuXHRjb25zdCBjb250ZW50VHlwZSA9IHJlcXVlc3QuaGVhZGVyPy5maW5kKFxuXHRcdChoKSA9PiBoLmtleS50b0xvd2VyQ2FzZSgpID09PSBcImNvbnRlbnQtdHlwZVwiLFxuXHQpPy52YWx1ZTtcblx0Y29uc3QgcmF3Qm9keSA9IHJlcXVlc3QuYm9keT8ucmF3Py50cmltKCk7XG5cdGlmIChyYXdCb2R5KSB7XG5cdFx0bGluZXMucHVzaChcImhlYWRlcnM6XCIpO1xuXHRcdGxpbmVzLnB1c2goYCAgQ29udGVudC1UeXBlOiAke2NvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWApO1xuXHRcdGxpbmVzLnB1c2goXCJib2R5OlwiKTtcblx0XHRsaW5lcy5wdXNoKFwiICB0eXBlOiBqc29uXCIpO1xuXHRcdGxpbmVzLnB1c2goXCIgIGNvbnRlbnQ6IHwtXCIpO1xuXHRcdGZvciAoY29uc3QgYm9keUxpbmUgb2YgcmF3Qm9keS5zcGxpdChcIlxcblwiKSkge1xuXHRcdFx0bGluZXMucHVzaChgICAgICR7Ym9keUxpbmV9YCk7XG5cdFx0fVxuXHR9XG5cblx0bGluZXMucHVzaChgb3JkZXI6ICR7b3JkZXJ9YCwgXCJcIik7XG5cdHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiByZXF1ZXN0VXJsRm9yTG9jYWxWaWV3KHJlcXVlc3Q6IFBvc3RtYW5SZXF1ZXN0KTogc3RyaW5nIHtcblx0Y29uc3QgdXJsID0gcmVxdWVzdC51cmw7XG5cdGlmICh0eXBlb2YgdXJsID09PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIG9wZW5BcGlQYXRoUGFyYW1zVG9Db2xvbih1cmwpO1xuXHR9XG5cdGlmICh1cmw/LnJhdykge1xuXHRcdHJldHVybiBvcGVuQXBpUGF0aFBhcmFtc1RvQ29sb24odXJsLnJhdyk7XG5cdH1cblx0Y29uc3QgaG9zdCA9IHVybD8uaG9zdD8uWzBdID8/IFwie3tiYXNlVXJsfX1cIjtcblx0Y29uc3QgcGF0aCA9ICh1cmw/LnBhdGggPz8gW10pXG5cdFx0Lm1hcCgoc2VnbWVudCkgPT4gb3BlbkFwaVBhdGhQYXJhbXNUb0NvbG9uKFN0cmluZyhzZWdtZW50KSkpXG5cdFx0LmpvaW4oXCIvXCIpO1xuXHRyZXR1cm4gcGF0aCA/IGAke2hvc3R9LyR7cGF0aH1gIDogaG9zdDtcbn1cblxuZnVuY3Rpb24gc2FuaXRpemVGaWxlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gbmFtZS5yZXBsYWNlKC9bXlxcd1xccygpLV0rL2csIFwiXCIpLnRyaW0oKSB8fCBcIlJlcXVlc3RcIjtcbn1cbiJdLCJuYW1lcyI6WyJyYW5kb21VVUlEIiwib3BlbkFwaVBhdGhQYXJhbXNUb0NvbG9uIiwieWFtbFF1b3RlIiwidmFsdWUiLCJ0ZXN0IiwiaW5jbHVkZXMiLCJKU09OIiwic3RyaW5naWZ5IiwiYnVpbGRFbnZpcm9ubWVudFlhbWwiLCJuYW1lIiwiYXV0aCIsIm9wdGlvbnMiLCJ2YWx1ZXMiLCJrZXkiLCJhdXRoMERvbWFpbiIsInB1c2giLCJhdXRoMEF1ZGllbmNlIiwiYXV0aDBDbGllbnRJZCIsImNhbGxiYWNrcyIsInNjb3BlcyIsImxpbmVzIiwidiIsImpvaW4iLCJidWlsZExvY2FsVmlld0ZpbGVzRnJvbUNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uIiwicHJvamVjdE5hbWUiLCJjb2xsZWN0aW9uRGlyIiwiZmlsZXMiLCJhdXRoQmxvY2siLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJmaWx0ZXIiLCJsIiwidW5kZWZpbmVkIiwicmVwbGFjZSIsImZvbGRlck9yZGVyIiwiZm9sZGVyIiwiaXRlbSIsImZvbGRlck5hbWUiLCJyZXF1ZXN0T3JkZXIiLCJjaGlsZCIsInlhbWwiLCJyZXF1ZXN0VG9Mb2NhbFZpZXdZYW1sIiwiZmlsZU5hbWUiLCJzYW5pdGl6ZUZpbGVOYW1lIiwib3JkZXIiLCJyZXF1ZXN0IiwibWV0aG9kIiwidG9VcHBlckNhc2UiLCJ1cmwiLCJyZXF1ZXN0VXJsRm9yTG9jYWxWaWV3IiwidHlwZSIsImNvbnRlbnRUeXBlIiwiaGVhZGVyIiwiZmluZCIsImgiLCJ0b0xvd2VyQ2FzZSIsInJhd0JvZHkiLCJib2R5IiwicmF3IiwidHJpbSIsImJvZHlMaW5lIiwic3BsaXQiLCJob3N0IiwicGF0aCIsIm1hcCIsInNlZ21lbnQiLCJTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFVBQVUsUUFBUSxjQUFjO0FBQ3pDLFNBRUNDLHdCQUF3QixRQUlsQiwwQkFBMEI7QUFFakMsU0FBU0MsVUFBVUMsS0FBYTtJQUMvQixJQUFJLHdCQUF3QkMsSUFBSSxDQUFDRCxVQUFVQSxNQUFNRSxRQUFRLENBQUMsU0FBU0YsVUFBVSxJQUFJO1FBQ2hGLE9BQU9HLEtBQUtDLFNBQVMsQ0FBQ0o7SUFDdkI7SUFDQSxPQUFPQTtBQUNSO0FBRUEsZ0RBQWdELEdBQ2hELE9BQU8sU0FBU0sscUJBQ2ZDLElBQVksRUFDWkMsSUFBMEIsRUFDMUJDLE9BQXlEO0lBRXpELE1BQU1DLFNBQWdEO1FBQ3JEO1lBQUVDLEtBQUs7WUFBV1YsT0FBTztRQUF3QjtLQUNqRDtJQUNELElBQUlPLE1BQU1JLGFBQWE7UUFDdEJGLE9BQU9HLElBQUksQ0FDVjtZQUFFRixLQUFLO1lBQWVWLE9BQU9PLEtBQUtJLFdBQVc7UUFBQyxHQUM5QztZQUFFRCxLQUFLO1lBQWlCVixPQUFPTyxLQUFLTSxhQUFhLElBQUk7UUFBRyxHQUN4RDtZQUFFSCxLQUFLO1lBQWlCVixPQUFPTyxLQUFLTyxhQUFhLElBQUk7UUFBRyxHQUN4RDtZQUNDSixLQUFLO1lBQ0xWLE9BQU8sQ0FBQyxRQUFRLEVBQUVPLEtBQUtJLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRUosS0FBS00sYUFBYSxJQUFJLElBQUk7UUFDcEYsR0FDQTtZQUNDSCxLQUFLO1lBQ0xWLE9BQU8sQ0FBQyxRQUFRLEVBQUVPLEtBQUtJLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDakQsR0FDQTtZQUFFRCxLQUFLO1lBQWVWLE9BQU9RLFFBQVFPLFNBQVMsQ0FBQyxFQUFFO1FBQUMsR0FDbEQ7WUFBRUwsS0FBSztZQUFTVixPQUFPUSxRQUFRUSxNQUFNO1FBQUM7SUFFeEM7SUFFQSxNQUFNQyxRQUFRO1FB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
@@ -1,179 +0,0 @@
1
- import converter from "openapi-to-postmanv2";
2
- function convertAsync(data, options) {
3
- return new Promise((resolve, reject)=>{
4
- converter.convert({
5
- type: "json",
6
- data
7
- }, options, (err, result)=>{
8
- if (err) {
9
- reject(err);
10
- return;
11
- }
12
- resolve(result);
13
- });
14
- });
15
- }
16
- /** Convert an OpenAPI document to a Postman Collection v2.1 via openapi-to-postmanv2. */ export async function openApiToPostmanCollection(document) {
17
- const result = await convertAsync(document, {
18
- folderStrategy: "Tags",
19
- requestNameSource: "Fallback",
20
- includeAuthInfoInExample: false
21
- });
22
- if (!result.result || result.output?.[0]?.data == null) {
23
- throw new Error(result.reason ?? "openapi-to-postmanv2 conversion failed");
24
- }
25
- return result.output[0].data;
26
- }
27
- /**
28
- * Overlay Auth0 OAuth2 (PKCE) collection auth and fix Local View-friendly URLs.
29
- * Route items come from OpenAPI; auth/env remain hand-authored.
30
- */ export function applyPostmanAuthOverlay(collection, projectName, auth, options) {
31
- const next = {
32
- ...collection,
33
- info: {
34
- ...collection.info,
35
- name: `${projectName} WebAPI`,
36
- description: options.description,
37
- schema: collection.info.schema ?? "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
38
- }
39
- };
40
- if (auth?.auth0Domain) {
41
- next.auth = {
42
- type: "oauth2",
43
- oauth2: [
44
- {
45
- key: "grant_type",
46
- value: "authorization_code_with_pkce",
47
- type: "string"
48
- },
49
- {
50
- key: "authUrl",
51
- value: "https://{{auth0Domain}}/authorize?audience={{auth0Audience}}",
52
- type: "string"
53
- },
54
- {
55
- key: "accessTokenUrl",
56
- value: "https://{{auth0Domain}}/oauth/token",
57
- type: "string"
58
- },
59
- {
60
- key: "clientId",
61
- value: "{{auth0ClientId}}",
62
- type: "string"
63
- },
64
- {
65
- key: "scope",
66
- value: options.scopes,
67
- type: "string"
68
- },
69
- {
70
- key: "redirect_uri",
71
- value: options.callbacks[0],
72
- type: "string"
73
- },
74
- {
75
- key: "useBrowser",
76
- value: "true",
77
- type: "boolean"
78
- },
79
- {
80
- key: "addTokenTo",
81
- value: "header",
82
- type: "string"
83
- },
84
- {
85
- key: "challengeAlgorithm",
86
- value: "S256",
87
- type: "string"
88
- },
89
- {
90
- key: "client_authentication",
91
- value: "body",
92
- type: "string"
93
- },
94
- {
95
- key: "clientSecret",
96
- value: "",
97
- type: "string"
98
- },
99
- {
100
- key: "tokenName",
101
- value: `${projectName} Access Token`,
102
- type: "string"
103
- }
104
- ]
105
- };
106
- }
107
- next.item = rewriteCollectionItems(collection.item ?? [], {
108
- markListAnonymous: true
109
- });
110
- return next;
111
- }
112
- function rewriteCollectionItems(items, opts) {
113
- return items.map((item)=>{
114
- if (item.item != null) {
115
- return {
116
- ...item,
117
- item: rewriteCollectionItems(item.item, opts)
118
- };
119
- }
120
- const request = item.request;
121
- if (request == null) {
122
- return item;
123
- }
124
- const method = (request.method ?? "GET").toUpperCase();
125
- const rawUrl = requestUrlRaw(request);
126
- const nextRequest = {
127
- ...request,
128
- url: toPostmanUrl(rawUrl)
129
- };
130
- // List Hello stays anonymous (matches scaffold AllowAnonymous on GET /hello).
131
- if (opts.markListAnonymous && method === "GET" && normalizePath(rawUrl) === "/hello" && !rawUrl.includes("/:")) {
132
- nextRequest.auth = {
133
- type: "noauth"
134
- };
135
- }
136
- return {
137
- ...item,
138
- request: nextRequest
139
- };
140
- });
141
- }
142
- function requestUrlRaw(request) {
143
- const url = request.url;
144
- if (typeof url === "string") {
145
- return url;
146
- }
147
- if (url?.raw) {
148
- return url.raw;
149
- }
150
- const host = url?.host?.[0] ?? "{{baseUrl}}";
151
- const path = (url?.path ?? []).join("/");
152
- return path ? `${host}/${path}` : host;
153
- }
154
- /** OpenAPI `{id}` → Postman `:id`, without touching `{{variables}}`. */ export function openApiPathParamsToColon(url) {
155
- return url.replace(/(?<!\{)\{([A-Za-z_][\w]*)\}(?!\})/g, ":$1");
156
- }
157
- function normalizePath(rawUrl) {
158
- const withoutBase = rawUrl.replace(/\{\{baseUrl\}\}/g, "").split("?")[0] ?? "";
159
- const withSlash = withoutBase.startsWith("/") ? withoutBase : `/${withoutBase}`;
160
- return openApiPathParamsToColon(withSlash);
161
- }
162
- /** Prefer Postman template URL shape used by existing Local View / API uploads. */ function toPostmanUrl(rawUrl) {
163
- let pathPart = rawUrl.replace(/\{\{baseUrl\}\}/g, "");
164
- if (!pathPart.startsWith("/")) {
165
- pathPart = `/${pathPart}`;
166
- }
167
- // openapi-to-postman uses {id}; Local View / prior collections use :id
168
- pathPart = openApiPathParamsToColon(pathPart);
169
- const segments = pathPart.split("/").filter(Boolean);
170
- return {
171
- raw: `{{baseUrl}}${pathPart}`,
172
- host: [
173
- "{{baseUrl}}"
174
- ],
175
- path: segments
176
- };
177
- }
178
-
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL3Bvc3RtYW4vb3BlbmFwaS10by1wb3N0bWFuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb252ZXJ0ZXIgZnJvbSBcIm9wZW5hcGktdG8tcG9zdG1hbnYyXCI7XG5pbXBvcnQgdHlwZSB7IFNjYWZmb2xkT3BlbkFwaURvY3VtZW50IH0gZnJvbSBcIi4vaGVsbG8tb3BlbmFwaS5qc1wiO1xuXG5leHBvcnQgdHlwZSBQb3N0bWFuQ29sbGVjdGlvbiA9IHtcblx0aW5mbzoge1xuXHRcdF9wb3N0bWFuX2lkPzogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRzY2hlbWE6IHN0cmluZztcblx0XHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0fTtcblx0YXV0aD86IHVua25vd247XG5cdGl0ZW0/OiBQb3N0bWFuSXRlbVtdO1xuXHR2YXJpYWJsZT86IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuXG5leHBvcnQgdHlwZSBQb3N0bWFuSXRlbSA9IHtcblx0bmFtZT86IHN0cmluZztcblx0aXRlbT86IFBvc3RtYW5JdGVtW107XG5cdHJlcXVlc3Q/OiBQb3N0bWFuUmVxdWVzdDtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbmV4cG9ydCB0eXBlIFBvc3RtYW5SZXF1ZXN0ID0ge1xuXHRtZXRob2Q/OiBzdHJpbmc7XG5cdGhlYWRlcj86IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XG5cdGJvZHk/OiB7IG1vZGU/OiBzdHJpbmc7IHJhdz86IHN0cmluZyB9O1xuXHR1cmw/OiBzdHJpbmcgfCB7IHJhdz86IHN0cmluZzsgaG9zdD86IHN0cmluZ1tdOyBwYXRoPzogc3RyaW5nW107IHZhcmlhYmxlPzogdW5rbm93bltdIH07XG5cdGF1dGg/OiB7IHR5cGU6IHN0cmluZzsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuXHRba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcblxuZXhwb3J0IHR5cGUgQXV0aDBFbnYgPSB7XG5cdGF1dGgwRG9tYWluPzogc3RyaW5nO1xuXHRhdXRoMEF1ZGllbmNlPzogc3RyaW5nO1xuXHRhdXRoMENsaWVudElkPzogc3RyaW5nO1xufTtcblxudHlwZSBDb252ZXJ0UmVzdWx0ID0ge1xuXHRyZXN1bHQ6IGJvb2xlYW47XG5cdHJlYXNvbj86IHN0cmluZztcblx0b3V0cHV0PzogQXJyYXk8eyB0eXBlOiBzdHJpbmc7IGRhdGE6IFBvc3RtYW5Db2xsZWN0aW9uIH0+O1xufTtcblxuZnVuY3Rpb24gY29udmVydEFzeW5jKFxuXHRkYXRhOiBTY2FmZm9sZE9wZW5BcGlEb2N1bWVudCxcblx0b3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBQcm9taXNlPENvbnZlcnRSZXN1bHQ+IHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRjb252ZXJ0ZXIuY29udmVydChcblx0XHRcdHsgdHlwZTogXCJqc29uXCIsIGRhdGEgfSxcblx0XHRcdG9wdGlvbnMsXG5cdFx0XHQoZXJyOiBFcnJvciB8IG51bGwsIHJlc3VsdDogQ29udmVydFJlc3VsdCkgPT4ge1xuXHRcdFx0XHRpZiAoZXJyKSB7XG5cdFx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJlc29sdmUocmVzdWx0KTtcblx0XHRcdH0sXG5cdFx0KTtcblx0fSk7XG59XG5cbi8qKiBDb252ZXJ0IGFuIE9wZW5BUEkgZG9jdW1lbnQgdG8gYSBQb3N0bWFuIENvbGxlY3Rpb24gdjIuMSB2aWEgb3BlbmFwaS10by1wb3N0bWFudjIuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbkFwaVRvUG9zdG1hbkNvbGxlY3Rpb24oXG5cdGRvY3VtZW50OiBTY2FmZm9sZE9wZW5BcGlEb2N1bWVudCxcbik6IFByb21pc2U8UG9zdG1hbkNvbGxlY3Rpb24+IHtcblx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgY29udmVydEFzeW5jKGRvY3VtZW50LCB7XG5cdFx0Zm9sZGVyU3RyYXRlZ3k6IFwiVGFnc1wiLFxuXHRcdHJlcXVlc3ROYW1lU291cmNlOiBcIkZhbGxiYWNrXCIsXG5cdFx0aW5jbHVkZUF1dGhJbmZvSW5FeGFtcGxlOiBmYWxzZSxcblx0fSk7XG5cdGlmICghcmVzdWx0LnJlc3VsdCB8fCByZXN1bHQub3V0cHV0Py5bMF0/LmRhdGEgPT0gbnVsbCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihyZXN1bHQucmVhc29uID8/IFwib3BlbmFwaS10by1wb3N0bWFudjIgY29udmVyc2lvbiBmYWlsZWRcIik7XG5cdH1cblx0cmV0dXJuIHJlc3VsdC5vdXRwdXRbMF0uZGF0YTtcbn1cblxuLyoqXG4gKiBPdmVybGF5IEF1dGgwIE9BdXRoMiAoUEtDRSkgY29sbGVjdGlvbiBhdXRoIGFuZCBmaXggTG9jYWwgVmlldy1mcmllbmRseSBVUkxzLlxuICogUm91dGUgaXRlbXMgY29tZSBmcm9tIE9wZW5BUEk7IGF1dGgvZW52IHJlbWFpbiBoYW5kLWF1dGhvcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlQb3N0bWFuQXV0aE92ZXJsYXkoXG5cdGNvbGxlY3Rpb246IFBvc3RtYW5Db2xsZWN0aW9uLFxuXHRwcm9qZWN0TmFtZTogc3RyaW5nLFxuXHRhdXRoOiBBdXRoMEVudiB8IHVuZGVmaW5lZCxcblx0b3B0aW9uczoge1xuXHRcdGNhbGxiYWNrczogcmVhZG9ubHkgc3RyaW5nW107XG5cdFx0c2NvcGVzOiBzdHJpbmc7XG5cdFx0ZGVzY3JpcHRpb246IHN0cmluZztcblx0fSxcbik6IFBvc3RtYW5Db2xsZWN0aW9uIHtcblx0Y29uc3QgbmV4dDogUG9zdG1hbkNvbGxlY3Rpb24gPSB7XG5cdFx0Li4uY29sbGVjdGlvbixcblx0XHRpbmZvOiB7XG5cdFx0XHQuLi5jb2xsZWN0aW9uLmluZm8sXG5cdFx0XHRuYW1lOiBgJHtwcm9qZWN0TmFtZX0gV2ViQVBJYCxcblx0XHRcdGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuXHRcdFx0c2NoZW1hOlxuXHRcdFx0XHRjb2xsZWN0aW9uLmluZm8uc2NoZW1hID8/XG5cdFx0XHRcdFwiaHR0cHM6Ly9zY2hlbWEuZ2V0cG9zdG1hbi5jb20vanNvbi9jb2xsZWN0aW9uL3YyLjEuMC9jb2xsZWN0aW9uLmpzb25cIixcblx0XHR9LFxuXHR9O1xuXG5cdGlmIChhdXRoPy5hdXRoMERvbWFpbikge1xuXHRcdG5leHQuYXV0aCA9IHtcblx0XHRcdHR5cGU6IFwib2F1dGgyXCIsXG5cdFx0XHRvYXV0aDI6IFtcblx0XHRcdFx0eyBrZXk6IFwiZ3JhbnRfdHlwZVwiLCB2YWx1ZTogXCJhdXRob3JpemF0aW9uX2NvZGVfd2l0aF9wa2NlXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogXCJhdXRoVXJsXCIsXG5cdFx0XHRcdFx0dmFsdWU6IFwiaHR0cHM6Ly97e2F1dGgwRG9tYWlufX0vYXV0aG9yaXplP2F1ZGllbmNlPXt7YXV0aDBBdWRpZW5jZX19XCIsXG5cdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGtleTogXCJhY2Nlc3NUb2tlblVybFwiLFxuXHRcdFx0XHRcdHZhbHVlOiBcImh0dHBzOi8ve3thdXRoMERvbWFpbn19L29hdXRoL3Rva2VuXCIsXG5cdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0fSxcblx0XHRcdFx0eyBrZXk6IFwiY2xpZW50SWRcIiwgdmFsdWU6IFwie3thdXRoMENsaWVudElkfX1cIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHR7IGtleTogXCJzY29wZVwiLCB2YWx1ZTogb3B0aW9ucy5zY29wZXMsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0eyBrZXk6IFwicmVkaXJlY3RfdXJpXCIsIHZhbHVlOiBvcHRpb25zLmNhbGxiYWNrc1swXSwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHR7IGtleTogXCJ1c2VCcm93c2VyXCIsIHZhbHVlOiBcInRydWVcIiwgdHlwZTogXCJib29sZWFuXCIgfSxcblx0XHRcdFx0eyBrZXk6IFwiYWRkVG9rZW5Ub1wiLCB2YWx1ZTogXCJoZWFkZXJcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuXHRcdFx0XHR7IGtleTogXCJjaGFsbGVuZ2VBbGdvcml0aG1cIiwgdmFsdWU6IFwiUzI1NlwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdHsga2V5OiBcImNsaWVudF9hdXRoZW50aWNhdGlvblwiLCB2YWx1ZTogXCJib2R5XCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdFx0eyBrZXk6IFwiY2xpZW50U2VjcmV0XCIsIHZhbHVlOiBcIlwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG5cdFx0XHRcdHsga2V5OiBcInRva2VuTmFtZVwiLCB2YWx1ZTogYCR7cHJvamVjdE5hbWV9IEFjY2VzcyBUb2tlbmAsIHR5cGU6IFwic3RyaW5nXCIgfSxcblx0XHRcdF0sXG5cdFx0fTtcblx0fVxuXG5cdG5leHQuaXRlbSA9IHJld3JpdGVDb2xsZWN0aW9uSXRlbXMoY29sbGVjdGlvbi5pdGVtID8/IFtdLCB7XG5cdFx0bWFya0xpc3RBbm9ueW1vdXM6IHRydWUsXG5cdH0pO1xuXHRyZXR1cm4gbmV4dDtcbn1cblxuZnVuY3Rpb24gcmV3cml0ZUNvbGxlY3Rpb25JdGVtcyhcblx0aXRlbXM6IFBvc3RtYW5JdGVtW10sXG5cdG9wdHM6IHsgbWFya0xpc3RBbm9ueW1vdXM6IGJvb2xlYW4gfSxcbik6IFBvc3RtYW5JdGVtW10ge1xuXHRyZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG5cdFx0aWYgKGl0ZW0uaXRlbSAhPSBudWxsKSB7XG5cdFx0XHRyZXR1cm4geyAuLi5pdGVtLCBpdGVtOiByZXdyaXRlQ29sbGVjdGlvbkl0ZW1zKGl0ZW0uaXRlbSwgb3B0cykgfTtcblx0XHR9XG5cdFx0Y29uc3QgcmVxdWVzdCA9IGl0ZW0ucmVxdWVzdDtcblx0XHRpZiAocmVxdWVzdCA9PSBudWxsKSB7XG5cdFx0XHRyZXR1cm4gaXRlbTtcblx0XHR9XG5cdFx0Y29uc3QgbWV0aG9kID0gKHJlcXVlc3QubWV0aG9kID8/IFwiR0VUXCIpLnRvVXBwZXJDYXNlKCk7XG5cdFx0Y29uc3QgcmF3VXJsID0gcmVxdWVzdFVybFJhdyhyZXF1ZXN0KTtcblx0XHRjb25zdCBuZXh0UmVxdWVzdDogUG9zdG1hblJlcXVlc3QgPSB7XG5cdFx0XHQuLi5yZXF1ZXN0LFxuXHRcdFx0dXJsOiB0b1Bvc3RtYW5VcmwocmF3VXJsKSxcblx0XHR9O1xuXHRcdC8vIExpc3QgSGVsbG8gc3RheXMgYW5vbnltb3VzIChtYXRjaGVzIHNjYWZmb2xkIEFsbG93QW5vbnltb3VzIG9uIEdFVCAvaGVsbG8pLlxuXHRcdGlmIChcblx0XHRcdG9wdHMubWFya0xpc3RBbm9ueW1vdXMgJiZcblx0XHRcdG1ldGhvZCA9PT0gXCJHRVRcIiAmJlxuXHRcdFx0bm9ybWFsaXplUGF0aChyYXdVcmwpID09PSBcIi9oZWxsb1wiICYmXG5cdFx0XHQhcmF3VXJsLmluY2x1ZGVzKFwiLzpcIilcblx0XHQpIHtcblx0XHRcdG5leHRSZXF1ZXN0LmF1dGggPSB7IHR5cGU6IFwibm9hdXRoXCIgfTtcblx0XHR9XG5cdFx0cmV0dXJuIHsgLi4uaXRlbSwgcmVxdWVzdDogbmV4dFJlcXVlc3QgfTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RVcmxSYXcocmVxdWVzdDogUG9zdG1hblJlcXVlc3QpOiBzdHJpbmcge1xuXHRjb25zdCB1cmwgPSByZXF1ZXN0LnVybDtcblx0aWYgKHR5cGVvZiB1cmwgPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gdXJsO1xuXHR9XG5cdGlmICh1cmw/LnJhdykge1xuXHRcdHJldHVybiB1cmwucmF3O1xuXHR9XG5cdGNvbnN0IGhvc3QgPSB1cmw/Lmhvc3Q/LlswXSA/PyBcInt7YmFzZVVybH19XCI7XG5cdGNvbnN0IHBhdGggPSAodXJsPy5wYXRoID8/IFtdKS5qb2luKFwiL1wiKTtcblx0cmV0dXJuIHBhdGggPyBgJHtob3N0fS8ke3BhdGh9YCA6IGhvc3Q7XG59XG5cbi8qKiBPcGVuQVBJIGB7aWR9YCDihpIgUG9zdG1hbiBgOmlkYCwgd2l0aG91dCB0b3VjaGluZyBge3t2YXJpYWJsZXN9fWAuICovXG5leHBvcnQgZnVuY3Rpb24gb3BlbkFwaVBhdGhQYXJhbXNUb0NvbG9uKHVybDogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHVybC5yZXBsYWNlKC8oPzwhXFx7KVxceyhbQS1aYS16X11bXFx3XSopXFx9KD8hXFx9KS9nLCBcIjokMVwiKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUGF0aChyYXdVcmw6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHdpdGhvdXRCYXNlID0gcmF3VXJsLnJlcGxhY2UoL1xce1xce2Jhc2VVcmxcXH1cXH0vZywgXCJcIikuc3BsaXQoXCI/XCIpWzBdID8/IFwiXCI7XG5cdGNvbnN0IHdpdGhTbGFzaCA9IHdpdGhvdXRCYXNlLnN0YXJ0c1dpdGgoXCIvXCIpID8gd2l0aG91dEJhc2UgOiBgLyR7d2l0aG91dEJhc2V9YDtcblx0cmV0dXJuIG9wZW5BcGlQYXRoUGFyYW1zVG9Db2xvbih3aXRoU2xhc2gpO1xufVxuXG4vKiogUHJlZmVyIFBvc3RtYW4gdGVtcGxhdGUgVVJMIHNoYXBlIHVzZWQgYnkgZXhpc3RpbmcgTG9jYWwgVmlldyAvIEFQSSB1cGxvYWRzLiAqL1xuZnVuY3Rpb24gdG9Qb3N0bWFuVXJsKHJhd1VybDogc3RyaW5nKTogUG9zdG1hblJlcXVlc3RbXCJ1cmxcIl0ge1xuXHRsZXQgcGF0aFBhcnQgPSByYXdVcmwucmVwbGFjZSgvXFx7XFx7YmFzZVVybFxcfVxcfS9nLCBcIlwiKTtcblx0aWYgKCFwYXRoUGFydC5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdHBhdGhQYXJ0ID0gYC8ke3BhdGhQYXJ0fWA7XG5cdH1cblx0Ly8gb3BlbmFwaS10by1wb3N0bWFuIHVzZXMge2lkfTsgTG9jYWwgVmlldyAvIHByaW9yIGNvbGxlY3Rpb25zIHVzZSA6aWRcblx0cGF0aFBhcnQgPSBvcGVuQXBpUGF0aFBhcmFtc1RvQ29sb24ocGF0aFBhcnQpO1xuXHRjb25zdCBzZWdtZW50cyA9IHBhdGhQYXJ0LnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbik7XG5cdHJldHVybiB7XG5cdFx0cmF3OiBge3tiYXNlVXJsfX0ke3BhdGhQYXJ0fWAsXG5cdFx0aG9zdDogW1wie3tiYXNlVXJsfX1cIl0sXG5cdFx0cGF0aDogc2VnbWVudHMsXG5cdH07XG59XG4iXSwibmFtZXMiOlsiY29udmVydGVyIiwiY29udmVydEFzeW5jIiwiZGF0YSIsIm9wdGlvbnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNvbnZlcnQiLCJ0eXBlIiwiZXJyIiwicmVzdWx0Iiwib3BlbkFwaVRvUG9zdG1hbkNvbGxlY3Rpb24iLCJkb2N1bWVudCIsImZvbGRlclN0cmF0ZWd5IiwicmVxdWVzdE5hbWVTb3VyY2UiLCJpbmNsdWRlQXV0aEluZm9JbkV4YW1wbGUiLCJvdXRwdXQiLCJFcnJvciIsInJlYXNvbiIsImFwcGx5UG9zdG1hbkF1dGhPdmVybGF5IiwiY29sbGVjdGlvbiIsInByb2plY3ROYW1lIiwiYXV0aCIsIm5leHQiLCJpbmZvIiwibmFtZSIsImRlc2NyaXB0aW9uIiwic2NoZW1hIiwiYXV0aDBEb21haW4iLCJvYXV0aDIiLCJrZXkiLCJ2YWx1ZSIsInNjb3BlcyIsImNhbGxiYWNrcyIsIml0ZW0iLCJyZXdyaXRlQ29sbGVjdGlvbkl0ZW1zIiwibWFya0xpc3RBbm9ueW1vdXMiLCJpdGVtcyIsIm9wdHMiLCJtYXAiLCJyZXF1ZXN0IiwibWV0aG9kIiwidG9VcHBlckNhc2UiLCJyYXdVcmwiLCJyZXF1ZXN0VXJsUmF3IiwibmV4dFJlcXVlc3QiLCJ1cmwiLCJ0b1Bvc3RtYW5VcmwiLCJub3JtYWxpemVQYXRoIiwiaW5jbHVkZXMiLCJyYXciLCJob3N0IiwicGF0aCIsImpvaW4iLCJvcGVuQXBpUGF0aFBhcmFtc1RvQ29sb24iLCJyZXBsYWNlIiwid2l0aG91dEJhc2UiLCJzcGxpdCIsIndpdGhTbGFzaCIsInN0YXJ0c1dpdGgiLCJwYXRoUGFydCIsInNlZ21lbnRzIiwiZmlsdGVyIiwiQm9vbGVhbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBZSx1QkFBdUI7QUE0QzdDLFNBQVNDLGFBQ1JDLElBQTZCLEVBQzdCQyxPQUFnQztJQUVoQyxPQUFPLElBQUlDLFFBQVEsQ0FBQ0MsU0FBU0M7UUFDNUJOLFVBQVVPLE9BQU8sQ0FDaEI7WUFBRUMsTUFBTTtZQUFRTjtRQUFLLEdBQ3JCQyxTQUNBLENBQUNNLEtBQW1CQztZQUNuQixJQUFJRCxLQUFLO2dCQUNSSCxPQUFPRztnQkFDUDtZQUNEO1lBQ0FKLFFBQVFLO1FBQ1Q7SUFFRjtBQUNEO0FBRUEsdUZBQXVGLEdBQ3ZGLE9BQU8sZUFBZUMsMkJBQ3JCQyxRQUFpQztJQUVqQyxNQUFNRixTQUFTLE1BQU1ULGFBQWFXLFVBQVU7UUFDM0NDLGdCQUFnQjtRQUNoQkMsbUJBQW1CO1FBQ25CQywwQkFBMEI7SUFDM0I7SUFDQSxJQUFJLENBQUNMLE9BQU9BLE1BQU0sSUFBSUEsT0FBT00sTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFZCxRQUFRLE1BQU07UUFDdkQsTUFBTSxJQUFJZSxNQUFNUCxPQUFPUSxNQUFNLElBQUk7SUFDbEM7SUFDQSxPQUFPUixPQUFPTSxNQUFNLENBQUMsRUFBRSxDQUFDZCxJQUFJO0FBQzdCO0FBRUE7OztDQUdDLEdBQ0QsT0FBTyxTQUFTaUIsd0JBQ2ZDLFVBQTZCLEVBQzdCQyxXQUFtQixFQUNuQkMsSUFBMEIsRUFDMUJuQixPQUlDO0lBRUQsTUFBTW9CLE9BQTBCO1FBQy9CLEdBQUdILFVBQVU7UUFDYkksTUFBTTtZQUNMLEdBQUdKLFdBQVdJLElBQUk7WUFDbEJDLE1BQU0sR0FBR0osWUFB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
@@ -1,4 +0,0 @@
1
- /** Release stdin so the process can exit after interactive prompts. */
2
- export declare function closePrompt(): void;
3
- export declare function ask(question: string, fallback?: string): Promise<string>;
4
- export declare function pick<T>(label: string, items: T[], display: (item: T) => string): Promise<T | null>;
@@ -1,59 +0,0 @@
1
- import type { KeyedModel } from "./source-file.js";
2
- export type ComposeNetworkRef = string | {
3
- /** Network key under `networks:` on this service */
4
- [networkKey: string]: {
5
- aliases?: string[];
6
- };
7
- };
8
- export interface ComposeHealthcheck {
9
- test: string[];
10
- interval?: string;
11
- timeout?: string;
12
- retries?: number;
13
- }
14
- export interface ComposeService {
15
- build?: string;
16
- image?: string;
17
- container_name?: string;
18
- env_file?: string[];
19
- environment?: Record<string, string>;
20
- ports?: string[];
21
- volumes?: string[];
22
- command?: string;
23
- restart?: string;
24
- depends_on?: string[];
25
- /** Compose profiles (service only starts when profile is enabled). */
26
- profiles?: string[];
27
- /** Attach to compose networks (string name or map with aliases). */
28
- networks?: ComposeNetworkRef[];
29
- healthcheck?: ComposeHealthcheck;
30
- }
31
- export type ComposeNetwork = {
32
- /** Fixed Docker network name (shareable across compose projects). */
33
- name: string;
34
- external?: boolean;
35
- };
36
- /**
37
- * Live builder for `docker-compose.yml`.
38
- *
39
- * Features call `addService` / `addVolume` / `addNetwork` in their scaffold phases.
40
- */
41
- export declare class DockerCompose implements KeyedModel {
42
- readonly key: string;
43
- private _projectName;
44
- private readonly _services;
45
- private readonly _volumes;
46
- private readonly _networks;
47
- /** Compose project name (`name:` top-level) — isolates containers/volumes. */
48
- setProjectName(name: string): this;
49
- addService(name: string, config: ComposeService): this;
50
- files(): {
51
- filePath: string;
52
- content: string;
53
- }[];
54
- addVolume(name: string): this;
55
- addNetwork(key: string, network: ComposeNetwork): this;
56
- /** Append an env_file path to an existing service. */
57
- addEnvFile(serviceName: string, filePath: string): this;
58
- getContent(): string;
59
- }