alchemy 0.12.21 → 0.14.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.
- package/lib/ai/client.d.ts.map +1 -1
- package/lib/ai/client.js +3 -5
- package/lib/ai/client.js.map +1 -1
- package/lib/alchemy.d.ts +2 -1
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +87 -92
- package/lib/alchemy.js.map +1 -1
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +6 -1
- package/lib/apply.js.map +1 -1
- package/lib/aws/bucket.d.ts.map +1 -1
- package/lib/aws/bucket.js +55 -57
- package/lib/aws/bucket.js.map +1 -1
- package/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +250 -252
- package/lib/aws/function.js.map +1 -1
- package/lib/aws/policy-attachment.d.ts.map +1 -1
- package/lib/aws/policy-attachment.js +4 -6
- package/lib/aws/policy-attachment.js.map +1 -1
- package/lib/aws/policy.d.ts.map +1 -1
- package/lib/aws/policy.js +63 -65
- package/lib/aws/policy.js.map +1 -1
- package/lib/aws/queue.js +88 -90
- package/lib/aws/queue.js.map +1 -1
- package/lib/aws/table.d.ts.map +1 -1
- package/lib/aws/table.js +95 -99
- package/lib/aws/table.js.map +1 -1
- package/lib/cloudflare/account-api-token.d.ts +1 -1
- package/lib/cloudflare/account-api-token.d.ts.map +1 -1
- package/lib/cloudflare/account-api-token.js +0 -1
- package/lib/cloudflare/account-api-token.js.map +1 -1
- package/lib/cloudflare/ai-gateway.js.map +1 -1
- package/lib/cloudflare/ai.d.ts +1 -1
- package/lib/cloudflare/ai.d.ts.map +1 -1
- package/lib/cloudflare/ai.js.map +1 -1
- package/lib/cloudflare/api.d.ts +5 -5
- package/lib/cloudflare/api.d.ts.map +1 -1
- package/lib/cloudflare/api.js +52 -15
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/auth.d.ts +24 -55
- package/lib/cloudflare/auth.d.ts.map +1 -1
- package/lib/cloudflare/auth.js +15 -72
- package/lib/cloudflare/auth.js.map +1 -1
- package/lib/cloudflare/bucket.d.ts +2 -2
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +22 -24
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/bundle/alias-plugin.d.ts +6 -0
- package/lib/cloudflare/bundle/alias-plugin.d.ts.map +1 -0
- package/lib/cloudflare/bundle/alias-plugin.js +36 -0
- package/lib/cloudflare/bundle/alias-plugin.js.map +1 -0
- package/lib/cloudflare/bundle/build-failures.d.ts +12 -0
- package/lib/cloudflare/bundle/build-failures.d.ts.map +1 -0
- package/lib/cloudflare/bundle/build-failures.js +45 -0
- package/lib/cloudflare/bundle/build-failures.js.map +1 -0
- package/lib/cloudflare/bundle/bundle-worker.d.ts +7 -0
- package/lib/cloudflare/bundle/bundle-worker.d.ts.map +1 -0
- package/lib/cloudflare/bundle/bundle-worker.js +69 -0
- package/lib/cloudflare/bundle/bundle-worker.js.map +1 -0
- package/lib/cloudflare/bundle/external.d.ts +1 -0
- package/lib/cloudflare/bundle/external.d.ts.map +1 -1
- package/lib/cloudflare/bundle/external.js +8 -1
- package/lib/cloudflare/bundle/external.js.map +1 -1
- package/lib/cloudflare/bundle/local-dev-cloudflare-shim.d.ts +1 -1
- package/lib/cloudflare/bundle/local-dev-cloudflare-shim.d.ts.map +1 -1
- package/lib/cloudflare/bundle/local-dev-cloudflare-shim.js +6 -6
- package/lib/cloudflare/bundle/local-dev-cloudflare-shim.js.map +1 -1
- package/lib/cloudflare/bundle/nodejs-compat-mode.d.ts +17 -0
- package/lib/cloudflare/bundle/nodejs-compat-mode.d.ts.map +1 -0
- package/lib/cloudflare/bundle/nodejs-compat-mode.js +27 -0
- package/lib/cloudflare/bundle/nodejs-compat-mode.js.map +1 -0
- package/lib/cloudflare/bundle/{hybrid-nodejs-compat.d.ts → nodejs-compat.d.ts} +2 -2
- package/lib/cloudflare/bundle/nodejs-compat.d.ts.map +1 -0
- package/lib/cloudflare/bundle/{hybrid-nodejs-compat.js → nodejs-compat.js} +2 -2
- package/lib/cloudflare/bundle/nodejs-compat.js.map +1 -0
- package/lib/cloudflare/custom-domain.d.ts.map +1 -1
- package/lib/cloudflare/custom-domain.js +3 -5
- package/lib/cloudflare/custom-domain.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts +1 -1
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +70 -72
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/d1-migrations.d.ts +1 -1
- package/lib/cloudflare/d1-migrations.d.ts.map +1 -1
- package/lib/cloudflare/d1-migrations.js +2 -3
- package/lib/cloudflare/d1-migrations.js.map +1 -1
- package/lib/cloudflare/dns-records.d.ts.map +1 -1
- package/lib/cloudflare/dns-records.js +2 -4
- package/lib/cloudflare/dns-records.js.map +1 -1
- package/lib/cloudflare/kv-namespace.d.ts +1 -1
- package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv-namespace.js +24 -27
- package/lib/cloudflare/kv-namespace.js.map +1 -1
- package/lib/cloudflare/pipeline.d.ts +1 -1
- package/lib/cloudflare/pipeline.d.ts.map +1 -1
- package/lib/cloudflare/pipeline.js +32 -34
- package/lib/cloudflare/pipeline.js.map +1 -1
- package/lib/cloudflare/queue-consumer.d.ts +1 -1
- package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
- package/lib/cloudflare/queue-consumer.js +27 -33
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/queue.d.ts +1 -1
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +36 -38
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/r2-rest-state-store.js +4 -8
- package/lib/cloudflare/r2-rest-state-store.js.map +1 -1
- package/lib/cloudflare/types.d.ts.map +1 -1
- package/lib/cloudflare/types.js +1 -3
- package/lib/cloudflare/types.js.map +1 -1
- package/lib/cloudflare/user.d.ts +51 -0
- package/lib/cloudflare/user.d.ts.map +1 -0
- package/lib/cloudflare/user.js +62 -0
- package/lib/cloudflare/user.js.map +1 -0
- package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-index.js +37 -39
- package/lib/cloudflare/vectorize-index.js.map +1 -1
- package/lib/cloudflare/vectorize-metadata-index.d.ts +1 -1
- package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-metadata-index.js +10 -13
- package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +18 -3
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +11 -54
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/workflow.d.ts +1 -1
- package/lib/cloudflare/workflow.d.ts.map +1 -1
- package/lib/cloudflare/workflow.js.map +1 -1
- package/lib/cloudflare/zone.d.ts.map +1 -1
- package/lib/cloudflare/zone.js +48 -50
- package/lib/cloudflare/zone.js.map +1 -1
- package/lib/dns/godaddy.js +1 -1
- package/lib/dns/import-dns.js +1 -1
- package/lib/dns/import-dns.js.map +1 -1
- package/lib/env.js +7 -9
- package/lib/env.js.map +1 -1
- package/lib/esbuild/bundle.d.ts.map +1 -1
- package/lib/esbuild/bundle.js +8 -11
- package/lib/esbuild/bundle.js.map +1 -1
- package/lib/fs/copy-file.d.ts.map +1 -1
- package/lib/fs/copy-file.js +27 -29
- package/lib/fs/copy-file.js.map +1 -1
- package/lib/fs/file.d.ts +1 -1
- package/lib/fs/file.d.ts.map +1 -1
- package/lib/fs/file.js +1 -1
- package/lib/fs/file.js.map +1 -1
- package/lib/fs/folder.d.ts.map +1 -1
- package/lib/fs/folder.js +1 -3
- package/lib/fs/folder.js.map +1 -1
- package/lib/github/client.d.ts.map +1 -1
- package/lib/github/client.js +3 -5
- package/lib/github/client.js.map +1 -1
- package/lib/github/repository-environment.d.ts.map +1 -1
- package/lib/github/repository-environment.js +173 -176
- package/lib/github/repository-environment.js.map +1 -1
- package/lib/github/secret.d.ts.map +1 -1
- package/lib/github/secret.js +97 -99
- package/lib/github/secret.js.map +1 -1
- package/lib/internal/docs/providers.d.ts.map +1 -1
- package/lib/internal/docs/providers.js +5 -7
- package/lib/internal/docs/providers.js.map +1 -1
- package/lib/neon/api.js +1 -2
- package/lib/neon/api.js.map +1 -1
- package/lib/neon/project.js +2 -2
- package/lib/neon/project.js.map +1 -1
- package/lib/os/exec.d.ts +5 -0
- package/lib/os/exec.d.ts.map +1 -1
- package/lib/os/exec.js +88 -56
- package/lib/os/exec.js.map +1 -1
- package/lib/scope.d.ts +3 -0
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +10 -3
- package/lib/scope.js.map +1 -1
- package/lib/secret.d.ts.map +1 -1
- package/lib/secret.js +1 -3
- package/lib/secret.js.map +1 -1
- package/lib/serde.d.ts.map +1 -1
- package/lib/serde.js +13 -15
- package/lib/serde.js.map +1 -1
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +69 -73
- package/lib/stripe/price.js.map +1 -1
- package/lib/stripe/product.d.ts.map +1 -1
- package/lib/stripe/product.js +50 -52
- package/lib/stripe/product.js.map +1 -1
- package/lib/stripe/webhook.d.ts.map +1 -1
- package/lib/stripe/webhook.js +51 -53
- package/lib/stripe/webhook.js.map +1 -1
- package/lib/test/bun.d.ts +1 -1
- package/lib/test/bun.d.ts.map +1 -1
- package/lib/test/bun.js +3 -8
- package/lib/test/bun.js.map +1 -1
- package/lib/test/prune.d.ts.map +1 -1
- package/lib/test/prune.js.map +1 -1
- package/lib/util/dedent.js +4 -4
- package/lib/util/dedent.js.map +1 -1
- package/lib/web/astro.js +1 -1
- package/lib/web/shadcn.js +4 -4
- package/lib/web/shadcn.js.map +1 -1
- package/lib/web/tailwind.d.ts.map +1 -1
- package/lib/web/tailwind.js +0 -1
- package/lib/web/tailwind.js.map +1 -1
- package/lib/web/vite.js +3 -3
- package/lib/web/vitepress/home-page.d.ts.map +1 -1
- package/lib/web/vitepress/home-page.js +6 -8
- package/lib/web/vitepress/home-page.js.map +1 -1
- package/lib/web/vitepress/process-front-matter-files.js +1 -1
- package/lib/web/vitepress/process-front-matter-files.js.map +1 -1
- package/lib/web/vitepress/vitepress.js +2 -2
- package/lib/web/vitepress/vitepress.js.map +1 -1
- package/package.json +4 -1
- package/src/ai/astro-file.ts +4 -4
- package/src/ai/client.ts +4 -5
- package/src/ai/css-file.ts +4 -4
- package/src/ai/document.ts +3 -3
- package/src/ai/html-file.ts +4 -4
- package/src/ai/json-file.ts +1 -1
- package/src/ai/typescript-file.ts +4 -4
- package/src/ai/vue-file.ts +4 -4
- package/src/ai/yaml-file.ts +1 -1
- package/src/alchemy.ts +111 -104
- package/src/apply.ts +13 -6
- package/src/aws/bucket.ts +72 -75
- package/src/aws/function.ts +296 -297
- package/src/aws/oidc/github-oidc-provider.ts +1 -1
- package/src/aws/oidc/oidc-provider.ts +15 -15
- package/src/aws/policy-attachment.ts +10 -11
- package/src/aws/policy.ts +91 -94
- package/src/aws/queue.ts +111 -111
- package/src/aws/role.ts +24 -24
- package/src/aws/ses.ts +17 -17
- package/src/aws/table.ts +114 -115
- package/src/cloudflare/account-api-token.ts +11 -11
- package/src/cloudflare/ai-gateway.ts +4 -4
- package/src/cloudflare/ai.ts +1 -1
- package/src/cloudflare/api-error.ts +1 -1
- package/src/cloudflare/api.ts +70 -25
- package/src/cloudflare/assets.ts +4 -4
- package/src/cloudflare/auth.ts +49 -164
- package/src/cloudflare/bucket.ts +62 -63
- package/src/cloudflare/bundle/alias-plugin.ts +48 -0
- package/src/cloudflare/bundle/build-failures.ts +55 -0
- package/src/cloudflare/bundle/bundle-worker.ts +89 -0
- package/src/cloudflare/bundle/external.ts +9 -1
- package/src/cloudflare/bundle/local-dev-cloudflare-shim.ts +7 -6
- package/src/cloudflare/bundle/nodejs-compat-mode.ts +49 -0
- package/src/cloudflare/bundle/{hybrid-nodejs-compat.ts → nodejs-compat.ts} +10 -10
- package/src/cloudflare/custom-domain.ts +27 -28
- package/src/cloudflare/d1-database.ts +101 -102
- package/src/cloudflare/d1-migrations.ts +10 -10
- package/src/cloudflare/dns-records.ts +23 -24
- package/src/cloudflare/durable-object-namespace.ts +1 -1
- package/src/cloudflare/event-source.ts +1 -1
- package/src/cloudflare/hyperdrive.ts +3 -3
- package/src/cloudflare/kv-namespace.ts +36 -37
- package/src/cloudflare/nuxt.ts +1 -1
- package/src/cloudflare/permission-groups.ts +7 -7
- package/src/cloudflare/pipeline.ts +55 -56
- package/src/cloudflare/queue-consumer.ts +46 -53
- package/src/cloudflare/queue.ts +56 -57
- package/src/cloudflare/r2-rest-state-store.ts +11 -11
- package/src/cloudflare/redwood.ts +1 -1
- package/src/cloudflare/tanstack-start.ts +1 -1
- package/src/cloudflare/types.ts +1 -2
- package/src/cloudflare/user.ts +142 -0
- package/src/cloudflare/vectorize-index.ts +60 -61
- package/src/cloudflare/vectorize-metadata-index.ts +25 -25
- package/src/cloudflare/vite.ts +1 -1
- package/src/cloudflare/website.ts +3 -3
- package/src/cloudflare/worker.ts +83 -108
- package/src/cloudflare/workflow.ts +4 -4
- package/src/cloudflare/wrangler.json.ts +4 -4
- package/src/cloudflare/zone.ts +69 -70
- package/src/destroy.ts +4 -4
- package/src/dns/godaddy.ts +1 -1
- package/src/dns/import-dns.ts +5 -5
- package/src/encrypt.ts +6 -6
- package/src/env.ts +10 -10
- package/src/esbuild/bundle.ts +14 -15
- package/src/fs/copy-file.ts +35 -36
- package/src/fs/file-system-state-store.ts +4 -4
- package/src/fs/file.ts +9 -8
- package/src/fs/folder.ts +6 -7
- package/src/github/client.ts +15 -14
- package/src/github/repository-environment.ts +206 -210
- package/src/github/secret.ts +111 -116
- package/src/internal/docs/providers.ts +16 -17
- package/src/neon/api-error.ts +1 -1
- package/src/neon/api.ts +6 -6
- package/src/neon/project.ts +18 -17
- package/src/os/exec.ts +107 -66
- package/src/resource.ts +3 -3
- package/src/scope.ts +14 -4
- package/src/secret.ts +2 -3
- package/src/serde.ts +30 -22
- package/src/stripe/price.ts +74 -77
- package/src/stripe/product.ts +55 -56
- package/src/stripe/webhook.ts +56 -57
- package/src/test/bun.ts +9 -13
- package/src/test/prune.ts +4 -4
- package/src/util/dedent.ts +4 -4
- package/src/web/astro.ts +10 -10
- package/src/web/shadcn-component.ts +4 -4
- package/src/web/shadcn.ts +10 -10
- package/src/web/tailwind.ts +2 -3
- package/src/web/vite.ts +11 -11
- package/src/web/vitepress/config.ts +2 -2
- package/src/web/vitepress/custom-theme.ts +7 -7
- package/src/web/vitepress/dependencies.ts +4 -4
- package/src/web/vitepress/home-page.ts +8 -9
- package/src/web/vitepress/process-front-matter-files.ts +5 -5
- package/src/web/vitepress/vitepress.ts +7 -7
- package/lib/cloudflare/account-id.d.ts +0 -6
- package/lib/cloudflare/account-id.d.ts.map +0 -1
- package/lib/cloudflare/account-id.js +0 -6
- package/lib/cloudflare/account-id.js.map +0 -1
- package/lib/cloudflare/bundle/hybrid-nodejs-compat.d.ts.map +0 -1
- package/lib/cloudflare/bundle/hybrid-nodejs-compat.js.map +0 -1
- package/src/cloudflare/account-id.ts +0 -12
package/lib/aws/policy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/aws/policy.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE9C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAEjD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW;IAClE;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,MAAM,yFAGT,OAAO,CAAC,MAAM,CAAC,MACjB,MAAM,SACH,WAAW,KACjB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/aws/policy.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAE9D;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE9C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAEjD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,eAAe,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,MAAO,SAAQ,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW;IAClE;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,UAAU,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,IAAI,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,eAAO,MAAM,MAAM,yFAGT,OAAO,CAAC,MAAM,CAAC,MACjB,MAAM,SACH,WAAW,KACjB,OAAO,CAAC,MAAM,CAAC,CA0InB,CAAC"}
|
package/lib/aws/policy.js
CHANGED
|
@@ -107,81 +107,79 @@ export const Policy = Resource("iam::Policy", async function (id, props) {
|
|
|
107
107
|
}
|
|
108
108
|
return this.destroy();
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
110
|
+
try {
|
|
111
|
+
// Check if policy exists
|
|
112
|
+
const existingPolicy = await client.send(new GetPolicyCommand({
|
|
113
|
+
PolicyArn: policyArn,
|
|
114
|
+
}));
|
|
115
|
+
// Get current policy version
|
|
116
|
+
const currentVersion = await client.send(new GetPolicyVersionCommand({
|
|
117
|
+
PolicyArn: policyArn,
|
|
118
|
+
VersionId: existingPolicy.Policy.DefaultVersionId,
|
|
119
|
+
}));
|
|
120
|
+
const currentDocument = JSON.parse(decodeURIComponent(currentVersion.PolicyVersion.Document));
|
|
121
|
+
// If policy document changed, create new version
|
|
122
|
+
if (JSON.stringify(currentDocument) !== JSON.stringify(props.document)) {
|
|
123
|
+
// List versions to check if we need to delete old ones
|
|
124
|
+
const versions = await client.send(new ListPolicyVersionsCommand({
|
|
118
125
|
PolicyArn: policyArn,
|
|
119
|
-
VersionId: existingPolicy.Policy.DefaultVersionId,
|
|
120
126
|
}));
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (versions.Versions?.length === 5) {
|
|
130
|
-
const oldestVersion = versions.Versions.sort((a, b) => a.CreateDate.getTime() - b.CreateDate.getTime())[0];
|
|
131
|
-
if (!oldestVersion.IsDefaultVersion) {
|
|
132
|
-
await client.send(new DeletePolicyVersionCommand({
|
|
133
|
-
PolicyArn: policyArn,
|
|
134
|
-
VersionId: oldestVersion.VersionId,
|
|
135
|
-
}));
|
|
136
|
-
}
|
|
127
|
+
// Delete oldest version if we have 5 versions (maximum allowed)
|
|
128
|
+
if (versions.Versions?.length === 5) {
|
|
129
|
+
const oldestVersion = versions.Versions.sort((a, b) => a.CreateDate.getTime() - b.CreateDate.getTime())[0];
|
|
130
|
+
if (!oldestVersion.IsDefaultVersion) {
|
|
131
|
+
await client.send(new DeletePolicyVersionCommand({
|
|
132
|
+
PolicyArn: policyArn,
|
|
133
|
+
VersionId: oldestVersion.VersionId,
|
|
134
|
+
}));
|
|
137
135
|
}
|
|
138
|
-
// Create new version
|
|
139
|
-
await client.send(new CreatePolicyVersionCommand({
|
|
140
|
-
PolicyArn: policyArn,
|
|
141
|
-
PolicyDocument: JSON.stringify(props.document),
|
|
142
|
-
SetAsDefault: true,
|
|
143
|
-
}));
|
|
144
136
|
}
|
|
145
|
-
|
|
137
|
+
// Create new version
|
|
138
|
+
await client.send(new CreatePolicyVersionCommand({
|
|
146
139
|
PolicyArn: policyArn,
|
|
140
|
+
PolicyDocument: JSON.stringify(props.document),
|
|
141
|
+
SetAsDefault: true,
|
|
142
|
+
}));
|
|
143
|
+
}
|
|
144
|
+
const policy = await client.send(new GetPolicyCommand({
|
|
145
|
+
PolicyArn: policyArn,
|
|
146
|
+
}));
|
|
147
|
+
return this({
|
|
148
|
+
...props,
|
|
149
|
+
arn: policy.Policy.Arn,
|
|
150
|
+
defaultVersionId: policy.Policy.DefaultVersionId,
|
|
151
|
+
attachmentCount: policy.Policy.AttachmentCount,
|
|
152
|
+
createDate: policy.Policy.CreateDate,
|
|
153
|
+
updateDate: policy.Policy.UpdateDate,
|
|
154
|
+
isAttachable: policy.Policy.IsAttachable,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (error.name === "NoSuchEntity") {
|
|
159
|
+
// Create new policy
|
|
160
|
+
const newPolicy = await client.send(new CreatePolicyCommand({
|
|
161
|
+
PolicyName: props.policyName,
|
|
162
|
+
PolicyDocument: JSON.stringify(props.document),
|
|
163
|
+
Description: props.description,
|
|
164
|
+
Path: props.path,
|
|
165
|
+
Tags: props.tags
|
|
166
|
+
? Object.entries(props.tags).map(([Key, Value]) => ({
|
|
167
|
+
Key,
|
|
168
|
+
Value,
|
|
169
|
+
}))
|
|
170
|
+
: undefined,
|
|
147
171
|
}));
|
|
148
172
|
return this({
|
|
149
173
|
...props,
|
|
150
|
-
arn:
|
|
151
|
-
defaultVersionId:
|
|
152
|
-
attachmentCount:
|
|
153
|
-
createDate:
|
|
154
|
-
updateDate:
|
|
155
|
-
isAttachable:
|
|
174
|
+
arn: newPolicy.Policy.Arn,
|
|
175
|
+
defaultVersionId: newPolicy.Policy.DefaultVersionId,
|
|
176
|
+
attachmentCount: newPolicy.Policy.AttachmentCount,
|
|
177
|
+
createDate: newPolicy.Policy.CreateDate,
|
|
178
|
+
updateDate: newPolicy.Policy.UpdateDate,
|
|
179
|
+
isAttachable: newPolicy.Policy.IsAttachable,
|
|
156
180
|
});
|
|
157
181
|
}
|
|
158
|
-
|
|
159
|
-
if (error.name === "NoSuchEntity") {
|
|
160
|
-
// Create new policy
|
|
161
|
-
const newPolicy = await client.send(new CreatePolicyCommand({
|
|
162
|
-
PolicyName: props.policyName,
|
|
163
|
-
PolicyDocument: JSON.stringify(props.document),
|
|
164
|
-
Description: props.description,
|
|
165
|
-
Path: props.path,
|
|
166
|
-
Tags: props.tags
|
|
167
|
-
? Object.entries(props.tags).map(([Key, Value]) => ({
|
|
168
|
-
Key,
|
|
169
|
-
Value,
|
|
170
|
-
}))
|
|
171
|
-
: undefined,
|
|
172
|
-
}));
|
|
173
|
-
return this({
|
|
174
|
-
...props,
|
|
175
|
-
arn: newPolicy.Policy.Arn,
|
|
176
|
-
defaultVersionId: newPolicy.Policy.DefaultVersionId,
|
|
177
|
-
attachmentCount: newPolicy.Policy.AttachmentCount,
|
|
178
|
-
createDate: newPolicy.Policy.CreateDate,
|
|
179
|
-
updateDate: newPolicy.Policy.UpdateDate,
|
|
180
|
-
isAttachable: newPolicy.Policy.IsAttachable,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
throw error;
|
|
184
|
-
}
|
|
182
|
+
throw error;
|
|
185
183
|
}
|
|
186
184
|
});
|
|
187
185
|
//# sourceMappingURL=policy.js.map
|
package/lib/aws/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/aws/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,uBAAuB,EACvB,SAAS,EACT,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAyI1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAC5B,aAAa,EACb,KAAK,WAEH,EAAU,EACV,KAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,SAAS,GAAG,gBAAgB,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,KAAK,CAAC,IAAI,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IAE7G,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,iDAAiD;YACjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAChC,IAAI,yBAAyB,CAAC;gBAC5B,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CAAC;YAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBAC9B,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,0BAA0B,CAAC;wBAC7B,SAAS,EAAE,SAAS;wBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;qBAC7B,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,oBAAoB;YACpB,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,mBAAmB,CAAC;gBACtB,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,EAAE,CAAC;gBAC9C,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/aws/policy.ts"],"names":[],"mappings":"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"}
|
package/lib/aws/queue.js
CHANGED
|
@@ -84,114 +84,112 @@ export const Queue = Resource("sqs::Queue", async function (id, props) {
|
|
|
84
84
|
}
|
|
85
85
|
return this.destroy();
|
|
86
86
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
87
|
+
// Create queue with attributes
|
|
88
|
+
const attributes = {};
|
|
89
|
+
if (props.visibilityTimeout !== undefined) {
|
|
90
|
+
attributes.VisibilityTimeout = props.visibilityTimeout.toString();
|
|
91
|
+
}
|
|
92
|
+
if (props.messageRetentionPeriod !== undefined) {
|
|
93
|
+
attributes.MessageRetentionPeriod =
|
|
94
|
+
props.messageRetentionPeriod.toString();
|
|
95
|
+
}
|
|
96
|
+
if (props.maximumMessageSize !== undefined) {
|
|
97
|
+
attributes.MaximumMessageSize = props.maximumMessageSize.toString();
|
|
98
|
+
}
|
|
99
|
+
if (props.delaySeconds !== undefined) {
|
|
100
|
+
attributes.DelaySeconds = props.delaySeconds.toString();
|
|
101
|
+
}
|
|
102
|
+
if (props.receiveMessageWaitTimeSeconds !== undefined) {
|
|
103
|
+
attributes.ReceiveMessageWaitTimeSeconds =
|
|
104
|
+
props.receiveMessageWaitTimeSeconds.toString();
|
|
105
|
+
}
|
|
106
|
+
// FIFO specific attributes
|
|
107
|
+
if (props.fifo) {
|
|
108
|
+
attributes.FifoQueue = "true";
|
|
109
|
+
if (props.contentBasedDeduplication) {
|
|
110
|
+
attributes.ContentBasedDeduplication = "true";
|
|
102
111
|
}
|
|
103
|
-
if (props.
|
|
104
|
-
attributes
|
|
105
|
-
props.receiveMessageWaitTimeSeconds.toString();
|
|
112
|
+
if (props.deduplicationScope) {
|
|
113
|
+
attributes.DeduplicationScope = props.deduplicationScope;
|
|
106
114
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
attributes["FifoQueue"] = "true";
|
|
110
|
-
if (props.contentBasedDeduplication) {
|
|
111
|
-
attributes["ContentBasedDeduplication"] = "true";
|
|
112
|
-
}
|
|
113
|
-
if (props.deduplicationScope) {
|
|
114
|
-
attributes["DeduplicationScope"] = props.deduplicationScope;
|
|
115
|
-
}
|
|
116
|
-
if (props.fifoThroughputLimit) {
|
|
117
|
-
attributes["FifoThroughputLimit"] = props.fifoThroughputLimit;
|
|
118
|
-
}
|
|
115
|
+
if (props.fifoThroughputLimit) {
|
|
116
|
+
attributes.FifoThroughputLimit = props.fifoThroughputLimit;
|
|
119
117
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
118
|
+
}
|
|
119
|
+
// Convert tags to AWS format
|
|
120
|
+
const tags = props.tags
|
|
121
|
+
? Object.entries(props.tags).reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})
|
|
122
|
+
: undefined;
|
|
123
|
+
try {
|
|
124
|
+
// Create the queue
|
|
125
|
+
const createResponse = await client.send(new CreateQueueCommand({
|
|
126
|
+
QueueName: queueName,
|
|
127
|
+
Attributes: attributes,
|
|
128
|
+
tags,
|
|
129
|
+
}));
|
|
130
|
+
// Get queue attributes
|
|
131
|
+
const attributesResponse = await client.send(new GetQueueAttributesCommand({
|
|
132
|
+
QueueUrl: createResponse.QueueUrl,
|
|
133
|
+
AttributeNames: ["QueueArn"],
|
|
134
|
+
}));
|
|
135
|
+
return this({
|
|
136
|
+
...props,
|
|
137
|
+
arn: attributesResponse.Attributes.QueueArn,
|
|
138
|
+
url: createResponse.QueueUrl,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error.name === "QueueAlreadyExists") {
|
|
143
|
+
// Get existing queue URL
|
|
144
|
+
const urlResponse = await client.send(new GetQueueUrlCommand({
|
|
127
145
|
QueueName: queueName,
|
|
128
|
-
Attributes: attributes,
|
|
129
|
-
tags,
|
|
130
146
|
}));
|
|
131
147
|
// Get queue attributes
|
|
132
148
|
const attributesResponse = await client.send(new GetQueueAttributesCommand({
|
|
133
|
-
QueueUrl:
|
|
149
|
+
QueueUrl: urlResponse.QueueUrl,
|
|
134
150
|
AttributeNames: ["QueueArn"],
|
|
135
151
|
}));
|
|
136
152
|
return this({
|
|
137
153
|
...props,
|
|
138
154
|
arn: attributesResponse.Attributes.QueueArn,
|
|
139
|
-
url:
|
|
155
|
+
url: urlResponse.QueueUrl,
|
|
140
156
|
});
|
|
141
157
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
tags,
|
|
172
|
-
}));
|
|
173
|
-
// Get queue attributes
|
|
174
|
-
const attributesResponse = await client.send(new GetQueueAttributesCommand({
|
|
175
|
-
QueueUrl: createResponse.QueueUrl,
|
|
176
|
-
AttributeNames: ["QueueArn"],
|
|
177
|
-
}));
|
|
178
|
-
return this({
|
|
179
|
-
...props,
|
|
180
|
-
arn: attributesResponse.Attributes.QueueArn,
|
|
181
|
-
url: createResponse.QueueUrl,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
catch (retryError) {
|
|
185
|
-
if (retryError.name !== "QueueDeletedRecently" ||
|
|
186
|
-
retryCount === maxRetries - 1) {
|
|
187
|
-
throw retryError;
|
|
188
|
-
}
|
|
189
|
-
retryCount++;
|
|
158
|
+
if (error.name === "QueueDeletedRecently") {
|
|
159
|
+
// Queue was recently deleted, wait and retry
|
|
160
|
+
const maxRetries = 3;
|
|
161
|
+
let retryCount = 0;
|
|
162
|
+
while (retryCount < maxRetries) {
|
|
163
|
+
try {
|
|
164
|
+
// Wait for 60 seconds before retrying
|
|
165
|
+
await new Promise((resolve) => setTimeout(resolve, 61000));
|
|
166
|
+
// Retry creating the queue
|
|
167
|
+
const createResponse = await client.send(new CreateQueueCommand({
|
|
168
|
+
QueueName: queueName,
|
|
169
|
+
Attributes: attributes,
|
|
170
|
+
tags,
|
|
171
|
+
}));
|
|
172
|
+
// Get queue attributes
|
|
173
|
+
const attributesResponse = await client.send(new GetQueueAttributesCommand({
|
|
174
|
+
QueueUrl: createResponse.QueueUrl,
|
|
175
|
+
AttributeNames: ["QueueArn"],
|
|
176
|
+
}));
|
|
177
|
+
return this({
|
|
178
|
+
...props,
|
|
179
|
+
arn: attributesResponse.Attributes.QueueArn,
|
|
180
|
+
url: createResponse.QueueUrl,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
catch (retryError) {
|
|
184
|
+
if (retryError.name !== "QueueDeletedRecently" ||
|
|
185
|
+
retryCount === maxRetries - 1) {
|
|
186
|
+
throw retryError;
|
|
190
187
|
}
|
|
188
|
+
retryCount++;
|
|
191
189
|
}
|
|
192
190
|
}
|
|
193
|
-
throw error;
|
|
194
191
|
}
|
|
192
|
+
throw error;
|
|
195
193
|
}
|
|
196
194
|
});
|
|
197
195
|
//# sourceMappingURL=queue.js.map
|
package/lib/aws/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/aws/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAuF1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAC3B,YAAY,EACZ,KAAK,WAEH,EAAU,EACV,KAAiB;IAEjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,8CAA8C;IAC9C,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,IAAI,CACnC,IAAI,kBAAkB,CAAC;gBACrB,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CAAC;YAEF,mBAAmB;YACnB,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,kBAAkB,CAAC;gBACrB,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B,CAAC,CACH,CAAC;YAEF,+BAA+B;YAC/B,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,OAAO,CAAC,YAAY,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,kBAAkB,CAAC;wBACrB,SAAS,EAAE,SAAS;qBACrB,CAAC,CACH,CAAC;oBACF,qCAAqC;oBACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBACvC,YAAY,GAAG,IAAI,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACvC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/aws/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAuF1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,QAAQ,CAC3B,YAAY,EACZ,KAAK,WAEH,EAAU,EACV,KAAiB;IAEjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;IACjC,2EAA2E;IAC3E,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAElC,8CAA8C;IAC9C,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,IAAI,CACnC,IAAI,kBAAkB,CAAC;gBACrB,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CAAC;YAEF,mBAAmB;YACnB,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,kBAAkB,CAAC;gBACrB,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B,CAAC,CACH,CAAC;YAEF,+BAA+B;YAC/B,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,OAAO,CAAC,YAAY,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,kBAAkB,CAAC;wBACrB,SAAS,EAAE,SAAS;qBACrB,CAAC,CACH,CAAC;oBACF,qCAAqC;oBACrC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;wBACvC,YAAY,GAAG,IAAI,CAAC;oBACtB,CAAC;yBAAM,CAAC;wBACN,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACvC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IACD,+BAA+B;IAC/B,MAAM,UAAU,GAA2B,EAAE,CAAC;IAE9C,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC1C,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QAC/C,UAAU,CAAC,sBAAsB;YAC/B,KAAK,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC3C,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,KAAK,CAAC,6BAA6B,KAAK,SAAS,EAAE,CAAC;QACtD,UAAU,CAAC,6BAA6B;YACtC,KAAK,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC;QAC9B,IAAI,KAAK,CAAC,yBAAyB,EAAE,CAAC;YACpC,UAAU,CAAC,yBAAyB,GAAG,MAAM,CAAC;QAChD,CAAC;QACD,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC7B,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAC9B,UAAU,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;QACrB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EACjD,EAAE,CACH;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CACtC,IAAI,kBAAkB,CAAC;YACrB,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,UAAU;YACtB,IAAI;SACL,CAAC,CACH,CAAC;QAEF,uBAAuB;QACvB,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1C,IAAI,yBAAyB,CAAC;YAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,cAAc,EAAE,CAAC,UAAU,CAAC;SAC7B,CAAC,CACH,CAAC;QAEF,OAAO,IAAI,CAAC;YACV,GAAG,KAAK;YACR,GAAG,EAAE,kBAAkB,CAAC,UAAW,CAAC,QAAS;YAC7C,GAAG,EAAE,cAAc,CAAC,QAAS;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACxC,yBAAyB;YACzB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,IAAI,CACnC,IAAI,kBAAkB,CAAC;gBACrB,SAAS,EAAE,SAAS;aACrB,CAAC,CACH,CAAC;YAEF,uBAAuB;YACvB,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1C,IAAI,yBAAyB,CAAC;gBAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,cAAc,EAAE,CAAC,UAAU,CAAC;aAC7B,CAAC,CACH,CAAC;YAEF,OAAO,IAAI,CAAC;gBACV,GAAG,KAAK;gBACR,GAAG,EAAE,kBAAkB,CAAC,UAAW,CAAC,QAAS;gBAC7C,GAAG,EAAE,WAAW,CAAC,QAAS;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC1C,6CAA6C;YAC7C,MAAM,UAAU,GAAG,CAAC,CAAC;YACrB,IAAI,UAAU,GAAG,CAAC,CAAC;YAEnB,OAAO,UAAU,GAAG,UAAU,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,sCAAsC;oBACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;oBAE3D,2BAA2B;oBAC3B,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CACtC,IAAI,kBAAkB,CAAC;wBACrB,SAAS,EAAE,SAAS;wBACpB,UAAU,EAAE,UAAU;wBACtB,IAAI;qBACL,CAAC,CACH,CAAC;oBAEF,uBAAuB;oBACvB,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,IAAI,CAC1C,IAAI,yBAAyB,CAAC;wBAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,cAAc,EAAE,CAAC,UAAU,CAAC;qBAC7B,CAAC,CACH,CAAC;oBAEF,OAAO,IAAI,CAAC;wBACV,GAAG,KAAK;wBACR,GAAG,EAAE,kBAAkB,CAAC,UAAW,CAAC,QAAS;wBAC7C,GAAG,EAAE,cAAc,CAAC,QAAS;qBAC9B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACzB,IACE,UAAU,CAAC,IAAI,KAAK,sBAAsB;wBAC1C,UAAU,KAAK,UAAU,GAAG,CAAC,EAC7B,CAAC;wBACD,MAAM,UAAU,CAAC;oBACnB,CAAC;oBACD,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CACF,CAAC"}
|
package/lib/aws/table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/aws/table.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE;QACZ;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;WAGG;QACH,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KACvB,CAAC;IAEF;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;WAGG;QACH,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KACvB,CAAC;IAEF;;;;OAIG;IACH,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;IAEhD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU;IAClE;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,KAAK,yFAGR,OAAO,CAAC,KAAK,CAAC,MAChB,MAAM,SACH,UAAU,KAChB,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/aws/table.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,YAAY,EAAE;QACZ;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;WAGG;QACH,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KACvB,CAAC;IAEF;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QACb;;;WAGG;QACH,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;KACvB,CAAC;IAEF;;;;OAIG;IACH,WAAW,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC;IAEhD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,KAAM,SAAQ,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU;IAClE;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,KAAK,yFAGR,OAAO,CAAC,KAAK,CAAC,MAChB,MAAM,SACH,UAAU,KAChB,OAAO,CAAC,KAAK,CAAC,CAkLlB,CAAC"}
|
package/lib/aws/table.js
CHANGED
|
@@ -46,8 +46,7 @@ export const Table = Resource("dynamo::Table", async function (id, props) {
|
|
|
46
46
|
TableName: props.tableName,
|
|
47
47
|
})));
|
|
48
48
|
}, isRetryableError, 10, // Max attempts
|
|
49
|
-
200
|
|
50
|
-
);
|
|
49
|
+
200);
|
|
51
50
|
// Wait for table to be deleted
|
|
52
51
|
let tableDeleted = false;
|
|
53
52
|
let retryCount = 0;
|
|
@@ -77,114 +76,111 @@ export const Table = Resource("dynamo::Table", async function (id, props) {
|
|
|
77
76
|
}
|
|
78
77
|
return this.destroy();
|
|
79
78
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
79
|
+
// Setup for table creation
|
|
80
|
+
const attributeDefinitions = [
|
|
81
|
+
{
|
|
82
|
+
AttributeName: props.partitionKey.name,
|
|
83
|
+
AttributeType: props.partitionKey.type,
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
const keySchema = [
|
|
87
|
+
{
|
|
88
|
+
AttributeName: props.partitionKey.name,
|
|
89
|
+
KeyType: "HASH",
|
|
90
|
+
},
|
|
91
|
+
];
|
|
92
|
+
if (props.sortKey) {
|
|
93
|
+
attributeDefinitions.push({
|
|
94
|
+
AttributeName: props.sortKey.name,
|
|
95
|
+
AttributeType: props.sortKey.type,
|
|
96
|
+
});
|
|
97
|
+
keySchema.push({
|
|
98
|
+
AttributeName: props.sortKey.name,
|
|
99
|
+
KeyType: "RANGE",
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// Attempt to create the table with exponential backoff for ResourceInUseException
|
|
103
|
+
await withExponentialBackoff(async () => {
|
|
104
|
+
try {
|
|
105
|
+
// First check if table already exists
|
|
106
|
+
const describeResponse = await client.send(new DescribeTableCommand({
|
|
107
|
+
TableName: props.tableName,
|
|
108
|
+
}));
|
|
109
|
+
// If table exists and is ACTIVE, no need to create it
|
|
110
|
+
if (describeResponse.Table?.TableStatus === "ACTIVE") {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
// If table exists but not ACTIVE, wait for it in the polling loop below
|
|
114
|
+
if (describeResponse.Table) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
103
117
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const describeResponse = await client.send(new DescribeTableCommand({
|
|
118
|
+
catch (error) {
|
|
119
|
+
if (error instanceof ResourceNotFoundException) {
|
|
120
|
+
// Table doesn't exist, try to create it
|
|
121
|
+
await client.send(new CreateTableCommand({
|
|
109
122
|
TableName: props.tableName,
|
|
123
|
+
AttributeDefinitions: attributeDefinitions,
|
|
124
|
+
KeySchema: keySchema,
|
|
125
|
+
BillingMode: props.billingMode || "PAY_PER_REQUEST",
|
|
126
|
+
ProvisionedThroughput: props.billingMode === "PROVISIONED"
|
|
127
|
+
? {
|
|
128
|
+
ReadCapacityUnits: props.readCapacity || 5,
|
|
129
|
+
WriteCapacityUnits: props.writeCapacity || 5,
|
|
130
|
+
}
|
|
131
|
+
: undefined,
|
|
132
|
+
Tags: props.tags
|
|
133
|
+
? Object.entries(props.tags).map(([Key, Value]) => ({
|
|
134
|
+
Key,
|
|
135
|
+
Value,
|
|
136
|
+
}))
|
|
137
|
+
: undefined,
|
|
110
138
|
}));
|
|
111
|
-
// If table exists and is ACTIVE, no need to create it
|
|
112
|
-
if (describeResponse.Table?.TableStatus === "ACTIVE") {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
// If table exists but not ACTIVE, wait for it in the polling loop below
|
|
116
|
-
if (describeResponse.Table) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
139
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
// Table doesn't exist, try to create it
|
|
123
|
-
await client.send(new CreateTableCommand({
|
|
124
|
-
TableName: props.tableName,
|
|
125
|
-
AttributeDefinitions: attributeDefinitions,
|
|
126
|
-
KeySchema: keySchema,
|
|
127
|
-
BillingMode: props.billingMode || "PAY_PER_REQUEST",
|
|
128
|
-
ProvisionedThroughput: props.billingMode === "PROVISIONED"
|
|
129
|
-
? {
|
|
130
|
-
ReadCapacityUnits: props.readCapacity || 5,
|
|
131
|
-
WriteCapacityUnits: props.writeCapacity || 5,
|
|
132
|
-
}
|
|
133
|
-
: undefined,
|
|
134
|
-
Tags: props.tags
|
|
135
|
-
? Object.entries(props.tags).map(([Key, Value]) => ({
|
|
136
|
-
Key,
|
|
137
|
-
Value,
|
|
138
|
-
}))
|
|
139
|
-
: undefined,
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
throw error;
|
|
144
|
-
}
|
|
140
|
+
else {
|
|
141
|
+
throw error;
|
|
145
142
|
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
retryCount++;
|
|
165
|
-
// Increasing delay for each retry with some jitter
|
|
166
|
-
const delay = Math.min(1000 * (1 + 0.1 * Math.random()), 5000);
|
|
167
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
168
|
-
}
|
|
143
|
+
}
|
|
144
|
+
}, isRetryableError, 10, // Max attempts
|
|
145
|
+
200);
|
|
146
|
+
// Wait for table to be active with timeout
|
|
147
|
+
let tableActive = false;
|
|
148
|
+
let tableDescription;
|
|
149
|
+
let retryCount = 0;
|
|
150
|
+
const maxRetries = 60; // Wait up to 60 seconds
|
|
151
|
+
while (!tableActive && retryCount < maxRetries) {
|
|
152
|
+
try {
|
|
153
|
+
const response = await client.send(new DescribeTableCommand({
|
|
154
|
+
TableName: props.tableName,
|
|
155
|
+
}));
|
|
156
|
+
tableActive = response.Table?.TableStatus === "ACTIVE";
|
|
157
|
+
if (tableActive) {
|
|
158
|
+
tableDescription = response.Table;
|
|
169
159
|
}
|
|
170
|
-
|
|
160
|
+
else {
|
|
171
161
|
retryCount++;
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
162
|
+
// Increasing delay for each retry with some jitter
|
|
163
|
+
const delay = Math.min(1000 * (1 + 0.1 * Math.random()), 5000);
|
|
164
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
176
165
|
}
|
|
177
166
|
}
|
|
178
|
-
|
|
179
|
-
|
|
167
|
+
catch (error) {
|
|
168
|
+
retryCount++;
|
|
169
|
+
if (!(error instanceof ResourceNotFoundException)) {
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
180
173
|
}
|
|
181
|
-
return this({
|
|
182
|
-
...props,
|
|
183
|
-
arn: tableDescription.TableArn,
|
|
184
|
-
streamArn: tableDescription.LatestStreamArn,
|
|
185
|
-
tableId: tableDescription.TableId,
|
|
186
|
-
});
|
|
187
174
|
}
|
|
175
|
+
if (!tableActive) {
|
|
176
|
+
throw new Error(`Timed out waiting for table ${props.tableName} to become active`);
|
|
177
|
+
}
|
|
178
|
+
return this({
|
|
179
|
+
...props,
|
|
180
|
+
arn: tableDescription.TableArn,
|
|
181
|
+
streamArn: tableDescription.LatestStreamArn,
|
|
182
|
+
tableId: tableDescription.TableId,
|
|
183
|
+
});
|
|
188
184
|
});
|
|
189
185
|
const retryableErrors = [
|
|
190
186
|
"ResourceInUseException",
|