@zuplo/cli 6.63.3 → 6.63.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 (154) hide show
  1. package/dist/cmds/delete.d.ts.map +1 -1
  2. package/dist/cmds/delete.js +3 -6
  3. package/dist/cmds/delete.js.map +1 -1
  4. package/dist/cmds/deploy.d.ts.map +1 -1
  5. package/dist/cmds/deploy.js +6 -13
  6. package/dist/cmds/deploy.js.map +1 -1
  7. package/dist/cmds/dev.d.ts.map +1 -1
  8. package/dist/cmds/dev.js +1 -0
  9. package/dist/cmds/dev.js.map +1 -1
  10. package/dist/cmds/editor.d.ts.map +1 -1
  11. package/dist/cmds/editor.js +8 -0
  12. package/dist/cmds/editor.js.map +1 -1
  13. package/dist/cmds/link.d.ts.map +1 -1
  14. package/dist/cmds/link.js +4 -14
  15. package/dist/cmds/link.js.map +1 -1
  16. package/dist/cmds/list.d.ts.map +1 -1
  17. package/dist/cmds/list.js +4 -10
  18. package/dist/cmds/list.js.map +1 -1
  19. package/dist/cmds/mtls-certificates/create.d.ts.map +1 -1
  20. package/dist/cmds/mtls-certificates/create.js +19 -4
  21. package/dist/cmds/mtls-certificates/create.js.map +1 -1
  22. package/dist/cmds/mtls-certificates/delete.d.ts.map +1 -1
  23. package/dist/cmds/mtls-certificates/delete.js +12 -1
  24. package/dist/cmds/mtls-certificates/delete.js.map +1 -1
  25. package/dist/cmds/mtls-certificates/describe.d.ts.map +1 -1
  26. package/dist/cmds/mtls-certificates/describe.js +12 -1
  27. package/dist/cmds/mtls-certificates/describe.js.map +1 -1
  28. package/dist/cmds/mtls-certificates/disable.d.ts +9 -0
  29. package/dist/cmds/mtls-certificates/disable.d.ts.map +1 -0
  30. package/dist/cmds/mtls-certificates/disable.js +57 -0
  31. package/dist/cmds/mtls-certificates/disable.js.map +1 -0
  32. package/dist/cmds/mtls-certificates/index.d.ts.map +1 -1
  33. package/dist/cmds/mtls-certificates/index.js +3 -1
  34. package/dist/cmds/mtls-certificates/index.js.map +1 -1
  35. package/dist/cmds/mtls-certificates/list.d.ts.map +1 -1
  36. package/dist/cmds/mtls-certificates/list.js +12 -1
  37. package/dist/cmds/mtls-certificates/list.js.map +1 -1
  38. package/dist/cmds/mtls-certificates/update.d.ts.map +1 -1
  39. package/dist/cmds/mtls-certificates/update.js +19 -4
  40. package/dist/cmds/mtls-certificates/update.js.map +1 -1
  41. package/dist/cmds/open-api/convert.d.ts.map +1 -1
  42. package/dist/cmds/open-api/convert.js +15 -0
  43. package/dist/cmds/open-api/convert.js.map +1 -1
  44. package/dist/cmds/open-api/merge.d.ts.map +1 -1
  45. package/dist/cmds/open-api/merge.js +15 -0
  46. package/dist/cmds/open-api/merge.js.map +1 -1
  47. package/dist/cmds/open-api/overlay.d.ts.map +1 -1
  48. package/dist/cmds/open-api/overlay.js +16 -1
  49. package/dist/cmds/open-api/overlay.js.map +1 -1
  50. package/dist/cmds/project/create.d.ts.map +1 -1
  51. package/dist/cmds/project/create.js +12 -0
  52. package/dist/cmds/project/create.js.map +1 -1
  53. package/dist/cmds/proxies/create.d.ts.map +1 -1
  54. package/dist/cmds/proxies/create.js +11 -0
  55. package/dist/cmds/proxies/create.js.map +1 -1
  56. package/dist/cmds/proxies/delete.d.ts.map +1 -1
  57. package/dist/cmds/proxies/delete.js +11 -0
  58. package/dist/cmds/proxies/delete.js.map +1 -1
  59. package/dist/cmds/proxies/describe.d.ts.map +1 -1
  60. package/dist/cmds/proxies/describe.js +11 -0
  61. package/dist/cmds/proxies/describe.js.map +1 -1
  62. package/dist/cmds/proxies/update.d.ts.map +1 -1
  63. package/dist/cmds/proxies/update.js +11 -0
  64. package/dist/cmds/proxies/update.js.map +1 -1
  65. package/dist/cmds/source/import-openapi.d.ts.map +1 -1
  66. package/dist/cmds/source/import-openapi.js +1 -0
  67. package/dist/cmds/source/import-openapi.js.map +1 -1
  68. package/dist/cmds/source/migrate.d.ts.map +1 -1
  69. package/dist/cmds/source/migrate.js +15 -0
  70. package/dist/cmds/source/migrate.js.map +1 -1
  71. package/dist/cmds/source/upgrade.d.ts.map +1 -1
  72. package/dist/cmds/source/upgrade.js +11 -0
  73. package/dist/cmds/source/upgrade.js.map +1 -1
  74. package/dist/cmds/test.d.ts.map +1 -1
  75. package/dist/cmds/test.js +1 -0
  76. package/dist/cmds/test.js.map +1 -1
  77. package/dist/cmds/tunnel/create.d.ts.map +1 -1
  78. package/dist/cmds/tunnel/create.js +8 -0
  79. package/dist/cmds/tunnel/create.js.map +1 -1
  80. package/dist/cmds/tunnel/delete.d.ts.map +1 -1
  81. package/dist/cmds/tunnel/delete.js +11 -0
  82. package/dist/cmds/tunnel/delete.js.map +1 -1
  83. package/dist/cmds/tunnel/describe.d.ts.map +1 -1
  84. package/dist/cmds/tunnel/describe.js +11 -0
  85. package/dist/cmds/tunnel/describe.js.map +1 -1
  86. package/dist/cmds/tunnel/list.d.ts.map +1 -1
  87. package/dist/cmds/tunnel/list.js +8 -0
  88. package/dist/cmds/tunnel/list.js.map +1 -1
  89. package/dist/cmds/tunnel/rotate-token.d.ts.map +1 -1
  90. package/dist/cmds/tunnel/rotate-token.js +11 -0
  91. package/dist/cmds/tunnel/rotate-token.js.map +1 -1
  92. package/dist/cmds/tunnel/services/describe.d.ts.map +1 -1
  93. package/dist/cmds/tunnel/services/describe.js +11 -0
  94. package/dist/cmds/tunnel/services/describe.js.map +1 -1
  95. package/dist/cmds/tunnel/services/update.d.ts.map +1 -1
  96. package/dist/cmds/tunnel/services/update.js +11 -0
  97. package/dist/cmds/tunnel/services/update.js.map +1 -1
  98. package/dist/cmds/variable/create.d.ts.map +1 -1
  99. package/dist/cmds/variable/create.js +15 -0
  100. package/dist/cmds/variable/create.js.map +1 -1
  101. package/dist/cmds/variable/update.d.ts.map +1 -1
  102. package/dist/cmds/variable/update.js +11 -0
  103. package/dist/cmds/variable/update.js.map +1 -1
  104. package/dist/common/open-api/constants.d.ts +13 -0
  105. package/dist/common/open-api/constants.d.ts.map +1 -0
  106. package/dist/common/open-api/constants.js +16 -0
  107. package/dist/common/open-api/constants.js.map +1 -0
  108. package/dist/common/open-api/index.d.ts +3 -0
  109. package/dist/common/open-api/index.d.ts.map +1 -0
  110. package/dist/common/open-api/index.js +3 -0
  111. package/dist/common/open-api/index.js.map +1 -0
  112. package/dist/common/open-api/validation.d.ts +297 -0
  113. package/dist/common/open-api/validation.d.ts.map +1 -0
  114. package/dist/common/open-api/validation.js +88 -0
  115. package/dist/common/open-api/validation.js.map +1 -0
  116. package/dist/deploy/handler.js +3 -2
  117. package/dist/deploy/handler.js.map +1 -1
  118. package/dist/mtls-certificates/create/handler.js +1 -1
  119. package/dist/mtls-certificates/create/handler.js.map +1 -1
  120. package/dist/mtls-certificates/describe/handler.js +3 -3
  121. package/dist/mtls-certificates/describe/handler.js.map +1 -1
  122. package/dist/mtls-certificates/disable/handler.d.ts +3 -0
  123. package/dist/mtls-certificates/disable/handler.d.ts.map +1 -0
  124. package/dist/mtls-certificates/disable/handler.js +32 -0
  125. package/dist/mtls-certificates/disable/handler.js.map +1 -0
  126. package/dist/mtls-certificates/list/handler.js +3 -3
  127. package/dist/mtls-certificates/list/handler.js.map +1 -1
  128. package/dist/mtls-certificates/models.d.ts +8 -2
  129. package/dist/mtls-certificates/models.d.ts.map +1 -1
  130. package/dist/mtls-certificates/models.js.map +1 -1
  131. package/dist/mtls-certificates/update/handler.js +2 -2
  132. package/dist/mtls-certificates/update/handler.js.map +1 -1
  133. package/dist/open-api/merge/merge-engine.d.ts +2 -5
  134. package/dist/open-api/merge/merge-engine.d.ts.map +1 -1
  135. package/dist/open-api/merge/merge-engine.js +2 -1
  136. package/dist/open-api/merge/merge-engine.js.map +1 -1
  137. package/dist/open-api/merge/utils.d.ts +0 -1
  138. package/dist/open-api/merge/utils.d.ts.map +1 -1
  139. package/dist/open-api/merge/utils.js +2 -11
  140. package/dist/open-api/merge/utils.js.map +1 -1
  141. package/dist/open-api/overlay/handler.d.ts.map +1 -1
  142. package/dist/open-api/overlay/handler.js +33 -33
  143. package/dist/open-api/overlay/handler.js.map +1 -1
  144. package/dist/open-api/overlay/overlay-engine.d.ts +20 -30
  145. package/dist/open-api/overlay/overlay-engine.d.ts.map +1 -1
  146. package/dist/open-api/overlay/overlay-engine.js +75 -46
  147. package/dist/open-api/overlay/overlay-engine.js.map +1 -1
  148. package/dist/open-api/overlay/overlay-engine.spec.js +109 -31
  149. package/dist/open-api/overlay/overlay-engine.spec.js.map +1 -1
  150. package/dist/source/migrate/dev-portal/handler.d.ts.map +1 -1
  151. package/dist/source/migrate/dev-portal/handler.js +48 -1
  152. package/dist/source/migrate/dev-portal/handler.js.map +1 -1
  153. package/dist/tsconfig.tsbuildinfo +1 -1
  154. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cmds/variable/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAcV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAyCf,OAAO;;AA5C/B,wBAgDE"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cmds/variable/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAcV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBA0Df,OAAO;;AA7D/B,wBAiEE"}
@@ -11,6 +11,7 @@ export default {
11
11
  command: "create",
12
12
  builder: (yargs) => {
13
13
  return yargs
14
+ .usage("$0 variable create --name <name> --value <value> --is-secret <boolean> --branch <branch> [options]")
14
15
  .option("name", {
15
16
  type: "string",
16
17
  describe: "The name of the variable to create",
@@ -41,6 +42,20 @@ export default {
41
42
  describe: "The project name",
42
43
  })
43
44
  .demandOption(["name", "value", "is-secret", "branch"])
45
+ .example([
46
+ [
47
+ "$0 variable create --name API_KEY --value my-secret-key --is-secret true --branch main",
48
+ "Create a secret variable for the main branch",
49
+ ],
50
+ [
51
+ "$0 variable create --name BASE_URL --value https://api.example.com --is-secret false --branch production",
52
+ "Create a non-secret variable for the production branch",
53
+ ],
54
+ [
55
+ "$0 variable create --name DB_HOST --value localhost --is-secret false --branch dev --account my-account --project my-project",
56
+ "Explicitly specify the account and project",
57
+ ],
58
+ ])
44
59
  .middleware([
45
60
  setBlocking,
46
61
  authenticate,
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cmds/variable/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAE5E,eAAe;IACb,IAAI,EAAE,qCAAqC;IAC3C,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oCAAoC;SAC/C,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,qCAAqC;SAChD,CAAC;aACD,MAAM,CAAC,WAAW,EAAE;YACnB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,0BAA0B;SACrC,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,6CAA6C;SACxD,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,wBAAwB;YAClC,MAAM,EAAE,SAAS;SAClB,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,YAAY,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;aACtD,UAAU,CAAC;YACV,WAAW;YACX,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,IAAiB,CAAC,CAAC;IAClC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { authenticate } from \"../../common/middleware/authentication.js\";\nimport { configure } from \"../../common/middleware/user-configuration.js\";\nimport { identify } from \"../../common/middleware/user-identification.js\";\nimport setBlocking from \"../../common/output.js\";\nimport { create } from \"../../variable/create/handler.js\";\nimport { Arguments } from \"../../variable/models.js\";\nimport { fetchAccount } from \"../../common/middleware/get-account-param.js\";\nimport { fetchProject } from \"../../common/middleware/get-project-param.js\";\n\nexport default {\n desc: \"Creates a new variable for a branch\",\n command: \"create\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"name\", {\n type: \"string\",\n describe: \"The name of the variable to create\",\n })\n .option(\"value\", {\n type: \"string\",\n describe: \"The value of the variable to create\",\n })\n .option(\"is-secret\", {\n type: \"boolean\",\n describe: \"Is the variable a secret\",\n })\n .option(\"branch\", {\n type: \"string\",\n describe: \"The branch where the variable should be set\",\n })\n .option(\"api-key\", {\n type: \"string\",\n describe: \"The API Key from Zuplo\",\n envVar: \"API_KEY\",\n })\n .option(\"account\", {\n type: \"string\",\n describe: \"The account name\",\n })\n .option(\"project\", {\n type: \"string\",\n describe: \"The project name\",\n })\n .demandOption([\"name\", \"value\", \"is-secret\", \"branch\"])\n .middleware([\n setBlocking,\n authenticate,\n configure,\n fetchAccount,\n fetchProject,\n identify,\n ]);\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo variable create\" });\n await create(argv as Arguments);\n },\n};\n"]}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cmds/variable/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAE5E,eAAe;IACb,IAAI,EAAE,qCAAqC;IAC3C,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,KAAK,CACJ,oGAAoG,CACrG;aACA,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oCAAoC;SAC/C,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,qCAAqC;SAChD,CAAC;aACD,MAAM,CAAC,WAAW,EAAE;YACnB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,0BAA0B;SACrC,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,6CAA6C;SACxD,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,wBAAwB;YAClC,MAAM,EAAE,SAAS;SAClB,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,YAAY,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;aACtD,OAAO,CAAC;YACP;gBACE,wFAAwF;gBACxF,8CAA8C;aAC/C;YACD;gBACE,0GAA0G;gBAC1G,wDAAwD;aACzD;YACD;gBACE,8HAA8H;gBAC9H,4CAA4C;aAC7C;SACF,CAAC;aACD,UAAU,CAAC;YACV,WAAW;YACX,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,IAAiB,CAAC,CAAC;IAClC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { authenticate } from \"../../common/middleware/authentication.js\";\nimport { configure } from \"../../common/middleware/user-configuration.js\";\nimport { identify } from \"../../common/middleware/user-identification.js\";\nimport setBlocking from \"../../common/output.js\";\nimport { create } from \"../../variable/create/handler.js\";\nimport { Arguments } from \"../../variable/models.js\";\nimport { fetchAccount } from \"../../common/middleware/get-account-param.js\";\nimport { fetchProject } from \"../../common/middleware/get-project-param.js\";\n\nexport default {\n desc: \"Creates a new variable for a branch\",\n command: \"create\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .usage(\n \"$0 variable create --name <name> --value <value> --is-secret <boolean> --branch <branch> [options]\"\n )\n .option(\"name\", {\n type: \"string\",\n describe: \"The name of the variable to create\",\n })\n .option(\"value\", {\n type: \"string\",\n describe: \"The value of the variable to create\",\n })\n .option(\"is-secret\", {\n type: \"boolean\",\n describe: \"Is the variable a secret\",\n })\n .option(\"branch\", {\n type: \"string\",\n describe: \"The branch where the variable should be set\",\n })\n .option(\"api-key\", {\n type: \"string\",\n describe: \"The API Key from Zuplo\",\n envVar: \"API_KEY\",\n })\n .option(\"account\", {\n type: \"string\",\n describe: \"The account name\",\n })\n .option(\"project\", {\n type: \"string\",\n describe: \"The project name\",\n })\n .demandOption([\"name\", \"value\", \"is-secret\", \"branch\"])\n .example([\n [\n \"$0 variable create --name API_KEY --value my-secret-key --is-secret true --branch main\",\n \"Create a secret variable for the main branch\",\n ],\n [\n \"$0 variable create --name BASE_URL --value https://api.example.com --is-secret false --branch production\",\n \"Create a non-secret variable for the production branch\",\n ],\n [\n \"$0 variable create --name DB_HOST --value localhost --is-secret false --branch dev --account my-account --project my-project\",\n \"Explicitly specify the account and project\",\n ],\n ])\n .middleware([\n setBlocking,\n authenticate,\n configure,\n fetchAccount,\n fetchProject,\n identify,\n ]);\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo variable create\" });\n await create(argv as Arguments);\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cmds/variable/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAcV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAqCf,OAAO;;AAxC/B,wBA4CE"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cmds/variable/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;;;;qBAcV,IAAI,KAAG,IAAI,CAAC,OAAO,CAAC;oBAkDf,OAAO;;AArD/B,wBAyDE"}
@@ -11,6 +11,7 @@ export default {
11
11
  command: "update",
12
12
  builder: (yargs) => {
13
13
  return yargs
14
+ .usage("$0 variable update --name <name> --value <value> --branch <branch> [options]")
14
15
  .option("name", {
15
16
  type: "string",
16
17
  describe: "The name of the variable to update",
@@ -37,6 +38,16 @@ export default {
37
38
  describe: "The account name",
38
39
  })
39
40
  .demandOption(["name", "value", "branch"])
41
+ .example([
42
+ [
43
+ "$0 variable update --name API_KEY --value new-secret-key --branch main",
44
+ "Update a variable on the main branch",
45
+ ],
46
+ [
47
+ "$0 variable update --name BASE_URL --value https://api.prod.example.com --branch production --account my-account --project my-project",
48
+ "Explicitly specify the account and project",
49
+ ],
50
+ ])
40
51
  .middleware([
41
52
  setBlocking,
42
53
  authenticate,
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cmds/variable/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAE5E,eAAe;IACb,IAAI,EAAE,2CAA2C;IACjD,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oCAAoC;SAC/C,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,qCAAqC;SAChD,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,sCAAsC;SACjD,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,wBAAwB;YAClC,MAAM,EAAE,SAAS;SAClB,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,YAAY,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACzC,UAAU,CAAC;YACV,WAAW;YACX,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,IAAiB,CAAC,CAAC;IAClC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { authenticate } from \"../../common/middleware/authentication.js\";\nimport { configure } from \"../../common/middleware/user-configuration.js\";\nimport { identify } from \"../../common/middleware/user-identification.js\";\nimport setBlocking from \"../../common/output.js\";\nimport { Arguments } from \"../../variable/models.js\";\nimport { update } from \"../../variable/update/handler.js\";\nimport { fetchAccount } from \"../../common/middleware/get-account-param.js\";\nimport { fetchProject } from \"../../common/middleware/get-project-param.js\";\n\nexport default {\n desc: \"Updates an existing variable for a branch\",\n command: \"update\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .option(\"name\", {\n type: \"string\",\n describe: \"The name of the variable to update\",\n })\n .option(\"value\", {\n type: \"string\",\n describe: \"The value of the variable to update\",\n })\n .option(\"branch\", {\n type: \"string\",\n describe: \"The branch where the variable exists\",\n })\n .option(\"project\", {\n type: \"string\",\n describe: \"The project name\",\n })\n .option(\"api-key\", {\n type: \"string\",\n describe: \"The API Key from Zuplo\",\n envVar: \"API_KEY\",\n })\n .option(\"account\", {\n type: \"string\",\n describe: \"The account name\",\n })\n .demandOption([\"name\", \"value\", \"branch\"])\n .middleware([\n setBlocking,\n authenticate,\n configure,\n fetchAccount,\n fetchProject,\n identify,\n ]);\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo variable update\" });\n await update(argv as Arguments);\n },\n};\n"]}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cmds/variable/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gDAAgD,CAAC;AAC1E,OAAO,WAAW,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAE5E,eAAe;IACb,IAAI,EAAE,2CAA2C;IACjD,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,CAAC,KAAW,EAAiB,EAAE;QACtC,OAAO,KAAK;aACT,KAAK,CACJ,8EAA8E,CAC/E;aACA,MAAM,CAAC,MAAM,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oCAAoC;SAC/C,CAAC;aACD,MAAM,CAAC,OAAO,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,qCAAqC;SAChD,CAAC;aACD,MAAM,CAAC,QAAQ,EAAE;YAChB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,sCAAsC;SACjD,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,wBAAwB;YAClC,MAAM,EAAE,SAAS;SAClB,CAAC;aACD,MAAM,CAAC,SAAS,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;aACD,YAAY,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACzC,OAAO,CAAC;YACP;gBACE,wEAAwE;gBACxE,sCAAsC;aACvC;YACD;gBACE,uIAAuI;gBACvI,4CAA4C;aAC7C;SACF,CAAC;aACD,UAAU,CAAC;YACV,WAAW;YACX,YAAY;YACZ,SAAS;YACT,YAAY;YACZ,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;QAC/B,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,IAAiB,CAAC,CAAC;IAClC,CAAC;CACF,CAAC","sourcesContent":["import { Argv } from \"yargs\";\nimport { captureEvent } from \"../../common/analytics/lib.js\";\nimport { authenticate } from \"../../common/middleware/authentication.js\";\nimport { configure } from \"../../common/middleware/user-configuration.js\";\nimport { identify } from \"../../common/middleware/user-identification.js\";\nimport setBlocking from \"../../common/output.js\";\nimport { Arguments } from \"../../variable/models.js\";\nimport { update } from \"../../variable/update/handler.js\";\nimport { fetchAccount } from \"../../common/middleware/get-account-param.js\";\nimport { fetchProject } from \"../../common/middleware/get-project-param.js\";\n\nexport default {\n desc: \"Updates an existing variable for a branch\",\n command: \"update\",\n builder: (yargs: Argv): Argv<unknown> => {\n return yargs\n .usage(\n \"$0 variable update --name <name> --value <value> --branch <branch> [options]\"\n )\n .option(\"name\", {\n type: \"string\",\n describe: \"The name of the variable to update\",\n })\n .option(\"value\", {\n type: \"string\",\n describe: \"The value of the variable to update\",\n })\n .option(\"branch\", {\n type: \"string\",\n describe: \"The branch where the variable exists\",\n })\n .option(\"project\", {\n type: \"string\",\n describe: \"The project name\",\n })\n .option(\"api-key\", {\n type: \"string\",\n describe: \"The API Key from Zuplo\",\n envVar: \"API_KEY\",\n })\n .option(\"account\", {\n type: \"string\",\n describe: \"The account name\",\n })\n .demandOption([\"name\", \"value\", \"branch\"])\n .example([\n [\n \"$0 variable update --name API_KEY --value new-secret-key --branch main\",\n \"Update a variable on the main branch\",\n ],\n [\n \"$0 variable update --name BASE_URL --value https://api.prod.example.com --branch production --account my-account --project my-project\",\n \"Explicitly specify the account and project\",\n ],\n ])\n .middleware([\n setBlocking,\n authenticate,\n configure,\n fetchAccount,\n fetchProject,\n identify,\n ]);\n },\n handler: async (argv: unknown) => {\n await captureEvent({ argv, event: \"zuplo variable update\" });\n await update(argv as Arguments);\n },\n};\n"]}
@@ -0,0 +1,13 @@
1
+ export declare const OPEN_API_FILE_TYPES: readonly string[];
2
+ export declare const HTTP_METHODS: readonly [
3
+ "get",
4
+ "put",
5
+ "post",
6
+ "delete",
7
+ "options",
8
+ "head",
9
+ "patch",
10
+ "trace",
11
+ ];
12
+ export type HttpMethod = (typeof HTTP_METHODS)[number];
13
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/common/open-api/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAIvC,CAAC;AAKX,eAAO,MAAM,YAAY,gFASf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const OPEN_API_FILE_TYPES = [
2
+ ".json",
3
+ ".yml",
4
+ ".yaml",
5
+ ];
6
+ export const HTTP_METHODS = [
7
+ "get",
8
+ "put",
9
+ "post",
10
+ "delete",
11
+ "options",
12
+ "head",
13
+ "patch",
14
+ "trace",
15
+ ];
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/common/open-api/constants.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,OAAO;IACP,MAAM;IACN,OAAO;CACC,CAAC;AAKX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,OAAO;CACC,CAAC","sourcesContent":["/**\n * Common constants for OpenAPI operations\n */\n\n/**\n * Supported OpenAPI file extensions\n */\nexport const OPEN_API_FILE_TYPES: readonly string[] = [\n \".json\",\n \".yml\",\n \".yaml\",\n] as const;\n\n/**\n * Standard HTTP methods as defined in OpenAPI specification\n */\nexport const HTTP_METHODS = [\n \"get\",\n \"put\",\n \"post\",\n \"delete\",\n \"options\",\n \"head\",\n \"patch\",\n \"trace\",\n] as const;\n\nexport type HttpMethod = (typeof HTTP_METHODS)[number];\n"]}
@@ -0,0 +1,3 @@
1
+ export * from "./constants.js";
2
+ export * from "./validation.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/open-api/index.ts"],"names":[],"mappings":"AASA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./constants.js";
2
+ export * from "./validation.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/open-api/index.ts"],"names":[],"mappings":"AASA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC","sourcesContent":["/**\n * Common OpenAPI utilities shared across CLI commands\n *\n * This module provides:\n * - Constants (file types, HTTP methods)\n * - Validation schemas and functions (OpenAPI Overlay specification)\n * - Type definitions\n */\n\nexport * from \"./constants.js\";\nexport * from \"./validation.js\";\n"]}
@@ -0,0 +1,297 @@
1
+ import { z } from "zod";
2
+ declare const RemoveConditionSchema: z.ZodEffects<
3
+ z.ZodObject<
4
+ {
5
+ empty: z.ZodOptional<z.ZodBoolean>;
6
+ missing: z.ZodOptional<z.ZodString>;
7
+ },
8
+ "strict",
9
+ z.ZodTypeAny,
10
+ {
11
+ empty?: boolean | undefined;
12
+ missing?: string | undefined;
13
+ },
14
+ {
15
+ empty?: boolean | undefined;
16
+ missing?: string | undefined;
17
+ }
18
+ >,
19
+ {
20
+ empty?: boolean | undefined;
21
+ missing?: string | undefined;
22
+ },
23
+ {
24
+ empty?: boolean | undefined;
25
+ missing?: string | undefined;
26
+ }
27
+ >;
28
+ declare const OverlayActionSchema: z.ZodEffects<
29
+ z.ZodObject<
30
+ {
31
+ target: z.ZodString;
32
+ description: z.ZodOptional<z.ZodString>;
33
+ update: z.ZodOptional<z.ZodUnknown>;
34
+ remove: z.ZodOptional<
35
+ z.ZodUnion<
36
+ [
37
+ z.ZodBoolean,
38
+ z.ZodEffects<
39
+ z.ZodObject<
40
+ {
41
+ empty: z.ZodOptional<z.ZodBoolean>;
42
+ missing: z.ZodOptional<z.ZodString>;
43
+ },
44
+ "strict",
45
+ z.ZodTypeAny,
46
+ {
47
+ empty?: boolean | undefined;
48
+ missing?: string | undefined;
49
+ },
50
+ {
51
+ empty?: boolean | undefined;
52
+ missing?: string | undefined;
53
+ }
54
+ >,
55
+ {
56
+ empty?: boolean | undefined;
57
+ missing?: string | undefined;
58
+ },
59
+ {
60
+ empty?: boolean | undefined;
61
+ missing?: string | undefined;
62
+ }
63
+ >,
64
+ ]
65
+ >
66
+ >;
67
+ },
68
+ "strict",
69
+ z.ZodTypeAny,
70
+ {
71
+ target: string;
72
+ description?: string | undefined;
73
+ update?: unknown;
74
+ remove?:
75
+ | boolean
76
+ | {
77
+ empty?: boolean | undefined;
78
+ missing?: string | undefined;
79
+ }
80
+ | undefined;
81
+ },
82
+ {
83
+ target: string;
84
+ description?: string | undefined;
85
+ update?: unknown;
86
+ remove?:
87
+ | boolean
88
+ | {
89
+ empty?: boolean | undefined;
90
+ missing?: string | undefined;
91
+ }
92
+ | undefined;
93
+ }
94
+ >,
95
+ {
96
+ target: string;
97
+ description?: string | undefined;
98
+ update?: unknown;
99
+ remove?:
100
+ | boolean
101
+ | {
102
+ empty?: boolean | undefined;
103
+ missing?: string | undefined;
104
+ }
105
+ | undefined;
106
+ },
107
+ {
108
+ target: string;
109
+ description?: string | undefined;
110
+ update?: unknown;
111
+ remove?:
112
+ | boolean
113
+ | {
114
+ empty?: boolean | undefined;
115
+ missing?: string | undefined;
116
+ }
117
+ | undefined;
118
+ }
119
+ >;
120
+ export declare const OverlayDocumentSchema: z.ZodObject<
121
+ {
122
+ overlay: z.ZodEffects<z.ZodString, string, string>;
123
+ info: z.ZodObject<
124
+ {
125
+ title: z.ZodString;
126
+ version: z.ZodString;
127
+ },
128
+ "strict",
129
+ z.ZodTypeAny,
130
+ {
131
+ version: string;
132
+ title: string;
133
+ },
134
+ {
135
+ version: string;
136
+ title: string;
137
+ }
138
+ >;
139
+ actions: z.ZodArray<
140
+ z.ZodEffects<
141
+ z.ZodObject<
142
+ {
143
+ target: z.ZodString;
144
+ description: z.ZodOptional<z.ZodString>;
145
+ update: z.ZodOptional<z.ZodUnknown>;
146
+ remove: z.ZodOptional<
147
+ z.ZodUnion<
148
+ [
149
+ z.ZodBoolean,
150
+ z.ZodEffects<
151
+ z.ZodObject<
152
+ {
153
+ empty: z.ZodOptional<z.ZodBoolean>;
154
+ missing: z.ZodOptional<z.ZodString>;
155
+ },
156
+ "strict",
157
+ z.ZodTypeAny,
158
+ {
159
+ empty?: boolean | undefined;
160
+ missing?: string | undefined;
161
+ },
162
+ {
163
+ empty?: boolean | undefined;
164
+ missing?: string | undefined;
165
+ }
166
+ >,
167
+ {
168
+ empty?: boolean | undefined;
169
+ missing?: string | undefined;
170
+ },
171
+ {
172
+ empty?: boolean | undefined;
173
+ missing?: string | undefined;
174
+ }
175
+ >,
176
+ ]
177
+ >
178
+ >;
179
+ },
180
+ "strict",
181
+ z.ZodTypeAny,
182
+ {
183
+ target: string;
184
+ description?: string | undefined;
185
+ update?: unknown;
186
+ remove?:
187
+ | boolean
188
+ | {
189
+ empty?: boolean | undefined;
190
+ missing?: string | undefined;
191
+ }
192
+ | undefined;
193
+ },
194
+ {
195
+ target: string;
196
+ description?: string | undefined;
197
+ update?: unknown;
198
+ remove?:
199
+ | boolean
200
+ | {
201
+ empty?: boolean | undefined;
202
+ missing?: string | undefined;
203
+ }
204
+ | undefined;
205
+ }
206
+ >,
207
+ {
208
+ target: string;
209
+ description?: string | undefined;
210
+ update?: unknown;
211
+ remove?:
212
+ | boolean
213
+ | {
214
+ empty?: boolean | undefined;
215
+ missing?: string | undefined;
216
+ }
217
+ | undefined;
218
+ },
219
+ {
220
+ target: string;
221
+ description?: string | undefined;
222
+ update?: unknown;
223
+ remove?:
224
+ | boolean
225
+ | {
226
+ empty?: boolean | undefined;
227
+ missing?: string | undefined;
228
+ }
229
+ | undefined;
230
+ }
231
+ >,
232
+ "many"
233
+ >;
234
+ extends: z.ZodOptional<z.ZodString>;
235
+ },
236
+ "strict",
237
+ z.ZodTypeAny,
238
+ {
239
+ info: {
240
+ version: string;
241
+ title: string;
242
+ };
243
+ overlay: string;
244
+ actions: {
245
+ target: string;
246
+ description?: string | undefined;
247
+ update?: unknown;
248
+ remove?:
249
+ | boolean
250
+ | {
251
+ empty?: boolean | undefined;
252
+ missing?: string | undefined;
253
+ }
254
+ | undefined;
255
+ }[];
256
+ extends?: string | undefined;
257
+ },
258
+ {
259
+ info: {
260
+ version: string;
261
+ title: string;
262
+ };
263
+ overlay: string;
264
+ actions: {
265
+ target: string;
266
+ description?: string | undefined;
267
+ update?: unknown;
268
+ remove?:
269
+ | boolean
270
+ | {
271
+ empty?: boolean | undefined;
272
+ missing?: string | undefined;
273
+ }
274
+ | undefined;
275
+ }[];
276
+ extends?: string | undefined;
277
+ }
278
+ >;
279
+ export declare const OpenApiDocumentSchema: z.ZodObject<
280
+ {},
281
+ "passthrough",
282
+ z.ZodTypeAny,
283
+ z.objectOutputType<{}, z.ZodTypeAny, "passthrough">,
284
+ z.objectInputType<{}, z.ZodTypeAny, "passthrough">
285
+ >;
286
+ export type OverlayDocument = z.infer<typeof OverlayDocumentSchema>;
287
+ export type OverlayAction = z.infer<typeof OverlayActionSchema>;
288
+ export type RemoveCondition = z.infer<typeof RemoveConditionSchema>;
289
+ export type OpenApiDocument = z.infer<typeof OpenApiDocumentSchema>;
290
+ export declare function validateOverlayDocument(
291
+ value: unknown
292
+ ): OverlayDocument;
293
+ export declare function validateOpenApiDocument(
294
+ value: unknown
295
+ ): OpenApiDocument;
296
+ export {};
297
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/common/open-api/validation.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAYvB,CAAC;AAKL,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCtB,CAAC;AAMJ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBvB,CAAC;AAOZ,eAAO,MAAM,qBAAqB,uJAKkB,CAAC;AAKrD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAcvE;AAQD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CASvE"}
@@ -0,0 +1,88 @@
1
+ import semver from "semver";
2
+ import { z } from "zod";
3
+ const RemoveConditionSchema = z
4
+ .object({
5
+ empty: z.boolean().optional().describe("Remove if object/array is empty"),
6
+ missing: z
7
+ .string()
8
+ .optional()
9
+ .describe("Remove if specified property path is missing"),
10
+ })
11
+ .strict()
12
+ .refine((data) => data.empty !== undefined || data.missing !== undefined, {
13
+ message: "Remove condition must specify either 'empty' or 'missing' property",
14
+ });
15
+ const OverlayActionSchema = z
16
+ .object({
17
+ target: z
18
+ .string()
19
+ .min(1, "Action target cannot be empty")
20
+ .startsWith("$", "Action target must be a valid JSONPath starting with '$'")
21
+ .describe("JSONPath expression pointing to the target element(s) in the OpenAPI document"),
22
+ description: z
23
+ .string()
24
+ .optional()
25
+ .describe("Human-readable description of what this action does"),
26
+ update: z
27
+ .unknown()
28
+ .optional()
29
+ .describe("Value to merge/add at the target location"),
30
+ remove: z
31
+ .union([z.boolean(), RemoveConditionSchema])
32
+ .optional()
33
+ .describe("If true or condition met, remove the target element(s)"),
34
+ })
35
+ .strict()
36
+ .refine((data) => (data.update !== undefined) !== (data.remove !== undefined), {
37
+ message: "Action must specify exactly one of 'update' or 'remove' (not both, not neither)",
38
+ path: ["update", "remove"],
39
+ });
40
+ export const OverlayDocumentSchema = z
41
+ .object({
42
+ overlay: z
43
+ .string()
44
+ .refine((value) => semver.valid(value) !== null, "Overlay version must be a valid semver version (e.g., '1.0.0', '1.0.0-alpha.1', '1.0.0+build.123')")
45
+ .describe("Version of the OpenAPI Overlay specification being used"),
46
+ info: z
47
+ .object({
48
+ title: z.string().min(1, "Overlay title cannot be empty"),
49
+ version: z.string().min(1, "Overlay version cannot be empty"),
50
+ })
51
+ .strict()
52
+ .describe("Metadata about this overlay"),
53
+ actions: z
54
+ .array(OverlayActionSchema)
55
+ .min(1, "Overlay must contain at least one action")
56
+ .describe("Array of modifications to apply to the OpenAPI document"),
57
+ extends: z
58
+ .string()
59
+ .optional()
60
+ .describe("URL or path to another overlay to extend"),
61
+ })
62
+ .strict();
63
+ export const OpenApiDocumentSchema = z
64
+ .object({})
65
+ .passthrough()
66
+ .describe("OpenAPI document (lenient validation)");
67
+ export function validateOverlayDocument(value) {
68
+ const result = OverlayDocumentSchema.safeParse(value);
69
+ if (!result.success) {
70
+ const errors = result.error.errors
71
+ .map((err) => {
72
+ const path = err.path.length > 0 ? ` at '${err.path.join(".")}'` : "";
73
+ return ` • ${err.message}${path}`;
74
+ })
75
+ .join("\n");
76
+ throw new Error(`Invalid OpenAPI Overlay document:\n${errors}\n\nThe overlay must conform to the OpenAPI Overlay Specification v1.0.0`);
77
+ }
78
+ return result.data;
79
+ }
80
+ export function validateOpenApiDocument(value) {
81
+ const result = OpenApiDocumentSchema.safeParse(value);
82
+ if (!result.success) {
83
+ throw new Error(`OpenAPI document must be a valid JSON or YAML object. ` +
84
+ `The file appears to be empty or contains invalid data.`);
85
+ }
86
+ return result.data;
87
+ }
88
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/common/open-api/validation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Validation schemas for OpenAPI documents and overlays\n * Using Zod for runtime validation with actionable error messages\n */\n\nimport semver from \"semver\";\nimport { z } from \"zod\";\n\n/**\n * Schema for remove condition - used for conditional removal of elements\n */\nconst RemoveConditionSchema = z\n .object({\n empty: z.boolean().optional().describe(\"Remove if object/array is empty\"),\n missing: z\n .string()\n .optional()\n .describe(\"Remove if specified property path is missing\"),\n })\n .strict()\n .refine((data) => data.empty !== undefined || data.missing !== undefined, {\n message:\n \"Remove condition must specify either 'empty' or 'missing' property\",\n });\n\n/**\n * Schema for overlay action - defines a single modification to apply\n */\nconst OverlayActionSchema = z\n .object({\n target: z\n .string()\n .min(1, \"Action target cannot be empty\")\n .startsWith(\n \"$\",\n \"Action target must be a valid JSONPath starting with '$'\"\n )\n .describe(\n \"JSONPath expression pointing to the target element(s) in the OpenAPI document\"\n ),\n description: z\n .string()\n .optional()\n .describe(\"Human-readable description of what this action does\"),\n update: z\n .unknown()\n .optional()\n .describe(\"Value to merge/add at the target location\"),\n remove: z\n .union([z.boolean(), RemoveConditionSchema])\n .optional()\n .describe(\"If true or condition met, remove the target element(s)\"),\n })\n .strict()\n .refine(\n (data) => (data.update !== undefined) !== (data.remove !== undefined),\n {\n message:\n \"Action must specify exactly one of 'update' or 'remove' (not both, not neither)\",\n path: [\"update\", \"remove\"],\n }\n );\n\n/**\n * Schema for OpenAPI Overlay document\n * Based on: https://github.com/OAI/Overlay-Specification v1.0.0\n */\nexport const OverlayDocumentSchema = z\n .object({\n overlay: z\n .string()\n .refine(\n (value) => semver.valid(value) !== null,\n \"Overlay version must be a valid semver version (e.g., '1.0.0', '1.0.0-alpha.1', '1.0.0+build.123')\"\n )\n .describe(\"Version of the OpenAPI Overlay specification being used\"),\n info: z\n .object({\n title: z.string().min(1, \"Overlay title cannot be empty\"),\n version: z.string().min(1, \"Overlay version cannot be empty\"),\n })\n .strict()\n .describe(\"Metadata about this overlay\"),\n actions: z\n .array(OverlayActionSchema)\n .min(1, \"Overlay must contain at least one action\")\n .describe(\"Array of modifications to apply to the OpenAPI document\"),\n extends: z\n .string()\n .optional()\n .describe(\"URL or path to another overlay to extend\"),\n })\n .strict();\n\n/**\n * Schema for OpenAPI document structure\n * This is intentionally lenient to work with imperfect/incomplete OpenAPI files.\n * The overlay tool is often used to fix incomplete specs, so we shouldn't be too strict.\n */\nexport const OpenApiDocumentSchema = z\n .object({\n // Accept any object - we just need it to be valid JSON/YAML that we can manipulate\n })\n .passthrough()\n .describe(\"OpenAPI document (lenient validation)\");\n\n/**\n * Type exports matching Zod schemas\n */\nexport type OverlayDocument = z.infer<typeof OverlayDocumentSchema>;\nexport type OverlayAction = z.infer<typeof OverlayActionSchema>;\nexport type RemoveCondition = z.infer<typeof RemoveConditionSchema>;\nexport type OpenApiDocument = z.infer<typeof OpenApiDocumentSchema>;\n\n/**\n * Validate an OpenAPI Overlay document\n * @throws {Error} with actionable error message if validation fails\n */\nexport function validateOverlayDocument(value: unknown): OverlayDocument {\n const result = OverlayDocumentSchema.safeParse(value);\n if (!result.success) {\n const errors = result.error.errors\n .map((err) => {\n const path = err.path.length > 0 ? ` at '${err.path.join(\".\")}'` : \"\";\n return ` • ${err.message}${path}`;\n })\n .join(\"\\n\");\n throw new Error(\n `Invalid OpenAPI Overlay document:\\n${errors}\\n\\nThe overlay must conform to the OpenAPI Overlay Specification v1.0.0`\n );\n }\n return result.data;\n}\n\n/**\n * Validate an OpenAPI document\n * This validation is intentionally lenient - we only check that it's a valid object.\n * The overlay tool should work with imperfect OpenAPI files.\n * @throws {Error} if the document is not a valid object\n */\nexport function validateOpenApiDocument(value: unknown): OpenApiDocument {\n const result = OpenApiDocumentSchema.safeParse(value);\n if (!result.success) {\n throw new Error(\n `OpenAPI document must be a valid JSON or YAML object. ` +\n `The file appears to be empty or contains invalid data.`\n );\n }\n return result.data;\n}\n"]}
@@ -177,7 +177,7 @@ function restoreExistingZuploEnvAsNecessary(argv, originalValue) {
177
177
  }
178
178
  }
179
179
  const getPrettyBranch = (branch) => {
180
- return branch
180
+ return (branch
181
181
  .normalize("NFD")
182
182
  .replace(/[\u0300-\u036f]/g, "")
183
183
  .replace(/([^\w]+|\s+)/g, "-")
@@ -185,6 +185,7 @@ const getPrettyBranch = (branch) => {
185
185
  .replace(/(^-+|-+$)/, "")
186
186
  .replaceAll("_", "-")
187
187
  .toLowerCase()
188
- .substring(0, MAX_PRETTY_BRANCH_LENGTH);
188
+ .substring(0, MAX_PRETTY_BRANCH_LENGTH)
189
+ .replace(/-$/, ""));
189
190
  };
190
191
  //# sourceMappingURL=handler.js.map