@aws-blocks/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/LICENSE +174 -0
  2. package/dist/api.d.ts +147 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +10 -0
  5. package/dist/api.test.d.ts +2 -0
  6. package/dist/api.test.d.ts.map +1 -0
  7. package/dist/api.test.js +19 -0
  8. package/dist/bb-utils.d.ts +11 -0
  9. package/dist/bb-utils.d.ts.map +1 -0
  10. package/dist/bb-utils.js +12 -0
  11. package/dist/builtin-routes.d.ts +6 -0
  12. package/dist/builtin-routes.d.ts.map +1 -0
  13. package/dist/builtin-routes.js +57 -0
  14. package/dist/cdk/__fixtures__/factory-backend.d.ts +3 -0
  15. package/dist/cdk/__fixtures__/factory-backend.d.ts.map +1 -0
  16. package/dist/cdk/__fixtures__/factory-backend.js +6 -0
  17. package/dist/cdk/__fixtures__/fullid-construct-backend.d.ts +2 -0
  18. package/dist/cdk/__fixtures__/fullid-construct-backend.d.ts.map +1 -0
  19. package/dist/cdk/__fixtures__/fullid-construct-backend.js +37 -0
  20. package/dist/cdk/__fixtures__/handler.d.ts +5 -0
  21. package/dist/cdk/__fixtures__/handler.d.ts.map +1 -0
  22. package/dist/cdk/__fixtures__/handler.js +3 -0
  23. package/dist/cdk/__fixtures__/side-effect-backend.d.ts +2 -0
  24. package/dist/cdk/__fixtures__/side-effect-backend.d.ts.map +1 -0
  25. package/dist/cdk/__fixtures__/side-effect-backend.js +5 -0
  26. package/dist/cdk/blocks-backend.d.ts +68 -0
  27. package/dist/cdk/blocks-backend.d.ts.map +1 -0
  28. package/dist/cdk/blocks-backend.js +214 -0
  29. package/dist/cdk/blocks-backend.test.d.ts +2 -0
  30. package/dist/cdk/blocks-backend.test.d.ts.map +1 -0
  31. package/dist/cdk/blocks-backend.test.js +151 -0
  32. package/dist/cdk/blocks-stack.test.d.ts +2 -0
  33. package/dist/cdk/blocks-stack.test.d.ts.map +1 -0
  34. package/dist/cdk/blocks-stack.test.js +78 -0
  35. package/dist/cdk/config-registry.d.ts +26 -0
  36. package/dist/cdk/config-registry.d.ts.map +1 -0
  37. package/dist/cdk/config-registry.js +80 -0
  38. package/dist/cdk/index.d.ts +35 -0
  39. package/dist/cdk/index.d.ts.map +1 -0
  40. package/dist/cdk/index.js +90 -0
  41. package/dist/cdk/mixins.d.ts +28 -0
  42. package/dist/cdk/mixins.d.ts.map +1 -0
  43. package/dist/cdk/mixins.js +37 -0
  44. package/dist/cdk/mixins.test.d.ts +2 -0
  45. package/dist/cdk/mixins.test.d.ts.map +1 -0
  46. package/dist/cdk/mixins.test.js +108 -0
  47. package/dist/cdk/node-version.d.ts +14 -0
  48. package/dist/cdk/node-version.d.ts.map +1 -0
  49. package/dist/cdk/node-version.js +15 -0
  50. package/dist/cdk/stack-metadata.d.ts +12 -0
  51. package/dist/cdk/stack-metadata.d.ts.map +1 -0
  52. package/dist/cdk/stack-metadata.js +22 -0
  53. package/dist/cdk/stack-metadata.test.d.ts +2 -0
  54. package/dist/cdk/stack-metadata.test.d.ts.map +1 -0
  55. package/dist/cdk/stack-metadata.test.js +56 -0
  56. package/dist/cdk/synth-guard.d.ts +14 -0
  57. package/dist/cdk/synth-guard.d.ts.map +1 -0
  58. package/dist/cdk/synth-guard.js +20 -0
  59. package/dist/cdk/synth-guard.test.d.ts +2 -0
  60. package/dist/cdk/synth-guard.test.d.ts.map +1 -0
  61. package/dist/cdk/synth-guard.test.js +15 -0
  62. package/dist/client/index.d.ts +97 -0
  63. package/dist/client/index.d.ts.map +1 -0
  64. package/dist/client/index.js +238 -0
  65. package/dist/client/index.test.d.ts +2 -0
  66. package/dist/client/index.test.d.ts.map +1 -0
  67. package/dist/client/index.test.js +113 -0
  68. package/dist/common/config.d.ts +45 -0
  69. package/dist/common/config.d.ts.map +1 -0
  70. package/dist/common/config.js +154 -0
  71. package/dist/common/config.test.d.ts +2 -0
  72. package/dist/common/config.test.d.ts.map +1 -0
  73. package/dist/common/config.test.js +173 -0
  74. package/dist/common/constants.d.ts +11 -0
  75. package/dist/common/constants.d.ts.map +1 -0
  76. package/dist/common/constants.js +12 -0
  77. package/dist/common/crypto.d.ts +6 -0
  78. package/dist/common/crypto.d.ts.map +1 -0
  79. package/dist/common/crypto.js +14 -0
  80. package/dist/common/index.d.ts +220 -0
  81. package/dist/common/index.d.ts.map +1 -0
  82. package/dist/common/index.js +180 -0
  83. package/dist/common/index.test.d.ts +2 -0
  84. package/dist/common/index.test.d.ts.map +1 -0
  85. package/dist/common/index.test.js +195 -0
  86. package/dist/common/mock-data.d.ts +40 -0
  87. package/dist/common/mock-data.d.ts.map +1 -0
  88. package/dist/common/mock-data.js +39 -0
  89. package/dist/common/official-bb-names.generated.d.ts +7 -0
  90. package/dist/common/official-bb-names.generated.d.ts.map +1 -0
  91. package/dist/common/official-bb-names.generated.js +28 -0
  92. package/dist/common/sdk-registry.d.ts +136 -0
  93. package/dist/common/sdk-registry.d.ts.map +1 -0
  94. package/dist/common/sdk-registry.js +125 -0
  95. package/dist/constants.d.ts +27 -0
  96. package/dist/constants.d.ts.map +1 -0
  97. package/dist/constants.js +28 -0
  98. package/dist/cors.d.ts +39 -0
  99. package/dist/cors.d.ts.map +1 -0
  100. package/dist/cors.js +85 -0
  101. package/dist/cors.test.d.ts +2 -0
  102. package/dist/cors.test.d.ts.map +1 -0
  103. package/dist/cors.test.js +241 -0
  104. package/dist/db-naming.d.ts +21 -0
  105. package/dist/db-naming.d.ts.map +1 -0
  106. package/dist/db-naming.js +38 -0
  107. package/dist/db-naming.test.d.ts +2 -0
  108. package/dist/db-naming.test.d.ts.map +1 -0
  109. package/dist/db-naming.test.js +29 -0
  110. package/dist/errors.d.ts +67 -0
  111. package/dist/errors.d.ts.map +1 -0
  112. package/dist/errors.js +69 -0
  113. package/dist/hosting.d.ts +258 -0
  114. package/dist/hosting.d.ts.map +1 -0
  115. package/dist/hosting.js +340 -0
  116. package/dist/hosting.test.d.ts +2 -0
  117. package/dist/hosting.test.d.ts.map +1 -0
  118. package/dist/hosting.test.js +1077 -0
  119. package/dist/index.cdk.d.ts +13 -0
  120. package/dist/index.cdk.d.ts.map +1 -0
  121. package/dist/index.cdk.js +13 -0
  122. package/dist/index.d.ts +9 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +10 -0
  125. package/dist/lambda-handler.d.ts +131 -0
  126. package/dist/lambda-handler.d.ts.map +1 -0
  127. package/dist/lambda-handler.js +610 -0
  128. package/dist/lambda-handler.test.d.ts +2 -0
  129. package/dist/lambda-handler.test.d.ts.map +1 -0
  130. package/dist/lambda-handler.test.js +835 -0
  131. package/dist/pipeline/index.d.ts +4 -0
  132. package/dist/pipeline/index.d.ts.map +1 -0
  133. package/dist/pipeline/index.js +3 -0
  134. package/dist/pipeline/pipeline-construct.d.ts +130 -0
  135. package/dist/pipeline/pipeline-construct.d.ts.map +1 -0
  136. package/dist/pipeline/pipeline-construct.js +484 -0
  137. package/dist/pipeline/pipeline.test.d.ts +2 -0
  138. package/dist/pipeline/pipeline.test.d.ts.map +1 -0
  139. package/dist/pipeline/pipeline.test.js +1231 -0
  140. package/dist/pipeline/types.d.ts +351 -0
  141. package/dist/pipeline/types.d.ts.map +1 -0
  142. package/dist/pipeline/types.js +3 -0
  143. package/dist/raw-route.cdk.d.ts +47 -0
  144. package/dist/raw-route.cdk.d.ts.map +1 -0
  145. package/dist/raw-route.cdk.js +51 -0
  146. package/dist/raw-route.d.ts +119 -0
  147. package/dist/raw-route.d.ts.map +1 -0
  148. package/dist/raw-route.js +239 -0
  149. package/dist/raw-route.mock.d.ts +47 -0
  150. package/dist/raw-route.mock.d.ts.map +1 -0
  151. package/dist/raw-route.mock.js +51 -0
  152. package/dist/raw-route.test.d.ts +2 -0
  153. package/dist/raw-route.test.d.ts.map +1 -0
  154. package/dist/raw-route.test.js +597 -0
  155. package/dist/redact.d.ts +51 -0
  156. package/dist/redact.d.ts.map +1 -0
  157. package/dist/redact.js +134 -0
  158. package/dist/redact.test.d.ts +2 -0
  159. package/dist/redact.test.d.ts.map +1 -0
  160. package/dist/redact.test.js +199 -0
  161. package/dist/rpc.d.ts +54 -0
  162. package/dist/rpc.d.ts.map +1 -0
  163. package/dist/rpc.js +127 -0
  164. package/dist/rpc.test.d.ts +2 -0
  165. package/dist/rpc.test.d.ts.map +1 -0
  166. package/dist/rpc.test.js +60 -0
  167. package/dist/scripts/cdk-telemetry-env.d.ts +13 -0
  168. package/dist/scripts/cdk-telemetry-env.d.ts.map +1 -0
  169. package/dist/scripts/cdk-telemetry-env.js +21 -0
  170. package/dist/scripts/cdk-telemetry-env.test.d.ts +2 -0
  171. package/dist/scripts/cdk-telemetry-env.test.d.ts.map +1 -0
  172. package/dist/scripts/cdk-telemetry-env.test.js +56 -0
  173. package/dist/scripts/cleanup.d.ts +3 -0
  174. package/dist/scripts/cleanup.d.ts.map +1 -0
  175. package/dist/scripts/cleanup.js +35 -0
  176. package/dist/scripts/console.d.ts +6 -0
  177. package/dist/scripts/console.d.ts.map +1 -0
  178. package/dist/scripts/console.js +25 -0
  179. package/dist/scripts/deploy.d.ts +6 -0
  180. package/dist/scripts/deploy.d.ts.map +1 -0
  181. package/dist/scripts/deploy.js +82 -0
  182. package/dist/scripts/destroy.d.ts +6 -0
  183. package/dist/scripts/destroy.d.ts.map +1 -0
  184. package/dist/scripts/destroy.js +30 -0
  185. package/dist/scripts/dev-server-cors.test.d.ts +2 -0
  186. package/dist/scripts/dev-server-cors.test.d.ts.map +1 -0
  187. package/dist/scripts/dev-server-cors.test.js +23 -0
  188. package/dist/scripts/dev-server-telemetry.test.d.ts +2 -0
  189. package/dist/scripts/dev-server-telemetry.test.d.ts.map +1 -0
  190. package/dist/scripts/dev-server-telemetry.test.js +113 -0
  191. package/dist/scripts/dev-server.d.ts +21 -0
  192. package/dist/scripts/dev-server.d.ts.map +1 -0
  193. package/dist/scripts/dev-server.js +456 -0
  194. package/dist/scripts/ensure-secrets.d.ts +31 -0
  195. package/dist/scripts/ensure-secrets.d.ts.map +1 -0
  196. package/dist/scripts/ensure-secrets.js +100 -0
  197. package/dist/scripts/ensure-secrets.test.d.ts +2 -0
  198. package/dist/scripts/ensure-secrets.test.d.ts.map +1 -0
  199. package/dist/scripts/ensure-secrets.test.js +44 -0
  200. package/dist/scripts/external-migrations-step.d.ts +62 -0
  201. package/dist/scripts/external-migrations-step.d.ts.map +1 -0
  202. package/dist/scripts/external-migrations-step.js +243 -0
  203. package/dist/scripts/external-migrations-step.test.d.ts +2 -0
  204. package/dist/scripts/external-migrations-step.test.d.ts.map +1 -0
  205. package/dist/scripts/external-migrations-step.test.js +47 -0
  206. package/dist/scripts/extract-ts-types.d.ts +65 -0
  207. package/dist/scripts/extract-ts-types.d.ts.map +1 -0
  208. package/dist/scripts/extract-ts-types.js +664 -0
  209. package/dist/scripts/extract-ts-types.test.d.ts +2 -0
  210. package/dist/scripts/extract-ts-types.test.d.ts.map +1 -0
  211. package/dist/scripts/extract-ts-types.test.js +497 -0
  212. package/dist/scripts/generate-client-worker.d.ts +2 -0
  213. package/dist/scripts/generate-client-worker.d.ts.map +1 -0
  214. package/dist/scripts/generate-client-worker.js +13 -0
  215. package/dist/scripts/generate-client.d.ts +14 -0
  216. package/dist/scripts/generate-client.d.ts.map +1 -0
  217. package/dist/scripts/generate-client.js +73 -0
  218. package/dist/scripts/generate-client.test.d.ts +2 -0
  219. package/dist/scripts/generate-client.test.d.ts.map +1 -0
  220. package/dist/scripts/generate-client.test.js +48 -0
  221. package/dist/scripts/generate-spec-cli.d.ts +3 -0
  222. package/dist/scripts/generate-spec-cli.d.ts.map +1 -0
  223. package/dist/scripts/generate-spec-cli.js +77 -0
  224. package/dist/scripts/generate-spec-cli.test.d.ts +14 -0
  225. package/dist/scripts/generate-spec-cli.test.d.ts.map +1 -0
  226. package/dist/scripts/generate-spec-cli.test.js +90 -0
  227. package/dist/scripts/generate-spec.d.ts +61 -0
  228. package/dist/scripts/generate-spec.d.ts.map +1 -0
  229. package/dist/scripts/generate-spec.js +746 -0
  230. package/dist/scripts/generate-spec.test.d.ts +12 -0
  231. package/dist/scripts/generate-spec.test.d.ts.map +1 -0
  232. package/dist/scripts/generate-spec.test.js +88 -0
  233. package/dist/scripts/index.d.ts +12 -0
  234. package/dist/scripts/index.d.ts.map +1 -0
  235. package/dist/scripts/index.js +13 -0
  236. package/dist/scripts/sandbox.d.ts +11 -0
  237. package/dist/scripts/sandbox.d.ts.map +1 -0
  238. package/dist/scripts/sandbox.js +200 -0
  239. package/dist/scripts/telemetry-cli.d.ts +3 -0
  240. package/dist/scripts/telemetry-cli.d.ts.map +1 -0
  241. package/dist/scripts/telemetry-cli.js +8 -0
  242. package/dist/scripts/telemetry.d.ts +17 -0
  243. package/dist/scripts/telemetry.d.ts.map +1 -0
  244. package/dist/scripts/telemetry.js +150 -0
  245. package/dist/scripts/telemetry.test.d.ts +2 -0
  246. package/dist/scripts/telemetry.test.d.ts.map +1 -0
  247. package/dist/scripts/telemetry.test.js +203 -0
  248. package/dist/scripts/validate-spec.d.ts +22 -0
  249. package/dist/scripts/validate-spec.d.ts.map +1 -0
  250. package/dist/scripts/validate-spec.js +159 -0
  251. package/dist/server/index.d.ts +3 -0
  252. package/dist/server/index.d.ts.map +1 -0
  253. package/dist/server/index.js +3 -0
  254. package/dist/server/withAuth.d.ts +142 -0
  255. package/dist/server/withAuth.d.ts.map +1 -0
  256. package/dist/server/withAuth.js +261 -0
  257. package/dist/server/withAuth.test.d.ts +2 -0
  258. package/dist/server/withAuth.test.d.ts.map +1 -0
  259. package/dist/server/withAuth.test.js +278 -0
  260. package/dist/telemetry/client.d.ts +59 -0
  261. package/dist/telemetry/client.d.ts.map +1 -0
  262. package/dist/telemetry/client.js +215 -0
  263. package/dist/telemetry/config-writer.d.ts +16 -0
  264. package/dist/telemetry/config-writer.d.ts.map +1 -0
  265. package/dist/telemetry/config-writer.js +36 -0
  266. package/dist/telemetry/consent-commands.test.d.ts +2 -0
  267. package/dist/telemetry/consent-commands.test.d.ts.map +1 -0
  268. package/dist/telemetry/consent-commands.test.js +161 -0
  269. package/dist/telemetry/consent.d.ts +60 -0
  270. package/dist/telemetry/consent.d.ts.map +1 -0
  271. package/dist/telemetry/consent.js +122 -0
  272. package/dist/telemetry/environment.d.ts +33 -0
  273. package/dist/telemetry/environment.d.ts.map +1 -0
  274. package/dist/telemetry/environment.js +87 -0
  275. package/dist/telemetry/identifiers.d.ts +20 -0
  276. package/dist/telemetry/identifiers.d.ts.map +1 -0
  277. package/dist/telemetry/identifiers.js +86 -0
  278. package/dist/telemetry/index.d.ts +6 -0
  279. package/dist/telemetry/index.d.ts.map +1 -0
  280. package/dist/telemetry/index.js +4 -0
  281. package/dist/telemetry/telemetry.test.d.ts +2 -0
  282. package/dist/telemetry/telemetry.test.d.ts.map +1 -0
  283. package/dist/telemetry/telemetry.test.js +1131 -0
  284. package/dist/telemetry/trackCommand.d.ts +32 -0
  285. package/dist/telemetry/trackCommand.d.ts.map +1 -0
  286. package/dist/telemetry/trackCommand.js +102 -0
  287. package/dist/telemetry/types.d.ts +92 -0
  288. package/dist/telemetry/types.d.ts.map +1 -0
  289. package/dist/telemetry/types.js +1 -0
  290. package/dist/types.d.ts +24 -0
  291. package/dist/types.d.ts.map +1 -0
  292. package/dist/types.js +3 -0
  293. package/dist/version.d.ts +2 -0
  294. package/dist/version.d.ts.map +1 -0
  295. package/dist/version.js +2 -0
  296. package/package.json +83 -0
  297. package/src/api.test.ts +25 -0
  298. package/src/api.ts +163 -0
  299. package/src/bb-utils.ts +13 -0
  300. package/src/builtin-routes.ts +62 -0
  301. package/src/cdk/__fixtures__/factory-backend.ts +8 -0
  302. package/src/cdk/__fixtures__/fullid-construct-backend.ts +42 -0
  303. package/src/cdk/__fixtures__/handler.ts +4 -0
  304. package/src/cdk/__fixtures__/side-effect-backend.ts +7 -0
  305. package/src/cdk/blocks-backend.test.ts +207 -0
  306. package/src/cdk/blocks-backend.ts +249 -0
  307. package/src/cdk/blocks-stack.test.ts +106 -0
  308. package/src/cdk/config-registry.ts +106 -0
  309. package/src/cdk/index.ts +115 -0
  310. package/src/cdk/mixins.test.ts +129 -0
  311. package/src/cdk/mixins.ts +41 -0
  312. package/src/cdk/node-version.ts +17 -0
  313. package/src/cdk/stack-metadata.test.ts +71 -0
  314. package/src/cdk/stack-metadata.ts +29 -0
  315. package/src/cdk/synth-guard.test.ts +21 -0
  316. package/src/cdk/synth-guard.ts +23 -0
  317. package/src/client/index.test.ts +118 -0
  318. package/src/client/index.ts +320 -0
  319. package/src/common/config.test.ts +236 -0
  320. package/src/common/config.ts +169 -0
  321. package/src/common/constants.ts +15 -0
  322. package/src/common/crypto.ts +15 -0
  323. package/src/common/index.test.ts +242 -0
  324. package/src/common/index.ts +335 -0
  325. package/src/common/mock-data.ts +52 -0
  326. package/src/common/official-bb-names.generated.ts +29 -0
  327. package/src/common/sdk-registry.ts +150 -0
  328. package/src/constants.ts +31 -0
  329. package/src/cors.test.ts +279 -0
  330. package/src/cors.ts +91 -0
  331. package/src/db-naming.test.ts +48 -0
  332. package/src/db-naming.ts +41 -0
  333. package/src/errors.ts +72 -0
  334. package/src/hosting.test.ts +1431 -0
  335. package/src/hosting.ts +626 -0
  336. package/src/index.cdk.ts +45 -0
  337. package/src/index.ts +22 -0
  338. package/src/lambda-handler.test.ts +1005 -0
  339. package/src/lambda-handler.ts +706 -0
  340. package/src/pipeline/index.ts +12 -0
  341. package/src/pipeline/pipeline-construct.ts +662 -0
  342. package/src/pipeline/pipeline.test.ts +1565 -0
  343. package/src/pipeline/types.ts +384 -0
  344. package/src/raw-route.cdk.ts +56 -0
  345. package/src/raw-route.mock.ts +56 -0
  346. package/src/raw-route.test.ts +819 -0
  347. package/src/raw-route.ts +316 -0
  348. package/src/redact.test.ts +222 -0
  349. package/src/redact.ts +143 -0
  350. package/src/rpc.test.ts +73 -0
  351. package/src/rpc.ts +174 -0
  352. package/src/scripts/cdk-telemetry-env.test.ts +75 -0
  353. package/src/scripts/cdk-telemetry-env.ts +23 -0
  354. package/src/scripts/cleanup.ts +39 -0
  355. package/src/scripts/console.ts +34 -0
  356. package/src/scripts/deploy.ts +106 -0
  357. package/src/scripts/destroy.ts +42 -0
  358. package/src/scripts/dev-server-cors.test.ts +28 -0
  359. package/src/scripts/dev-server-telemetry.test.ts +127 -0
  360. package/src/scripts/dev-server.ts +515 -0
  361. package/src/scripts/ensure-secrets.test.ts +50 -0
  362. package/src/scripts/ensure-secrets.ts +113 -0
  363. package/src/scripts/external-migrations-step.test.ts +64 -0
  364. package/src/scripts/external-migrations-step.ts +269 -0
  365. package/src/scripts/extract-ts-types.test.ts +516 -0
  366. package/src/scripts/extract-ts-types.ts +773 -0
  367. package/src/scripts/generate-client-worker.ts +15 -0
  368. package/src/scripts/generate-client.test.ts +69 -0
  369. package/src/scripts/generate-client.ts +86 -0
  370. package/src/scripts/generate-spec-cli.test.ts +106 -0
  371. package/src/scripts/generate-spec-cli.ts +92 -0
  372. package/src/scripts/generate-spec.test.ts +99 -0
  373. package/src/scripts/generate-spec.ts +833 -0
  374. package/src/scripts/index.ts +21 -0
  375. package/src/scripts/sandbox.ts +230 -0
  376. package/src/scripts/telemetry-cli.ts +10 -0
  377. package/src/scripts/telemetry.test.ts +239 -0
  378. package/src/scripts/telemetry.ts +173 -0
  379. package/src/scripts/validate-spec.ts +199 -0
  380. package/src/server/index.ts +5 -0
  381. package/src/server/withAuth.test.ts +348 -0
  382. package/src/server/withAuth.ts +323 -0
  383. package/src/telemetry/client.ts +226 -0
  384. package/src/telemetry/config-writer.ts +52 -0
  385. package/src/telemetry/consent-commands.test.ts +196 -0
  386. package/src/telemetry/consent.ts +154 -0
  387. package/src/telemetry/environment.ts +100 -0
  388. package/src/telemetry/identifiers.ts +94 -0
  389. package/src/telemetry/index.ts +11 -0
  390. package/src/telemetry/telemetry.test.ts +1343 -0
  391. package/src/telemetry/trackCommand.ts +110 -0
  392. package/src/telemetry/types.ts +92 -0
  393. package/src/types.ts +33 -0
  394. package/src/version.ts +2 -0
@@ -0,0 +1,56 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { describe, it, afterEach } from 'node:test';
4
+ import assert from 'node:assert';
5
+ import { mkdirSync, writeFileSync, rmSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { tmpdir } from 'node:os';
8
+ import { getCdkTelemetryEnv } from './cdk-telemetry-env.js';
9
+ describe('getCdkTelemetryEnv', () => {
10
+ const originalEnv = { ...process.env };
11
+ const originalCwd = process.cwd();
12
+ afterEach(() => {
13
+ process.env = { ...originalEnv };
14
+ process.chdir(originalCwd);
15
+ });
16
+ it('returns CDK_CLI_USERAGENT when telemetry is enabled', () => {
17
+ delete process.env.AWS_BLOCKS_DISABLE_TELEMETRY;
18
+ // chdir to a temp dir with no .blocks/config.json so defaults apply
19
+ const tmp = join(tmpdir(), `cdk-telemetry-test-${Date.now()}`);
20
+ mkdirSync(tmp, { recursive: true });
21
+ process.chdir(tmp);
22
+ const env = getCdkTelemetryEnv('sandbox');
23
+ assert.ok('CDK_CLI_USERAGENT' in env, 'should have CDK_CLI_USERAGENT');
24
+ assert.ok(!('CDK_DISABLE_CLI_TELEMETRY' in env), 'should NOT have CDK_DISABLE_CLI_TELEMETRY');
25
+ assert.match(env.CDK_CLI_USERAGENT, /^aws-blocks\/.*\/sandbox$/);
26
+ rmSync(tmp, { recursive: true, force: true });
27
+ });
28
+ it('returns CDK_DISABLE_CLI_TELEMETRY when env var disables telemetry', () => {
29
+ process.env.AWS_BLOCKS_DISABLE_TELEMETRY = '1';
30
+ const env = getCdkTelemetryEnv('production');
31
+ assert.deepStrictEqual(env, { CDK_DISABLE_CLI_TELEMETRY: '1' });
32
+ assert.ok(!('CDK_CLI_USERAGENT' in env), 'should NOT have CDK_CLI_USERAGENT');
33
+ });
34
+ it('returns CDK_DISABLE_CLI_TELEMETRY when project config disables telemetry', () => {
35
+ delete process.env.AWS_BLOCKS_DISABLE_TELEMETRY;
36
+ const tmp = join(tmpdir(), `cdk-telemetry-test-${Date.now()}`);
37
+ mkdirSync(join(tmp, '.blocks'), { recursive: true });
38
+ writeFileSync(join(tmp, '.blocks', 'config.json'), JSON.stringify({ telemetry: { enabled: false } }));
39
+ process.chdir(tmp);
40
+ const env = getCdkTelemetryEnv('sandbox');
41
+ assert.deepStrictEqual(env, { CDK_DISABLE_CLI_TELEMETRY: '1' });
42
+ assert.ok(!('CDK_CLI_USERAGENT' in env), 'should NOT have CDK_CLI_USERAGENT');
43
+ rmSync(tmp, { recursive: true, force: true });
44
+ });
45
+ it('includes the command name in the user-agent string', () => {
46
+ delete process.env.AWS_BLOCKS_DISABLE_TELEMETRY;
47
+ const tmp = join(tmpdir(), `cdk-telemetry-test-${Date.now()}`);
48
+ mkdirSync(tmp, { recursive: true });
49
+ process.chdir(tmp);
50
+ const sandboxEnv = getCdkTelemetryEnv('sandbox');
51
+ const prodEnv = getCdkTelemetryEnv('production');
52
+ assert.ok(sandboxEnv.CDK_CLI_USERAGENT.endsWith('/sandbox'));
53
+ assert.ok(prodEnv.CDK_CLI_USERAGENT.endsWith('/production'));
54
+ rmSync(tmp, { recursive: true, force: true });
55
+ });
56
+ });
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function cleanup(): Promise<void>;
3
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../src/scripts/cleanup.ts"],"names":[],"mappings":";AAOA,wBAAsB,OAAO,kBA0B5B"}
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { execSync } from 'node:child_process';
5
+ import { trackCommand } from '../telemetry/trackCommand.js';
6
+ export async function cleanup() {
7
+ return trackCommand('cleanup', async () => {
8
+ console.log('🧹 Cleaning up Blocks processes...');
9
+ // Find and kill processes on common Blocks ports
10
+ const ports = [3000, 3001, 3002, 3003];
11
+ for (const port of ports) {
12
+ try {
13
+ const result = execSync(`lsof -ti:${port}`, { encoding: 'utf-8' }).trim();
14
+ if (result) {
15
+ const pids = result.split('\n');
16
+ for (const pid of pids) {
17
+ try {
18
+ execSync(`kill ${pid}`);
19
+ console.log(`✓ Killed process ${pid} on port ${port}`);
20
+ }
21
+ catch { }
22
+ }
23
+ }
24
+ }
25
+ catch {
26
+ // No process on this port
27
+ }
28
+ }
29
+ console.log('✓ Cleanup complete');
30
+ });
31
+ }
32
+ cleanup().catch((error) => {
33
+ console.error('Error during cleanup:', error);
34
+ process.exit(1);
35
+ });
@@ -0,0 +1,6 @@
1
+ export interface ConsoleOptions {
2
+ stackId?: string;
3
+ outputsFile?: string;
4
+ }
5
+ export declare function openConsole(options: ConsoleOptions): Promise<void>;
6
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/scripts/console.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,cAAc,iBAqBxD"}
@@ -0,0 +1,25 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { execFileSync } from 'node:child_process';
4
+ import { readFileSync } from 'node:fs';
5
+ import { trackCommand } from '../telemetry/trackCommand.js';
6
+ export async function openConsole(options) {
7
+ return trackCommand('console', async () => {
8
+ let stackName;
9
+ if (options.stackId) {
10
+ stackName = options.stackId;
11
+ }
12
+ else if (options.outputsFile) {
13
+ const outputs = JSON.parse(readFileSync(options.outputsFile, 'utf-8'));
14
+ stackName = Object.keys(outputs)[0];
15
+ }
16
+ else {
17
+ throw new Error('Must provide either stackId or outputsFile');
18
+ }
19
+ const region = execFileSync('aws', ['configure', 'get', 'region'], { encoding: 'utf-8' }).trim() || 'us-east-1';
20
+ const stackUrl = `https://${region}.console.aws.amazon.com/cloudformation/home?region=${region}#/stacks?filteringText=${encodeURIComponent(stackName)}`;
21
+ console.log('Opening AWS Console...');
22
+ console.log(stackUrl);
23
+ execFileSync('open', [stackUrl], { stdio: 'inherit' });
24
+ });
25
+ }
@@ -0,0 +1,6 @@
1
+ export interface DeployOptions {
2
+ cdkAppPath: string;
3
+ projectRoot: string;
4
+ }
5
+ export declare function deploy(options: DeployOptions): Promise<void>;
6
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/scripts/deploy.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,iBAwFlD"}
@@ -0,0 +1,82 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { execFileSync } from 'node:child_process';
4
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
5
+ import { join, resolve, dirname } from 'node:path';
6
+ import { fileURLToPath, pathToFileURL } from 'node:url';
7
+ import { ensureSecrets, loadProductionEnv } from './ensure-secrets.js';
8
+ import { applyExternalMigrations } from './external-migrations-step.js';
9
+ import { trackCommand } from '../telemetry/trackCommand.js';
10
+ import { getCdkTelemetryEnv } from './cdk-telemetry-env.js';
11
+ export async function deploy(options) {
12
+ return trackCommand('deploy', async () => {
13
+ console.log('🏗️ Preparing deployment...');
14
+ // Load production environment (from .env.production or CI env vars)
15
+ loadProductionEnv();
16
+ process.env.BLOCKS_STAGE = 'production';
17
+ // Provision secrets for production
18
+ const secrets = await ensureSecrets('production');
19
+ if (secrets.created.length > 0 || secrets.updated.length > 0) {
20
+ console.log(`🔐 Secrets provisioned: ${[...secrets.created, ...secrets.updated].join(', ')}`);
21
+ }
22
+ // Apply external-database migrations to the production database before
23
+ // deploying. No-op unless this app uses an external DB and has ./migrations.
24
+ await applyExternalMigrations({ stage: 'production' });
25
+ // Import backend to populate BB registry for telemetry
26
+ const foundationPath = resolve(options.projectRoot, 'aws-blocks/index.ts');
27
+ try {
28
+ await import(pathToFileURL(foundationPath).href);
29
+ }
30
+ catch { /* ignore import errors */ }
31
+ // Generate client code FIRST (before cdk deploy triggers the Vite build)
32
+ const clientPath = join(dirname(foundationPath), 'client.js');
33
+ console.log('📝 Generating client code...');
34
+ const __dirname = dirname(fileURLToPath(import.meta.url));
35
+ const workerPath = join(__dirname, 'generate-client-worker.js');
36
+ execFileSync('node', ['--conditions=aws-runtime', '--import', 'tsx', workerPath, foundationPath, clientPath], {
37
+ stdio: 'inherit',
38
+ env: { ...process.env, NODE_OPTIONS: '' },
39
+ });
40
+ console.log('🚀 Deploying to AWS...');
41
+ console.log(' (This may take a few minutes on first deploy)');
42
+ console.log(' - Backend API (Lambda + API Gateway)');
43
+ console.log(' - Frontend hosting (S3 + CloudFront)');
44
+ try {
45
+ execFileSync("npx", [
46
+ "cdk", "deploy",
47
+ "--require-approval", "never",
48
+ "--outputs-file", ".blocks-sandbox/outputs.json",
49
+ "--context", `projectRoot=${options.projectRoot}`,
50
+ ], {
51
+ stdio: 'inherit',
52
+ cwd: options.projectRoot,
53
+ env: {
54
+ ...process.env,
55
+ NODE_OPTIONS: '--conditions=cdk',
56
+ ...getCdkTelemetryEnv('production')
57
+ }
58
+ });
59
+ }
60
+ catch (error) {
61
+ console.error('\n❌ Deployment failed.');
62
+ throw error;
63
+ }
64
+ const outputs = JSON.parse(readFileSync(join(options.projectRoot, '.blocks-sandbox', 'outputs.json'), 'utf-8'));
65
+ const stackOutputs = Object.values(outputs)[0];
66
+ const apiUrl = stackOutputs.ApiUrl;
67
+ const hostingUrl = Object.entries(stackOutputs).find(([key]) => key.includes('Hosting') && key.includes('Url'))?.[1];
68
+ if (!apiUrl) {
69
+ throw new Error('Could not find API URL in CDK outputs');
70
+ }
71
+ // Write config.json with API endpoint
72
+ const config = { apiUrl, environment: 'production' };
73
+ const outDir = join(options.projectRoot, '.blocks-sandbox');
74
+ mkdirSync(outDir, { recursive: true });
75
+ writeFileSync(join(outDir, 'config.json'), JSON.stringify(config, null, 2));
76
+ console.log('\n✅ Deployment complete!');
77
+ console.log(`\n📡 API URL: ${apiUrl}`);
78
+ if (hostingUrl) {
79
+ console.log(`🌐 Frontend URL: ${hostingUrl}`);
80
+ }
81
+ });
82
+ }
@@ -0,0 +1,6 @@
1
+ export interface DestroyOptions {
2
+ cdkAppPath: string;
3
+ projectRoot: string;
4
+ }
5
+ export declare function destroy(options: DestroyOptions): Promise<void>;
6
+ //# sourceMappingURL=destroy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destroy.d.ts","sourceRoot":"","sources":["../../src/scripts/destroy.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,iBA6BpD"}
@@ -0,0 +1,30 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { execFileSync } from 'node:child_process';
4
+ import { trackCommand } from '../telemetry/trackCommand.js';
5
+ import { getCdkTelemetryEnv } from './cdk-telemetry-env.js';
6
+ export async function destroy(options) {
7
+ return trackCommand('destroy', async () => {
8
+ console.log('🗑️ Destroying production stack...');
9
+ try {
10
+ execFileSync("npx", [
11
+ "cdk", "destroy",
12
+ "--force",
13
+ "--context", `projectRoot=${options.projectRoot}`,
14
+ ], {
15
+ stdio: 'inherit',
16
+ cwd: options.projectRoot,
17
+ env: {
18
+ ...process.env,
19
+ NODE_OPTIONS: '--conditions=cdk',
20
+ ...getCdkTelemetryEnv('production')
21
+ }
22
+ });
23
+ }
24
+ catch (error) {
25
+ console.error('\n❌ Destroy failed.');
26
+ throw error;
27
+ }
28
+ console.log('\n✅ Production stack destroyed!');
29
+ });
30
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dev-server-cors.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server-cors.test.d.ts","sourceRoot":"","sources":["../../src/scripts/dev-server-cors.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { describe, it } from 'node:test';
4
+ import assert from 'node:assert';
5
+ import { resolveDevCorsOrigin, LOCALHOST_PATTERN } from './dev-server.js';
6
+ describe('resolveDevCorsOrigin — dev server CORS', () => {
7
+ it('reflects localhost origin back as-is', () => {
8
+ assert.strictEqual(resolveDevCorsOrigin('http://localhost:3000'), 'http://localhost:3000');
9
+ });
10
+ it('reflects 127.0.0.1 origin back as-is', () => {
11
+ assert.strictEqual(resolveDevCorsOrigin('http://127.0.0.1:3000'), 'http://127.0.0.1:3000');
12
+ });
13
+ it('returns fallback http://localhost:3000 for non-localhost origin', () => {
14
+ assert.strictEqual(resolveDevCorsOrigin('https://evil.com'), 'http://localhost:3000');
15
+ });
16
+ it('returns fallback http://localhost:3000 when origin is empty', () => {
17
+ assert.strictEqual(resolveDevCorsOrigin(''), 'http://localhost:3000');
18
+ });
19
+ it('rejects subdomain impersonation (evil.localhost)', () => {
20
+ assert.strictEqual(LOCALHOST_PATTERN.test('http://localhost.evil.com'), false);
21
+ assert.strictEqual(resolveDevCorsOrigin('http://localhost.evil.com'), 'http://localhost:3000');
22
+ });
23
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dev-server-telemetry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server-telemetry.test.d.ts","sourceRoot":"","sources":["../../src/scripts/dev-server-telemetry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { describe, it, afterEach } from 'node:test';
2
+ import assert from 'node:assert';
3
+ import { createServer } from 'node:http';
4
+ import { writeFileSync, mkdirSync, rmSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { tmpdir } from 'node:os';
7
+ import { spawn } from 'node:child_process';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { dirname } from 'node:path';
10
+ const __dirname = dirname(fileURLToPath(import.meta.url));
11
+ describe('dev-server telemetry integration', () => {
12
+ let telemetryServer = null;
13
+ let devProcess = null;
14
+ let tmpDir = null;
15
+ afterEach(async () => {
16
+ if (devProcess && !devProcess.killed) {
17
+ devProcess.kill('SIGTERM');
18
+ await new Promise(r => setTimeout(r, 500));
19
+ if (!devProcess.killed)
20
+ devProcess.kill('SIGKILL');
21
+ }
22
+ if (telemetryServer) {
23
+ telemetryServer.close();
24
+ }
25
+ if (tmpDir) {
26
+ rmSync(tmpDir, { recursive: true, force: true });
27
+ }
28
+ });
29
+ it('sends telemetry event when dev server starts successfully', async () => {
30
+ const received = [];
31
+ // 1. Start a mock telemetry endpoint
32
+ telemetryServer = await new Promise((resolve) => {
33
+ const s = createServer((req, res) => {
34
+ let body = '';
35
+ req.on('data', (chunk) => { body += chunk; });
36
+ req.on('end', () => {
37
+ received.push(body);
38
+ res.writeHead(200);
39
+ res.end();
40
+ });
41
+ });
42
+ s.listen(0, '127.0.0.1', () => resolve(s));
43
+ });
44
+ const addr = telemetryServer.address();
45
+ // 2. Create a minimal backend file and preload script in a temp directory
46
+ tmpDir = join(tmpdir(), `dev-telemetry-test-${Date.now()}`);
47
+ mkdirSync(tmpDir, { recursive: true });
48
+ writeFileSync(join(tmpDir, 'backend.ts'), `export const hello = { greet: () => 'world' };\n`);
49
+ // Polyfill process.loadEnvFile for Node <21
50
+ writeFileSync(join(tmpDir, 'preload.mjs'), `
51
+ if (!process.loadEnvFile) {
52
+ process.loadEnvFile = () => { throw Object.assign(new Error('ENOENT'), { code: 'ENOENT' }); };
53
+ }
54
+ `);
55
+ const scriptContent = `
56
+ import { startDevServer } from '${join(__dirname, 'dev-server.js').replace(/\\/g, '/')}';
57
+ startDevServer({ backendPath: '${join(tmpDir, 'backend.ts').replace(/\\/g, '/')}', port: 19877 });
58
+ `;
59
+ const scriptPath = join(tmpDir, 'run-dev.ts');
60
+ writeFileSync(scriptPath, scriptContent);
61
+ // 3. Start the dev server as a child process with telemetry endpoint configured
62
+ const tsxBin = join(__dirname, '..', '..', '..', '..', 'node_modules', '.bin', 'tsx');
63
+ devProcess = spawn(tsxBin, ['--import', join(tmpDir, 'preload.mjs'), scriptPath], {
64
+ env: {
65
+ ...process.env,
66
+ BLOCKS_TELEMETRY_ENDPOINT: `http://127.0.0.1:${addr.port}/collect`,
67
+ AWS_BLOCKS_DISABLE_TELEMETRY: '',
68
+ CI: '',
69
+ CONTINUOUS_INTEGRATION: '',
70
+ BUILD_NUMBER: '',
71
+ CODEBUILD_BUILD_ID: '',
72
+ GITHUB_ACTIONS: '',
73
+ GITLAB_CI: '',
74
+ CIRCLECI: '',
75
+ JENKINS_URL: '',
76
+ TF_BUILD: '',
77
+ BITBUCKET_BUILD_NUMBER: '',
78
+ BUILDKITE: '',
79
+ BLOCKS_DEV_QUIET: '1',
80
+ },
81
+ cwd: tmpDir,
82
+ stdio: ['ignore', 'pipe', 'pipe'],
83
+ });
84
+ let stdout = '';
85
+ let stderr = '';
86
+ devProcess.stdout?.on('data', (d) => { stdout += d.toString(); });
87
+ devProcess.stderr?.on('data', (d) => { stderr += d.toString(); });
88
+ // 4. Wait for telemetry event to arrive (up to 15 seconds)
89
+ const deadline = Date.now() + 15_000;
90
+ while (received.length === 0 && Date.now() < deadline) {
91
+ await new Promise(r => setTimeout(r, 200));
92
+ }
93
+ // 5. Verify a telemetry event was received
94
+ assert.ok(received.length >= 1, `Expected telemetry event but received ${received.length}. stdout: ${stdout.slice(0, 500)}, stderr: ${stderr.slice(0, 500)}`);
95
+ const parsed = JSON.parse(received[0]);
96
+ assert.strictEqual(parsed.telemetryVersion, '1.0.0');
97
+ assert.strictEqual(parsed.event.command, 'dev');
98
+ assert.strictEqual(parsed.event.state, 'SUCCESS');
99
+ assert.ok(parsed.event.duration >= 0);
100
+ assert.ok(parsed.identifiers.installationId);
101
+ assert.ok(parsed.identifiers.projectId);
102
+ assert.ok(parsed.identifiers.eventId);
103
+ assert.ok(parsed.identifiers.timestamp);
104
+ assert.ok(parsed.environment.os);
105
+ assert.ok(parsed.environment.nodeVersion);
106
+ assert.strictEqual(typeof parsed.environment.ci, 'boolean');
107
+ // Verify no extra top-level fields (server uses additionalProperties: false)
108
+ const allowedTopLevel = ['telemetryVersion', 'identifiers', 'event', 'environment', 'product', 'counters'];
109
+ for (const key of Object.keys(parsed)) {
110
+ assert.ok(allowedTopLevel.includes(key), `Unexpected top-level field: ${key}`);
111
+ }
112
+ });
113
+ });
@@ -0,0 +1,21 @@
1
+ export declare const LOCALHOST_PATTERN: RegExp;
2
+ /**
3
+ * Resolve the CORS origin for the dev server.
4
+ * Reflects back origins matching localhost/127.0.0.1; otherwise returns the fallback.
5
+ */
6
+ export declare function resolveDevCorsOrigin(origin: string): string;
7
+ export interface DevServerOptions {
8
+ /** Customer-facing port. Default: 3000. */
9
+ port?: number;
10
+ /** Path to the backend index.ts. */
11
+ backendPath: string;
12
+ /**
13
+ * Command to start the frontend dev server (e.g., 'npx vite --port 3100 --strictPort').
14
+ * Omit to run backend-only (no frontend proxy).
15
+ */
16
+ frontendCommand?: string;
17
+ /** Port the frontend dev server listens on. Default: 3100. */
18
+ frontendPort?: number;
19
+ }
20
+ export declare function startDevServer(options: DevServerOptions): Promise<void>;
21
+ //# sourceMappingURL=dev-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/scripts/dev-server.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,iBAAiB,QAAiD,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmCD,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,iBAiP7D"}