@osdk/create-app 0.19.0-beta.4 → 0.19.0-beta.6

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 (224) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/browser/cli.d.ts +2 -0
  3. package/build/browser/cli.d.ts.map +1 -0
  4. package/build/browser/cli.js +95 -0
  5. package/build/browser/cli.js.map +1 -0
  6. package/build/browser/cli.test.d.ts +2 -0
  7. package/build/browser/cli.test.d.ts.map +1 -0
  8. package/build/browser/cli.test.js +59 -0
  9. package/build/browser/cli.test.js.map +1 -0
  10. package/build/browser/consola.d.ts +3 -0
  11. package/build/browser/consola.d.ts.map +1 -0
  12. package/build/browser/consola.js +28 -0
  13. package/build/browser/consola.js.map +1 -0
  14. package/build/browser/generate/generateEnv.d.ts +13 -0
  15. package/build/browser/generate/generateEnv.d.ts.map +1 -0
  16. package/build/browser/generate/generateEnv.js +50 -0
  17. package/build/browser/generate/generateEnv.js.map +1 -0
  18. package/build/browser/generate/generateEnv.test.d.ts +2 -0
  19. package/build/browser/generate/generateEnv.test.d.ts.map +1 -0
  20. package/build/browser/generate/generateEnv.test.js +70 -0
  21. package/build/browser/generate/generateEnv.test.js.map +1 -0
  22. package/build/browser/generate/generateFoundryConfigJson.d.ts +6 -0
  23. package/build/browser/generate/generateFoundryConfigJson.d.ts.map +1 -0
  24. package/build/browser/generate/generateFoundryConfigJson.js +33 -0
  25. package/build/browser/generate/generateFoundryConfigJson.js.map +1 -0
  26. package/build/browser/generate/generateFoundryConfigJson.test.d.ts +2 -0
  27. package/build/browser/generate/generateFoundryConfigJson.test.d.ts.map +1 -0
  28. package/build/browser/generate/generateFoundryConfigJson.test.js +38 -0
  29. package/build/browser/generate/generateFoundryConfigJson.test.js.map +1 -0
  30. package/build/browser/generate/generateNpmRc.d.ts +5 -0
  31. package/build/browser/generate/generateNpmRc.d.ts.map +1 -0
  32. package/build/browser/generate/generateNpmRc.js +27 -0
  33. package/build/browser/generate/generateNpmRc.js.map +1 -0
  34. package/build/browser/generate/generateNpmRc.test.d.ts +2 -0
  35. package/build/browser/generate/generateNpmRc.test.d.ts.map +1 -0
  36. package/build/browser/generate/generateNpmRc.test.js +28 -0
  37. package/build/browser/generate/generateNpmRc.test.js.map +1 -0
  38. package/build/browser/highlight.d.ts +3 -0
  39. package/build/browser/highlight.d.ts.map +1 -0
  40. package/build/browser/highlight.js +23 -0
  41. package/build/browser/highlight.js.map +1 -0
  42. package/build/browser/index.d.ts +5 -0
  43. package/build/browser/index.d.ts.map +1 -0
  44. package/build/browser/index.js +18 -540
  45. package/build/browser/index.js.map +1 -1
  46. package/build/browser/prompts/promptApplicationRid.d.ts +4 -0
  47. package/build/browser/prompts/promptApplicationRid.d.ts.map +1 -0
  48. package/build/browser/prompts/promptApplicationRid.js +31 -0
  49. package/build/browser/prompts/promptApplicationRid.js.map +1 -0
  50. package/build/browser/prompts/promptApplicationRid.test.d.ts +2 -0
  51. package/build/browser/prompts/promptApplicationRid.test.d.ts.map +1 -0
  52. package/build/browser/prompts/promptApplicationRid.test.js +48 -0
  53. package/build/browser/prompts/promptApplicationRid.test.js.map +1 -0
  54. package/build/browser/prompts/promptApplicationUrl.d.ts +5 -0
  55. package/build/browser/prompts/promptApplicationUrl.d.ts.map +1 -0
  56. package/build/browser/prompts/promptApplicationUrl.js +50 -0
  57. package/build/browser/prompts/promptApplicationUrl.js.map +1 -0
  58. package/build/browser/prompts/promptApplicationUrl.test.d.ts +2 -0
  59. package/build/browser/prompts/promptApplicationUrl.test.d.ts.map +1 -0
  60. package/build/browser/prompts/promptApplicationUrl.test.js +68 -0
  61. package/build/browser/prompts/promptApplicationUrl.test.js.map +1 -0
  62. package/build/browser/prompts/promptClientId.d.ts +4 -0
  63. package/build/browser/prompts/promptClientId.d.ts.map +1 -0
  64. package/build/browser/prompts/promptClientId.js +31 -0
  65. package/build/browser/prompts/promptClientId.js.map +1 -0
  66. package/build/browser/prompts/promptClientId.test.d.ts +2 -0
  67. package/build/browser/prompts/promptClientId.test.d.ts.map +1 -0
  68. package/build/browser/prompts/promptClientId.test.js +47 -0
  69. package/build/browser/prompts/promptClientId.test.js.map +1 -0
  70. package/build/browser/prompts/promptCorsProxy.d.ts +4 -0
  71. package/build/browser/prompts/promptCorsProxy.d.ts.map +1 -0
  72. package/build/browser/prompts/promptCorsProxy.js +29 -0
  73. package/build/browser/prompts/promptCorsProxy.js.map +1 -0
  74. package/build/browser/prompts/promptCorsProxy.test.d.ts +2 -0
  75. package/build/browser/prompts/promptCorsProxy.test.d.ts.map +1 -0
  76. package/build/browser/prompts/promptCorsProxy.test.js +44 -0
  77. package/build/browser/prompts/promptCorsProxy.test.js.map +1 -0
  78. package/build/browser/prompts/promptFoundryUrl.d.ts +4 -0
  79. package/build/browser/prompts/promptFoundryUrl.d.ts.map +1 -0
  80. package/build/browser/prompts/promptFoundryUrl.js +31 -0
  81. package/build/browser/prompts/promptFoundryUrl.js.map +1 -0
  82. package/build/browser/prompts/promptFoundryUrl.test.d.ts +2 -0
  83. package/build/browser/prompts/promptFoundryUrl.test.d.ts.map +1 -0
  84. package/build/browser/prompts/promptFoundryUrl.test.js +55 -0
  85. package/build/browser/prompts/promptFoundryUrl.test.js.map +1 -0
  86. package/build/browser/prompts/promptOsdkPackage.d.ts +4 -0
  87. package/build/browser/prompts/promptOsdkPackage.d.ts.map +1 -0
  88. package/build/browser/prompts/promptOsdkPackage.js +31 -0
  89. package/build/browser/prompts/promptOsdkPackage.js.map +1 -0
  90. package/build/browser/prompts/promptOsdkPackage.test.d.ts +2 -0
  91. package/build/browser/prompts/promptOsdkPackage.test.d.ts.map +1 -0
  92. package/build/browser/prompts/promptOsdkPackage.test.js +48 -0
  93. package/build/browser/prompts/promptOsdkPackage.test.js.map +1 -0
  94. package/build/browser/prompts/promptOsdkRegistryUrl.d.ts +4 -0
  95. package/build/browser/prompts/promptOsdkRegistryUrl.d.ts.map +1 -0
  96. package/build/browser/prompts/promptOsdkRegistryUrl.js +31 -0
  97. package/build/browser/prompts/promptOsdkRegistryUrl.js.map +1 -0
  98. package/build/browser/prompts/promptOsdkRegistryUrl.test.d.ts +2 -0
  99. package/build/browser/prompts/promptOsdkRegistryUrl.test.d.ts.map +1 -0
  100. package/build/browser/prompts/promptOsdkRegistryUrl.test.js +54 -0
  101. package/build/browser/prompts/promptOsdkRegistryUrl.test.js.map +1 -0
  102. package/build/browser/prompts/promptOverwrite.d.ts +5 -0
  103. package/build/browser/prompts/promptOverwrite.d.ts.map +1 -0
  104. package/build/browser/prompts/promptOverwrite.js +53 -0
  105. package/build/browser/prompts/promptOverwrite.js.map +1 -0
  106. package/build/browser/prompts/promptOverwrite.test.d.ts +2 -0
  107. package/build/browser/prompts/promptOverwrite.test.d.ts.map +1 -0
  108. package/build/browser/prompts/promptOverwrite.test.js +55 -0
  109. package/build/browser/prompts/promptOverwrite.test.js.map +1 -0
  110. package/build/browser/prompts/promptProject.d.ts +4 -0
  111. package/build/browser/prompts/promptProject.d.ts.map +1 -0
  112. package/build/browser/prompts/promptProject.js +32 -0
  113. package/build/browser/prompts/promptProject.js.map +1 -0
  114. package/build/browser/prompts/promptProject.test.d.ts +2 -0
  115. package/build/browser/prompts/promptProject.test.d.ts.map +1 -0
  116. package/build/browser/prompts/promptProject.test.js +47 -0
  117. package/build/browser/prompts/promptProject.test.js.map +1 -0
  118. package/build/browser/prompts/promptTemplate.d.ts +6 -0
  119. package/build/browser/prompts/promptTemplate.d.ts.map +1 -0
  120. package/build/browser/prompts/promptTemplate.js +45 -0
  121. package/build/browser/prompts/promptTemplate.js.map +1 -0
  122. package/build/browser/prompts/promptTemplate.test.d.ts +2 -0
  123. package/build/browser/prompts/promptTemplate.test.d.ts.map +1 -0
  124. package/build/browser/prompts/promptTemplate.test.js +48 -0
  125. package/build/browser/prompts/promptTemplate.test.js.map +1 -0
  126. package/build/browser/run.d.ts +16 -0
  127. package/build/browser/run.d.ts.map +1 -0
  128. package/build/browser/run.js +132 -0
  129. package/build/browser/run.js.map +1 -0
  130. package/build/browser/templates.d.ts +23 -0
  131. package/build/browser/templates.d.ts.map +1 -0
  132. package/build/browser/templates.js +56 -0
  133. package/build/browser/templates.js.map +1 -0
  134. package/build/esm/cli.js +95 -0
  135. package/build/esm/cli.js.map +1 -0
  136. package/build/esm/cli.test.js +59 -0
  137. package/build/esm/cli.test.js.map +1 -0
  138. package/build/esm/consola.js +28 -0
  139. package/build/esm/consola.js.map +1 -0
  140. package/build/esm/generate/generateEnv.js +50 -0
  141. package/build/esm/generate/generateEnv.js.map +1 -0
  142. package/build/esm/generate/generateEnv.test.js +70 -0
  143. package/build/esm/generate/generateEnv.test.js.map +1 -0
  144. package/build/esm/generate/generateFoundryConfigJson.js +33 -0
  145. package/build/esm/generate/generateFoundryConfigJson.js.map +1 -0
  146. package/build/esm/generate/generateFoundryConfigJson.test.js +38 -0
  147. package/build/esm/generate/generateFoundryConfigJson.test.js.map +1 -0
  148. package/build/esm/generate/generateNpmRc.js +27 -0
  149. package/build/esm/generate/generateNpmRc.js.map +1 -0
  150. package/build/esm/generate/generateNpmRc.test.js +28 -0
  151. package/build/esm/generate/generateNpmRc.test.js.map +1 -0
  152. package/build/esm/highlight.js +23 -0
  153. package/build/esm/highlight.js.map +1 -0
  154. package/build/esm/index.js +18 -540
  155. package/build/esm/index.js.map +1 -1
  156. package/build/esm/prompts/promptApplicationRid.js +31 -0
  157. package/build/esm/prompts/promptApplicationRid.js.map +1 -0
  158. package/build/esm/prompts/promptApplicationRid.test.js +48 -0
  159. package/build/esm/prompts/promptApplicationRid.test.js.map +1 -0
  160. package/build/esm/prompts/promptApplicationUrl.js +50 -0
  161. package/build/esm/prompts/promptApplicationUrl.js.map +1 -0
  162. package/build/esm/prompts/promptApplicationUrl.test.js +68 -0
  163. package/build/esm/prompts/promptApplicationUrl.test.js.map +1 -0
  164. package/build/esm/prompts/promptClientId.js +31 -0
  165. package/build/esm/prompts/promptClientId.js.map +1 -0
  166. package/build/esm/prompts/promptClientId.test.js +47 -0
  167. package/build/esm/prompts/promptClientId.test.js.map +1 -0
  168. package/build/esm/prompts/promptCorsProxy.js +29 -0
  169. package/build/esm/prompts/promptCorsProxy.js.map +1 -0
  170. package/build/esm/prompts/promptCorsProxy.test.js +44 -0
  171. package/build/esm/prompts/promptCorsProxy.test.js.map +1 -0
  172. package/build/esm/prompts/promptFoundryUrl.js +31 -0
  173. package/build/esm/prompts/promptFoundryUrl.js.map +1 -0
  174. package/build/esm/prompts/promptFoundryUrl.test.js +55 -0
  175. package/build/esm/prompts/promptFoundryUrl.test.js.map +1 -0
  176. package/build/esm/prompts/promptOsdkPackage.js +31 -0
  177. package/build/esm/prompts/promptOsdkPackage.js.map +1 -0
  178. package/build/esm/prompts/promptOsdkPackage.test.js +48 -0
  179. package/build/esm/prompts/promptOsdkPackage.test.js.map +1 -0
  180. package/build/esm/prompts/promptOsdkRegistryUrl.js +31 -0
  181. package/build/esm/prompts/promptOsdkRegistryUrl.js.map +1 -0
  182. package/build/esm/prompts/promptOsdkRegistryUrl.test.js +54 -0
  183. package/build/esm/prompts/promptOsdkRegistryUrl.test.js.map +1 -0
  184. package/build/esm/prompts/promptOverwrite.js +53 -0
  185. package/build/esm/prompts/promptOverwrite.js.map +1 -0
  186. package/build/esm/prompts/promptOverwrite.test.js +55 -0
  187. package/build/esm/prompts/promptOverwrite.test.js.map +1 -0
  188. package/build/esm/prompts/promptProject.js +32 -0
  189. package/build/esm/prompts/promptProject.js.map +1 -0
  190. package/build/esm/prompts/promptProject.test.js +47 -0
  191. package/build/esm/prompts/promptProject.test.js.map +1 -0
  192. package/build/esm/prompts/promptTemplate.js +45 -0
  193. package/build/esm/prompts/promptTemplate.js.map +1 -0
  194. package/build/esm/prompts/promptTemplate.test.js +48 -0
  195. package/build/esm/prompts/promptTemplate.test.js.map +1 -0
  196. package/build/esm/run.js +132 -0
  197. package/build/esm/run.js.map +1 -0
  198. package/build/esm/templates.js +56 -0
  199. package/build/esm/templates.js.map +1 -0
  200. package/package.json +8 -10
  201. package/build/browser/esm-D3BAJ7G6.js +0 -456
  202. package/build/browser/esm-D3BAJ7G6.js.map +0 -1
  203. package/build/browser/esm-OBQZ3MUJ.js +0 -383
  204. package/build/browser/esm-OBQZ3MUJ.js.map +0 -1
  205. package/build/browser/esm-QPUX3UHH.js +0 -908
  206. package/build/browser/esm-QPUX3UHH.js.map +0 -1
  207. package/build/browser/esm-W6PA7H72.js +0 -1176
  208. package/build/browser/esm-W6PA7H72.js.map +0 -1
  209. package/build/browser/esm-XL3FVLVU.js +0 -375
  210. package/build/browser/esm-XL3FVLVU.js.map +0 -1
  211. package/build/browser/esm-Y4LEDX6D.js +0 -253
  212. package/build/browser/esm-Y4LEDX6D.js.map +0 -1
  213. package/build/esm/esm-D3BAJ7G6.js +0 -456
  214. package/build/esm/esm-D3BAJ7G6.js.map +0 -1
  215. package/build/esm/esm-OBQZ3MUJ.js +0 -383
  216. package/build/esm/esm-OBQZ3MUJ.js.map +0 -1
  217. package/build/esm/esm-QPUX3UHH.js +0 -908
  218. package/build/esm/esm-QPUX3UHH.js.map +0 -1
  219. package/build/esm/esm-W6PA7H72.js +0 -1176
  220. package/build/esm/esm-W6PA7H72.js.map +0 -1
  221. package/build/esm/esm-XL3FVLVU.js +0 -375
  222. package/build/esm/esm-XL3FVLVU.js.map +0 -1
  223. package/build/esm/esm-Y4LEDX6D.js +0 -253
  224. package/build/esm/esm-Y4LEDX6D.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptOsdkPackage.test.js","names":["afterEach","expect","test","vi","consola","promptOsdkPackage","mock","restoreAllMocks","mocked","prompt","mockResolvedValueOnce","toEqual","toHaveBeenCalledTimes","osdkPackage","not","toHaveBeenCalled"],"sources":["promptOsdkPackage.test.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { afterEach, expect, test, vi } from \"vitest\";\nimport { consola } from \"../consola.js\";\nimport { promptOsdkPackage } from \"./promptOsdkPackage.js\";\nvi.mock(\"../consola.js\");\nafterEach(() => {\n vi.restoreAllMocks();\n});\ntest(\"it accepts valid osdk package from prompt\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"@myapp/sdk\");\n expect(await promptOsdkPackage({})).toEqual(\"@myapp/sdk\");\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it prompts again if answered value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"some-package\");\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"@some/package\");\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"@myapp/sdk\");\n expect(await promptOsdkPackage({})).toEqual(\"@myapp/sdk\");\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(3);\n});\ntest(\"it accepts valid initial value without prompt\", async () => {\n expect(await promptOsdkPackage({ osdkPackage: \"@myapp/sdk\" })).toEqual(\"@myapp/sdk\");\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\ntest(\"it prompts if initial value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"@myapp/sdk\");\n expect(await promptOsdkPackage({ osdkPackage: \"some-package\" })).toEqual(\"@myapp/sdk\");\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAQ,QAAQ;AACpD,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1DF,EAAE,CAACG,IAAI,CAAC,eAAe,CAAC;AACxBN,SAAS,CAAC,MAAM;EACZG,EAAE,CAACI,eAAe,CAAC,CAAC;AACxB,CAAC,CAAC;AACFL,IAAI,CAAC,2CAA2C,EAAE,YAAY;EAC1DC,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,YAAY,CAAC;EAC7DT,MAAM,CAAC,MAAMI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC,YAAY,CAAC;EACzDV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFV,IAAI,CAAC,+CAA+C,EAAE,YAAY;EAC9DC,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,cAAc,CAAC;EAC/DP,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,eAAe,CAAC;EAChEP,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,YAAY,CAAC;EAC7DT,MAAM,CAAC,MAAMI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC,YAAY,CAAC;EACzDV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFV,IAAI,CAAC,+CAA+C,EAAE,YAAY;EAC9DD,MAAM,CAAC,MAAMI,iBAAiB,CAAC;IAAEQ,WAAW,EAAE;EAAa,CAAC,CAAC,CAAC,CAACF,OAAO,CAAC,YAAY,CAAC;EACpFV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACK,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AACFb,IAAI,CAAC,wCAAwC,EAAE,YAAY;EACvDC,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,YAAY,CAAC;EAC7DT,MAAM,CAAC,MAAMI,iBAAiB,CAAC;IAAEQ,WAAW,EAAE;EAAe,CAAC,CAAC,CAAC,CAACF,OAAO,CAAC,YAAY,CAAC;EACtFV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { consola } from "../consola.js";
17
+ import { italic } from "../highlight.js";
18
+ export async function promptOsdkRegistryUrl({
19
+ osdkRegistryUrl
20
+ }) {
21
+ while (osdkRegistryUrl == null || !/^https:\/\/[^/]+\/artifacts\/api\/repositories\/ri\.artifacts\.[^/]+\/contents\/release\/npm\/?$/.test(osdkRegistryUrl)) {
22
+ if (osdkRegistryUrl != null) {
23
+ consola.fail("Please enter a valid NPM registry URL to install your OSDK package");
24
+ }
25
+ osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:\n${italic("(Example: https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)")}`, {
26
+ type: "text"
27
+ });
28
+ }
29
+ return osdkRegistryUrl.replace(/\/$/, "");
30
+ }
31
+ //# sourceMappingURL=promptOsdkRegistryUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptOsdkRegistryUrl.js","names":["consola","italic","promptOsdkRegistryUrl","osdkRegistryUrl","test","fail","prompt","type","replace"],"sources":["promptOsdkRegistryUrl.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { consola } from \"../consola.js\";\nimport { italic } from \"../highlight.js\";\nexport async function promptOsdkRegistryUrl({ osdkRegistryUrl }) {\n while (osdkRegistryUrl == null\n || !/^https:\\/\\/[^/]+\\/artifacts\\/api\\/repositories\\/ri\\.artifacts\\.[^/]+\\/contents\\/release\\/npm\\/?$/\n .test(osdkRegistryUrl)) {\n if (osdkRegistryUrl != null) {\n consola.fail(\"Please enter a valid NPM registry URL to install your OSDK package\");\n }\n osdkRegistryUrl = await consola.prompt(`Enter the NPM registry URL to install your OSDK package from Developer Console:\\n${italic(\"(Example: https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.a4a7fe1c-486f-4226-b706-7b90005f527d/contents/release/npm)\")}`, { type: \"text\" });\n }\n return osdkRegistryUrl.replace(/\\/$/, \"\");\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,MAAM,QAAQ,iBAAiB;AACxC,OAAO,eAAeC,qBAAqBA,CAAC;EAAEC;AAAgB,CAAC,EAAE;EAC7D,OAAOA,eAAe,IAAI,IAAI,IACvB,CAAC,kGAAkG,CACjGC,IAAI,CAACD,eAAe,CAAC,EAAE;IAC5B,IAAIA,eAAe,IAAI,IAAI,EAAE;MACzBH,OAAO,CAACK,IAAI,CAAC,oEAAoE,CAAC;IACtF;IACAF,eAAe,GAAG,MAAMH,OAAO,CAACM,MAAM,CAAC,oFAAoFL,MAAM,CAAC,kKAAkK,CAAC,EAAE,EAAE;MAAEM,IAAI,EAAE;IAAO,CAAC,CAAC;EAC9T;EACA,OAAOJ,eAAe,CAACK,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAC7C","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { afterEach, expect, test, vi } from "vitest";
17
+ import { consola } from "../consola.js";
18
+ import { promptOsdkRegistryUrl } from "./promptOsdkRegistryUrl.js";
19
+ vi.mock("../consola.js");
20
+ afterEach(() => {
21
+ vi.restoreAllMocks();
22
+ });
23
+ const valid = "https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.fake/contents/release/npm";
24
+ test("it accepts valid osdk registry url from prompt", async () => {
25
+ vi.mocked(consola).prompt.mockResolvedValueOnce(valid);
26
+ expect(await promptOsdkRegistryUrl({})).toEqual(valid);
27
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
28
+ });
29
+ test("it prompts again if answered value is invalid", async () => {
30
+ vi.mocked(consola).prompt.mockResolvedValueOnce("invalid");
31
+ vi.mocked(consola).prompt.mockResolvedValueOnce("https://abc.com/something");
32
+ vi.mocked(consola).prompt.mockResolvedValueOnce(valid);
33
+ expect(await promptOsdkRegistryUrl({})).toEqual(valid);
34
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(3);
35
+ });
36
+ test("it accepts valid initial value without prompt", async () => {
37
+ expect(await promptOsdkRegistryUrl({
38
+ osdkRegistryUrl: valid
39
+ })).toEqual(valid);
40
+ expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();
41
+ });
42
+ test("it prompts if initial value is invalid", async () => {
43
+ vi.mocked(consola).prompt.mockResolvedValueOnce(valid);
44
+ expect(await promptOsdkRegistryUrl({
45
+ osdkRegistryUrl: "invalid"
46
+ })).toEqual(valid);
47
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
48
+ });
49
+ test("it strips trailing slash from url", async () => {
50
+ vi.mocked(consola).prompt.mockResolvedValueOnce(valid + "/");
51
+ expect(await promptOsdkRegistryUrl({})).toEqual(valid);
52
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
53
+ });
54
+ //# sourceMappingURL=promptOsdkRegistryUrl.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptOsdkRegistryUrl.test.js","names":["afterEach","expect","test","vi","consola","promptOsdkRegistryUrl","mock","restoreAllMocks","valid","mocked","prompt","mockResolvedValueOnce","toEqual","toHaveBeenCalledTimes","osdkRegistryUrl","not","toHaveBeenCalled"],"sources":["promptOsdkRegistryUrl.test.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { afterEach, expect, test, vi } from \"vitest\";\nimport { consola } from \"../consola.js\";\nimport { promptOsdkRegistryUrl } from \"./promptOsdkRegistryUrl.js\";\nvi.mock(\"../consola.js\");\nafterEach(() => {\n vi.restoreAllMocks();\n});\nconst valid = \"https://example.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.fake/contents/release/npm\";\ntest(\"it accepts valid osdk registry url from prompt\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(valid);\n expect(await promptOsdkRegistryUrl({})).toEqual(valid);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it prompts again if answered value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"invalid\");\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"https://abc.com/something\");\n vi.mocked(consola).prompt.mockResolvedValueOnce(valid);\n expect(await promptOsdkRegistryUrl({})).toEqual(valid);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(3);\n});\ntest(\"it accepts valid initial value without prompt\", async () => {\n expect(await promptOsdkRegistryUrl({ osdkRegistryUrl: valid })).toEqual(valid);\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\ntest(\"it prompts if initial value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(valid);\n expect(await promptOsdkRegistryUrl({ osdkRegistryUrl: \"invalid\" })).toEqual(valid);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it strips trailing slash from url\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(valid + \"/\");\n expect(await promptOsdkRegistryUrl({})).toEqual(valid);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAQ,QAAQ;AACpD,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,qBAAqB,QAAQ,4BAA4B;AAClEF,EAAE,CAACG,IAAI,CAAC,eAAe,CAAC;AACxBN,SAAS,CAAC,MAAM;EACZG,EAAE,CAACI,eAAe,CAAC,CAAC;AACxB,CAAC,CAAC;AACF,MAAMC,KAAK,GAAG,uHAAuH;AACrIN,IAAI,CAAC,gDAAgD,EAAE,YAAY;EAC/DC,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAACH,KAAK,CAAC;EACtDP,MAAM,CAAC,MAAMI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACO,OAAO,CAACJ,KAAK,CAAC;EACtDP,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFX,IAAI,CAAC,+CAA+C,EAAE,YAAY;EAC9DC,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAAC,SAAS,CAAC;EAC1DR,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAAC,2BAA2B,CAAC;EAC5ER,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAACH,KAAK,CAAC;EACtDP,MAAM,CAAC,MAAMI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACO,OAAO,CAACJ,KAAK,CAAC;EACtDP,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFX,IAAI,CAAC,+CAA+C,EAAE,YAAY;EAC9DD,MAAM,CAAC,MAAMI,qBAAqB,CAAC;IAAES,eAAe,EAAEN;EAAM,CAAC,CAAC,CAAC,CAACI,OAAO,CAACJ,KAAK,CAAC;EAC9EP,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACK,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AACFd,IAAI,CAAC,wCAAwC,EAAE,YAAY;EACvDC,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAACH,KAAK,CAAC;EACtDP,MAAM,CAAC,MAAMI,qBAAqB,CAAC;IAAES,eAAe,EAAE;EAAU,CAAC,CAAC,CAAC,CAACF,OAAO,CAACJ,KAAK,CAAC;EAClFP,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFX,IAAI,CAAC,mCAAmC,EAAE,YAAY;EAClDC,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAACH,KAAK,GAAG,GAAG,CAAC;EAC5DP,MAAM,CAAC,MAAMI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACO,OAAO,CAACJ,KAAK,CAAC;EACtDP,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import fs from "node:fs";
17
+ import path from "node:path";
18
+ import { consola } from "../consola.js";
19
+ import { green } from "../highlight.js";
20
+ export async function promptOverwrite({
21
+ project,
22
+ overwrite
23
+ }) {
24
+ if (overwrite != null) {
25
+ return overwrite;
26
+ }
27
+ if (!fs.existsSync(path.join(process.cwd(), project))) {
28
+ return true;
29
+ }
30
+ const result = await consola.prompt(`The directory ${green(project)} already exists do you want to overwrite or ignore it?`, {
31
+ type: "select",
32
+ options: [{
33
+ label: "Remove existing files and continue",
34
+ value: "overwrite"
35
+ }, {
36
+ label: "Ignore files and continue",
37
+ value: "ignore"
38
+ }, {
39
+ label: "Cancel",
40
+ value: "cancel"
41
+ }]
42
+ });
43
+ switch (result) {
44
+ case "overwrite":
45
+ return true;
46
+ case "ignore":
47
+ return false;
48
+ case "cancel":
49
+ consola.fail("Operation cancelled");
50
+ process.exit(0);
51
+ }
52
+ }
53
+ //# sourceMappingURL=promptOverwrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptOverwrite.js","names":["fs","path","consola","green","promptOverwrite","project","overwrite","existsSync","join","process","cwd","result","prompt","type","options","label","value","fail","exit"],"sources":["promptOverwrite.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nexport async function promptOverwrite({ project, overwrite, }) {\n if (overwrite != null) {\n return overwrite;\n }\n if (!fs.existsSync(path.join(process.cwd(), project))) {\n return true;\n }\n const result = (await consola.prompt(`The directory ${green(project)} already exists do you want to overwrite or ignore it?`, {\n type: \"select\",\n options: [\n { label: \"Remove existing files and continue\", value: \"overwrite\" },\n { label: \"Ignore files and continue\", value: \"ignore\" },\n { label: \"Cancel\", value: \"cancel\" },\n ],\n }));\n switch (result) {\n case \"overwrite\":\n return true;\n case \"ignore\":\n return false;\n case \"cancel\":\n consola.fail(\"Operation cancelled\");\n process.exit(0);\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,EAAE,MAAM,SAAS;AACxB,OAAOC,IAAI,MAAM,WAAW;AAC5B,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,KAAK,QAAQ,iBAAiB;AACvC,OAAO,eAAeC,eAAeA,CAAC;EAAEC,OAAO;EAAEC;AAAW,CAAC,EAAE;EAC3D,IAAIA,SAAS,IAAI,IAAI,EAAE;IACnB,OAAOA,SAAS;EACpB;EACA,IAAI,CAACN,EAAE,CAACO,UAAU,CAACN,IAAI,CAACO,IAAI,CAACC,OAAO,CAACC,GAAG,CAAC,CAAC,EAAEL,OAAO,CAAC,CAAC,EAAE;IACnD,OAAO,IAAI;EACf;EACA,MAAMM,MAAM,GAAI,MAAMT,OAAO,CAACU,MAAM,CAAC,iBAAiBT,KAAK,CAACE,OAAO,CAAC,wDAAwD,EAAE;IAC1HQ,IAAI,EAAE,QAAQ;IACdC,OAAO,EAAE,CACL;MAAEC,KAAK,EAAE,oCAAoC;MAAEC,KAAK,EAAE;IAAY,CAAC,EACnE;MAAED,KAAK,EAAE,2BAA2B;MAAEC,KAAK,EAAE;IAAS,CAAC,EACvD;MAAED,KAAK,EAAE,QAAQ;MAAEC,KAAK,EAAE;IAAS,CAAC;EAE5C,CAAC,CAAE;EACH,QAAQL,MAAM;IACV,KAAK,WAAW;MACZ,OAAO,IAAI;IACf,KAAK,QAAQ;MACT,OAAO,KAAK;IAChB,KAAK,QAAQ;MACTT,OAAO,CAACe,IAAI,CAAC,qBAAqB,CAAC;MACnCR,OAAO,CAACS,IAAI,CAAC,CAAC,CAAC;EACvB;AACJ","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import fs from "node:fs";
17
+ import { afterEach, expect, test, vi } from "vitest";
18
+ import { consola } from "../consola.js";
19
+ import { promptOverwrite } from "./promptOverwrite.js";
20
+ vi.mock("../consola.js");
21
+ vi.mock("node:fs");
22
+ afterEach(() => {
23
+ vi.restoreAllMocks();
24
+ });
25
+ test("it accepts valid 'overwrite' from prompt", async () => {
26
+ vi.mocked(fs.existsSync).mockReturnValueOnce(true);
27
+ vi.mocked(consola).prompt.mockResolvedValueOnce("overwrite");
28
+ expect(await promptOverwrite({
29
+ project: "abc"
30
+ })).toBe(true);
31
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
32
+ });
33
+ test("it accepts valid 'ignore' from prompt", async () => {
34
+ vi.mocked(fs.existsSync).mockReturnValueOnce(true);
35
+ vi.mocked(consola).prompt.mockResolvedValueOnce("ignore");
36
+ expect(await promptOverwrite({
37
+ project: "abc"
38
+ })).toBe(false);
39
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
40
+ });
41
+ test("it accepts initial value without prompt", async () => {
42
+ expect(await promptOverwrite({
43
+ project: "abc",
44
+ overwrite: true
45
+ })).toBe(true);
46
+ expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();
47
+ });
48
+ test("it returns true if project does not already exist", async () => {
49
+ vi.mocked(fs.existsSync).mockReturnValueOnce(false);
50
+ expect(await promptOverwrite({
51
+ project: "abc"
52
+ })).toBe(true);
53
+ expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();
54
+ });
55
+ //# sourceMappingURL=promptOverwrite.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptOverwrite.test.js","names":["fs","afterEach","expect","test","vi","consola","promptOverwrite","mock","restoreAllMocks","mocked","existsSync","mockReturnValueOnce","prompt","mockResolvedValueOnce","project","toBe","toHaveBeenCalledTimes","overwrite","not","toHaveBeenCalled"],"sources":["promptOverwrite.test.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport fs from \"node:fs\";\nimport { afterEach, expect, test, vi } from \"vitest\";\nimport { consola } from \"../consola.js\";\nimport { promptOverwrite } from \"./promptOverwrite.js\";\nvi.mock(\"../consola.js\");\nvi.mock(\"node:fs\");\nafterEach(() => {\n vi.restoreAllMocks();\n});\ntest(\"it accepts valid 'overwrite' from prompt\", async () => {\n vi.mocked(fs.existsSync).mockReturnValueOnce(true);\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"overwrite\");\n expect(await promptOverwrite({ project: \"abc\" })).toBe(true);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it accepts valid 'ignore' from prompt\", async () => {\n vi.mocked(fs.existsSync).mockReturnValueOnce(true);\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"ignore\");\n expect(await promptOverwrite({ project: \"abc\" })).toBe(false);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it accepts initial value without prompt\", async () => {\n expect(await promptOverwrite({ project: \"abc\", overwrite: true })).toBe(true);\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\ntest(\"it returns true if project does not already exist\", async () => {\n vi.mocked(fs.existsSync).mockReturnValueOnce(false);\n expect(await promptOverwrite({ project: \"abc\" })).toBe(true);\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,EAAE,MAAM,SAAS;AACxB,SAASC,SAAS,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAQ,QAAQ;AACpD,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,eAAe,QAAQ,sBAAsB;AACtDF,EAAE,CAACG,IAAI,CAAC,eAAe,CAAC;AACxBH,EAAE,CAACG,IAAI,CAAC,SAAS,CAAC;AAClBN,SAAS,CAAC,MAAM;EACZG,EAAE,CAACI,eAAe,CAAC,CAAC;AACxB,CAAC,CAAC;AACFL,IAAI,CAAC,0CAA0C,EAAE,YAAY;EACzDC,EAAE,CAACK,MAAM,CAACT,EAAE,CAACU,UAAU,CAAC,CAACC,mBAAmB,CAAC,IAAI,CAAC;EAClDP,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACO,MAAM,CAACC,qBAAqB,CAAC,WAAW,CAAC;EAC5DX,MAAM,CAAC,MAAMI,eAAe,CAAC;IAAEQ,OAAO,EAAE;EAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC5Db,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACO,MAAM,CAAC,CAACI,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFb,IAAI,CAAC,uCAAuC,EAAE,YAAY;EACtDC,EAAE,CAACK,MAAM,CAACT,EAAE,CAACU,UAAU,CAAC,CAACC,mBAAmB,CAAC,IAAI,CAAC;EAClDP,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACO,MAAM,CAACC,qBAAqB,CAAC,QAAQ,CAAC;EACzDX,MAAM,CAAC,MAAMI,eAAe,CAAC;IAAEQ,OAAO,EAAE;EAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC;EAC7Db,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACO,MAAM,CAAC,CAACI,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFb,IAAI,CAAC,yCAAyC,EAAE,YAAY;EACxDD,MAAM,CAAC,MAAMI,eAAe,CAAC;IAAEQ,OAAO,EAAE,KAAK;IAAEG,SAAS,EAAE;EAAK,CAAC,CAAC,CAAC,CAACF,IAAI,CAAC,IAAI,CAAC;EAC7Eb,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACO,MAAM,CAAC,CAACM,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AACFhB,IAAI,CAAC,mDAAmD,EAAE,YAAY;EAClEC,EAAE,CAACK,MAAM,CAACT,EAAE,CAACU,UAAU,CAAC,CAACC,mBAAmB,CAAC,KAAK,CAAC;EACnDT,MAAM,CAAC,MAAMI,eAAe,CAAC;IAAEQ,OAAO,EAAE;EAAM,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC5Db,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACO,MAAM,CAAC,CAACM,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { consola } from "../consola.js";
17
+ export async function promptProject({
18
+ project
19
+ }) {
20
+ while (project == null || !/^[a-zA-Z0-9-_]+$/.test(project)) {
21
+ if (project != null) {
22
+ consola.fail("Project name can only contain alphanumeric characters, hyphens and underscores");
23
+ }
24
+ project = await consola.prompt("Project name:", {
25
+ type: "text",
26
+ placeholder: "my-osdk-app",
27
+ default: "my-osdk-app"
28
+ });
29
+ }
30
+ return project;
31
+ }
32
+ //# sourceMappingURL=promptProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptProject.js","names":["consola","promptProject","project","test","fail","prompt","type","placeholder","default"],"sources":["promptProject.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { consola } from \"../consola.js\";\nexport async function promptProject({ project }) {\n while (project == null || !/^[a-zA-Z0-9-_]+$/.test(project)) {\n if (project != null) {\n consola.fail(\"Project name can only contain alphanumeric characters, hyphens and underscores\");\n }\n project = await consola.prompt(\"Project name:\", {\n type: \"text\",\n placeholder: \"my-osdk-app\",\n default: \"my-osdk-app\",\n });\n }\n return project;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,eAAe;AACvC,OAAO,eAAeC,aAAaA,CAAC;EAAEC;AAAQ,CAAC,EAAE;EAC7C,OAAOA,OAAO,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAACC,IAAI,CAACD,OAAO,CAAC,EAAE;IACzD,IAAIA,OAAO,IAAI,IAAI,EAAE;MACjBF,OAAO,CAACI,IAAI,CAAC,gFAAgF,CAAC;IAClG;IACAF,OAAO,GAAG,MAAMF,OAAO,CAACK,MAAM,CAAC,eAAe,EAAE;MAC5CC,IAAI,EAAE,MAAM;MACZC,WAAW,EAAE,aAAa;MAC1BC,OAAO,EAAE;IACb,CAAC,CAAC;EACN;EACA,OAAON,OAAO;AAClB","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { afterEach, expect, test, vi } from "vitest";
17
+ import { consola } from "../consola.js";
18
+ import { promptProject } from "./promptProject.js";
19
+ vi.mock("../consola.js");
20
+ afterEach(() => {
21
+ vi.restoreAllMocks();
22
+ });
23
+ test("it accepts valid project from prompt", async () => {
24
+ vi.mocked(consola).prompt.mockResolvedValueOnce("my-osdk-app");
25
+ expect(await promptProject({})).toEqual("my-osdk-app");
26
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
27
+ });
28
+ test("it prompts again if answered value is invalid", async () => {
29
+ vi.mocked(consola).prompt.mockResolvedValueOnce("!@#$%^&*()_+");
30
+ vi.mocked(consola).prompt.mockResolvedValueOnce("my-osdk-app");
31
+ expect(await promptProject({})).toEqual("my-osdk-app");
32
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(2);
33
+ });
34
+ test("it accepts valid initial value without prompt", async () => {
35
+ expect(await promptProject({
36
+ project: "my-osdk-app"
37
+ })).toEqual("my-osdk-app");
38
+ expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();
39
+ });
40
+ test("it prompts if initial value is invalid", async () => {
41
+ vi.mocked(consola).prompt.mockResolvedValueOnce("my-osdk-app");
42
+ expect(await promptProject({
43
+ project: "!@#$%^&*()_+"
44
+ })).toEqual("my-osdk-app");
45
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
46
+ });
47
+ //# sourceMappingURL=promptProject.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptProject.test.js","names":["afterEach","expect","test","vi","consola","promptProject","mock","restoreAllMocks","mocked","prompt","mockResolvedValueOnce","toEqual","toHaveBeenCalledTimes","project","not","toHaveBeenCalled"],"sources":["promptProject.test.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { afterEach, expect, test, vi } from \"vitest\";\nimport { consola } from \"../consola.js\";\nimport { promptProject } from \"./promptProject.js\";\nvi.mock(\"../consola.js\");\nafterEach(() => {\n vi.restoreAllMocks();\n});\ntest(\"it accepts valid project from prompt\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"my-osdk-app\");\n expect(await promptProject({})).toEqual(\"my-osdk-app\");\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it prompts again if answered value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"!@#$%^&*()_+\");\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"my-osdk-app\");\n expect(await promptProject({})).toEqual(\"my-osdk-app\");\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(2);\n});\ntest(\"it accepts valid initial value without prompt\", async () => {\n expect(await promptProject({ project: \"my-osdk-app\" })).toEqual(\"my-osdk-app\");\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\ntest(\"it prompts if initial value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(\"my-osdk-app\");\n expect(await promptProject({ project: \"!@#$%^&*()_+\" })).toEqual(\"my-osdk-app\");\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAQ,QAAQ;AACpD,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,aAAa,QAAQ,oBAAoB;AAClDF,EAAE,CAACG,IAAI,CAAC,eAAe,CAAC;AACxBN,SAAS,CAAC,MAAM;EACZG,EAAE,CAACI,eAAe,CAAC,CAAC;AACxB,CAAC,CAAC;AACFL,IAAI,CAAC,sCAAsC,EAAE,YAAY;EACrDC,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,aAAa,CAAC;EAC9DT,MAAM,CAAC,MAAMI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC,aAAa,CAAC;EACtDV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFV,IAAI,CAAC,+CAA+C,EAAE,YAAY;EAC9DC,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,cAAc,CAAC;EAC/DP,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,aAAa,CAAC;EAC9DT,MAAM,CAAC,MAAMI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAACM,OAAO,CAAC,aAAa,CAAC;EACtDV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFV,IAAI,CAAC,+CAA+C,EAAE,YAAY;EAC9DD,MAAM,CAAC,MAAMI,aAAa,CAAC;IAAEQ,OAAO,EAAE;EAAc,CAAC,CAAC,CAAC,CAACF,OAAO,CAAC,aAAa,CAAC;EAC9EV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACK,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AACFb,IAAI,CAAC,wCAAwC,EAAE,YAAY;EACvDC,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAACC,qBAAqB,CAAC,aAAa,CAAC;EAC9DT,MAAM,CAAC,MAAMI,aAAa,CAAC;IAAEQ,OAAO,EAAE;EAAe,CAAC,CAAC,CAAC,CAACF,OAAO,CAAC,aAAa,CAAC;EAC/EV,MAAM,CAACE,EAAE,CAACK,MAAM,CAACJ,OAAO,CAAC,CAACK,MAAM,CAAC,CAACG,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { consola } from "../consola.js";
17
+ import { green } from "../highlight.js";
18
+ import { TEMPLATES } from "../templates.js";
19
+ export async function promptTemplate(parsed) {
20
+ let useBeta = parsed.beta ?? false;
21
+ let template = TEMPLATES.find(t => t.id === parsed.template || t.id === `template-${parsed.template}`);
22
+ if (template == null) {
23
+ const availableTemplates = TEMPLATES.filter(template => !template.hidden && (useBeta ? template.isBeta === true
24
+ // isBeta could be null
25
+ : !template.isBeta));
26
+ if (availableTemplates.length === 0) {
27
+ throw new Error("No available templates found for the selected options.");
28
+ }
29
+ const templateId = await consola.prompt(parsed.template != null ? `The provided template ${green(parsed.template)} is invalid please select a framework:` : "Select a framework:", {
30
+ type: "select",
31
+ options: availableTemplates.map(template => ({
32
+ value: template.id,
33
+ label: template.label
34
+ }))
35
+ // Types for "select" are wrong the value is returned rather than the option object
36
+ // https://github.com/unjs/consola/pull/238
37
+ });
38
+ template = TEMPLATES.find(t => t.id === templateId);
39
+ if (template == null) {
40
+ throw new Error(`Template ${templateId} should be found`);
41
+ }
42
+ }
43
+ return template;
44
+ }
45
+ //# sourceMappingURL=promptTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptTemplate.js","names":["consola","green","TEMPLATES","promptTemplate","parsed","useBeta","beta","template","find","t","id","availableTemplates","filter","hidden","isBeta","length","Error","templateId","prompt","type","options","map","value","label"],"sources":["promptTemplate.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { consola } from \"../consola.js\";\nimport { green } from \"../highlight.js\";\nimport { TEMPLATES } from \"../templates.js\";\nexport async function promptTemplate(parsed) {\n let useBeta = parsed.beta ?? false;\n let template = TEMPLATES.find((t) => t.id === parsed.template || t.id === `template-${parsed.template}`);\n if (template == null) {\n const availableTemplates = TEMPLATES.filter(template => !template.hidden\n && (useBeta\n ? template.isBeta === true\n // isBeta could be null\n : !template.isBeta));\n if (availableTemplates.length === 0) {\n throw new Error(\"No available templates found for the selected options.\");\n }\n const templateId = (await consola.prompt(parsed.template != null\n ? `The provided template ${green(parsed.template)} is invalid please select a framework:`\n : \"Select a framework:\", {\n type: \"select\",\n options: availableTemplates.map((template) => ({\n value: template.id,\n label: template.label,\n })),\n // Types for \"select\" are wrong the value is returned rather than the option object\n // https://github.com/unjs/consola/pull/238\n }));\n template = TEMPLATES.find((t) => t.id === templateId);\n if (template == null) {\n throw new Error(`Template ${templateId} should be found`);\n }\n }\n return template;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,eAAe;AACvC,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,OAAO,eAAeC,cAAcA,CAACC,MAAM,EAAE;EACzC,IAAIC,OAAO,GAAGD,MAAM,CAACE,IAAI,IAAI,KAAK;EAClC,IAAIC,QAAQ,GAAGL,SAAS,CAACM,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKN,MAAM,CAACG,QAAQ,IAAIE,CAAC,CAACC,EAAE,KAAK,YAAYN,MAAM,CAACG,QAAQ,EAAE,CAAC;EACxG,IAAIA,QAAQ,IAAI,IAAI,EAAE;IAClB,MAAMI,kBAAkB,GAAGT,SAAS,CAACU,MAAM,CAACL,QAAQ,IAAI,CAACA,QAAQ,CAACM,MAAM,KAChER,OAAO,GACLE,QAAQ,CAACO,MAAM,KAAK;IACtB;IAAA,EACE,CAACP,QAAQ,CAACO,MAAM,CAAC,CAAC;IAC5B,IAAIH,kBAAkB,CAACI,MAAM,KAAK,CAAC,EAAE;MACjC,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;IAC7E;IACA,MAAMC,UAAU,GAAI,MAAMjB,OAAO,CAACkB,MAAM,CAACd,MAAM,CAACG,QAAQ,IAAI,IAAI,GAC1D,yBAAyBN,KAAK,CAACG,MAAM,CAACG,QAAQ,CAAC,wCAAwC,GACvF,qBAAqB,EAAE;MACzBY,IAAI,EAAE,QAAQ;MACdC,OAAO,EAAET,kBAAkB,CAACU,GAAG,CAAEd,QAAQ,KAAM;QAC3Ce,KAAK,EAAEf,QAAQ,CAACG,EAAE;QAClBa,KAAK,EAAEhB,QAAQ,CAACgB;MACpB,CAAC,CAAC;MACF;MACA;IACJ,CAAC,CAAE;IACHhB,QAAQ,GAAGL,SAAS,CAACM,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,EAAE,KAAKO,UAAU,CAAC;IACrD,IAAIV,QAAQ,IAAI,IAAI,EAAE;MAClB,MAAM,IAAIS,KAAK,CAAC,YAAYC,UAAU,kBAAkB,CAAC;IAC7D;EACJ;EACA,OAAOV,QAAQ;AACnB","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright 2023 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { afterEach, expect, test, vi } from "vitest";
17
+ import { consola } from "../consola.js";
18
+ import { TEMPLATES } from "../templates.js";
19
+ import { promptTemplate } from "./promptTemplate.js";
20
+ vi.mock("../consola.js");
21
+ afterEach(() => {
22
+ vi.restoreAllMocks();
23
+ });
24
+ test("it accepts valid template from prompt", async () => {
25
+ vi.mocked(consola).prompt.mockResolvedValueOnce(TEMPLATES[0].id);
26
+ expect(await promptTemplate({})).toEqual(TEMPLATES[0]);
27
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
28
+ });
29
+ test("it accepts valid initial template id value without prompt", async () => {
30
+ expect(await promptTemplate({
31
+ template: TEMPLATES[0].id
32
+ })).toEqual(TEMPLATES[0]);
33
+ expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();
34
+ });
35
+ test("it accepts valid initial template id value without 'template-' prefix without prompt", async () => {
36
+ expect(await promptTemplate({
37
+ template: TEMPLATES[0].id.substring("template-".length)
38
+ })).toEqual(TEMPLATES[0]);
39
+ expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();
40
+ });
41
+ test("it prompts if initial value is invalid", async () => {
42
+ vi.mocked(consola).prompt.mockResolvedValueOnce(TEMPLATES[0].id);
43
+ expect(await promptTemplate({
44
+ template: "missing"
45
+ })).toEqual(TEMPLATES[0]);
46
+ expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);
47
+ });
48
+ //# sourceMappingURL=promptTemplate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptTemplate.test.js","names":["afterEach","expect","test","vi","consola","TEMPLATES","promptTemplate","mock","restoreAllMocks","mocked","prompt","mockResolvedValueOnce","id","toEqual","toHaveBeenCalledTimes","template","not","toHaveBeenCalled","substring","length"],"sources":["promptTemplate.test.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { afterEach, expect, test, vi } from \"vitest\";\nimport { consola } from \"../consola.js\";\nimport { TEMPLATES } from \"../templates.js\";\nimport { promptTemplate } from \"./promptTemplate.js\";\nvi.mock(\"../consola.js\");\nafterEach(() => {\n vi.restoreAllMocks();\n});\ntest(\"it accepts valid template from prompt\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(TEMPLATES[0].id);\n expect(await promptTemplate({})).toEqual(TEMPLATES[0]);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\ntest(\"it accepts valid initial template id value without prompt\", async () => {\n expect(await promptTemplate({ template: TEMPLATES[0].id })).toEqual(TEMPLATES[0]);\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\ntest(\"it accepts valid initial template id value without 'template-' prefix without prompt\", async () => {\n expect(await promptTemplate({\n template: TEMPLATES[0].id.substring(\"template-\".length),\n })).toEqual(TEMPLATES[0]);\n expect(vi.mocked(consola).prompt).not.toHaveBeenCalled();\n});\ntest(\"it prompts if initial value is invalid\", async () => {\n vi.mocked(consola).prompt.mockResolvedValueOnce(TEMPLATES[0].id);\n expect(await promptTemplate({ template: \"missing\" })).toEqual(TEMPLATES[0]);\n expect(vi.mocked(consola).prompt).toHaveBeenCalledTimes(1);\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,MAAM,EAAEC,IAAI,EAAEC,EAAE,QAAQ,QAAQ;AACpD,SAASC,OAAO,QAAQ,eAAe;AACvC,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,cAAc,QAAQ,qBAAqB;AACpDH,EAAE,CAACI,IAAI,CAAC,eAAe,CAAC;AACxBP,SAAS,CAAC,MAAM;EACZG,EAAE,CAACK,eAAe,CAAC,CAAC;AACxB,CAAC,CAAC;AACFN,IAAI,CAAC,uCAAuC,EAAE,YAAY;EACtDC,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAACN,SAAS,CAAC,CAAC,CAAC,CAACO,EAAE,CAAC;EAChEX,MAAM,CAAC,MAAMK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAACO,OAAO,CAACR,SAAS,CAAC,CAAC,CAAC,CAAC;EACtDJ,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACI,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AACFZ,IAAI,CAAC,2DAA2D,EAAE,YAAY;EAC1ED,MAAM,CAAC,MAAMK,cAAc,CAAC;IAAES,QAAQ,EAAEV,SAAS,CAAC,CAAC,CAAC,CAACO;EAAG,CAAC,CAAC,CAAC,CAACC,OAAO,CAACR,SAAS,CAAC,CAAC,CAAC,CAAC;EACjFJ,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACM,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AACFf,IAAI,CAAC,sFAAsF,EAAE,YAAY;EACrGD,MAAM,CAAC,MAAMK,cAAc,CAAC;IACxBS,QAAQ,EAAEV,SAAS,CAAC,CAAC,CAAC,CAACO,EAAE,CAACM,SAAS,CAAC,WAAW,CAACC,MAAM;EAC1D,CAAC,CAAC,CAAC,CAACN,OAAO,CAACR,SAAS,CAAC,CAAC,CAAC,CAAC;EACzBJ,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACM,GAAG,CAACC,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC;AACFf,IAAI,CAAC,wCAAwC,EAAE,YAAY;EACvDC,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAACC,qBAAqB,CAACN,SAAS,CAAC,CAAC,CAAC,CAACO,EAAE,CAAC;EAChEX,MAAM,CAAC,MAAMK,cAAc,CAAC;IAAES,QAAQ,EAAE;EAAU,CAAC,CAAC,CAAC,CAACF,OAAO,CAACR,SAAS,CAAC,CAAC,CAAC,CAAC;EAC3EJ,MAAM,CAACE,EAAE,CAACM,MAAM,CAACL,OAAO,CAAC,CAACM,MAAM,CAAC,CAACI,qBAAqB,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Copyright 2024 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import Handlebars from "handlebars";
17
+ import fs from "node:fs";
18
+ import path from "node:path";
19
+ import { consola } from "./consola.js";
20
+ import { generateEnvDevelopment, generateEnvProduction } from "./generate/generateEnv.js";
21
+ import { generateFoundryConfigJson } from "./generate/generateFoundryConfigJson.js";
22
+ import { generateNpmRc } from "./generate/generateNpmRc.js";
23
+ import { green } from "./highlight.js";
24
+ export async function run({
25
+ project,
26
+ overwrite,
27
+ template,
28
+ foundryUrl,
29
+ applicationUrl,
30
+ application,
31
+ clientId,
32
+ osdkPackage,
33
+ osdkRegistryUrl,
34
+ corsProxy
35
+ }) {
36
+ consola.log("");
37
+ consola.start(`Creating project ${green(project)} using template ${green(template.id)}`);
38
+ const cwd = process.cwd();
39
+ const root = path.join(cwd, project);
40
+ if (fs.existsSync(root)) {
41
+ if (overwrite) {
42
+ consola.info(`Overwriting existing project directory`);
43
+ fs.rmSync(root, {
44
+ recursive: true,
45
+ force: true
46
+ });
47
+ fs.mkdirSync(root, {
48
+ recursive: true
49
+ });
50
+ } else {
51
+ consola.info(`Reusing existing project directory`);
52
+ }
53
+ } else {
54
+ consola.info(`Creating project directory`);
55
+ fs.mkdirSync(root, {
56
+ recursive: true
57
+ });
58
+ }
59
+ consola.info(`Copying files into project directory`);
60
+ const files = await template.getFiles();
61
+ for (const [filePath, contents] of files) {
62
+ const finalPath = path.join(root, filePath);
63
+ const dirPath = path.dirname(finalPath);
64
+ await fs.promises.mkdir(dirPath, {
65
+ recursive: true
66
+ });
67
+ await fs.promises.writeFile(finalPath, Buffer.from(contents.body, contents.type === "raw" ? "utf-8" : "base64"));
68
+ }
69
+ const templateContext = {
70
+ project,
71
+ foundryUrl,
72
+ osdkPackage,
73
+ corsProxy
74
+ };
75
+ const processFiles = function (dir) {
76
+ fs.readdirSync(dir).forEach(function (file) {
77
+ file = dir + "/" + file;
78
+ const stat = fs.statSync(file);
79
+ if (stat.isDirectory()) {
80
+ processFiles(file);
81
+ return;
82
+ }
83
+ if (file.endsWith("/_gitignore")) {
84
+ fs.renameSync(file, file.replace(/\/_gitignore$/, "/.gitignore"));
85
+ return;
86
+ }
87
+ if (!file.endsWith(".hbs")) {
88
+ return;
89
+ }
90
+ const templated = Handlebars.compile(fs.readFileSync(file, "utf-8"))(templateContext);
91
+ fs.writeFileSync(file.replace(/.hbs$/, ""), templated);
92
+ fs.rmSync(file);
93
+ });
94
+ };
95
+ processFiles(root);
96
+ const npmRc = generateNpmRc({
97
+ osdkPackage,
98
+ osdkRegistryUrl
99
+ });
100
+ fs.writeFileSync(path.join(root, ".npmrc"), npmRc);
101
+ const envDevelopment = generateEnvDevelopment({
102
+ envPrefix: template.envPrefix,
103
+ foundryUrl,
104
+ clientId,
105
+ corsProxy
106
+ });
107
+ fs.writeFileSync(path.join(root, ".env.development"), envDevelopment);
108
+ const envProduction = generateEnvProduction({
109
+ envPrefix: template.envPrefix,
110
+ foundryUrl,
111
+ applicationUrl,
112
+ clientId
113
+ });
114
+ fs.writeFileSync(path.join(root, ".env.production"), envProduction);
115
+ const foundryConfigJson = generateFoundryConfigJson({
116
+ foundryUrl,
117
+ application,
118
+ directory: template.buildDirectory
119
+ });
120
+ fs.writeFileSync(path.join(root, "foundry.config.json"), foundryConfigJson);
121
+ consola.success("Success");
122
+ const cdRelative = path.relative(cwd, root);
123
+ consola.box({
124
+ message: `Done! Run the following commands to get started:\n` + `\n` + ` \`cd ${cdRelative}\`\n` + ` \`export FOUNDRY_TOKEN=<token>\`\n` + ` \`npm install\`\n` + ` \`npm run dev\``,
125
+ style: {
126
+ padding: 2,
127
+ borderColor: "green",
128
+ borderStyle: "rounded"
129
+ }
130
+ });
131
+ }
132
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","names":["Handlebars","fs","path","consola","generateEnvDevelopment","generateEnvProduction","generateFoundryConfigJson","generateNpmRc","green","run","project","overwrite","template","foundryUrl","applicationUrl","application","clientId","osdkPackage","osdkRegistryUrl","corsProxy","log","start","id","cwd","process","root","join","existsSync","info","rmSync","recursive","force","mkdirSync","files","getFiles","filePath","contents","finalPath","dirPath","dirname","promises","mkdir","writeFile","Buffer","from","body","type","templateContext","processFiles","dir","readdirSync","forEach","file","stat","statSync","isDirectory","endsWith","renameSync","replace","templated","compile","readFileSync","writeFileSync","npmRc","envDevelopment","envPrefix","envProduction","foundryConfigJson","directory","buildDirectory","success","cdRelative","relative","box","message","style","padding","borderColor","borderStyle"],"sources":["run.js"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport Handlebars from \"handlebars\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { consola } from \"./consola.js\";\nimport { generateEnvDevelopment, generateEnvProduction, } from \"./generate/generateEnv.js\";\nimport { generateFoundryConfigJson } from \"./generate/generateFoundryConfigJson.js\";\nimport { generateNpmRc } from \"./generate/generateNpmRc.js\";\nimport { green } from \"./highlight.js\";\nexport async function run({ project, overwrite, template, foundryUrl, applicationUrl, application, clientId, osdkPackage, osdkRegistryUrl, corsProxy, }) {\n consola.log(\"\");\n consola.start(`Creating project ${green(project)} using template ${green(template.id)}`);\n const cwd = process.cwd();\n const root = path.join(cwd, project);\n if (fs.existsSync(root)) {\n if (overwrite) {\n consola.info(`Overwriting existing project directory`);\n fs.rmSync(root, { recursive: true, force: true });\n fs.mkdirSync(root, { recursive: true });\n }\n else {\n consola.info(`Reusing existing project directory`);\n }\n }\n else {\n consola.info(`Creating project directory`);\n fs.mkdirSync(root, { recursive: true });\n }\n consola.info(`Copying files into project directory`);\n const files = await template.getFiles();\n for (const [filePath, contents] of files) {\n const finalPath = path.join(root, filePath);\n const dirPath = path.dirname(finalPath);\n await fs.promises.mkdir(dirPath, { recursive: true });\n await fs.promises.writeFile(finalPath, Buffer.from(contents.body, contents.type === \"raw\" ? \"utf-8\" : \"base64\"));\n }\n const templateContext = {\n project,\n foundryUrl,\n osdkPackage,\n corsProxy,\n };\n const processFiles = function (dir) {\n fs.readdirSync(dir).forEach(function (file) {\n file = dir + \"/\" + file;\n const stat = fs.statSync(file);\n if (stat.isDirectory()) {\n processFiles(file);\n return;\n }\n if (file.endsWith(\"/_gitignore\")) {\n fs.renameSync(file, file.replace(/\\/_gitignore$/, \"/.gitignore\"));\n return;\n }\n if (!file.endsWith(\".hbs\")) {\n return;\n }\n const templated = Handlebars.compile(fs.readFileSync(file, \"utf-8\"))(templateContext);\n fs.writeFileSync(file.replace(/.hbs$/, \"\"), templated);\n fs.rmSync(file);\n });\n };\n processFiles(root);\n const npmRc = generateNpmRc({ osdkPackage, osdkRegistryUrl });\n fs.writeFileSync(path.join(root, \".npmrc\"), npmRc);\n const envDevelopment = generateEnvDevelopment({\n envPrefix: template.envPrefix,\n foundryUrl,\n clientId,\n corsProxy,\n });\n fs.writeFileSync(path.join(root, \".env.development\"), envDevelopment);\n const envProduction = generateEnvProduction({\n envPrefix: template.envPrefix,\n foundryUrl,\n applicationUrl,\n clientId,\n });\n fs.writeFileSync(path.join(root, \".env.production\"), envProduction);\n const foundryConfigJson = generateFoundryConfigJson({\n foundryUrl,\n application,\n directory: template.buildDirectory,\n });\n fs.writeFileSync(path.join(root, \"foundry.config.json\"), foundryConfigJson);\n consola.success(\"Success\");\n const cdRelative = path.relative(cwd, root);\n consola.box({\n message: `Done! Run the following commands to get started:\\n`\n + `\\n`\n + ` \\`cd ${cdRelative}\\`\\n`\n + ` \\`export FOUNDRY_TOKEN=<token>\\`\\n`\n + ` \\`npm install\\`\\n`\n + ` \\`npm run dev\\``,\n style: {\n padding: 2,\n borderColor: \"green\",\n borderStyle: \"rounded\",\n },\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,EAAE,MAAM,SAAS;AACxB,OAAOC,IAAI,MAAM,WAAW;AAC5B,SAASC,OAAO,QAAQ,cAAc;AACtC,SAASC,sBAAsB,EAAEC,qBAAqB,QAAS,2BAA2B;AAC1F,SAASC,yBAAyB,QAAQ,yCAAyC;AACnF,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,KAAK,QAAQ,gBAAgB;AACtC,OAAO,eAAeC,GAAGA,CAAC;EAAEC,OAAO;EAAEC,SAAS;EAAEC,QAAQ;EAAEC,UAAU;EAAEC,cAAc;EAAEC,WAAW;EAAEC,QAAQ;EAAEC,WAAW;EAAEC,eAAe;EAAEC;AAAW,CAAC,EAAE;EACrJhB,OAAO,CAACiB,GAAG,CAAC,EAAE,CAAC;EACfjB,OAAO,CAACkB,KAAK,CAAC,oBAAoBb,KAAK,CAACE,OAAO,CAAC,mBAAmBF,KAAK,CAACI,QAAQ,CAACU,EAAE,CAAC,EAAE,CAAC;EACxF,MAAMC,GAAG,GAAGC,OAAO,CAACD,GAAG,CAAC,CAAC;EACzB,MAAME,IAAI,GAAGvB,IAAI,CAACwB,IAAI,CAACH,GAAG,EAAEb,OAAO,CAAC;EACpC,IAAIT,EAAE,CAAC0B,UAAU,CAACF,IAAI,CAAC,EAAE;IACrB,IAAId,SAAS,EAAE;MACXR,OAAO,CAACyB,IAAI,CAAC,wCAAwC,CAAC;MACtD3B,EAAE,CAAC4B,MAAM,CAACJ,IAAI,EAAE;QAAEK,SAAS,EAAE,IAAI;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MACjD9B,EAAE,CAAC+B,SAAS,CAACP,IAAI,EAAE;QAAEK,SAAS,EAAE;MAAK,CAAC,CAAC;IAC3C,CAAC,MACI;MACD3B,OAAO,CAACyB,IAAI,CAAC,oCAAoC,CAAC;IACtD;EACJ,CAAC,MACI;IACDzB,OAAO,CAACyB,IAAI,CAAC,4BAA4B,CAAC;IAC1C3B,EAAE,CAAC+B,SAAS,CAACP,IAAI,EAAE;MAAEK,SAAS,EAAE;IAAK,CAAC,CAAC;EAC3C;EACA3B,OAAO,CAACyB,IAAI,CAAC,sCAAsC,CAAC;EACpD,MAAMK,KAAK,GAAG,MAAMrB,QAAQ,CAACsB,QAAQ,CAAC,CAAC;EACvC,KAAK,MAAM,CAACC,QAAQ,EAAEC,QAAQ,CAAC,IAAIH,KAAK,EAAE;IACtC,MAAMI,SAAS,GAAGnC,IAAI,CAACwB,IAAI,CAACD,IAAI,EAAEU,QAAQ,CAAC;IAC3C,MAAMG,OAAO,GAAGpC,IAAI,CAACqC,OAAO,CAACF,SAAS,CAAC;IACvC,MAAMpC,EAAE,CAACuC,QAAQ,CAACC,KAAK,CAACH,OAAO,EAAE;MAAER,SAAS,EAAE;IAAK,CAAC,CAAC;IACrD,MAAM7B,EAAE,CAACuC,QAAQ,CAACE,SAAS,CAACL,SAAS,EAAEM,MAAM,CAACC,IAAI,CAACR,QAAQ,CAACS,IAAI,EAAET,QAAQ,CAACU,IAAI,KAAK,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;EACpH;EACA,MAAMC,eAAe,GAAG;IACpBrC,OAAO;IACPG,UAAU;IACVI,WAAW;IACXE;EACJ,CAAC;EACD,MAAM6B,YAAY,GAAG,SAAAA,CAAUC,GAAG,EAAE;IAChChD,EAAE,CAACiD,WAAW,CAACD,GAAG,CAAC,CAACE,OAAO,CAAC,UAAUC,IAAI,EAAE;MACxCA,IAAI,GAAGH,GAAG,GAAG,GAAG,GAAGG,IAAI;MACvB,MAAMC,IAAI,GAAGpD,EAAE,CAACqD,QAAQ,CAACF,IAAI,CAAC;MAC9B,IAAIC,IAAI,CAACE,WAAW,CAAC,CAAC,EAAE;QACpBP,YAAY,CAACI,IAAI,CAAC;QAClB;MACJ;MACA,IAAIA,IAAI,CAACI,QAAQ,CAAC,aAAa,CAAC,EAAE;QAC9BvD,EAAE,CAACwD,UAAU,CAACL,IAAI,EAAEA,IAAI,CAACM,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACjE;MACJ;MACA,IAAI,CAACN,IAAI,CAACI,QAAQ,CAAC,MAAM,CAAC,EAAE;QACxB;MACJ;MACA,MAAMG,SAAS,GAAG3D,UAAU,CAAC4D,OAAO,CAAC3D,EAAE,CAAC4D,YAAY,CAACT,IAAI,EAAE,OAAO,CAAC,CAAC,CAACL,eAAe,CAAC;MACrF9C,EAAE,CAAC6D,aAAa,CAACV,IAAI,CAACM,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAEC,SAAS,CAAC;MACtD1D,EAAE,CAAC4B,MAAM,CAACuB,IAAI,CAAC;IACnB,CAAC,CAAC;EACN,CAAC;EACDJ,YAAY,CAACvB,IAAI,CAAC;EAClB,MAAMsC,KAAK,GAAGxD,aAAa,CAAC;IAAEU,WAAW;IAAEC;EAAgB,CAAC,CAAC;EAC7DjB,EAAE,CAAC6D,aAAa,CAAC5D,IAAI,CAACwB,IAAI,CAACD,IAAI,EAAE,QAAQ,CAAC,EAAEsC,KAAK,CAAC;EAClD,MAAMC,cAAc,GAAG5D,sBAAsB,CAAC;IAC1C6D,SAAS,EAAErD,QAAQ,CAACqD,SAAS;IAC7BpD,UAAU;IACVG,QAAQ;IACRG;EACJ,CAAC,CAAC;EACFlB,EAAE,CAAC6D,aAAa,CAAC5D,IAAI,CAACwB,IAAI,CAACD,IAAI,EAAE,kBAAkB,CAAC,EAAEuC,cAAc,CAAC;EACrE,MAAME,aAAa,GAAG7D,qBAAqB,CAAC;IACxC4D,SAAS,EAAErD,QAAQ,CAACqD,SAAS;IAC7BpD,UAAU;IACVC,cAAc;IACdE;EACJ,CAAC,CAAC;EACFf,EAAE,CAAC6D,aAAa,CAAC5D,IAAI,CAACwB,IAAI,CAACD,IAAI,EAAE,iBAAiB,CAAC,EAAEyC,aAAa,CAAC;EACnE,MAAMC,iBAAiB,GAAG7D,yBAAyB,CAAC;IAChDO,UAAU;IACVE,WAAW;IACXqD,SAAS,EAAExD,QAAQ,CAACyD;EACxB,CAAC,CAAC;EACFpE,EAAE,CAAC6D,aAAa,CAAC5D,IAAI,CAACwB,IAAI,CAACD,IAAI,EAAE,qBAAqB,CAAC,EAAE0C,iBAAiB,CAAC;EAC3EhE,OAAO,CAACmE,OAAO,CAAC,SAAS,CAAC;EAC1B,MAAMC,UAAU,GAAGrE,IAAI,CAACsE,QAAQ,CAACjD,GAAG,EAAEE,IAAI,CAAC;EAC3CtB,OAAO,CAACsE,GAAG,CAAC;IACRC,OAAO,EAAE,oDAAoD,GACvD,IAAI,GACJ,UAAUH,UAAU,MAAM,GAC1B,sCAAsC,GACtC,qBAAqB,GACrB,mBAAmB;IACzBI,KAAK,EAAE;MACHC,OAAO,EAAE,CAAC;MACVC,WAAW,EAAE,OAAO;MACpBC,WAAW,EAAE;IACjB;EACJ,CAAC,CAAC;AACN","ignoreList":[]}