{"_id":"@de-otio/saas-foundation-cdk","_rev":"4-6934cca12baf0e35d294fb01c247dcc4","name":"@de-otio/saas-foundation-cdk","dist-tags":{"latest":"0.4.0"},"versions":{"0.2.0":{"name":"@de-otio/saas-foundation-cdk","version":"0.2.0","license":"Apache-2.0","_id":"@de-otio/saas-foundation-cdk@0.2.0","maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"homepage":"https://github.com/de-otio/saas-foundation#readme","bugs":{"url":"https://github.com/de-otio/saas-foundation/issues"},"dist":{"shasum":"45da790dfbb59526b05e06d6810f33c5c7ce4def","tarball":"https://registry.npmjs.org/@de-otio/saas-foundation-cdk/-/saas-foundation-cdk-0.2.0.tgz","fileCount":70,"integrity":"sha512-BC93w1qXI+hZxB6a1qF5qIFS689v9+9aQOtJ33Fk+kR3Mmnh8JgE2J/AvLxtwqi1mY1O6alzaSeprK63Jj57yQ==","signatures":[{"sig":"MEUCICgP2bEAAVEv9Tjuk6yTZTU9bcEFGlVCIUpK/pmeO6DgAiEA7h37bqzbmuXzTQ8Y4YVOGxu/NguPi6O1BMKb858RxR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99623},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./queue":{"types":"./dist/queue-with-dlq/index.d.ts","import":"./dist/queue-with-dlq/index.js"},"./table":{"types":"./dist/single-table/index.d.ts","import":"./dist/single-table/index.js"},"./lambda":{"types":"./dist/nodejs-lambda/index.d.ts","import":"./dist/nodejs-lambda/index.js"},"./aspects":{"types":"./dist/aspects/index.d.ts","import":"./dist/aspects/index.js"},"./dashboards":{"types":"./dist/dashboards/index.d.ts","import":"./dist/dashboards/index.js"}},"gitHead":"51cb82cd39c5dbd9ca0e62bb67f7e1d53910a13c","scripts":{"lint":"eslint lib test","test":"vitest run","build":"tsc -b"},"_npmUser":{"name":"rkm1","email":"richard.myers@de-otio.org"},"repository":{"url":"git+https://github.com/de-otio/saas-foundation.git","type":"git","directory":"packages/foundation-cdk"},"_npmVersion":"11.9.0","description":"AWS CDK constructs for de-otio SaaS deployment plumbing","directories":{},"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cdk-nag":"^2.0.0","constructs":"^10.0.0","aws-cdk-lib":"^2.200.0"},"peerDependencies":{"constructs":"^10.0.0","aws-cdk-lib":"^2.200.0"},"_npmOperationalInternal":{"tmp":"tmp/saas-foundation-cdk_0.2.0_1779888739889_0.06955876628787694","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@de-otio/saas-foundation-cdk","version":"0.3.0","license":"Apache-2.0","_id":"@de-otio/saas-foundation-cdk@0.3.0","maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"homepage":"https://github.com/de-otio/saas-foundation#readme","bugs":{"url":"https://github.com/de-otio/saas-foundation/issues"},"dist":{"shasum":"3262abc46a748aa5b25546e0acb3fb7f409b7f52","tarball":"https://registry.npmjs.org/@de-otio/saas-foundation-cdk/-/saas-foundation-cdk-0.3.0.tgz","fileCount":75,"integrity":"sha512-qYkiv9NxX/+PujHL8+8Ab1w/IhkOjBNncMHCCS2a5sE6PNKAs28SfojpFMLl7a4VjSD/InnFymQ/yTEk6EDIEw==","signatures":[{"sig":"MEQCIGras8z+xVU/pQ+7/Ma+v5iPvlUUz+Q59Yqt1nS/JZx1AiBO0lS5D0n0VJnjAhD/bBwfP9qxlLcJfnnybr6N8aGW/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121771},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./queue":{"types":"./dist/queue-with-dlq/index.d.ts","import":"./dist/queue-with-dlq/index.js"},"./table":{"types":"./dist/single-table/index.d.ts","import":"./dist/single-table/index.js"},"./lambda":{"types":"./dist/nodejs-lambda/index.d.ts","import":"./dist/nodejs-lambda/index.js"},"./aspects":{"types":"./dist/aspects/index.d.ts","import":"./dist/aspects/index.js"},"./dashboards":{"types":"./dist/dashboards/index.d.ts","import":"./dist/dashboards/index.js"}},"gitHead":"ce554d575e2567ff5025ac4fff0749d80976b432","scripts":{"lint":"eslint lib test","test":"vitest run","build":"tsc -b"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:020df6bc-4a9b-4e88-ac9a-93554a5e8308"}},"repository":{"url":"git+https://github.com/de-otio/saas-foundation.git","type":"git","directory":"packages/foundation-cdk"},"_npmVersion":"11.13.0","description":"AWS CDK constructs for de-otio SaaS deployment plumbing","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cdk-nag":"^2.0.0","constructs":"^10.0.0","aws-cdk-lib":"^2.200.0"},"peerDependencies":{"constructs":"^10.0.0","aws-cdk-lib":"^2.200.0"},"_npmOperationalInternal":{"tmp":"tmp/saas-foundation-cdk_0.3.0_1780045810680_0.28288817465187477","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@de-otio/saas-foundation-cdk","version":"0.3.1","license":"Apache-2.0","_id":"@de-otio/saas-foundation-cdk@0.3.1","maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"homepage":"https://github.com/de-otio/saas-foundation#readme","bugs":{"url":"https://github.com/de-otio/saas-foundation/issues"},"dist":{"shasum":"7736fa18122f13cdbc283a6ae68547aefd7cb80b","tarball":"https://registry.npmjs.org/@de-otio/saas-foundation-cdk/-/saas-foundation-cdk-0.3.1.tgz","fileCount":75,"integrity":"sha512-8SfsuZZ8MJXQWb3YSEoba+biFqT+m69DQH0USabXhyUpMBymS/y29KgPrdwgqqn0FLSMf2CjCb8wgb1ZTuDdbQ==","signatures":[{"sig":"MEUCIQDeYLSrwxryS/oXNVEUfSXhGYxXBfZkyr64XQdsiUN6jgIgaOGgrYLMtp/iWfsTDZUODX/OklMgLQR99MLNzZtZJx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122968},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./queue":{"types":"./dist/queue-with-dlq/index.d.ts","import":"./dist/queue-with-dlq/index.js"},"./table":{"types":"./dist/single-table/index.d.ts","import":"./dist/single-table/index.js"},"./lambda":{"types":"./dist/nodejs-lambda/index.d.ts","import":"./dist/nodejs-lambda/index.js"},"./aspects":{"types":"./dist/aspects/index.d.ts","import":"./dist/aspects/index.js"},"./dashboards":{"types":"./dist/dashboards/index.d.ts","import":"./dist/dashboards/index.js"}},"gitHead":"a0ab6a6f5bf1cb91f7d50cbe36792f27790abf25","scripts":{"lint":"eslint lib test","test":"vitest run","build":"tsc -b"},"_npmUser":{"name":"rkm1","email":"richard.myers@de-otio.org"},"repository":{"url":"git+https://github.com/de-otio/saas-foundation.git","type":"git","directory":"packages/foundation-cdk"},"_npmVersion":"11.9.0","description":"AWS CDK constructs for de-otio SaaS deployment plumbing","directories":{},"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cdk-nag":"^2.0.0","constructs":"^10.0.0","@types/node":"^22.0.0","aws-cdk-lib":"^2.200.0"},"peerDependencies":{"constructs":"^10.0.0","aws-cdk-lib":"^2.200.0"},"_npmOperationalInternal":{"tmp":"tmp/saas-foundation-cdk_0.3.1_1780640013708_0.31246350631796105","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@de-otio/saas-foundation-cdk","version":"0.4.0","type":"module","description":"AWS CDK constructs for de-otio SaaS deployment plumbing","license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/de-otio/saas-foundation.git","directory":"packages/foundation-cdk"},"engines":{"node":">=24.0.0"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./lambda":{"import":"./dist/nodejs-lambda/index.js","types":"./dist/nodejs-lambda/index.d.ts"},"./queue":{"import":"./dist/queue-with-dlq/index.js","types":"./dist/queue-with-dlq/index.d.ts"},"./table":{"import":"./dist/single-table/index.js","types":"./dist/single-table/index.d.ts"},"./ses":{"import":"./dist/ses-email-identity/index.js","types":"./dist/ses-email-identity/index.d.ts"},"./dashboards":{"import":"./dist/dashboards/index.js","types":"./dist/dashboards/index.d.ts"},"./aspects":{"import":"./dist/aspects/index.js","types":"./dist/aspects/index.d.ts"}},"scripts":{"build":"tsc -b","test":"vitest run","lint":"eslint lib test"},"peerDependencies":{"aws-cdk-lib":"^2.260.0","constructs":"^10.0.0"},"devDependencies":{"@types/node":"^25.0.0","aws-cdk-lib":"^2.260.0","constructs":"^10.0.0","cdk-nag":"^2.0.0"},"publishConfig":{"access":"public"},"gitHead":"75369fdb6e10396a2f1976cc5a039a7754755b82","_id":"@de-otio/saas-foundation-cdk@0.4.0","bugs":{"url":"https://github.com/de-otio/saas-foundation/issues"},"homepage":"https://github.com/de-otio/saas-foundation#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-JUVsp/FF3VzcEStpvUhsH2BgDU0ony5L+4TK+/wNLYC1khfZB9ThdpGEeGacWyBBFILSoUFREUuKZM3iFgCVcA==","shasum":"e2529e569b3be74e036988d02a55b6303d2abdf5","tarball":"https://registry.npmjs.org/@de-otio/saas-foundation-cdk/-/saas-foundation-cdk-0.4.0.tgz","fileCount":83,"unpackedSize":144610,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@de-otio%2fsaas-foundation-cdk@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFTfrm4oiBdlqgX6s+8jdWWRKNlwIJJPALVN2tJVI+GVAiEArT+3dNp40RWv9BlankA7sD2+cMK3Oi6D+HxnFp0v0VU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e2ef81d7-afbc-4eb4-9aa2-152c9a15c0ff"}},"directories":{},"maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/saas-foundation-cdk_0.4.0_1783435827918_0.4116243965506221"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-27T13:32:19.584Z","modified":"2026-07-07T14:50:28.431Z","0.2.0":"2026-05-27T13:32:20.067Z","0.3.0":"2026-05-29T09:10:10.829Z","0.3.1":"2026-06-05T06:13:33.890Z","0.4.0":"2026-07-07T14:50:28.124Z"},"bugs":{"url":"https://github.com/de-otio/saas-foundation/issues"},"license":"Apache-2.0","homepage":"https://github.com/de-otio/saas-foundation#readme","repository":{"type":"git","url":"git+https://github.com/de-otio/saas-foundation.git","directory":"packages/foundation-cdk"},"description":"AWS CDK constructs for de-otio SaaS deployment plumbing","maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"readme":"# @de-otio/saas-foundation-cdk\n\nAWS CDK constructs for the deployment plumbing every de-otio SaaS\nback-end needs: an opinionated `NodejsLambda` (esbuild bundling with\noptional Prisma engine packaging, IteratorAge alarms, log-group\nretention defaults), a `QueueWithDlq` SQS + DLQ pair, a `SingleTable`\nDynamoDB construct with on-demand billing and PITR defaults, three\nready-to-render CloudWatch dashboard templates, and a\n`HouseDefaultsAspect` that enforces them across a stack via\nconstruct-tree introspection (raw resources are detected by tag).\n\nPure constructs library — no runtime dependency on\n`@de-otio/saas-foundation`.\n\n## Install\n\n```bash\nnpm install @de-otio/saas-foundation-cdk aws-cdk-lib constructs\n```\n\nRequires Node ≥ 24 and `aws-cdk-lib@^2.200`.\n\n## Constructs\n\n### NodejsLambda\n\n```ts\nimport { NodejsLambda } from \"@de-otio/saas-foundation-cdk\";\n\nnew NodejsLambda(this, \"Worker\", {\n  entry: \"src/worker.ts\",\n  prisma: { engine: \"rhel-openssl-3.0.x\" },\n  alarmOnIteratorAge: { thresholdMinutes: 5 },\n});\n```\n\nA Lambda function with house defaults (ARM64, X-Ray tracing, 30-day log retention, optional Prisma client bundling, and optional alarms for errors/throttles). See [`doc/foundation-cdk/02-nodejs-lambda.md`](https://github.com/de-otio/saas-foundation/tree/main/doc/foundation-cdk/02-nodejs-lambda.md).\n\n### SesEmailIdentity\n\n```ts\nimport { SesEmailIdentity } from \"@de-otio/saas-foundation-cdk\";\n\nconst identity = new SesEmailIdentity(this, \"EmailIdentity\", {\n  domainName: \"mail.example.com\",\n  hostedZone: zone,\n  dmarc: { policy: \"quarantine\", rua: \"dmarc@example.com\" },\n});\n\n// Grant a Lambda permission to send through this identity\nidentity.grantSend(myLambda, [\"noreply@example.com\"]);\n```\n\nProvisions a domain identity for transactional email with Easy DKIM, custom MAIL FROM (SPF-aligned), DMARC record, TLS-required configuration set, and SNS topic for bounce/complaint events. When a Route53 hosted zone is provided, all DNS records are created automatically; otherwise they are emitted as CloudFormation outputs for manual entry.\n\n**Properties:**\n- `identity`: The verified `ses.EmailIdentity` (Easy DKIM enabled)\n- `configurationSet`: The TLS-required configuration set\n- `bounceComplaintTopic`: SNS topic receiving bounce and complaint events\n- `domainName`: The verified domain (e.g. `mail.example.com`)\n- `mailFromDomain`: The custom MAIL FROM domain (e.g. `mail.mail.example.com`)\n\n**Method:**\n- `grantSend(grantee, fromAddresses?)`: Grants `ses:SendEmail` and `ses:SendRawEmail` permission scoped to this identity, optionally restricted to specific `fromAddresses`.\n\nSee [`doc/foundation-cdk/07-ses-email-identity.md`](https://github.com/de-otio/saas-foundation/tree/main/doc/foundation-cdk/07-ses-email-identity.md) for detailed configuration options and DMARC policy guidance.\n\n## Additional resources\n\nAspects (`HouseDefaultsAspect`) and the dashboard helpers\n(`houseDashboard`, `listHouseDashboards`) are exported from the same\npackage root.\n\n## Design docs\n\nSee [`doc/foundation-cdk/`](https://github.com/de-otio/saas-foundation/tree/main/doc/foundation-cdk)\nin the source repository and the position paper at\n[`doc/09-foundation-cdk-package.md`](https://github.com/de-otio/saas-foundation/blob/main/doc/09-foundation-cdk-package.md).\n\n## License\n\nApache-2.0.\n","readmeFilename":"README.md"}