alchemy-effect 0.0.0 → 0.2.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 (494) hide show
  1. package/README.md +179 -0
  2. package/bin/alchemy-effect.js +15 -0
  3. package/bin/alchemy-effect.js.map +1 -0
  4. package/bin/alchemy-effect.ts +10 -0
  5. package/lib/app.d.ts +7 -2
  6. package/lib/app.d.ts.map +1 -1
  7. package/lib/app.js +1 -0
  8. package/lib/app.js.map +1 -1
  9. package/lib/apply.d.ts +57 -1
  10. package/lib/apply.d.ts.map +1 -1
  11. package/lib/apply.js +141 -55
  12. package/lib/apply.js.map +1 -1
  13. package/lib/aws/account.d.ts +18 -0
  14. package/lib/aws/account.d.ts.map +1 -0
  15. package/lib/aws/account.js +18 -0
  16. package/lib/aws/account.js.map +1 -0
  17. package/lib/aws/arn.d.ts +2 -0
  18. package/lib/aws/arn.d.ts.map +1 -0
  19. package/lib/aws/arn.js +1 -0
  20. package/lib/aws/arn.js.map +1 -0
  21. package/lib/aws/assets.d.ts +8 -0
  22. package/lib/aws/assets.d.ts.map +1 -0
  23. package/lib/aws/assets.js +4 -0
  24. package/lib/aws/assets.js.map +1 -0
  25. package/lib/aws/bundle.d.ts +4 -0
  26. package/lib/aws/bundle.d.ts.map +1 -0
  27. package/lib/aws/bundle.js +4 -0
  28. package/lib/aws/bundle.js.map +1 -0
  29. package/lib/aws/client.d.ts +8 -0
  30. package/lib/aws/client.d.ts.map +1 -0
  31. package/lib/aws/client.js +28 -0
  32. package/lib/aws/client.js.map +1 -0
  33. package/lib/aws/credentials.d.ts +146 -0
  34. package/lib/aws/credentials.d.ts.map +1 -0
  35. package/lib/aws/credentials.js +170 -0
  36. package/lib/aws/credentials.js.map +1 -0
  37. package/lib/aws/dynamodb/attribute-value.d.ts +20 -0
  38. package/lib/aws/dynamodb/attribute-value.d.ts.map +1 -0
  39. package/lib/aws/dynamodb/attribute-value.js +217 -0
  40. package/lib/aws/dynamodb/attribute-value.js.map +1 -0
  41. package/lib/aws/dynamodb/client.d.ts +12 -0
  42. package/lib/aws/dynamodb/client.d.ts.map +1 -0
  43. package/lib/aws/dynamodb/client.js +11 -0
  44. package/lib/aws/dynamodb/client.js.map +1 -0
  45. package/lib/aws/dynamodb/expr.d.ts +41 -0
  46. package/lib/aws/dynamodb/expr.d.ts.map +1 -0
  47. package/lib/aws/dynamodb/expr.js +1 -0
  48. package/lib/aws/dynamodb/expr.js.map +1 -0
  49. package/lib/aws/dynamodb/index.d.ts +9 -0
  50. package/lib/aws/dynamodb/index.d.ts.map +1 -0
  51. package/lib/aws/dynamodb/index.js +10 -0
  52. package/lib/aws/dynamodb/index.js.map +1 -0
  53. package/lib/aws/dynamodb/projection.d.ts +25 -0
  54. package/lib/aws/dynamodb/projection.d.ts.map +1 -0
  55. package/lib/aws/dynamodb/projection.js +1 -0
  56. package/lib/aws/dynamodb/projection.js.map +1 -0
  57. package/lib/aws/dynamodb/secondary-index.d.ts +25 -0
  58. package/lib/aws/dynamodb/secondary-index.d.ts.map +1 -0
  59. package/lib/aws/dynamodb/secondary-index.js +4 -0
  60. package/lib/aws/dynamodb/secondary-index.js.map +1 -0
  61. package/lib/aws/dynamodb/table.d.ts +56 -0
  62. package/lib/aws/dynamodb/table.d.ts.map +1 -0
  63. package/lib/aws/dynamodb/table.get-item.d.ts +55 -0
  64. package/lib/aws/dynamodb/table.get-item.d.ts.map +1 -0
  65. package/lib/aws/dynamodb/table.get-item.js +75 -0
  66. package/lib/aws/dynamodb/table.get-item.js.map +1 -0
  67. package/lib/aws/dynamodb/table.js +4 -0
  68. package/lib/aws/dynamodb/table.js.map +1 -0
  69. package/lib/aws/dynamodb/table.provider.d.ts +8 -0
  70. package/lib/aws/dynamodb/table.provider.d.ts.map +1 -0
  71. package/lib/aws/dynamodb/table.provider.js +199 -0
  72. package/lib/aws/dynamodb/table.provider.js.map +1 -0
  73. package/lib/aws/ec2/client.d.ts +12 -0
  74. package/lib/aws/ec2/client.d.ts.map +1 -0
  75. package/lib/aws/ec2/client.js +11 -0
  76. package/lib/aws/ec2/client.js.map +1 -0
  77. package/lib/aws/ec2/index.d.ts +4 -0
  78. package/lib/aws/ec2/index.d.ts.map +1 -0
  79. package/lib/aws/ec2/index.js +4 -0
  80. package/lib/aws/ec2/index.js.map +1 -0
  81. package/lib/aws/ec2/vpc.d.ts +131 -0
  82. package/lib/aws/ec2/vpc.d.ts.map +1 -0
  83. package/lib/aws/ec2/vpc.js +3 -0
  84. package/lib/aws/ec2/vpc.js.map +1 -0
  85. package/lib/aws/ec2/vpc.provider.d.ts +7 -0
  86. package/lib/aws/ec2/vpc.provider.d.ts.map +1 -0
  87. package/lib/aws/ec2/vpc.provider.js +198 -0
  88. package/lib/aws/ec2/vpc.provider.js.map +1 -0
  89. package/lib/aws/iam.d.ts +23 -0
  90. package/lib/aws/iam.d.ts.map +1 -0
  91. package/lib/aws/iam.js +7 -0
  92. package/lib/aws/iam.js.map +1 -0
  93. package/lib/aws/index.d.ts +32 -0
  94. package/lib/aws/index.d.ts.map +1 -0
  95. package/lib/aws/index.js +23 -0
  96. package/lib/aws/index.js.map +1 -0
  97. package/lib/aws/lambda/client.d.ts +8 -0
  98. package/lib/aws/lambda/client.d.ts.map +1 -0
  99. package/lib/aws/lambda/client.js +7 -0
  100. package/lib/aws/lambda/client.js.map +1 -0
  101. package/lib/aws/lambda/consume.d.ts +17 -0
  102. package/lib/aws/lambda/consume.d.ts.map +1 -0
  103. package/lib/aws/lambda/consume.js +30 -0
  104. package/lib/aws/lambda/consume.js.map +1 -0
  105. package/lib/aws/lambda/function.d.ts +41 -0
  106. package/lib/aws/lambda/function.d.ts.map +1 -0
  107. package/lib/aws/lambda/function.handler.d.ts +7 -0
  108. package/lib/aws/lambda/function.handler.d.ts.map +1 -0
  109. package/lib/aws/lambda/function.handler.js +8 -0
  110. package/lib/aws/lambda/function.handler.js.map +1 -0
  111. package/lib/aws/lambda/function.invoke.d.ts +10 -0
  112. package/lib/aws/lambda/function.invoke.d.ts.map +1 -0
  113. package/lib/aws/lambda/function.invoke.js +31 -0
  114. package/lib/aws/lambda/function.invoke.js.map +1 -0
  115. package/lib/aws/lambda/function.js +3 -0
  116. package/lib/aws/lambda/function.js.map +1 -0
  117. package/lib/aws/lambda/function.provider.d.ts +9 -0
  118. package/lib/aws/lambda/function.provider.d.ts.map +1 -0
  119. package/lib/aws/lambda/function.provider.js +465 -0
  120. package/lib/aws/lambda/function.provider.js.map +1 -0
  121. package/lib/aws/lambda/index.d.ts +8 -0
  122. package/lib/aws/lambda/index.d.ts.map +1 -0
  123. package/lib/aws/lambda/index.js +9 -0
  124. package/lib/aws/lambda/index.js.map +1 -0
  125. package/lib/aws/lambda/serve.d.ts +14 -0
  126. package/lib/aws/lambda/serve.d.ts.map +1 -0
  127. package/lib/aws/lambda/serve.js +7 -0
  128. package/lib/aws/lambda/serve.js.map +1 -0
  129. package/lib/aws/parse-ini.d.ts +4 -0
  130. package/lib/aws/parse-ini.d.ts.map +1 -0
  131. package/lib/aws/parse-ini.js +67 -0
  132. package/lib/aws/parse-ini.js.map +1 -0
  133. package/lib/aws/profile.d.ts +6 -0
  134. package/lib/aws/profile.d.ts.map +1 -0
  135. package/lib/aws/profile.js +4 -0
  136. package/lib/aws/profile.js.map +1 -0
  137. package/lib/aws/region.d.ts +19 -0
  138. package/lib/aws/region.d.ts.map +1 -0
  139. package/lib/aws/region.js +21 -0
  140. package/lib/aws/region.js.map +1 -0
  141. package/lib/aws/s3.d.ts +8 -0
  142. package/lib/aws/s3.d.ts.map +1 -0
  143. package/lib/aws/s3.js +7 -0
  144. package/lib/aws/s3.js.map +1 -0
  145. package/lib/aws/sqs/client.d.ts +12 -0
  146. package/lib/aws/sqs/client.d.ts.map +1 -0
  147. package/lib/aws/sqs/client.js +11 -0
  148. package/lib/aws/sqs/client.js.map +1 -0
  149. package/lib/aws/sqs/index.d.ts +7 -0
  150. package/lib/aws/sqs/index.d.ts.map +1 -0
  151. package/lib/aws/sqs/index.js +7 -0
  152. package/lib/aws/sqs/index.js.map +1 -0
  153. package/lib/aws/sqs/queue.consume.d.ts +12 -0
  154. package/lib/aws/sqs/queue.consume.d.ts.map +1 -0
  155. package/lib/aws/sqs/queue.consume.js +3 -0
  156. package/lib/aws/sqs/queue.consume.js.map +1 -0
  157. package/lib/aws/sqs/queue.d.ts +79 -0
  158. package/lib/aws/sqs/queue.d.ts.map +1 -0
  159. package/lib/aws/sqs/queue.event-source.d.ts +20 -0
  160. package/lib/aws/sqs/queue.event-source.d.ts.map +1 -0
  161. package/lib/aws/sqs/queue.event-source.js +148 -0
  162. package/lib/aws/sqs/queue.event-source.js.map +1 -0
  163. package/lib/aws/sqs/queue.js +3 -0
  164. package/lib/aws/sqs/queue.js.map +1 -0
  165. package/lib/aws/sqs/queue.provider.d.ts +7 -0
  166. package/lib/aws/sqs/queue.provider.d.ts.map +1 -0
  167. package/lib/aws/sqs/queue.provider.js +79 -0
  168. package/lib/aws/sqs/queue.provider.js.map +1 -0
  169. package/lib/aws/sqs/queue.send-message.d.ts +11 -0
  170. package/lib/aws/sqs/queue.send-message.d.ts.map +1 -0
  171. package/lib/aws/sqs/queue.send-message.js +32 -0
  172. package/lib/aws/sqs/queue.send-message.js.map +1 -0
  173. package/lib/aws/sts.d.ts +8 -0
  174. package/lib/aws/sts.d.ts.map +1 -0
  175. package/lib/aws/sts.js +7 -0
  176. package/lib/aws/sts.js.map +1 -0
  177. package/lib/aws/zip.d.ts +3 -0
  178. package/lib/aws/zip.d.ts.map +1 -0
  179. package/lib/aws/zip.js +12 -0
  180. package/lib/aws/zip.js.map +1 -0
  181. package/lib/binding.d.ts +70 -22
  182. package/lib/binding.d.ts.map +1 -1
  183. package/lib/binding.js.map +1 -1
  184. package/lib/capability.d.ts +38 -0
  185. package/lib/capability.d.ts.map +1 -1
  186. package/lib/cli/approve.d.ts +4 -0
  187. package/lib/cli/approve.d.ts.map +1 -0
  188. package/lib/cli/approve.js +18 -0
  189. package/lib/cli/approve.js.map +1 -0
  190. package/lib/cli/clack.d.ts +14 -0
  191. package/lib/cli/clack.d.ts.map +1 -0
  192. package/lib/cli/clack.js +12 -0
  193. package/lib/cli/clack.js.map +1 -0
  194. package/lib/cli/components/ApprovePlan.d.ts +8 -0
  195. package/lib/cli/components/ApprovePlan.d.ts.map +1 -0
  196. package/lib/cli/components/ApprovePlan.js +30 -0
  197. package/lib/cli/components/ApprovePlan.js.map +1 -0
  198. package/lib/cli/components/Plan.d.ts +7 -0
  199. package/lib/cli/components/Plan.d.ts.map +1 -0
  200. package/lib/cli/components/Plan.js +100 -0
  201. package/lib/cli/components/Plan.js.map +1 -0
  202. package/lib/cli/components/PlanProgress.d.ts +9 -0
  203. package/lib/cli/components/PlanProgress.d.ts.map +1 -0
  204. package/lib/cli/components/PlanProgress.js +166 -0
  205. package/lib/cli/components/PlanProgress.js.map +1 -0
  206. package/lib/cli/index.d.ts +449 -0
  207. package/lib/cli/index.d.ts.map +1 -0
  208. package/lib/cli/index.js +39912 -0
  209. package/lib/cli/index.js.map +1 -0
  210. package/lib/cli/main.d.ts +2 -0
  211. package/lib/cli/main.d.ts.map +1 -0
  212. package/lib/cli/main.js +1 -0
  213. package/lib/cli/main.js.map +1 -0
  214. package/lib/cli/plan.d.ts +13 -0
  215. package/lib/cli/plan.d.ts.map +1 -0
  216. package/lib/cli/plan.js +1 -0
  217. package/lib/cli/plan.js.map +1 -0
  218. package/lib/cli/progress.d.ts +7 -0
  219. package/lib/cli/progress.d.ts.map +1 -0
  220. package/lib/cli/progress.js +30 -0
  221. package/lib/cli/progress.js.map +1 -0
  222. package/lib/cli/spinner.d.ts +2 -0
  223. package/lib/cli/spinner.d.ts.map +1 -0
  224. package/lib/cli/spinner.js +13 -0
  225. package/lib/cli/spinner.js.map +1 -0
  226. package/lib/cloudflare/api.d.ts +36 -0
  227. package/lib/cloudflare/api.d.ts.map +1 -0
  228. package/lib/cloudflare/api.js +99 -0
  229. package/lib/cloudflare/api.js.map +1 -0
  230. package/lib/cloudflare/context.d.ts +27 -0
  231. package/lib/cloudflare/context.d.ts.map +1 -0
  232. package/lib/cloudflare/context.js +24 -0
  233. package/lib/cloudflare/context.js.map +1 -0
  234. package/lib/cloudflare/index.d.ts +6 -0
  235. package/lib/cloudflare/index.d.ts.map +1 -0
  236. package/lib/cloudflare/index.js +5 -0
  237. package/lib/cloudflare/index.js.map +1 -0
  238. package/lib/cloudflare/kv/index.d.ts +4 -0
  239. package/lib/cloudflare/kv/index.d.ts.map +1 -0
  240. package/lib/cloudflare/kv/index.js +4 -0
  241. package/lib/cloudflare/kv/index.js.map +1 -0
  242. package/lib/cloudflare/kv/namespace.binding.d.ts +8 -0
  243. package/lib/cloudflare/kv/namespace.binding.d.ts.map +1 -0
  244. package/lib/cloudflare/kv/namespace.binding.js +15 -0
  245. package/lib/cloudflare/kv/namespace.binding.js.map +1 -0
  246. package/lib/cloudflare/kv/namespace.client.d.ts +11 -0
  247. package/lib/cloudflare/kv/namespace.client.d.ts.map +1 -0
  248. package/lib/cloudflare/kv/namespace.client.js +31 -0
  249. package/lib/cloudflare/kv/namespace.client.js.map +1 -0
  250. package/lib/cloudflare/kv/namespace.d.ts +23 -0
  251. package/lib/cloudflare/kv/namespace.d.ts.map +1 -0
  252. package/lib/cloudflare/kv/namespace.js +3 -0
  253. package/lib/cloudflare/kv/namespace.js.map +1 -0
  254. package/lib/cloudflare/kv/namespace.provider.d.ts +5 -0
  255. package/lib/cloudflare/kv/namespace.provider.d.ts.map +1 -0
  256. package/lib/cloudflare/kv/namespace.provider.js +80 -0
  257. package/lib/cloudflare/kv/namespace.provider.js.map +1 -0
  258. package/lib/cloudflare/live.d.ts +11 -0
  259. package/lib/cloudflare/live.d.ts.map +1 -0
  260. package/lib/cloudflare/live.js +18 -0
  261. package/lib/cloudflare/live.js.map +1 -0
  262. package/lib/cloudflare/r2/bucket.binding.d.ts +8 -0
  263. package/lib/cloudflare/r2/bucket.binding.d.ts.map +1 -0
  264. package/lib/cloudflare/r2/bucket.binding.js +18 -0
  265. package/lib/cloudflare/r2/bucket.binding.js.map +1 -0
  266. package/lib/cloudflare/r2/bucket.client.d.ts +8 -0
  267. package/lib/cloudflare/r2/bucket.client.d.ts.map +1 -0
  268. package/lib/cloudflare/r2/bucket.client.js +9 -0
  269. package/lib/cloudflare/r2/bucket.client.js.map +1 -0
  270. package/lib/cloudflare/r2/bucket.d.ts +32 -0
  271. package/lib/cloudflare/r2/bucket.d.ts.map +1 -0
  272. package/lib/cloudflare/r2/bucket.del.d.ts +4 -0
  273. package/lib/cloudflare/r2/bucket.del.d.ts.map +1 -0
  274. package/lib/cloudflare/r2/bucket.del.js +7 -0
  275. package/lib/cloudflare/r2/bucket.del.js.map +1 -0
  276. package/lib/cloudflare/r2/bucket.get.d.ts +5 -0
  277. package/lib/cloudflare/r2/bucket.get.d.ts.map +1 -0
  278. package/lib/cloudflare/r2/bucket.get.js +7 -0
  279. package/lib/cloudflare/r2/bucket.get.js.map +1 -0
  280. package/lib/cloudflare/r2/bucket.head.d.ts +4 -0
  281. package/lib/cloudflare/r2/bucket.head.d.ts.map +1 -0
  282. package/lib/cloudflare/r2/bucket.head.js +7 -0
  283. package/lib/cloudflare/r2/bucket.head.js.map +1 -0
  284. package/lib/cloudflare/r2/bucket.js +3 -0
  285. package/lib/cloudflare/r2/bucket.js.map +1 -0
  286. package/lib/cloudflare/r2/bucket.list.d.ts +5 -0
  287. package/lib/cloudflare/r2/bucket.list.d.ts.map +1 -0
  288. package/lib/cloudflare/r2/bucket.list.js +7 -0
  289. package/lib/cloudflare/r2/bucket.list.js.map +1 -0
  290. package/lib/cloudflare/r2/bucket.multipart.d.ts +19 -0
  291. package/lib/cloudflare/r2/bucket.multipart.d.ts.map +1 -0
  292. package/lib/cloudflare/r2/bucket.multipart.js +25 -0
  293. package/lib/cloudflare/r2/bucket.multipart.js.map +1 -0
  294. package/lib/cloudflare/r2/bucket.provider.d.ts +5 -0
  295. package/lib/cloudflare/r2/bucket.provider.d.ts.map +1 -0
  296. package/lib/cloudflare/r2/bucket.provider.js +66 -0
  297. package/lib/cloudflare/r2/bucket.provider.js.map +1 -0
  298. package/lib/cloudflare/r2/bucket.put.d.ts +6 -0
  299. package/lib/cloudflare/r2/bucket.put.d.ts.map +1 -0
  300. package/lib/cloudflare/r2/bucket.put.js +8 -0
  301. package/lib/cloudflare/r2/bucket.put.js.map +1 -0
  302. package/lib/cloudflare/r2/index.d.ts +10 -0
  303. package/lib/cloudflare/r2/index.d.ts.map +1 -0
  304. package/lib/cloudflare/r2/index.js +10 -0
  305. package/lib/cloudflare/r2/index.js.map +1 -0
  306. package/lib/cloudflare/stream.d.ts +10 -0
  307. package/lib/cloudflare/stream.d.ts.map +1 -0
  308. package/lib/cloudflare/stream.js +16 -0
  309. package/lib/cloudflare/stream.js.map +1 -0
  310. package/lib/cloudflare/worker/assets.fetch.d.ts +8 -0
  311. package/lib/cloudflare/worker/assets.fetch.d.ts.map +1 -0
  312. package/lib/cloudflare/worker/assets.fetch.js +11 -0
  313. package/lib/cloudflare/worker/assets.fetch.js.map +1 -0
  314. package/lib/cloudflare/worker/assets.provider.d.ts +66 -0
  315. package/lib/cloudflare/worker/assets.provider.d.ts.map +1 -0
  316. package/lib/cloudflare/worker/assets.provider.js +145 -0
  317. package/lib/cloudflare/worker/assets.provider.js.map +1 -0
  318. package/lib/cloudflare/worker/index.d.ts +6 -0
  319. package/lib/cloudflare/worker/index.d.ts.map +1 -0
  320. package/lib/cloudflare/worker/index.js +5 -0
  321. package/lib/cloudflare/worker/index.js.map +1 -0
  322. package/lib/cloudflare/worker/worker.d.ts +67 -0
  323. package/lib/cloudflare/worker/worker.d.ts.map +1 -0
  324. package/lib/cloudflare/worker/worker.handler.d.ts +11 -0
  325. package/lib/cloudflare/worker/worker.handler.d.ts.map +1 -0
  326. package/lib/cloudflare/worker/worker.handler.js +15 -0
  327. package/lib/cloudflare/worker/worker.handler.js.map +1 -0
  328. package/lib/cloudflare/worker/worker.js +4 -0
  329. package/lib/cloudflare/worker/worker.js.map +1 -0
  330. package/lib/cloudflare/worker/worker.provider.d.ts +10 -0
  331. package/lib/cloudflare/worker/worker.provider.d.ts.map +1 -0
  332. package/lib/cloudflare/worker/worker.provider.js +193 -0
  333. package/lib/cloudflare/worker/worker.provider.js.map +1 -0
  334. package/lib/cloudflare/worker/worker.serve.d.ts +39 -0
  335. package/lib/cloudflare/worker/worker.serve.d.ts.map +1 -0
  336. package/lib/cloudflare/worker/worker.serve.js +4 -0
  337. package/lib/cloudflare/worker/worker.serve.js.map +1 -0
  338. package/lib/destroy.d.ts +1 -3
  339. package/lib/destroy.d.ts.map +1 -1
  340. package/lib/destroy.js +5 -0
  341. package/lib/destroy.js.map +1 -1
  342. package/lib/dot-alchemy.d.ts +3 -2
  343. package/lib/dot-alchemy.d.ts.map +1 -1
  344. package/lib/dot-alchemy.js +3 -2
  345. package/lib/dot-alchemy.js.map +1 -1
  346. package/lib/esbuild.d.ts +28 -0
  347. package/lib/esbuild.d.ts.map +1 -0
  348. package/lib/esbuild.js +63 -0
  349. package/lib/esbuild.js.map +1 -0
  350. package/lib/index.d.ts +1 -0
  351. package/lib/index.d.ts.map +1 -1
  352. package/lib/index.js +4 -0
  353. package/lib/index.js.map +1 -1
  354. package/lib/plan.d.ts +19 -8
  355. package/lib/plan.d.ts.map +1 -1
  356. package/lib/plan.js +144 -72
  357. package/lib/plan.js.map +1 -1
  358. package/lib/policy.d.ts +19 -1
  359. package/lib/policy.d.ts.map +1 -1
  360. package/lib/policy.js +10 -1
  361. package/lib/policy.js.map +1 -1
  362. package/lib/provider.d.ts +2 -2
  363. package/lib/provider.d.ts.map +1 -1
  364. package/lib/resource.d.ts +2 -10
  365. package/lib/resource.d.ts.map +1 -1
  366. package/lib/resource.js +1 -0
  367. package/lib/resource.js.map +1 -1
  368. package/lib/runtime.d.ts +1 -1
  369. package/lib/runtime.d.ts.map +1 -1
  370. package/lib/schema.d.ts +37 -0
  371. package/lib/schema.d.ts.map +1 -0
  372. package/lib/schema.js +61 -0
  373. package/lib/schema.js.map +1 -0
  374. package/lib/sha256.d.ts +5 -0
  375. package/lib/sha256.d.ts.map +1 -0
  376. package/lib/sha256.js +16 -0
  377. package/lib/sha256.js.map +1 -0
  378. package/lib/state.d.ts +3 -2
  379. package/lib/state.d.ts.map +1 -1
  380. package/lib/state.js +3 -2
  381. package/lib/state.js.map +1 -1
  382. package/lib/tags.d.ts +17 -0
  383. package/lib/tags.d.ts.map +1 -0
  384. package/lib/tags.js +22 -0
  385. package/lib/tags.js.map +1 -0
  386. package/lib/test.d.ts +14 -0
  387. package/lib/test.d.ts.map +1 -0
  388. package/lib/test.js +28 -0
  389. package/lib/test.js.map +1 -0
  390. package/lib/tsconfig.test.tsbuildinfo +1 -0
  391. package/lib/type.d.ts +3 -0
  392. package/lib/type.d.ts.map +1 -0
  393. package/lib/type.js +3 -0
  394. package/lib/type.js.map +1 -0
  395. package/package.json +115 -3
  396. package/src/app.ts +8 -7
  397. package/src/apply.ts +251 -93
  398. package/src/aws/account.ts +37 -0
  399. package/src/aws/arn.ts +1 -0
  400. package/src/aws/assets.ts +8 -0
  401. package/src/aws/bundle.ts +5 -0
  402. package/src/aws/client.ts +47 -0
  403. package/src/aws/credentials.ts +409 -0
  404. package/src/aws/dynamodb/attribute-value.ts +240 -0
  405. package/src/aws/dynamodb/client.ts +20 -0
  406. package/src/aws/dynamodb/expr.ts +90 -0
  407. package/src/aws/dynamodb/index.ts +12 -0
  408. package/src/aws/dynamodb/projection.ts +159 -0
  409. package/src/aws/dynamodb/secondary-index.ts +45 -0
  410. package/src/aws/dynamodb/table.get-item.ts +177 -0
  411. package/src/aws/dynamodb/table.provider.ts +280 -0
  412. package/src/aws/dynamodb/table.ts +156 -0
  413. package/src/aws/ec2/client.ts +20 -0
  414. package/src/aws/ec2/index.ts +3 -0
  415. package/src/aws/ec2/vpc.provider.ts +285 -0
  416. package/src/aws/ec2/vpc.ts +152 -0
  417. package/src/aws/iam.ts +30 -0
  418. package/src/aws/index.ts +54 -0
  419. package/src/aws/lambda/client.ts +14 -0
  420. package/src/aws/lambda/consume.ts +63 -0
  421. package/src/aws/lambda/function.handler.ts +30 -0
  422. package/src/aws/lambda/function.invoke.ts +40 -0
  423. package/src/aws/lambda/function.provider.ts +655 -0
  424. package/src/aws/lambda/function.ts +45 -0
  425. package/src/aws/lambda/index.ts +9 -0
  426. package/src/aws/lambda/serve.ts +29 -0
  427. package/src/aws/parse-ini.ts +80 -0
  428. package/src/aws/profile.ts +6 -0
  429. package/src/aws/region.ts +37 -0
  430. package/src/aws/s3.ts +10 -0
  431. package/src/aws/sqs/client.ts +20 -0
  432. package/src/aws/sqs/index.ts +6 -0
  433. package/src/aws/sqs/queue.consume.ts +13 -0
  434. package/src/aws/sqs/queue.event-source.ts +253 -0
  435. package/src/aws/sqs/queue.provider.ts +94 -0
  436. package/src/aws/sqs/queue.send-message.ts +51 -0
  437. package/src/aws/sqs/queue.ts +86 -0
  438. package/src/aws/sts.ts +13 -0
  439. package/src/aws/zip.ts +17 -0
  440. package/src/binding.ts +121 -25
  441. package/src/capability.ts +44 -0
  442. package/src/cli/approve.tsx +30 -0
  443. package/src/cli/clack.ts +22 -0
  444. package/src/cli/components/ApprovePlan.tsx +44 -0
  445. package/src/cli/components/Plan.tsx +154 -0
  446. package/src/cli/components/PlanProgress.tsx +206 -0
  447. package/src/cli/index.ts +6 -0
  448. package/src/cli/main.ts +0 -0
  449. package/src/cli/plan.ts +16 -0
  450. package/src/cli/progress.tsx +46 -0
  451. package/src/cli/spinner.ts +14 -0
  452. package/src/cloudflare/api.ts +152 -0
  453. package/src/cloudflare/context.ts +49 -0
  454. package/src/cloudflare/index.ts +6 -0
  455. package/src/cloudflare/kv/index.ts +3 -0
  456. package/src/cloudflare/kv/namespace.binding.ts +25 -0
  457. package/src/cloudflare/kv/namespace.client.ts +70 -0
  458. package/src/cloudflare/kv/namespace.provider.ts +99 -0
  459. package/src/cloudflare/kv/namespace.ts +29 -0
  460. package/src/cloudflare/live.ts +38 -0
  461. package/src/cloudflare/r2/bucket.binding.ts +27 -0
  462. package/src/cloudflare/r2/bucket.client.ts +22 -0
  463. package/src/cloudflare/r2/bucket.del.ts +11 -0
  464. package/src/cloudflare/r2/bucket.get.ts +13 -0
  465. package/src/cloudflare/r2/bucket.head.ts +11 -0
  466. package/src/cloudflare/r2/bucket.list.ts +12 -0
  467. package/src/cloudflare/r2/bucket.multipart.ts +55 -0
  468. package/src/cloudflare/r2/bucket.provider.ts +83 -0
  469. package/src/cloudflare/r2/bucket.put.ts +17 -0
  470. package/src/cloudflare/r2/bucket.ts +38 -0
  471. package/src/cloudflare/r2/index.ts +9 -0
  472. package/src/cloudflare/stream.ts +21 -0
  473. package/src/cloudflare/worker/assets.fetch.ts +27 -0
  474. package/src/cloudflare/worker/assets.provider.ts +249 -0
  475. package/src/cloudflare/worker/index.ts +6 -0
  476. package/src/cloudflare/worker/worker.handler.ts +39 -0
  477. package/src/cloudflare/worker/worker.provider.ts +246 -0
  478. package/src/cloudflare/worker/worker.serve.ts +19 -0
  479. package/src/cloudflare/worker/worker.ts +76 -0
  480. package/src/destroy.ts +6 -3
  481. package/src/dot-alchemy.ts +3 -2
  482. package/src/esbuild.ts +98 -0
  483. package/src/index.ts +5 -0
  484. package/src/plan.ts +233 -120
  485. package/src/policy.ts +55 -2
  486. package/src/provider.ts +2 -2
  487. package/src/resource.ts +3 -2
  488. package/src/runtime.ts +1 -1
  489. package/src/schema.ts +102 -0
  490. package/src/sha256.ts +23 -0
  491. package/src/state.ts +3 -2
  492. package/src/tags.ts +38 -0
  493. package/src/test.ts +71 -0
  494. package/src/type.ts +2 -0
@@ -0,0 +1,170 @@
1
+ import { fromContainerMetadata as _fromContainerMetadata, fromEnv as _fromEnv, fromHttp as _fromHttp, fromIni as _fromIni, fromInstanceMetadata as _fromInstanceMetadata, fromNodeProviderChain as _fromNodeProviderChain, fromProcess as _fromProcess, fromTokenFile as _fromTokenFile, fromWebToken as _fromWebToken, } from "@aws-sdk/credential-providers";
2
+ import { FileSystem, HttpClient } from "@effect/platform";
3
+ import * as ini from "@smithy/shared-ini-file-loader";
4
+ import {} from "@smithy/types";
5
+ import * as Console from "effect/Console";
6
+ import * as Context from "effect/Context";
7
+ import * as Data from "effect/Data";
8
+ import * as Effect from "effect/Effect";
9
+ import * as Layer from "effect/Layer";
10
+ import * as Option from "effect/Option";
11
+ import * as Redacted from "effect/Redacted";
12
+ import { createHash } from "node:crypto";
13
+ import * as path from "node:path";
14
+ import { parseIni, parseSSOSessionData } from "./parse-ini.js";
15
+ import { AwsProfile } from "./profile.js";
16
+ export class Credentials extends Context.Tag("AWS::Credentials")() {
17
+ }
18
+ export const fromAwsCredentialIdentity = (identity) => Credentials.of({
19
+ accessKeyId: Redacted.make(identity.accessKeyId),
20
+ secretAccessKey: Redacted.make(identity.secretAccessKey),
21
+ sessionToken: identity.sessionToken
22
+ ? Redacted.make(identity.sessionToken)
23
+ : undefined,
24
+ expiration: identity.expiration?.getTime(),
25
+ });
26
+ const createLayer = (provider) => Layer.effect(Credentials, Effect.gen(function* () {
27
+ return fromAwsCredentialIdentity(yield* Effect.promise(() => provider({})()));
28
+ }));
29
+ export const fromCredentials = (credentials) => Layer.succeed(Credentials, fromAwsCredentialIdentity(credentials));
30
+ export const fromEnv = () => createLayer(_fromEnv);
31
+ export const fromChain = () => createLayer(() => _fromNodeProviderChain());
32
+ // export const fromSSO = () => createLayer(_fromSSO);
33
+ export const fromIni = () => createLayer(_fromIni);
34
+ export const fromContainerMetadata = () => createLayer(_fromContainerMetadata);
35
+ export const fromHttp = () => createLayer(_fromHttp);
36
+ export const fromInstanceMetadata = (...parameters) => createLayer(() => _fromInstanceMetadata(...parameters));
37
+ export const fromProcess = () => createLayer(_fromProcess);
38
+ export const fromTokenFile = () => createLayer(_fromTokenFile);
39
+ export const fromWebToken = (...parameters) => createLayer(() => _fromWebToken(...parameters));
40
+ export const ssoRegion = (region) => Layer.succeed(SsoRegion, region);
41
+ /**
42
+ * The time window (5 mins) that SDK will treat the SSO token expires in before the defined expiration date in token.
43
+ * This is needed because server side may have invalidated the token before the defined expiration date.
44
+ */
45
+ const EXPIRE_WINDOW_MS = 5 * 60 * 1000;
46
+ const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;
47
+ export class SsoRegion extends Context.Tag("AWS::SsoRegion")() {
48
+ }
49
+ export class SsoStartUrl extends Context.Tag("AWS::SsoStartUrl")() {
50
+ }
51
+ export class ProfileNotFound extends Data.TaggedError("Alchemy::AWS::ProfileNotFound") {
52
+ }
53
+ export class ConflictingSSORegion extends Data.TaggedError("Alchemy::AWS::ConflictingSSORegion") {
54
+ }
55
+ export class ConflictingSSOStartUrl extends Data.TaggedError("Alchemy::AWS::ConflictingSSOStartUrl") {
56
+ }
57
+ export class InvalidSSOProfile extends Data.TaggedError("Alchemy::AWS::InvalidSSOProfile") {
58
+ }
59
+ export class InvalidSSOToken extends Data.TaggedError("Alchemy::AWS::InvalidSSOToken") {
60
+ }
61
+ export class ExpiredSSOToken extends Data.TaggedError("Alchemy::AWS::ExpiredSSOToken") {
62
+ }
63
+ export const fromSSO = () => Layer.effect(Credentials, Effect.gen(function* () {
64
+ const client = yield* HttpClient.HttpClient;
65
+ const fs = yield* FileSystem.FileSystem;
66
+ const profileName = Option.getOrElse(yield* Effect.serviceOption(AwsProfile), () => "default");
67
+ const profiles = yield* Effect.promise(() => ini.parseKnownFiles({ profile: profileName }));
68
+ const profile = profiles[profileName];
69
+ if (!profile) {
70
+ yield* Effect.fail(new ProfileNotFound({
71
+ message: `Profile ${profileName} not found`,
72
+ profile: profileName,
73
+ }));
74
+ }
75
+ const awsDir = path.join(ini.getHomeDir(), ".aws");
76
+ const configPath = path.join(awsDir, "config");
77
+ const cachePath = path.join(awsDir, "sso", "cache");
78
+ if (profile.sso_session) {
79
+ const ssoRegion = Option.getOrUndefined(yield* Effect.serviceOption(SsoRegion));
80
+ const ssoStartUrl = Option.getOrElse(yield* Effect.serviceOption(SsoStartUrl), () => profile.sso_start_url);
81
+ const ssoSessions = yield* fs.readFileString(configPath).pipe(Effect.flatMap((config) => Effect.promise(async () => parseIni(config))), Effect.map(parseSSOSessionData));
82
+ const session = ssoSessions[profile.sso_session];
83
+ if (ssoRegion && ssoRegion !== session.sso_region) {
84
+ yield* Effect.fail(new ConflictingSSORegion({
85
+ message: `Conflicting SSO region`,
86
+ ssoRegion: ssoRegion,
87
+ profile: profile.sso_session,
88
+ }));
89
+ }
90
+ if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {
91
+ yield* Effect.fail(new ConflictingSSOStartUrl({
92
+ message: `Conflicting SSO start url`,
93
+ ssoStartUrl: ssoStartUrl,
94
+ profile: profile.sso_session,
95
+ }));
96
+ }
97
+ profile.sso_region = session.sso_region;
98
+ profile.sso_start_url = session.sso_start_url;
99
+ const ssoFields = [
100
+ "sso_start_url",
101
+ "sso_account_id",
102
+ "sso_region",
103
+ "sso_role_name",
104
+ ];
105
+ const missingFields = ssoFields.filter((field) => !profile[field]);
106
+ if (missingFields.length > 0) {
107
+ yield* Effect.fail(new InvalidSSOProfile({
108
+ profile: profileName,
109
+ missingFields,
110
+ message: `Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", ` +
111
+ `"sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,
112
+ }));
113
+ }
114
+ const hasher = createHash("sha1");
115
+ const cacheName = hasher.update(profile.sso_session).digest("hex");
116
+ const ssoTokenFilepath = path.join(cachePath, `${cacheName}.json`);
117
+ const cachedCredsFilePath = path.join(cachePath, `${cacheName}.credentials.json`);
118
+ const cachedCreds = yield* fs.readFileString(cachedCredsFilePath).pipe(Effect.map((text) => JSON.parse(text)), Effect.catchAll(() => Effect.void));
119
+ const isExpired = (expiry) => {
120
+ return (expiry === undefined ||
121
+ new Date(expiry).getTime() - Date.now() <= EXPIRE_WINDOW_MS);
122
+ };
123
+ if (cachedCreds && !isExpired(cachedCreds.expiry)) {
124
+ return Credentials.of({
125
+ accessKeyId: Redacted.make(cachedCreds.accessKeyId),
126
+ secretAccessKey: Redacted.make(cachedCreds.secretAccessKey),
127
+ sessionToken: cachedCreds.sessionToken
128
+ ? Redacted.make(cachedCreds.sessionToken)
129
+ : undefined,
130
+ expiration: cachedCreds.expiry,
131
+ });
132
+ }
133
+ const ssoToken = yield* fs.readFileString(ssoTokenFilepath).pipe(Effect.map((text) => JSON.parse(text)), Effect.catchAll(() => Effect.fail(new InvalidSSOToken({
134
+ message: `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,
135
+ sso_session: profile.sso_session,
136
+ }))));
137
+ if (isExpired(ssoToken.expiresAt)) {
138
+ yield* Console.log(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`);
139
+ yield* Effect.fail(new ExpiredSSOToken({
140
+ message: `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,
141
+ profile: profileName,
142
+ }));
143
+ }
144
+ const response = yield* client.get(`https://portal.sso.${profile.sso_region}.amazonaws.com/federation/credentials?account_id=${profile.sso_account_id}&role_name=${profile.sso_role_name}`, {
145
+ headers: {
146
+ "User-Agent": "alchemy.run",
147
+ "Content-Type": "application/json",
148
+ "x-amz-sso_bearer_token": ssoToken.accessToken,
149
+ },
150
+ });
151
+ const credentials = (yield* response.json).roleCredentials;
152
+ yield* fs.writeFileString(cachedCredsFilePath, JSON.stringify({
153
+ accessKeyId: credentials.accessKeyId,
154
+ secretAccessKey: credentials.secretAccessKey,
155
+ sessionToken: credentials.sessionToken,
156
+ expiry: credentials.expiration,
157
+ }));
158
+ return Credentials.of({
159
+ accessKeyId: Redacted.make(credentials.accessKeyId),
160
+ secretAccessKey: Redacted.make(credentials.secretAccessKey),
161
+ sessionToken: Redacted.make(credentials.sessionToken),
162
+ expiration: credentials.expiration,
163
+ });
164
+ }
165
+ return yield* Effect.fail(new ProfileNotFound({
166
+ message: `Profile ${profileName} not found`,
167
+ profile: profileName,
168
+ }));
169
+ }));
170
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/aws/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as S from "effect/Schema";
3
+ import type { AttributeValue, ScalarAttributeType } from "itty-aws/dynamodb";
4
+ declare const InvalidAttributeValue_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
5
+ readonly _tag: "InvalidAttributeValue";
6
+ } & Readonly<A>;
7
+ export declare class InvalidAttributeValue extends InvalidAttributeValue_base<{
8
+ message: string;
9
+ value: any;
10
+ }> {
11
+ }
12
+ export declare const toAttributeValue: (value: any) => Effect.Effect<AttributeValue, InvalidAttributeValue, never>;
13
+ export declare const fromAttributeValue: (value: AttributeValue) => any;
14
+ export declare const isScalarAttributeType: (type: string) => type is ScalarAttributeType;
15
+ export declare const toAttributeType: (schema: S.Schema<any>) => "L" | "M" | "N" | "S" | "SS" | "NS";
16
+ export declare const isMapSchemaType: (schema: S.Schema<any>) => boolean;
17
+ export declare const isStringSetSchema: (schema: S.Schema<any>) => boolean;
18
+ export declare const isNumberSetSchema: (schema: S.Schema<any>) => boolean;
19
+ export {};
20
+ //# sourceMappingURL=attribute-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-value.d.ts","sourceRoot":"","sources":["../../../src/aws/dynamodb/attribute-value.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;;;;AAiB7E,qBAAa,qBAAsB,SAAQ,2BAEzC;IACA,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;CACZ,CAAC;CAAG;AAEL,eAAO,MAAM,gBAAgB,EAAE,CAC7B,KAAK,EAAE,GAAG,KACP,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,qBAAqB,EAAE,KAAK,CA0F9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,cAAc,KAAG,GA4B1D,CAAC;AAwDF,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,KACX,IAAI,IAAI,mBAEV,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,wCAepD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAK9C,CAAC;AAER,eAAO,MAAM,iBAAiB,GAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YACQ,CAAC;AAEhE,eAAO,MAAM,iBAAiB,GAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YACQ,CAAC"}
@@ -0,0 +1,217 @@
1
+ import * as Data from "effect/Data";
2
+ import * as Effect from "effect/Effect";
3
+ import * as S from "effect/Schema";
4
+ import { getSetValueAST, isClassSchema, isListSchema, isMapSchema, isNumberSchema, isRecordLikeSchema, isRecordSchema, isSetSchema, isStringSchema, isStructSchema, } from "../../schema.js";
5
+ // this seems important for handling S.Struct.Fields https://effect.website/docs/schema/classes/#recursive-types-with-different-encoded-and-type
6
+ // interface CategoryEncoded extends Schema.Struct.Encoded<typeof fields> { .. }
7
+ export class InvalidAttributeValue extends Data.TaggedError("InvalidAttributeValue") {
8
+ }
9
+ export const toAttributeValue = Effect.fn(function* (value) {
10
+ if (value === undefined) {
11
+ return {
12
+ NULL: false,
13
+ };
14
+ }
15
+ else if (value === null) {
16
+ return {
17
+ NULL: true,
18
+ };
19
+ }
20
+ else if (typeof value === "boolean") {
21
+ return {
22
+ BOOL: value,
23
+ };
24
+ }
25
+ else if (typeof value === "string") {
26
+ return {
27
+ S: value,
28
+ };
29
+ }
30
+ else if (typeof value === "number") {
31
+ return {
32
+ N: value.toString(10),
33
+ };
34
+ }
35
+ else if (Array.isArray(value)) {
36
+ return {
37
+ L: yield* Effect.all(value.map(toAttributeValue)),
38
+ };
39
+ }
40
+ else if (value instanceof Set) {
41
+ const setType = getType(value);
42
+ if (setType === "EMPTY_SET") {
43
+ return {
44
+ SS: [],
45
+ };
46
+ }
47
+ else if (Array.isArray(setType)) {
48
+ return {
49
+ L: yield* Effect.all(setType.map(toAttributeValue)),
50
+ };
51
+ }
52
+ else if (setType === "SS") {
53
+ return {
54
+ SS: Array.from(value.values()),
55
+ };
56
+ }
57
+ else if (setType === "NS") {
58
+ return {
59
+ NS: Array.from(value.values()).map((value) => value.toString(10)),
60
+ };
61
+ }
62
+ else if (setType === "BS") {
63
+ return {
64
+ BS: Array.from(value.values()),
65
+ };
66
+ }
67
+ else {
68
+ return {
69
+ L: yield* Effect.all(Array.from(value.values()).map(toAttributeValue)),
70
+ };
71
+ }
72
+ }
73
+ else if (Buffer.isBuffer(value)) {
74
+ return {
75
+ B: new Uint8Array(value),
76
+ };
77
+ }
78
+ else if (value instanceof File) {
79
+ return {
80
+ B: new Uint8Array(yield* Effect.promise(() => value.arrayBuffer())),
81
+ };
82
+ }
83
+ else if (value instanceof Uint8Array) {
84
+ return {
85
+ B: value,
86
+ };
87
+ }
88
+ else if (value instanceof ArrayBuffer) {
89
+ return {
90
+ B: new Uint8Array(value),
91
+ };
92
+ }
93
+ else if (typeof value === "object") {
94
+ return {
95
+ M: Object.fromEntries(yield* Effect.all(Object.entries(value).map(([key, value]) => toAttributeValue(value).pipe(Effect.map((value) => [key, value]))))),
96
+ };
97
+ }
98
+ return yield* Effect.fail(new InvalidAttributeValue({
99
+ message: `Unknown value type: ${typeof value}`,
100
+ value,
101
+ }));
102
+ });
103
+ export const fromAttributeValue = (value) => {
104
+ if (value.NULL) {
105
+ return null;
106
+ }
107
+ else if (typeof value.BOOL === "boolean") {
108
+ return value.BOOL;
109
+ }
110
+ else if (value.L) {
111
+ return value.L.map(fromAttributeValue);
112
+ }
113
+ else if (value.M) {
114
+ return Object.fromEntries(Object.entries(value.M).map(([key, value]) => [
115
+ key,
116
+ fromAttributeValue(value),
117
+ ]));
118
+ }
119
+ else if (value.N) {
120
+ return parseFloat(value.N);
121
+ }
122
+ else if (value.S) {
123
+ // how do we know if this is a date?
124
+ return value.S;
125
+ }
126
+ else if (value.SS) {
127
+ return new Set(value.SS);
128
+ }
129
+ else if (value.NS) {
130
+ return new Set(value.NS);
131
+ }
132
+ else if (value.BS) {
133
+ return new Set(value.BS);
134
+ }
135
+ else {
136
+ throw new Error(`Unknown attribute value: ${JSON.stringify(value)}`);
137
+ }
138
+ };
139
+ const getType = (value) => {
140
+ if (value === undefined) {
141
+ return "undefined";
142
+ }
143
+ else if (value === null) {
144
+ return "NULL";
145
+ }
146
+ else if (typeof value === "boolean") {
147
+ return "BOOL";
148
+ }
149
+ else if (typeof value === "string") {
150
+ return "S";
151
+ }
152
+ else if (typeof value === "number") {
153
+ return "N";
154
+ }
155
+ else if (Array.isArray(value)) {
156
+ return "L";
157
+ }
158
+ else if (value instanceof Set) {
159
+ return value.size === 0
160
+ ? "EMPTY_SET"
161
+ : (() => {
162
+ const types = Array.from(value.values())
163
+ .flatMap(getType)
164
+ .filter((type, i, arr) => arr.indexOf(type) === i);
165
+ return types.length === 1
166
+ ? types[0] === "S"
167
+ ? "SS"
168
+ : types[0] === "N"
169
+ ? "NS"
170
+ : types[0] === "BOOL"
171
+ ? "BS"
172
+ : types[0]
173
+ : "L";
174
+ })();
175
+ }
176
+ else if (value instanceof Map) {
177
+ return "M";
178
+ }
179
+ else if (typeof value === "object") {
180
+ return "M";
181
+ }
182
+ else {
183
+ throw new Error(`Unknown value type: ${typeof value}`);
184
+ }
185
+ };
186
+ export const isScalarAttributeType = (type) => {
187
+ return type === "S" || type === "N" || type === "B";
188
+ };
189
+ export const toAttributeType = (schema) => {
190
+ if (isStringSchema(schema)) {
191
+ return "S";
192
+ }
193
+ else if (isNumberSchema(schema)) {
194
+ return "N";
195
+ }
196
+ else if (isRecordLikeSchema(schema)) {
197
+ return "M";
198
+ }
199
+ else if (isStringSetSchema(schema)) {
200
+ return "SS";
201
+ }
202
+ else if (isNumberSetSchema(schema)) {
203
+ return "NS";
204
+ }
205
+ else if (isListSchema(schema)) {
206
+ return "L";
207
+ }
208
+ return "S";
209
+ };
210
+ export const isMapSchemaType = (schema) => isMapSchema(schema) ||
211
+ isRecordSchema(schema) ||
212
+ isStructSchema(schema) ||
213
+ isClassSchema(schema) ||
214
+ false;
215
+ export const isStringSetSchema = (schema) => isSetSchema(schema) && isStringSchema(getSetValueAST(schema));
216
+ export const isNumberSetSchema = (schema) => isSetSchema(schema) && isNumberSchema(getSetValueAST(schema));
217
+ //# sourceMappingURL=attribute-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-value.js","sourceRoot":"","sources":["../../../src/aws/dynamodb/attribute-value.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AAEnC,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,gJAAgJ;AAChJ,gFAAgF;AAEhF,MAAM,OAAO,qBAAsB,SAAQ,IAAI,CAAC,WAAW,CACzD,uBAAuB,CAIvB;CAAG;AAEL,MAAM,CAAC,MAAM,gBAAgB,GAEsC,MAAM,CAAC,EAAE,CAC1E,QAAQ,CAAC,EAAE,KAAU;IACnB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO;YACL,CAAC,EAAE,KAAK;SACT,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;SACtB,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,OAAO;gBACL,EAAE,EAAE,EAAE;aACP,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO;gBACL,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;aACpD,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;gBACL,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC/B,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;gBACL,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAClE,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO;gBACL,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC/B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CACjD;aACF,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO;YACL,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC;SACzB,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QACjC,OAAO;YACL,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;SACpE,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QACvC,OAAO;YACL,CAAC,EAAE,KAAK;SACT,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACxC,OAAO;YACL,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC;SACzB,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO;YACL,CAAC,EAAE,MAAM,CAAC,WAAW,CACnB,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACzC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAClE,CACF,CACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,qBAAqB,CAAC;QACxB,OAAO,EAAE,uBAAuB,OAAO,KAAK,EAAE;QAC9C,KAAK;KACN,CAAC,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAqB,EAAO,EAAE;IAC/D,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC5C,GAAG;YACH,kBAAkB,CAAC,KAAK,CAAC;SAC1B,CAAC,CACH,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,oCAAoC;QACpC,OAAO,KAAK,CAAC,CAAC,CAAC;IACjB,CAAC;SAAM,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;SAAM,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;QACpB,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,CAAC;AAgBF,MAAM,OAAO,GAAG,CAAC,KAAU,EAA2B,EAAE;IACtD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC;IACrB,CAAC;SAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC;YACrB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,CAAC,GAAG,EAAE;gBACJ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;qBACrC,OAAO,CAAC,OAAO,CAAC;qBAChB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAErD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;oBACvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;wBAChB,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;4BAChB,CAAC,CAAC,IAAI;4BACN,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM;gCACnB,CAAC,CAAC,IAAI;gCACN,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,GAAG,CAAC;YACV,CAAC,CAAC,EAAE,CAAC;IACX,CAAC;SAAM,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,KAAK,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAY,EACiB,EAAE;IAC/B,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAE,EAAE;IACvD,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAqB,EAAE,EAAE,CACvD,WAAW,CAAC,MAAM,CAAC;IACnB,cAAc,CAAC,MAAM,CAAC;IACtB,cAAc,CAAC,MAAM,CAAC;IACtB,aAAa,CAAC,MAAM,CAAC;IACrB,KAAK,CAAC;AAER,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAAE,EAAE,CACzD,WAAW,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAAE,EAAE,CACzD,WAAW,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as Context from "effect/Context";
3
+ import { DynamoDB } from "itty-aws/dynamodb";
4
+ import * as Credentials from "../credentials.ts";
5
+ import * as Region from "../region.ts";
6
+ declare const DynamoDBClient_base: Context.TagClass<DynamoDBClient, "AWS::DynamoDB::Client", DynamoDB>;
7
+ export declare class DynamoDBClient extends DynamoDBClient_base {
8
+ }
9
+ export declare const client: () => Layer.Layer<DynamoDBClient, never, Credentials.Credentials | Region.Region>;
10
+ export declare const clientFromEnv: () => Layer.Layer<DynamoDBClient, Region.EnvironmentVariableNotSet, never>;
11
+ export {};
12
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/aws/dynamodb/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;;AAGvC,qBAAa,cAAe,SAAQ,mBAGjC;CAAG;AAEN,eAAO,MAAM,MAAM,mFAGQ,CAAC;AAE5B,eAAO,MAAM,aAAa,4EACqD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as Layer from "effect/Layer";
2
+ import * as Context from "effect/Context";
3
+ import { DynamoDB } from "itty-aws/dynamodb";
4
+ import * as Credentials from "../credentials.js";
5
+ import * as Region from "../region.js";
6
+ import { createAWSServiceClientLayer } from "../client.js";
7
+ export class DynamoDBClient extends Context.Tag("AWS::DynamoDB::Client")() {
8
+ }
9
+ export const client = createAWSServiceClientLayer(DynamoDBClient, DynamoDB);
10
+ export const clientFromEnv = () => Layer.provide(client(), Layer.merge(Credentials.fromEnv(), Region.fromEnv()));
11
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/aws/dynamodb/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,OAAO,cAAe,SAAQ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAGrE;CAAG;AAEN,MAAM,CAAC,MAAM,MAAM,GAAG,2BAA2B,CAG/C,cAAc,EAAE,QAAQ,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE,CAChC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ export type Expr = ArrayIndex | Identifier | NumberLiteral | OperatorExpr | NameRef | PropRef | ValueRef;
2
+ export interface NameRef<Name extends string = string> {
3
+ kind: "name-ref";
4
+ name: Name;
5
+ }
6
+ export interface ValueRef<Name extends string = string> {
7
+ kind: "value-ref";
8
+ name: Name;
9
+ }
10
+ export interface Identifier<I extends string = string> {
11
+ kind: "identifier";
12
+ name: I;
13
+ }
14
+ export interface NumberLiteral<N extends string = string> {
15
+ kind: "index";
16
+ number: N;
17
+ }
18
+ export interface PropRef<Ex extends Expr = any, Id extends Identifier = any> {
19
+ kind: "prop-ref";
20
+ expr: Ex;
21
+ name: Id;
22
+ }
23
+ export interface ArrayIndex<List extends Expr = any, Number extends NumberLiteral | ValueRef = NumberLiteral | ValueRef> {
24
+ kind: "array-index";
25
+ list: List;
26
+ number: Number;
27
+ }
28
+ export type Operator = "and" | "or" | "=" | "<" | "<=" | ">=" | ">";
29
+ export interface OperatorExpr<Left extends Expr = any, Op extends Operator = Operator, Right extends Expr = any> {
30
+ kind: "op";
31
+ left: Left;
32
+ op: Op;
33
+ right: Right;
34
+ }
35
+ export type LowercaseLetter = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z";
36
+ export type UppercaseLetter = Uppercase<LowercaseLetter>;
37
+ export type Letter = LowercaseLetter | UppercaseLetter;
38
+ export type Digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
39
+ export type SpecialCharacter = "_";
40
+ export type Word = Digit | Letter | SpecialCharacter;
41
+ //# sourceMappingURL=expr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expr.d.ts","sourceRoot":"","sources":["../../../src/aws/dynamodb/expr.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GACZ,UAAU,GACV,UAAU,GACV,aAAa,GACb,YAAY,GACZ,OAAO,GACP,OAAO,GACP,QAAQ,CAAC;AAGb,MAAM,WAAW,OAAO,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IACnD,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,MAAM,WAAW,QAAQ,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IACpD,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACnD,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACtD,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;CACX;AACD,MAAM,WAAW,OAAO,CAAC,EAAE,SAAS,IAAI,GAAG,GAAG,EAAE,EAAE,SAAS,UAAU,GAAG,GAAG;IACzE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,EAAE,CAAC;IACT,IAAI,EAAE,EAAE,CAAC;CACV;AACD,MAAM,WAAW,UAAU,CACzB,IAAI,SAAS,IAAI,GAAG,GAAG,EACvB,MAAM,SAAS,aAAa,GAAG,QAAQ,GAAG,aAAa,GAAG,QAAQ;IAElE,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;AACpE,MAAM,WAAW,YAAY,CAC3B,IAAI,SAAS,IAAI,GAAG,GAAG,EACvB,EAAE,SAAS,QAAQ,GAAG,QAAQ,EAC9B,KAAK,SAAS,IAAI,GAAG,GAAG;IAExB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,EAAE,CAAC;IACP,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,eAAe,GACvB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAC;AAER,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AAEzD,MAAM,MAAM,MAAM,GAAG,eAAe,GAAG,eAAe,CAAC;AAEvD,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAEnC,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=expr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expr.js","sourceRoot":"","sources":["../../../src/aws/dynamodb/expr.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export * from "./attribute-value.ts";
2
+ export * from "./client.ts";
3
+ export * from "./expr.ts";
4
+ export * from "./secondary-index.ts";
5
+ export * from "./table.get-item.ts";
6
+ export * from "./table.provider.ts";
7
+ export * from "./table.ts";
8
+ export type * as Alchemy from "../../index.ts";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/aws/dynamodb/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAE3B,YAAY,KAAK,OAAO,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export * from "./attribute-value.js";
2
+ export * from "./client.js";
3
+ export * from "./expr.js";
4
+ export * from "./secondary-index.js";
5
+ export * from "./table.get-item.js";
6
+ export * from "./table.provider.js";
7
+ export * from "./table.js";
8
+ // TODO(sam): figure out a better strategy to workaround non-portable types
9
+ // export type * as _ from "../../index.ts";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/aws/dynamodb/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAI3B,2EAA2E;AAC3E,4CAA4C"}
@@ -0,0 +1,25 @@
1
+ import type { ArrayIndex, Expr, Identifier, NameRef, NumberLiteral, PropRef, ValueRef, Word } from "./expr.ts";
2
+ export type ParseProjectionExpression<Text extends string> = Parse<Text, [
3
+ ], undefined>;
4
+ type AsExpr<T> = Extract<T, Expr>;
5
+ type Parse<Text extends string, Expressions extends Expr[], Exp extends Expr | undefined> = Text extends `.${infer Rest}` ? Exp extends Expr ? Parse<Rest, Expressions, PropRef<Exp, Identifier<"">>> : never : Text extends `[:${infer Rest}` ? Parse<Rest, Expressions, ArrayIndex<AsExpr<Exp>, ValueRef<"">>> : Text extends `[${infer Rest}` ? Parse<Rest, Expressions, ArrayIndex<AsExpr<Exp>, NumberLiteral<"">>> : Text extends `]${infer Rest}` ? Parse<Rest, Expressions, Exp> : Text extends `]` ? Concat<Expressions, Exp> : Text extends `${"," | " "}${infer Rest}` ? Parse<Rest, Concat<Expressions, Exp>, undefined> : Text extends `#${infer Rest}` ? Parse<Rest, Concat<Expressions, Exp>, NameRef<Rest>> : Text extends `:${infer Rest}` ? Parse<Rest, Concat<Expressions, Exp>, ValueRef<Rest>> : Text extends `${Word}${string}` ? Text extends `${infer char}${infer Rest}` ? Parse<Rest, Expressions, Append<Exp, char>> : never : Text extends `${Word}${string}` ? Text extends `${infer char}${infer Rest}` ? Parse<Rest, Expressions, Append<Exp, char>> : never : Concat<Expressions, Exp>;
6
+ type Concat<Expressions extends Expr[], CurrentExpr extends Expr | undefined> = undefined extends CurrentExpr ? Expressions : [...Expressions, Extract<CurrentExpr, Expr>];
7
+ type Append<Exp extends Expr | undefined, char extends string> = Exp extends undefined ? Identifier<char> : Exp extends Identifier<infer Name> ? Identifier<`${Name}${char}`> : Exp extends NumberLiteral<infer Name> ? NumberLiteral<`${Name}${char}`> : Exp extends NameRef<infer Name> ? NameRef<`${Name}${char}`> : Exp extends ValueRef<infer Name> ? ValueRef<`${Name}${char}`> : Exp extends PropRef<infer expr, infer name> ? PropRef<expr, Extract<Append<name, char>, Identifier>> : Exp extends ArrayIndex<infer expr, infer idx> ? ArrayIndex<expr, Extract<Append<idx, char>, NumberLiteral>> : never;
8
+ export type ApplyProjection<T, Expr extends string> = Flatten<UnionToIntersection<ApplyProjectionExpr<T, ParseProjectionExpression<Expr>[number]>>>;
9
+ type ApplyProjectionExpr<T, Exp extends Expr> = T extends undefined ? never : Exp extends PropRef<infer expr, infer i> ? {
10
+ [p in keyof ApplyProjectionExpr<T, expr>]: ApplyProjectionExpr<ApplyProjectionExpr<T, expr>[p], i>;
11
+ } : Exp extends ArrayIndex<infer expr, infer i> ? {
12
+ [p in keyof ApplyProjectionExpr<T, expr>]: ApplyProjectionExpr<ApplyProjectionExpr<T, expr>[keyof ApplyProjectionExpr<T, expr>], i>;
13
+ } : Exp extends Identifier<infer I> ? I extends keyof T ? Pick<T, I> : never : Exp extends NumberLiteral<infer I> ? ParseInt<I> extends keyof T ? Pick<T, ParseInt<I>> : never : never;
14
+ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
15
+ type Flatten<T> = T extends object ? keyof T extends number ? FlattenArray<Extract<T, Record<number, any>>> : {
16
+ [k in keyof T]: Flatten<T[k]>;
17
+ } : T;
18
+ type FlattenArray<T extends {
19
+ [i in number]: any;
20
+ }, i extends number = 0> = i extends keyof T ? [T[i], ...FlattenArray<T, Inc<i>>] : number extends i ? [] : FlattenArray<T, Inc<i>>;
21
+ type BuildTuple<N extends number, T extends any[] = []> = T["length"] extends N ? T : BuildTuple<N, [...T, any]>;
22
+ type Inc<N extends number> = Extract<[...BuildTuple<N>, any]["length"], number>;
23
+ type ParseInt<N extends string> = N extends "0" ? 0 : N extends "1" ? 1 : N extends "2" ? 2 : N extends "3" ? 3 : N extends "4" ? 4 : N extends "5" ? 5 : N extends "6" ? 6 : N extends "7" ? 7 : N extends "8" ? 8 : N extends "9" ? 9 : number;
24
+ export {};
25
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/aws/dynamodb/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/aws/dynamodb/projection.ts"],"names":[],"mappings":""}