create-qpq-app 0.1.5
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/README.md +33 -0
- package/lib/commonjs/bin/createQpqApp.d.ts +2 -0
- package/lib/commonjs/bin/createQpqApp.js +9 -0
- package/lib/commonjs/bin/createQpqApp.js.map +1 -0
- package/lib/commonjs/cli/runCreateQpqApp.d.ts +1 -0
- package/lib/commonjs/cli/runCreateQpqApp.js +75 -0
- package/lib/commonjs/cli/runCreateQpqApp.js.map +1 -0
- package/lib/commonjs/index.d.ts +3 -0
- package/lib/commonjs/index.js +20 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/lib/args.d.ts +2 -0
- package/lib/commonjs/lib/args.js +21 -0
- package/lib/commonjs/lib/args.js.map +1 -0
- package/lib/commonjs/lib/files.d.ts +5 -0
- package/lib/commonjs/lib/files.js +65 -0
- package/lib/commonjs/lib/files.js.map +1 -0
- package/lib/commonjs/lib/packageRoot.d.ts +2 -0
- package/lib/commonjs/lib/packageRoot.js +26 -0
- package/lib/commonjs/lib/packageRoot.js.map +1 -0
- package/lib/commonjs/lib/prompts.d.ts +1 -0
- package/lib/commonjs/lib/prompts.js +53 -0
- package/lib/commonjs/lib/prompts.js.map +1 -0
- package/lib/commonjs/lib/runCommand.d.ts +4 -0
- package/lib/commonjs/lib/runCommand.js +24 -0
- package/lib/commonjs/lib/runCommand.js.map +1 -0
- package/lib/commonjs/steps/001_preflight.d.ts +2 -0
- package/lib/commonjs/steps/001_preflight.js +36 -0
- package/lib/commonjs/steps/001_preflight.js.map +1 -0
- package/lib/commonjs/steps/002_copyTemplate.d.ts +2 -0
- package/lib/commonjs/steps/002_copyTemplate.js +29 -0
- package/lib/commonjs/steps/002_copyTemplate.js.map +1 -0
- package/lib/commonjs/steps/003_deleteDocusaurus.d.ts +2 -0
- package/lib/commonjs/steps/003_deleteDocusaurus.js +32 -0
- package/lib/commonjs/steps/003_deleteDocusaurus.js.map +1 -0
- package/lib/commonjs/steps/004_deleteQpqjsApp.d.ts +2 -0
- package/lib/commonjs/steps/004_deleteQpqjsApp.js +26 -0
- package/lib/commonjs/steps/004_deleteQpqjsApp.js.map +1 -0
- package/lib/commonjs/steps/005_applyAppIdentity.d.ts +2 -0
- package/lib/commonjs/steps/005_applyAppIdentity.js +51 -0
- package/lib/commonjs/steps/005_applyAppIdentity.js.map +1 -0
- package/lib/commonjs/steps/006_applyDomain.d.ts +2 -0
- package/lib/commonjs/steps/006_applyDomain.js +31 -0
- package/lib/commonjs/steps/006_applyDomain.js.map +1 -0
- package/lib/commonjs/steps/007_pinRegistryVersions.d.ts +2 -0
- package/lib/commonjs/steps/007_pinRegistryVersions.js +37 -0
- package/lib/commonjs/steps/007_pinRegistryVersions.js.map +1 -0
- package/lib/commonjs/steps/008_transpileToJavaScript.d.ts +2 -0
- package/lib/commonjs/steps/008_transpileToJavaScript.js +24 -0
- package/lib/commonjs/steps/008_transpileToJavaScript.js.map +1 -0
- package/lib/commonjs/steps/009_restoreGitignore.d.ts +2 -0
- package/lib/commonjs/steps/009_restoreGitignore.js +31 -0
- package/lib/commonjs/steps/009_restoreGitignore.js.map +1 -0
- package/lib/commonjs/steps/010_gitInit.d.ts +2 -0
- package/lib/commonjs/steps/010_gitInit.js +30 -0
- package/lib/commonjs/steps/010_gitInit.js.map +1 -0
- package/lib/commonjs/steps/011_npmInstall.d.ts +2 -0
- package/lib/commonjs/steps/011_npmInstall.js +21 -0
- package/lib/commonjs/steps/011_npmInstall.js.map +1 -0
- package/lib/commonjs/steps/012_buildWorkspaces.d.ts +2 -0
- package/lib/commonjs/steps/012_buildWorkspaces.js +24 -0
- package/lib/commonjs/steps/012_buildWorkspaces.js.map +1 -0
- package/lib/commonjs/steps/013_printNextSteps.d.ts +2 -0
- package/lib/commonjs/steps/013_printNextSteps.js +33 -0
- package/lib/commonjs/steps/013_printNextSteps.js.map +1 -0
- package/lib/commonjs/steps/index.d.ts +16 -0
- package/lib/commonjs/steps/index.js +48 -0
- package/lib/commonjs/steps/index.js.map +1 -0
- package/lib/commonjs/types.d.ts +22 -0
- package/lib/commonjs/types.js +9 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/esm/bin/createQpqApp.d.ts +2 -0
- package/lib/esm/bin/createQpqApp.js +7 -0
- package/lib/esm/bin/createQpqApp.js.map +1 -0
- package/lib/esm/cli/runCreateQpqApp.d.ts +1 -0
- package/lib/esm/cli/runCreateQpqApp.js +57 -0
- package/lib/esm/cli/runCreateQpqApp.js.map +1 -0
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js +4 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/lib/args.d.ts +2 -0
- package/lib/esm/lib/args.js +16 -0
- package/lib/esm/lib/args.js.map +1 -0
- package/lib/esm/lib/files.d.ts +5 -0
- package/lib/esm/lib/files.js +54 -0
- package/lib/esm/lib/files.js.map +1 -0
- package/lib/esm/lib/packageRoot.d.ts +2 -0
- package/lib/esm/lib/packageRoot.js +18 -0
- package/lib/esm/lib/packageRoot.js.map +1 -0
- package/lib/esm/lib/prompts.d.ts +1 -0
- package/lib/esm/lib/prompts.js +7 -0
- package/lib/esm/lib/prompts.js.map +1 -0
- package/lib/esm/lib/runCommand.d.ts +4 -0
- package/lib/esm/lib/runCommand.js +19 -0
- package/lib/esm/lib/runCommand.js.map +1 -0
- package/lib/esm/steps/001_preflight.d.ts +2 -0
- package/lib/esm/steps/001_preflight.js +21 -0
- package/lib/esm/steps/001_preflight.js.map +1 -0
- package/lib/esm/steps/002_copyTemplate.d.ts +2 -0
- package/lib/esm/steps/002_copyTemplate.js +14 -0
- package/lib/esm/steps/002_copyTemplate.js.map +1 -0
- package/lib/esm/steps/003_deleteDocusaurus.d.ts +2 -0
- package/lib/esm/steps/003_deleteDocusaurus.js +16 -0
- package/lib/esm/steps/003_deleteDocusaurus.js.map +1 -0
- package/lib/esm/steps/004_deleteQpqjsApp.d.ts +2 -0
- package/lib/esm/steps/004_deleteQpqjsApp.js +11 -0
- package/lib/esm/steps/004_deleteQpqjsApp.js.map +1 -0
- package/lib/esm/steps/005_applyAppIdentity.d.ts +2 -0
- package/lib/esm/steps/005_applyAppIdentity.js +36 -0
- package/lib/esm/steps/005_applyAppIdentity.js.map +1 -0
- package/lib/esm/steps/006_applyDomain.d.ts +2 -0
- package/lib/esm/steps/006_applyDomain.js +16 -0
- package/lib/esm/steps/006_applyDomain.js.map +1 -0
- package/lib/esm/steps/007_pinRegistryVersions.d.ts +2 -0
- package/lib/esm/steps/007_pinRegistryVersions.js +22 -0
- package/lib/esm/steps/007_pinRegistryVersions.js.map +1 -0
- package/lib/esm/steps/008_transpileToJavaScript.d.ts +2 -0
- package/lib/esm/steps/008_transpileToJavaScript.js +12 -0
- package/lib/esm/steps/008_transpileToJavaScript.js.map +1 -0
- package/lib/esm/steps/009_restoreGitignore.d.ts +2 -0
- package/lib/esm/steps/009_restoreGitignore.js +16 -0
- package/lib/esm/steps/009_restoreGitignore.js.map +1 -0
- package/lib/esm/steps/010_gitInit.d.ts +2 -0
- package/lib/esm/steps/010_gitInit.js +18 -0
- package/lib/esm/steps/010_gitInit.js.map +1 -0
- package/lib/esm/steps/011_npmInstall.d.ts +2 -0
- package/lib/esm/steps/011_npmInstall.js +9 -0
- package/lib/esm/steps/011_npmInstall.js.map +1 -0
- package/lib/esm/steps/012_buildWorkspaces.d.ts +2 -0
- package/lib/esm/steps/012_buildWorkspaces.js +12 -0
- package/lib/esm/steps/012_buildWorkspaces.js.map +1 -0
- package/lib/esm/steps/013_printNextSteps.d.ts +2 -0
- package/lib/esm/steps/013_printNextSteps.js +21 -0
- package/lib/esm/steps/013_printNextSteps.js.map +1 -0
- package/lib/esm/steps/index.d.ts +16 -0
- package/lib/esm/steps/index.js +33 -0
- package/lib/esm/steps/index.js.map +1 -0
- package/lib/esm/types.d.ts +22 -0
- package/lib/esm/types.js +6 -0
- package/lib/esm/types.js.map +1 -0
- package/package.json +57 -0
- package/template/.nvmrc +1 -0
- package/template/.prettierignore +4 -0
- package/template/.prettierrc +4 -0
- package/template/.vscode/extensions.json +3 -0
- package/template/.vscode/settings.json +14 -0
- package/template/README.md +150 -0
- package/template/apps/qpqjs/account.qpq.ts +39 -0
- package/template/apps/qpqjs/bootstrap.qpq.ts +36 -0
- package/template/apps/qpqjs/deploy.config.json +24 -0
- package/template/apps/qpqjs/packages/config/package.json +22 -0
- package/template/apps/qpqjs/packages/config/src/index.ts +2 -0
- package/template/apps/qpqjs/packages/config/tsconfig.json +18 -0
- package/template/apps/qpqjs/packages/config/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/packages/constants/package.json +22 -0
- package/template/apps/qpqjs/packages/constants/src/QpqjsServiceEnum.ts +11 -0
- package/template/apps/qpqjs/packages/constants/src/domain.ts +1 -0
- package/template/apps/qpqjs/packages/constants/src/index.ts +3 -0
- package/template/apps/qpqjs/packages/constants/src/userDirectory.ts +3 -0
- package/template/apps/qpqjs/packages/constants/tsconfig.json +18 -0
- package/template/apps/qpqjs/packages/constants/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/packages/service-utils/package.json +24 -0
- package/template/apps/qpqjs/packages/service-utils/src/defineQpqjsService.ts +148 -0
- package/template/apps/qpqjs/packages/service-utils/src/index.ts +1 -0
- package/template/apps/qpqjs/packages/service-utils/tsconfig.json +18 -0
- package/template/apps/qpqjs/packages/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/admin/config/package.json +22 -0
- package/template/apps/qpqjs/services/admin/config/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/config/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/config/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/admin/models/package.json +22 -0
- package/template/apps/qpqjs/services/admin/models/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/models/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/models/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/admin/service/package.json +9 -0
- package/template/apps/qpqjs/services/admin/service/src/infrastructure.ts +15 -0
- package/template/apps/qpqjs/services/admin/service/tsconfig.app.json +17 -0
- package/template/apps/qpqjs/services/admin/service/tsconfig.json +8 -0
- package/template/apps/qpqjs/services/admin/service-utils/package.json +22 -0
- package/template/apps/qpqjs/services/admin/service-utils/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/service-utils/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/admin/shared-logic/package.json +22 -0
- package/template/apps/qpqjs/services/admin/shared-logic/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/shared-logic/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/admin/views/package.json +8 -0
- package/template/apps/qpqjs/services/admin/views/src/app/app.tsx +39 -0
- package/template/apps/qpqjs/services/admin/views/src/assets/.gitkeep +0 -0
- package/template/apps/qpqjs/services/admin/views/src/bootstrap.tsx +14 -0
- package/template/apps/qpqjs/services/admin/views/src/components/AdminGrid/AdminGrid.tsx +80 -0
- package/template/apps/qpqjs/services/admin/views/src/components/AdminGrid/index.ts +1 -0
- package/template/apps/qpqjs/services/admin/views/src/components/AdminGrid/styles.ts +41 -0
- package/template/apps/qpqjs/services/admin/views/src/components/AdminGrid/types/AdminGridProps.ts +6 -0
- package/template/apps/qpqjs/services/admin/views/src/components/index.ts +1 -0
- package/template/apps/qpqjs/services/admin/views/src/favicon.ico +0 -0
- package/template/apps/qpqjs/services/admin/views/src/hooks/index.ts +1 -0
- package/template/apps/qpqjs/services/admin/views/src/hooks/useAdminNetworkRequest/index.ts +1 -0
- package/template/apps/qpqjs/services/admin/views/src/hooks/useAdminNetworkRequest/logic/getBaseUrlFromAdminWebHost.ts +7 -0
- package/template/apps/qpqjs/services/admin/views/src/hooks/useAdminNetworkRequest/types/AdminNetworkRequestPayload.ts +10 -0
- package/template/apps/qpqjs/services/admin/views/src/hooks/useAdminNetworkRequest/useAdminNetworkRequest.ts +18 -0
- package/template/apps/qpqjs/services/admin/views/src/index.html +23 -0
- package/template/apps/qpqjs/services/admin/views/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/views/src/main.ts +1 -0
- package/template/apps/qpqjs/services/admin/views/tsconfig.app.json +20 -0
- package/template/apps/qpqjs/services/admin/views/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/x-logic/package.json +22 -0
- package/template/apps/qpqjs/services/admin/x-logic/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/x-logic/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/admin/x-models/package.json +22 -0
- package/template/apps/qpqjs/services/admin/x-models/src/index.ts +2 -0
- package/template/apps/qpqjs/services/admin/x-models/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/admin/x-models/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/design/config/package.json +22 -0
- package/template/apps/qpqjs/services/design/config/src/index.ts +2 -0
- package/template/apps/qpqjs/services/design/config/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/config/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/design/models/package.json +22 -0
- package/template/apps/qpqjs/services/design/models/src/index.ts +2 -0
- package/template/apps/qpqjs/services/design/models/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/models/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/design/service/package.json +9 -0
- package/template/apps/qpqjs/services/design/service/src/infrastructure.ts +15 -0
- package/template/apps/qpqjs/services/design/service/tsconfig.app.json +17 -0
- package/template/apps/qpqjs/services/design/service/tsconfig.json +8 -0
- package/template/apps/qpqjs/services/design/service-utils/package.json +22 -0
- package/template/apps/qpqjs/services/design/service-utils/src/index.ts +2 -0
- package/template/apps/qpqjs/services/design/service-utils/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/design/shared-logic/package.json +22 -0
- package/template/apps/qpqjs/services/design/shared-logic/src/index.ts +2 -0
- package/template/apps/qpqjs/services/design/shared-logic/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/design/views/package.json +8 -0
- package/template/apps/qpqjs/services/design/views/src/app.tsx +7 -0
- package/template/apps/qpqjs/services/design/views/src/bootstrap.tsx +14 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/LandingPage.tsx +20 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/CodeWindow.tsx +77 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/Features.tsx +83 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/Footer.tsx +45 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/Hero.tsx +60 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/InstallChip.tsx +27 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/NavBar.tsx +72 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/Packages.tsx +63 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/Pipeline.tsx +58 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/TronGrid.tsx +587 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/components/YieldLoop.tsx +361 -0
- package/template/apps/qpqjs/services/design/views/src/components/LandingPage/landing.css +1170 -0
- package/template/apps/qpqjs/services/design/views/src/components/WelcomeScreen/WelcomeScreen.tsx +85 -0
- package/template/apps/qpqjs/services/design/views/src/index.html +12 -0
- package/template/apps/qpqjs/services/design/views/src/index.ts +1 -0
- package/template/apps/qpqjs/services/design/views/src/main.ts +1 -0
- package/template/apps/qpqjs/services/design/views/tsconfig.app.json +20 -0
- package/template/apps/qpqjs/services/design/views/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/x-logic/package.json +22 -0
- package/template/apps/qpqjs/services/design/x-logic/src/index.ts +2 -0
- package/template/apps/qpqjs/services/design/x-logic/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/design/x-models/package.json +22 -0
- package/template/apps/qpqjs/services/design/x-models/src/index.ts +2 -0
- package/template/apps/qpqjs/services/design/x-models/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/design/x-models/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/shell/config/package.json +22 -0
- package/template/apps/qpqjs/services/shell/config/src/index.ts +2 -0
- package/template/apps/qpqjs/services/shell/config/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/config/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/shell/models/package.json +22 -0
- package/template/apps/qpqjs/services/shell/models/src/index.ts +2 -0
- package/template/apps/qpqjs/services/shell/models/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/models/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/shell/service/package.json +9 -0
- package/template/apps/qpqjs/services/shell/service/src/entry/controller/health/health.ts +21 -0
- package/template/apps/qpqjs/services/shell/service/src/entry/controller/health/index.ts +1 -0
- package/template/apps/qpqjs/services/shell/service/src/entry/controller/index.ts +1 -0
- package/template/apps/qpqjs/services/shell/service/src/infrastructure.ts +91 -0
- package/template/apps/qpqjs/services/shell/service/tsconfig.app.json +17 -0
- package/template/apps/qpqjs/services/shell/service/tsconfig.json +8 -0
- package/template/apps/qpqjs/services/shell/service-utils/package.json +22 -0
- package/template/apps/qpqjs/services/shell/service-utils/src/index.ts +2 -0
- package/template/apps/qpqjs/services/shell/service-utils/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/shell/shared-logic/package.json +22 -0
- package/template/apps/qpqjs/services/shell/shared-logic/src/index.ts +2 -0
- package/template/apps/qpqjs/services/shell/shared-logic/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/shell/views/package.json +8 -0
- package/template/apps/qpqjs/services/shell/views/src/app.tsx +6 -0
- package/template/apps/qpqjs/services/shell/views/src/bootstrap.tsx +14 -0
- package/template/apps/qpqjs/services/shell/views/src/index.html +25 -0
- package/template/apps/qpqjs/services/shell/views/src/index.ts +1 -0
- package/template/apps/qpqjs/services/shell/views/src/main.ts +1 -0
- package/template/apps/qpqjs/services/shell/views/tsconfig.app.json +20 -0
- package/template/apps/qpqjs/services/shell/views/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/x-logic/package.json +22 -0
- package/template/apps/qpqjs/services/shell/x-logic/src/index.ts +2 -0
- package/template/apps/qpqjs/services/shell/x-logic/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/services/shell/x-models/package.json +22 -0
- package/template/apps/qpqjs/services/shell/x-models/src/index.ts +2 -0
- package/template/apps/qpqjs/services/shell/x-models/tsconfig.json +18 -0
- package/template/apps/qpqjs/services/shell/x-models/tsconfig.lib.json +19 -0
- package/template/apps/qpqjs/tsconfig.federated.json +13 -0
- package/template/apps/todo/deploy.config.json +12 -0
- package/template/apps/todo/packages/config/package.json +22 -0
- package/template/apps/todo/packages/config/src/index.ts +2 -0
- package/template/apps/todo/packages/config/tsconfig.json +18 -0
- package/template/apps/todo/packages/config/tsconfig.lib.json +19 -0
- package/template/apps/todo/packages/constants/package.json +22 -0
- package/template/apps/todo/packages/constants/src/TodoServiceEnum.ts +12 -0
- package/template/apps/todo/packages/constants/src/domain.ts +1 -0
- package/template/apps/todo/packages/constants/src/index.ts +3 -0
- package/template/apps/todo/packages/constants/src/userDirectory.ts +3 -0
- package/template/apps/todo/packages/constants/tsconfig.json +18 -0
- package/template/apps/todo/packages/constants/tsconfig.lib.json +19 -0
- package/template/apps/todo/packages/service-utils/package.json +24 -0
- package/template/apps/todo/packages/service-utils/src/defineTodoService.ts +128 -0
- package/template/apps/todo/packages/service-utils/src/index.ts +1 -0
- package/template/apps/todo/packages/service-utils/tsconfig.json +18 -0
- package/template/apps/todo/packages/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/admin/config/package.json +22 -0
- package/template/apps/todo/services/admin/config/src/index.ts +2 -0
- package/template/apps/todo/services/admin/config/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/config/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/admin/models/package.json +22 -0
- package/template/apps/todo/services/admin/models/src/index.ts +2 -0
- package/template/apps/todo/services/admin/models/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/admin/service/package.json +9 -0
- package/template/apps/todo/services/admin/service/src/infrastructure.ts +15 -0
- package/template/apps/todo/services/admin/service/tsconfig.app.json +17 -0
- package/template/apps/todo/services/admin/service/tsconfig.json +8 -0
- package/template/apps/todo/services/admin/service-utils/package.json +22 -0
- package/template/apps/todo/services/admin/service-utils/src/index.ts +2 -0
- package/template/apps/todo/services/admin/service-utils/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/admin/shared-logic/package.json +22 -0
- package/template/apps/todo/services/admin/shared-logic/src/index.ts +2 -0
- package/template/apps/todo/services/admin/shared-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/admin/views/package.json +8 -0
- package/template/apps/todo/services/admin/views/src/app/app.tsx +39 -0
- package/template/apps/todo/services/admin/views/src/assets/.gitkeep +0 -0
- package/template/apps/todo/services/admin/views/src/bootstrap.tsx +14 -0
- package/template/apps/todo/services/admin/views/src/components/AdminGrid/AdminGrid.tsx +80 -0
- package/template/apps/todo/services/admin/views/src/components/AdminGrid/index.ts +1 -0
- package/template/apps/todo/services/admin/views/src/components/AdminGrid/styles.ts +41 -0
- package/template/apps/todo/services/admin/views/src/components/AdminGrid/types/AdminGridProps.ts +6 -0
- package/template/apps/todo/services/admin/views/src/components/index.ts +1 -0
- package/template/apps/todo/services/admin/views/src/favicon.ico +0 -0
- package/template/apps/todo/services/admin/views/src/hooks/index.ts +1 -0
- package/template/apps/todo/services/admin/views/src/hooks/useAdminNetworkRequest/index.ts +1 -0
- package/template/apps/todo/services/admin/views/src/hooks/useAdminNetworkRequest/logic/getBaseUrlFromAdminWebHost.ts +7 -0
- package/template/apps/todo/services/admin/views/src/hooks/useAdminNetworkRequest/types/AdminNetworkRequestPayload.ts +10 -0
- package/template/apps/todo/services/admin/views/src/hooks/useAdminNetworkRequest/useAdminNetworkRequest.ts +18 -0
- package/template/apps/todo/services/admin/views/src/index.html +23 -0
- package/template/apps/todo/services/admin/views/src/index.ts +2 -0
- package/template/apps/todo/services/admin/views/src/main.ts +1 -0
- package/template/apps/todo/services/admin/views/tsconfig.app.json +20 -0
- package/template/apps/todo/services/admin/views/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/x-logic/package.json +22 -0
- package/template/apps/todo/services/admin/x-logic/src/index.ts +2 -0
- package/template/apps/todo/services/admin/x-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/admin/x-models/package.json +22 -0
- package/template/apps/todo/services/admin/x-models/src/index.ts +2 -0
- package/template/apps/todo/services/admin/x-models/tsconfig.json +18 -0
- package/template/apps/todo/services/admin/x-models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/auth/config/package.json +22 -0
- package/template/apps/todo/services/auth/config/src/index.ts +2 -0
- package/template/apps/todo/services/auth/config/tsconfig.json +18 -0
- package/template/apps/todo/services/auth/config/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/auth/models/package.json +22 -0
- package/template/apps/todo/services/auth/models/src/index.ts +2 -0
- package/template/apps/todo/services/auth/models/tsconfig.json +18 -0
- package/template/apps/todo/services/auth/models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/auth/service/package.json +9 -0
- package/template/apps/todo/services/auth/service/src/infrastructure.ts +15 -0
- package/template/apps/todo/services/auth/service/tsconfig.app.json +17 -0
- package/template/apps/todo/services/auth/service/tsconfig.json +8 -0
- package/template/apps/todo/services/auth/service-utils/package.json +22 -0
- package/template/apps/todo/services/auth/service-utils/src/index.ts +2 -0
- package/template/apps/todo/services/auth/service-utils/tsconfig.json +18 -0
- package/template/apps/todo/services/auth/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/auth/shared-logic/package.json +22 -0
- package/template/apps/todo/services/auth/shared-logic/src/index.ts +2 -0
- package/template/apps/todo/services/auth/shared-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/auth/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/auth/x-logic/package.json +22 -0
- package/template/apps/todo/services/auth/x-logic/src/index.ts +2 -0
- package/template/apps/todo/services/auth/x-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/auth/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/auth/x-models/package.json +22 -0
- package/template/apps/todo/services/auth/x-models/src/index.ts +2 -0
- package/template/apps/todo/services/auth/x-models/tsconfig.json +18 -0
- package/template/apps/todo/services/auth/x-models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/design/config/package.json +22 -0
- package/template/apps/todo/services/design/config/src/index.ts +2 -0
- package/template/apps/todo/services/design/config/tsconfig.json +18 -0
- package/template/apps/todo/services/design/config/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/design/models/package.json +22 -0
- package/template/apps/todo/services/design/models/src/index.ts +2 -0
- package/template/apps/todo/services/design/models/tsconfig.json +18 -0
- package/template/apps/todo/services/design/models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/design/service/package.json +9 -0
- package/template/apps/todo/services/design/service/src/infrastructure.ts +15 -0
- package/template/apps/todo/services/design/service/tsconfig.app.json +17 -0
- package/template/apps/todo/services/design/service/tsconfig.json +8 -0
- package/template/apps/todo/services/design/service-utils/package.json +22 -0
- package/template/apps/todo/services/design/service-utils/src/index.ts +2 -0
- package/template/apps/todo/services/design/service-utils/tsconfig.json +18 -0
- package/template/apps/todo/services/design/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/design/shared-logic/package.json +22 -0
- package/template/apps/todo/services/design/shared-logic/src/index.ts +2 -0
- package/template/apps/todo/services/design/shared-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/design/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/design/views/package.json +8 -0
- package/template/apps/todo/services/design/views/src/app.tsx +7 -0
- package/template/apps/todo/services/design/views/src/bootstrap.tsx +14 -0
- package/template/apps/todo/services/design/views/src/components/WelcomeScreen/WelcomeScreen.tsx +85 -0
- package/template/apps/todo/services/design/views/src/index.html +12 -0
- package/template/apps/todo/services/design/views/src/index.ts +1 -0
- package/template/apps/todo/services/design/views/src/main.ts +1 -0
- package/template/apps/todo/services/design/views/tsconfig.app.json +20 -0
- package/template/apps/todo/services/design/views/tsconfig.json +18 -0
- package/template/apps/todo/services/design/x-logic/package.json +22 -0
- package/template/apps/todo/services/design/x-logic/src/index.ts +2 -0
- package/template/apps/todo/services/design/x-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/design/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/design/x-models/package.json +22 -0
- package/template/apps/todo/services/design/x-models/src/index.ts +2 -0
- package/template/apps/todo/services/design/x-models/tsconfig.json +18 -0
- package/template/apps/todo/services/design/x-models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/shell/config/package.json +22 -0
- package/template/apps/todo/services/shell/config/src/index.ts +2 -0
- package/template/apps/todo/services/shell/config/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/config/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/shell/models/package.json +22 -0
- package/template/apps/todo/services/shell/models/src/index.ts +2 -0
- package/template/apps/todo/services/shell/models/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/shell/service/package.json +9 -0
- package/template/apps/todo/services/shell/service/src/entry/controller/health/health.ts +21 -0
- package/template/apps/todo/services/shell/service/src/entry/controller/health/index.ts +1 -0
- package/template/apps/todo/services/shell/service/src/entry/controller/index.ts +1 -0
- package/template/apps/todo/services/shell/service/src/infrastructure.ts +75 -0
- package/template/apps/todo/services/shell/service/tsconfig.app.json +17 -0
- package/template/apps/todo/services/shell/service/tsconfig.json +8 -0
- package/template/apps/todo/services/shell/service-utils/package.json +22 -0
- package/template/apps/todo/services/shell/service-utils/src/index.ts +2 -0
- package/template/apps/todo/services/shell/service-utils/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/shell/shared-logic/package.json +22 -0
- package/template/apps/todo/services/shell/shared-logic/src/index.ts +2 -0
- package/template/apps/todo/services/shell/shared-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/shell/views/package.json +8 -0
- package/template/apps/todo/services/shell/views/src/app.tsx +6 -0
- package/template/apps/todo/services/shell/views/src/bootstrap.tsx +14 -0
- package/template/apps/todo/services/shell/views/src/index.html +19 -0
- package/template/apps/todo/services/shell/views/src/index.ts +1 -0
- package/template/apps/todo/services/shell/views/src/main.ts +1 -0
- package/template/apps/todo/services/shell/views/tsconfig.app.json +20 -0
- package/template/apps/todo/services/shell/views/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/x-logic/package.json +22 -0
- package/template/apps/todo/services/shell/x-logic/src/index.ts +2 -0
- package/template/apps/todo/services/shell/x-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/shell/x-models/package.json +22 -0
- package/template/apps/todo/services/shell/x-models/src/index.ts +2 -0
- package/template/apps/todo/services/shell/x-models/tsconfig.json +18 -0
- package/template/apps/todo/services/shell/x-models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/todo/config/package.json +22 -0
- package/template/apps/todo/services/todo/config/src/index.ts +2 -0
- package/template/apps/todo/services/todo/config/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/config/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/todo/models/package.json +22 -0
- package/template/apps/todo/services/todo/models/src/index.ts +2 -0
- package/template/apps/todo/services/todo/models/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/models/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/todo/service/package.json +9 -0
- package/template/apps/todo/services/todo/service/src/infrastructure.ts +15 -0
- package/template/apps/todo/services/todo/service/tsconfig.app.json +17 -0
- package/template/apps/todo/services/todo/service/tsconfig.json +8 -0
- package/template/apps/todo/services/todo/service-utils/package.json +22 -0
- package/template/apps/todo/services/todo/service-utils/src/index.ts +2 -0
- package/template/apps/todo/services/todo/service-utils/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/service-utils/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/todo/shared-logic/package.json +22 -0
- package/template/apps/todo/services/todo/shared-logic/src/index.ts +2 -0
- package/template/apps/todo/services/todo/shared-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/shared-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/todo/views/package.json +8 -0
- package/template/apps/todo/services/todo/views/src/app.tsx +7 -0
- package/template/apps/todo/services/todo/views/src/bootstrap.tsx +14 -0
- package/template/apps/todo/services/todo/views/src/components/TodoList/TodoList.tsx +132 -0
- package/template/apps/todo/services/todo/views/src/index.html +11 -0
- package/template/apps/todo/services/todo/views/src/index.ts +1 -0
- package/template/apps/todo/services/todo/views/src/main.ts +1 -0
- package/template/apps/todo/services/todo/views/tsconfig.app.json +20 -0
- package/template/apps/todo/services/todo/views/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/x-logic/package.json +22 -0
- package/template/apps/todo/services/todo/x-logic/src/index.ts +2 -0
- package/template/apps/todo/services/todo/x-logic/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/x-logic/tsconfig.lib.json +19 -0
- package/template/apps/todo/services/todo/x-models/package.json +22 -0
- package/template/apps/todo/services/todo/x-models/src/index.ts +2 -0
- package/template/apps/todo/services/todo/x-models/tsconfig.json +18 -0
- package/template/apps/todo/services/todo/x-models/tsconfig.lib.json +19 -0
- package/template/apps/todo/tsconfig.federated.json +13 -0
- package/template/docusaurus/DOCUMENTATION_CHECKLIST.md +499 -0
- package/template/docusaurus/README.md +41 -0
- package/template/docusaurus/blog/2019-05-28-first-blog-post.md +12 -0
- package/template/docusaurus/blog/2019-05-29-long-blog-post.md +44 -0
- package/template/docusaurus/blog/2021-08-01-mdx-blog-post.mdx +24 -0
- package/template/docusaurus/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg +0 -0
- package/template/docusaurus/blog/2021-08-26-welcome/index.md +29 -0
- package/template/docusaurus/blog/authors.yml +25 -0
- package/template/docusaurus/blog/tags.yml +19 -0
- package/template/docusaurus/docs/actions/core/_category_.json +8 -0
- package/template/docusaurus/docs/actions/core/ai/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/ai/ask-ai-prompt-stream.md +96 -0
- package/template/docusaurus/docs/actions/core/ai/ask-ai-prompt.md +121 -0
- package/template/docusaurus/docs/actions/core/array/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/array/ask-array-some.md +54 -0
- package/template/docusaurus/docs/actions/core/array/ask-filter.md +54 -0
- package/template/docusaurus/docs/actions/core/array/ask-flat-map-parallel-batch.md +68 -0
- package/template/docusaurus/docs/actions/core/array/ask-flat-map.md +56 -0
- package/template/docusaurus/docs/actions/core/array/ask-map-parallel-batch.md +67 -0
- package/template/docusaurus/docs/actions/core/array/ask-map-parallel.md +57 -0
- package/template/docusaurus/docs/actions/core/array/ask-map.md +58 -0
- package/template/docusaurus/docs/actions/core/array/ask-reduce.md +57 -0
- package/template/docusaurus/docs/actions/core/binary-data/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/binary-data/ask-create-text-qpq-binary-data.md +86 -0
- package/template/docusaurus/docs/actions/core/claude-ai/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/claude-ai/ask-claude-ai-messages-api.md +70 -0
- package/template/docusaurus/docs/actions/core/config/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-get-application-info.md +42 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-get-global.md +52 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-get-parameter.md +52 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-get-parameters.md +49 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-get-secret.md +54 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-list-parameters.md +46 -0
- package/template/docusaurus/docs/actions/core/config/ask-config-set-parameter.md +51 -0
- package/template/docusaurus/docs/actions/core/config/ask-get-application-version.md +39 -0
- package/template/docusaurus/docs/actions/core/context/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/context/ask-context-provide-value.md +78 -0
- package/template/docusaurus/docs/actions/core/context/ask-context-read.md +96 -0
- package/template/docusaurus/docs/actions/core/date/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/date/ask-date-now.md +50 -0
- package/template/docusaurus/docs/actions/core/date/ask-get-current-epoch-ms.md +45 -0
- package/template/docusaurus/docs/actions/core/date/ask-get-current-epoch.md +45 -0
- package/template/docusaurus/docs/actions/core/date/ask-get-epoch-start-time.md +40 -0
- package/template/docusaurus/docs/actions/core/date/ask-seconds-elapsed-from.md +52 -0
- package/template/docusaurus/docs/actions/core/date/date-time-math.md +112 -0
- package/template/docusaurus/docs/actions/core/error/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/error/ask-throw-error.md +115 -0
- package/template/docusaurus/docs/actions/core/event/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/event/ask-process-event.md +77 -0
- package/template/docusaurus/docs/actions/core/event-bus/_category_.json +1 -0
- package/template/docusaurus/docs/actions/core/event-bus/ask-event-bus-send-messages.md +104 -0
- package/template/docusaurus/docs/actions/core/file/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-delete.md +69 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-exists.md +68 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-generate-temporary-secure-url.md +75 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-generate-temporary-upload-secure-url.md +91 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-is-cold-storage.md +72 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-list-directory.md +97 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-read-binary-contents.md +78 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-read-object-json.md +72 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-read-text-contents.md +69 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-stream-open.md +102 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-write-binary-contents.md +98 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-write-object-json.md +83 -0
- package/template/docusaurus/docs/actions/core/file/ask-file-write-text-contents.md +69 -0
- package/template/docusaurus/docs/actions/core/graph-database/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/graph-database/ask-graph-database-execute-open-cypher-query.md +164 -0
- package/template/docusaurus/docs/actions/core/graph-database/ask-graph-database-internal-field-names.md +64 -0
- package/template/docusaurus/docs/actions/core/guid/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/guid/ask-new-guid.md +45 -0
- package/template/docusaurus/docs/actions/core/guid/ask-new-sortable-guid.md +49 -0
- package/template/docusaurus/docs/actions/core/inline-function/_category_.json +1 -0
- package/template/docusaurus/docs/actions/core/inline-function/ask-inline-function-execute.md +66 -0
- package/template/docusaurus/docs/actions/core/json/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/json/ask-decode-json.md +76 -0
- package/template/docusaurus/docs/actions/core/key-value-store/_category_.json +1 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-delete.md +57 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-get-all.md +60 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-get.md +73 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-query-all.md +58 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-query-single.md +62 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-query.md +129 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-scan-all.md +56 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-scan.md +71 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-update-partial-properties.md +75 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-update.md +106 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-upsert-with-retry.md +65 -0
- package/template/docusaurus/docs/actions/core/key-value-store/ask-key-value-store-upsert.md +71 -0
- package/template/docusaurus/docs/actions/core/log/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/log/ask-log-create.md +64 -0
- package/template/docusaurus/docs/actions/core/log/ask-log-disable-event-history.md +53 -0
- package/template/docusaurus/docs/actions/core/log/ask-log-template-literal.md +55 -0
- package/template/docusaurus/docs/actions/core/math/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/math/ask-random-number.md +46 -0
- package/template/docusaurus/docs/actions/core/metric/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/metric/ask-metric-put.md +67 -0
- package/template/docusaurus/docs/actions/core/network/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/network/ask-network-request.md +95 -0
- package/template/docusaurus/docs/actions/core/platform/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/platform/ask-delay.md +48 -0
- package/template/docusaurus/docs/actions/core/queue/_category_.json +1 -0
- package/template/docusaurus/docs/actions/core/queue/ask-queue-send-messages.md +89 -0
- package/template/docusaurus/docs/actions/core/state/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/state/ask-reduce-state.md +160 -0
- package/template/docusaurus/docs/actions/core/state/ask-state-dispatch.md +87 -0
- package/template/docusaurus/docs/actions/core/state/ask-state-read.md +45 -0
- package/template/docusaurus/docs/actions/core/stream/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/stream/ask-stream-close.md +56 -0
- package/template/docusaurus/docs/actions/core/stream/ask-stream-map.md +73 -0
- package/template/docusaurus/docs/actions/core/stream/ask-stream-process.md +57 -0
- package/template/docusaurus/docs/actions/core/stream/ask-stream-read.md +140 -0
- package/template/docusaurus/docs/actions/core/system/_category_.json +7 -0
- package/template/docusaurus/docs/actions/core/system/ask-batch.md +55 -0
- package/template/docusaurus/docs/actions/core/system/ask-catch.md +85 -0
- package/template/docusaurus/docs/actions/core/system/ask-execute-if.md +51 -0
- package/template/docusaurus/docs/actions/core/system/ask-execute-story.md +56 -0
- package/template/docusaurus/docs/actions/core/system/ask-get-runtime-correlation.md +46 -0
- package/template/docusaurus/docs/actions/core/system/ask-override-actions.md +76 -0
- package/template/docusaurus/docs/actions/core/system/ask-parallel-deprecated.md +55 -0
- package/template/docusaurus/docs/actions/core/system/ask-retry.md +72 -0
- package/template/docusaurus/docs/actions/core/system/ask-run-parallel.md +62 -0
- package/template/docusaurus/docs/actions/core/user-directory/_category_.json +1 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-associate-software-token.md +73 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-authenticate-user.md +124 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-change-password.md +55 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-confirm-email-verification.md +52 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-confirm-forgot-password.md +58 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-create-user.md +72 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-decode-access-token.md +73 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-forgot-password.md +66 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-get-user-attributes-by-user-id.md +53 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-get-user-attributes.md +78 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-get-users-by-attribute.md +59 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-get-users.md +71 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-read-access-token.md +52 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-refresh-token.md +53 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-request-email-verification.md +53 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-respond-to-auth-challenge.md +124 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-set-access-token.md +52 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-set-password.md +55 -0
- package/template/docusaurus/docs/actions/core/user-directory/ask-user-directory-set-user-attributes.md +60 -0
- package/template/docusaurus/docs/actions/features/_category_.json +1 -0
- package/template/docusaurus/docs/actions/features/event-doc/_category_.json +1 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-append-server-event.md +65 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-create.md +112 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-event-append.md +97 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-event-list.md +116 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-event-write.md +50 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-generate-asset-upload-url.md +127 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-get-by-code.md +97 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-get-by-id.md +121 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-get-draft.md +109 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-list.md +53 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-provide-store.md +160 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-resolve-actor.md +107 -0
- package/template/docusaurus/docs/actions/features/event-doc/ask-event-doc-soft-delete.md +69 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/_category_.json +1 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/active-chat-state.md +153 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-attachments-validate.md +63 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-chat-history-load.md +95 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-chat-list.md +91 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-chat-requests.md +93 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-context-read.md +84 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-load-chats.md +37 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-new-chat.md +43 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-process-send.md +70 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-select-chat.md +42 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-send-message.md +52 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/ask-event-doc-ai-service-request.md +53 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/chat-list-state.md +179 -0
- package/template/docusaurus/docs/actions/features/event-doc-ai/streaming-and-status-state.md +168 -0
- package/template/docusaurus/docs/actions/features/validation/_category_.json +1 -0
- package/template/docusaurus/docs/actions/features/validation/ask-validate-model-or-throw-error.md +73 -0
- package/template/docusaurus/docs/actions/webserver/_category_.json +8 -0
- package/template/docusaurus/docs/actions/webserver/admin/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/admin/ask-admin-get-log-metadata-children.md +62 -0
- package/template/docusaurus/docs/actions/webserver/admin/ask-admin-get-log-metadata.md +67 -0
- package/template/docusaurus/docs/actions/webserver/admin/ask-admin-get-log.md +84 -0
- package/template/docusaurus/docs/actions/webserver/admin/ask-admin-get-logs.md +96 -0
- package/template/docusaurus/docs/actions/webserver/api-key-validation/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/api-key-validation/ask-api-key-validation-validate.md +63 -0
- package/template/docusaurus/docs/actions/webserver/dns/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/dns/ask-dns-list.md +37 -0
- package/template/docusaurus/docs/actions/webserver/generic-data-resource/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/generic-data-resource/ask-put-generic-data-resource.md +48 -0
- package/template/docusaurus/docs/actions/webserver/generic-data-resource/ask-scan-generic-data-resource.md +49 -0
- package/template/docusaurus/docs/actions/webserver/open-api-spec/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/open-api-spec/ask-get-open-api-spec.md +43 -0
- package/template/docusaurus/docs/actions/webserver/route-auth-validation/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/route-auth-validation/ask-route-auth-validation-decode.md +65 -0
- package/template/docusaurus/docs/actions/webserver/service/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/service/ask-service-request.md +69 -0
- package/template/docusaurus/docs/actions/webserver/service-function/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/service-function/ask-service-function-execute.md +58 -0
- package/template/docusaurus/docs/actions/webserver/web-entry/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/web-entry/ask-web-entry-invalidate-cache.md +53 -0
- package/template/docusaurus/docs/actions/webserver/websocket/_category_.json +1 -0
- package/template/docusaurus/docs/actions/webserver/websocket/ask-websocket-send-message.md +71 -0
- package/template/docusaurus/docs/actions/xstate/_category_.json +1 -0
- package/template/docusaurus/docs/actions/xstate/ask-state-machine-create.md +60 -0
- package/template/docusaurus/docs/actions/xstate/ask-state-machine-get-state.md +65 -0
- package/template/docusaurus/docs/actions/xstate/ask-state-machine-get.md +57 -0
- package/template/docusaurus/docs/actions/xstate/ask-state-machine-send-event.md +69 -0
- package/template/docusaurus/docs/api/index.md +17 -0
- package/template/docusaurus/docs/architecture-overview.md +690 -0
- package/template/docusaurus/docs/config/config-aws/_category_.json +1 -0
- package/template/docusaurus/docs/config/config-aws/account-budget.md +117 -0
- package/template/docusaurus/docs/config/config-aws/account-cloud-trail.md +75 -0
- package/template/docusaurus/docs/config/config-aws/account-security-services.md +91 -0
- package/template/docusaurus/docs/config/config-aws/aws-alarm.md +142 -0
- package/template/docusaurus/docs/config/config-aws/aws-data-store-removal-policy.md +68 -0
- package/template/docusaurus/docs/config/config-aws/aws-dyanmo-override-for-kvs.md +70 -0
- package/template/docusaurus/docs/config/config-aws/aws-kms-key.md +100 -0
- package/template/docusaurus/docs/config/config-aws/aws-service-account-info.md +114 -0
- package/template/docusaurus/docs/config/config-aws/aws-service-dashboard.md +61 -0
- package/template/docusaurus/docs/config/config-aws/aws-virtual-network-settings.md +88 -0
- package/template/docusaurus/docs/config/config-aws/bootstrap-aws-organization.md +80 -0
- package/template/docusaurus/docs/config/config-aws/bootstrap-waf.md +106 -0
- package/template/docusaurus/docs/config/config-aws/domain-certificate.md +69 -0
- package/template/docusaurus/docs/config/config-aws/event-bus-quick-subscription.md +84 -0
- package/template/docusaurus/docs/config/config-aws/waf-protection.md +45 -0
- package/template/docusaurus/docs/config/core/_category_.json +8 -0
- package/template/docusaurus/docs/config/core/action-processors.md +65 -0
- package/template/docusaurus/docs/config/core/ai.md +80 -0
- package/template/docusaurus/docs/config/core/api-build-path.md +40 -0
- package/template/docusaurus/docs/config/core/application-module.md +58 -0
- package/template/docusaurus/docs/config/core/application-name.md +66 -0
- package/template/docusaurus/docs/config/core/application-version.md +58 -0
- package/template/docusaurus/docs/config/core/claude-ai.md +52 -0
- package/template/docusaurus/docs/config/core/config-value.md +38 -0
- package/template/docusaurus/docs/config/core/deploy-event.md +94 -0
- package/template/docusaurus/docs/config/core/environment-settings.md +67 -0
- package/template/docusaurus/docs/config/core/event-bus.md +88 -0
- package/template/docusaurus/docs/config/core/federated-module-store.md +61 -0
- package/template/docusaurus/docs/config/core/global.md +43 -0
- package/template/docusaurus/docs/config/core/graph-database.md +72 -0
- package/template/docusaurus/docs/config/core/inline-function.md +61 -0
- package/template/docusaurus/docs/config/core/javascript-runtime.md +79 -0
- package/template/docusaurus/docs/config/core/key-value-store.md +135 -0
- package/template/docusaurus/docs/config/core/module-name.md +46 -0
- package/template/docusaurus/docs/config/core/notify-error.md +97 -0
- package/template/docusaurus/docs/config/core/parameter.md +53 -0
- package/template/docusaurus/docs/config/core/promise-mode.md +39 -0
- package/template/docusaurus/docs/config/core/queue.md +112 -0
- package/template/docusaurus/docs/config/core/recurring-schedule.md +117 -0
- package/template/docusaurus/docs/config/core/secret.md +51 -0
- package/template/docusaurus/docs/config/core/service-settings.md +49 -0
- package/template/docusaurus/docs/config/core/storage-drive.md +142 -0
- package/template/docusaurus/docs/config/core/user-directory.md +189 -0
- package/template/docusaurus/docs/config/core/virtual-network.md +60 -0
- package/template/docusaurus/docs/config/features/_category_.json +1 -0
- package/template/docusaurus/docs/config/features/admin-session-event-doc.md +47 -0
- package/template/docusaurus/docs/config/features/admin-settings.md +106 -0
- package/template/docusaurus/docs/config/features/admin-user-directory.md +57 -0
- package/template/docusaurus/docs/config/features/event-doc-ai.md +104 -0
- package/template/docusaurus/docs/config/features/event-doc-routes.md +100 -0
- package/template/docusaurus/docs/config/features/event-doc-summary.md +59 -0
- package/template/docusaurus/docs/config/features/event-doc.md +75 -0
- package/template/docusaurus/docs/config/features/versioned-route.md +85 -0
- package/template/docusaurus/docs/config/neo4j/_category_.json +1 -0
- package/template/docusaurus/docs/config/neo4j/graph-database-neo4j.md +122 -0
- package/template/docusaurus/docs/config/webserver/_category_.json +8 -0
- package/template/docusaurus/docs/config/webserver/api-key.md +87 -0
- package/template/docusaurus/docs/config/webserver/api.md +75 -0
- package/template/docusaurus/docs/config/webserver/auth-system.md +110 -0
- package/template/docusaurus/docs/config/webserver/cache.md +94 -0
- package/template/docusaurus/docs/config/webserver/certificate.md +64 -0
- package/template/docusaurus/docs/config/webserver/default-route-options.md +77 -0
- package/template/docusaurus/docs/config/webserver/dns.md +57 -0
- package/template/docusaurus/docs/config/webserver/domain-proxy.md +109 -0
- package/template/docusaurus/docs/config/webserver/file-upload-settings.md +63 -0
- package/template/docusaurus/docs/config/webserver/migration.md +83 -0
- package/template/docusaurus/docs/config/webserver/open-api.md +36 -0
- package/template/docusaurus/docs/config/webserver/route.md +109 -0
- package/template/docusaurus/docs/config/webserver/seed.md +61 -0
- package/template/docusaurus/docs/config/webserver/seo.md +72 -0
- package/template/docusaurus/docs/config/webserver/service-function.md +69 -0
- package/template/docusaurus/docs/config/webserver/state-dispatch-over-websockets.md +42 -0
- package/template/docusaurus/docs/config/webserver/storage-drive-cors-settings.md +73 -0
- package/template/docusaurus/docs/config/webserver/subdomain-redirect.md +80 -0
- package/template/docusaurus/docs/config/webserver/web-entry.md +150 -0
- package/template/docusaurus/docs/config/webserver/web-socket-queue.md +88 -0
- package/template/docusaurus/docs/config/webserver/websocket.md +110 -0
- package/template/docusaurus/docs/config/xstate/_category_.json +1 -0
- package/template/docusaurus/docs/config/xstate/state-machine.md +201 -0
- package/template/docusaurus/docs/core-concepts.md +23 -0
- package/template/docusaurus/docs/getting-started.md +806 -0
- package/template/docusaurus/docs/index.md +211 -0
- package/template/docusaurus/docs/intro.md +47 -0
- package/template/docusaurus/docs/tutorial-basics/_category_.json +8 -0
- package/template/docusaurus/docs/tutorial-basics/congratulations.md +23 -0
- package/template/docusaurus/docs/tutorial-basics/create-a-blog-post.md +34 -0
- package/template/docusaurus/docs/tutorial-basics/create-a-document.md +57 -0
- package/template/docusaurus/docs/tutorial-basics/create-a-page.md +43 -0
- package/template/docusaurus/docs/tutorial-basics/deploy-your-site.md +31 -0
- package/template/docusaurus/docs/tutorial-basics/markdown-features.mdx +152 -0
- package/template/docusaurus/docs/tutorial-extras/_category_.json +7 -0
- package/template/docusaurus/docs/tutorial-extras/img/docsVersionDropdown.png +0 -0
- package/template/docusaurus/docs/tutorial-extras/img/localeDropdown.png +0 -0
- package/template/docusaurus/docs/tutorial-extras/manage-docs-versions.md +55 -0
- package/template/docusaurus/docs/tutorial-extras/translate-your-site.md +88 -0
- package/template/docusaurus/docs/use-cases.md +455 -0
- package/template/docusaurus/docusaurus.config.ts +181 -0
- package/template/docusaurus/gitignore +20 -0
- package/template/docusaurus/package.json +49 -0
- package/template/docusaurus/sidebars.ts +27 -0
- package/template/docusaurus/src/components/HomepageFeatures/index.tsx +72 -0
- package/template/docusaurus/src/components/HomepageFeatures/styles.module.css +11 -0
- package/template/docusaurus/src/css/custom.css +423 -0
- package/template/docusaurus/src/pages/index.module.css +23 -0
- package/template/docusaurus/static/.nojekyll +0 -0
- package/template/docusaurus/static/img/docusaurus-social-card.jpg +0 -0
- package/template/docusaurus/static/img/docusaurus.png +0 -0
- package/template/docusaurus/static/img/favicon.ico +0 -0
- package/template/docusaurus/static/img/favicon.svg +4 -0
- package/template/docusaurus/static/img/logo.svg +1 -0
- package/template/docusaurus/static/img/qpq-logo.svg +4 -0
- package/template/docusaurus/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/template/docusaurus/static/img/undraw_docusaurus_react.svg +170 -0
- package/template/docusaurus/static/img/undraw_docusaurus_tree.svg +40 -0
- package/template/docusaurus/tsconfig.json +8 -0
- package/template/eslint.config.mjs +3 -0
- package/template/gitignore +116 -0
- package/template/package.json +126 -0
- package/template/tsconfig.base.json +23 -0
- package/template/tsconfig.json +16 -0
- package/template/types/assets.d.ts +3 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineAwsServiceAccountInfo
|
|
3
|
+
description: Bind a service to the AWS account and region it deploys to, and tune its Lambda/logging defaults.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineAwsServiceAccountInfo
|
|
7
|
+
|
|
8
|
+
Binds this service to the **AWS account and region** it deploys into, and carries service-wide Lambda and logging defaults. It is the one required AWS setting — the deploy reads the target account/region from here, and cross-module resolution uses the `serviceInfoMap` to locate sibling services in other accounts/regions/environments. Exactly one `defineAwsServiceAccountInfo` is allowed per config.
|
|
9
|
+
|
|
10
|
+
- **On AWS:** consumed throughout `quidproquo-deploy-awscdk` and `quidproquo-actionprocessor-awslambda` via `getAwsServiceAccountInfoConfig` and friends. `deployAccountId`/`deployRegion` set the CloudFormation stack env; `apiLayers` become Lambda layer references; `lambdaMaxMemoryInMiB` sets the default function memory; the `disable*` flags toggle X-Ray tracing, reserved concurrency, and the Lambda-warming schedule; `logServiceName`, `disableLogs`, and `instantLogs` drive the logging pipeline. Resources across the `serviceInfoMap` are matched by module/environment/feature/application to resolve cross-service references.
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { defineAwsServiceAccountInfo } from 'quidproquo-config-aws';
|
|
14
|
+
|
|
15
|
+
export default [
|
|
16
|
+
defineAwsServiceAccountInfo('123456789012', 'us-east-1'),
|
|
17
|
+
];
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Signature
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
function defineAwsServiceAccountInfo(
|
|
24
|
+
deployAccountId: string,
|
|
25
|
+
deployRegion: string,
|
|
26
|
+
serviceInfoMap?: ServiceAccountInfo[],
|
|
27
|
+
options?: QPQConfigAdvancedAwsServiceAccountInfoSettings,
|
|
28
|
+
): AwsServiceAccountInfoQPQConfigSetting;
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Parameters
|
|
32
|
+
|
|
33
|
+
### `deployAccountId` — `string` (required)
|
|
34
|
+
|
|
35
|
+
The AWS account id this service deploys into. Sets the CloudFormation stack account and is the default account for the service's own resources.
|
|
36
|
+
|
|
37
|
+
### `deployRegion` — `string` (required)
|
|
38
|
+
|
|
39
|
+
The AWS region this service deploys into.
|
|
40
|
+
|
|
41
|
+
### `serviceInfoMap` — `ServiceAccountInfo[]` (optional, default `[]`)
|
|
42
|
+
|
|
43
|
+
The account/region (and environment/feature) coordinates of **other** services this one references, so cross-module resource lookups can resolve resources that live in different accounts, regions, environments, or features. The current service's own entry is added automatically. Each entry:
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
type ServiceAccountInfo = {
|
|
47
|
+
moduleName: string;
|
|
48
|
+
applicationName?: string;
|
|
49
|
+
environment?: string;
|
|
50
|
+
feature?: string;
|
|
51
|
+
awsAccountId: string;
|
|
52
|
+
awsRegion: string;
|
|
53
|
+
};
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- **`moduleName`** — the module (service) name being located.
|
|
57
|
+
- **`applicationName` / `environment` / `feature`** — optional narrowing; unset parts match the current service. Cross-service resolution scores candidates by how specifically they match.
|
|
58
|
+
- **`awsAccountId` / `awsRegion`** — where that module is deployed.
|
|
59
|
+
|
|
60
|
+
### `options` — `QPQConfigAdvancedAwsServiceAccountInfoSettings` (optional)
|
|
61
|
+
|
|
62
|
+
| Property | Type | Default | Description |
|
|
63
|
+
| --- | --- | --- | --- |
|
|
64
|
+
| `apiLayers` | `ApiLayer[]` | `[]` | Lambda layers to attach to the service's functions. See [ApiLayer](#apilayer). |
|
|
65
|
+
| `lambdaMaxMemoryInMiB` | `number` | `1024` | Default memory (MiB) for the service's Lambda functions. Individual functions may still override this. |
|
|
66
|
+
| `logServiceName` | `string` | – | The service name used when writing structured logs. |
|
|
67
|
+
| `disableLogs` | `boolean` | `false` | Turn off the log-shipping pipeline for the service. |
|
|
68
|
+
| `disableLambdaWarming` | `boolean` | `false` | Don't create the scheduled warming rule that keeps functions warm. |
|
|
69
|
+
| `disableReservedConcurrency` | `boolean` | `false` | Don't apply reserved concurrency to functions (leaves them on unreserved account concurrency). |
|
|
70
|
+
| `disableTracing` | `boolean` | `false` | Deploy functions with X-Ray tracing set to `DISABLED` instead of `ACTIVE`. |
|
|
71
|
+
| `instantLogs` | `boolean` | `false` | Flush logs immediately rather than batching them (higher cost/visibility trade-off). |
|
|
72
|
+
|
|
73
|
+
### `ApiLayer`
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
interface ApiLayer {
|
|
77
|
+
buildPath?: string;
|
|
78
|
+
name: string;
|
|
79
|
+
layerArn?: string;
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- **`name`** — identifier for the layer.
|
|
84
|
+
- **`buildPath`** — optional local path to build the layer from.
|
|
85
|
+
- **`layerArn`** — optional ARN of an existing published layer to reference.
|
|
86
|
+
|
|
87
|
+
## Examples
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { defineAwsServiceAccountInfo } from 'quidproquo-config-aws';
|
|
91
|
+
|
|
92
|
+
export default [
|
|
93
|
+
// Minimal: just the deploy target
|
|
94
|
+
defineAwsServiceAccountInfo('123456789012', 'us-east-1'),
|
|
95
|
+
|
|
96
|
+
// With a sibling service in another account and some tuning
|
|
97
|
+
defineAwsServiceAccountInfo(
|
|
98
|
+
'123456789012',
|
|
99
|
+
'us-east-1',
|
|
100
|
+
[
|
|
101
|
+
{ moduleName: 'billing-service', awsAccountId: '210987654321', awsRegion: 'us-east-1' },
|
|
102
|
+
],
|
|
103
|
+
{
|
|
104
|
+
lambdaMaxMemoryInMiB: 2048,
|
|
105
|
+
disableLambdaWarming: true,
|
|
106
|
+
},
|
|
107
|
+
),
|
|
108
|
+
];
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Related
|
|
112
|
+
|
|
113
|
+
- [defineAwsServiceDashboard](./aws-service-dashboard.md) and [defineAwsAlarm](./aws-alarm.md) — operational monitoring for the service defined here.
|
|
114
|
+
- [defineAwsVirtualNetworkSettings](./aws-virtual-network-settings.md) — VPC tuning for the same service.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineAwsServiceDashboard
|
|
3
|
+
description: Deploy a ready-made operational CloudWatch dashboard for the service, with anomaly detection.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineAwsServiceDashboard
|
|
7
|
+
|
|
8
|
+
Adds a default operational **CloudWatch dashboard** for this service — a single, config-derived view of its API traffic/errors/latency, Lambda invocations/errors/duration/concurrency, DynamoDB throttles/capacity, queue depth, and WAF allowed/blocked counts. It also enables anomaly detection on API latency and Lambda duration, with latency anomaly alarms routed the same way as the default per-resource alarms. Declare it on a service you want to watch operationally.
|
|
9
|
+
|
|
10
|
+
- **On AWS:** deploys an `aws_cloudwatch.Dashboard` (`QpqConfigAwsDashboardConstruct` in `quidproquo-deploy-awscdk`). Widgets are built purely from config-derived resource names — API routes, service functions, queue consumers, schedules, and websocket handler Lambdas (infra Lambdas like deploy-event and storage-drive triggers are deliberately excluded). Unless disabled, it also creates anomaly-detector models (free) on API latency and Lambda duration to power the band widgets, plus API latency anomaly alarms that route via [`defineNotifyError`](../core/notify-error.md) (same opt-in and targets as the default resource alarms). Websocket APIs are absent from the metric widgets because their metrics dimension on the AWS-generated API id, which isn't knowable from config.
|
|
11
|
+
|
|
12
|
+
:::note Cost
|
|
13
|
+
CloudWatch dashboards are roughly US$3/month each beyond the first 3 free per account, so a dashboard per service adds up. Declare this only on services worth watching.
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
import { defineAwsServiceDashboard } from 'quidproquo-config-aws';
|
|
18
|
+
|
|
19
|
+
export default [
|
|
20
|
+
defineAwsServiceDashboard(),
|
|
21
|
+
];
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Signature
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
function defineAwsServiceDashboard(
|
|
28
|
+
options?: Omit<AwsServiceDashboardQPQConfigSetting, 'configSettingType' | 'uniqueKey'>,
|
|
29
|
+
): AwsServiceDashboardQPQConfigSetting;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Parameters
|
|
33
|
+
|
|
34
|
+
### `options` (optional)
|
|
35
|
+
|
|
36
|
+
| Property | Type | Default | Description |
|
|
37
|
+
| --- | --- | --- | --- |
|
|
38
|
+
| `disableAnomalyDetection` | `boolean` | `false` | Skip the anomaly-detector models, the anomaly-band widgets, and the API latency anomaly alarms. The rest of the dashboard (plain metric widgets) is still deployed. |
|
|
39
|
+
|
|
40
|
+
:::note
|
|
41
|
+
This is a single, service-wide setting (its `uniqueKey` is fixed) — declare it at most once per service.
|
|
42
|
+
:::
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { defineAwsServiceDashboard } from 'quidproquo-config-aws';
|
|
48
|
+
|
|
49
|
+
export default [
|
|
50
|
+
// Full dashboard with anomaly detection
|
|
51
|
+
defineAwsServiceDashboard(),
|
|
52
|
+
|
|
53
|
+
// Dashboard without the anomaly-detection models, bands, and alarms
|
|
54
|
+
defineAwsServiceDashboard({ disableAnomalyDetection: true }),
|
|
55
|
+
];
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Related
|
|
59
|
+
|
|
60
|
+
- [defineAwsAlarm](./aws-alarm.md) — declare an additional custom alarm on a specific metric.
|
|
61
|
+
- [defineNotifyError](../core/notify-error.md) — the routing target the dashboard's latency anomaly alarms use.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineAwsVirtualNetworkSettings
|
|
3
|
+
description: Tune the AWS VPC (AZs, NAT, endpoints, flow logs) that backs a core virtual network.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineAwsVirtualNetworkSettings
|
|
7
|
+
|
|
8
|
+
Tunes the AWS **VPC** that backs a core [`defineVirtualNetwork(name)`](../core/virtual-network.md). The core define declares the network provider-agnostically; this AWS setting layers on the concrete VPC knobs — availability zones, NAT gateways, gateway/interface endpoints, and flow logs. It is secure-by-default: even when you never declare it, VPCs get flow logs to CloudWatch and the free S3/DynamoDB gateway endpoints. Declare it (keyed by the same network name) only to opt out of a default or to add interface endpoints / NAT / AZ overrides.
|
|
9
|
+
|
|
10
|
+
- **On AWS:** resolved by `getAwsVirtualNetworkSettings` (falling back to defaults when absent) and applied by `BootstrapQpqCoreVirtualNetworkConstruct` in `quidproquo-deploy-awscdk`. It sets the VPC's `maxAzs` and `natGateways`, adds S3 and DynamoDB gateway endpoints unless disabled, adds any requested interface endpoints (one ENI per AZ, private DNS on), and — unless disabled — creates a flow-log group at `/qpq/vpc-flow-logs/{vpcName}` with the requested retention and traffic type.
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { defineVirtualNetwork } from 'quidproquo-core';
|
|
14
|
+
import { defineAwsVirtualNetworkSettings } from 'quidproquo-config-aws';
|
|
15
|
+
|
|
16
|
+
export default [
|
|
17
|
+
defineVirtualNetwork('private-net'),
|
|
18
|
+
|
|
19
|
+
// Cheaper non-prod VPC: a single NAT gateway
|
|
20
|
+
defineAwsVirtualNetworkSettings('private-net', {
|
|
21
|
+
natGateways: 1,
|
|
22
|
+
}),
|
|
23
|
+
];
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Signature
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
function defineAwsVirtualNetworkSettings(
|
|
30
|
+
virtualNetworkName: string,
|
|
31
|
+
options?: QPQConfigAdvancedAwsVirtualNetworkSettings,
|
|
32
|
+
): AwsVirtualNetworkQPQConfigSetting;
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Parameters
|
|
36
|
+
|
|
37
|
+
### `virtualNetworkName` — `string` (required)
|
|
38
|
+
|
|
39
|
+
The name of the core virtual network these settings apply to — it must match the name passed to `defineVirtualNetwork`. This is also the setting's `uniqueKey`.
|
|
40
|
+
|
|
41
|
+
### `options` — `QPQConfigAdvancedAwsVirtualNetworkSettings` (optional)
|
|
42
|
+
|
|
43
|
+
| Property | Type | Default | Description |
|
|
44
|
+
| --- | --- | --- | --- |
|
|
45
|
+
| `flowLogs` | `AwsVirtualNetworkFlowLogSettings` | flow logs on | VPC flow-log configuration. See [Flow logs](#flow-logs). |
|
|
46
|
+
| `disableS3GatewayEndpoint` | `boolean` | `false` | Skip the free S3 gateway endpoint. Only disable if you have custom route-table requirements. |
|
|
47
|
+
| `disableDynamoDbGatewayEndpoint` | `boolean` | `false` | Skip the free DynamoDB gateway endpoint. |
|
|
48
|
+
| `interfaceEndpoints` | `string[]` | `[]` | AWS service short names to add interface endpoints for, e.g. `['secretsmanager', 'kms']` — resolved to `com.amazonaws.{region}.{name}`. Each costs roughly US$7.30/mo per AZ (~$14.60/mo at the default `maxAzs` 2) plus $0.01/GB, in exchange for that service's traffic never leaving the VPC (and not being billed through NAT). |
|
|
49
|
+
| `natGateways` | `number` | CDK default (one per AZ) | Number of NAT gateways. `undefined` leaves the CDK default untouched (no subnet/NAT churn on already-deployed VPCs). Set to `1` to halve cost in non-prod (trading AZ redundancy for egress). **`0` is rejected** — qpq Lambdas are placed in `PRIVATE_WITH_EGRESS` subnets, which don't exist in a NAT-less VPC (passing `0` throws). Changing this on a deployed VPC replaces its subnets. |
|
|
50
|
+
| `maxAzs` | `number` | `2` | Number of availability zones. Changing this on a deployed VPC replaces its subnets. |
|
|
51
|
+
|
|
52
|
+
### Flow logs
|
|
53
|
+
|
|
54
|
+
`AwsVirtualNetworkFlowLogSettings`:
|
|
55
|
+
|
|
56
|
+
| Property | Type | Default | Description |
|
|
57
|
+
| --- | --- | --- | --- |
|
|
58
|
+
| `disable` | `boolean` | `false` | Turn flow logs off. Flow logs are on unless disabled; CloudWatch ingestion is ~US$0.50/GB (typically cents-to-dollars/month for Lambda-only VPCs). |
|
|
59
|
+
| `retentionDays` | `number` | `365` | CloudWatch log-group retention, rounded **up** to the nearest supported `RetentionDays` value at deploy time. |
|
|
60
|
+
| `trafficType` | `AwsVpcFlowLogTrafficType` | `all` | Which traffic to record. |
|
|
61
|
+
|
|
62
|
+
**`AwsVpcFlowLogTrafficType`:** `all`, `accept`, `reject`.
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
import { defineVirtualNetwork } from 'quidproquo-core';
|
|
68
|
+
import { defineAwsVirtualNetworkSettings, AwsVpcFlowLogTrafficType } from 'quidproquo-config-aws';
|
|
69
|
+
|
|
70
|
+
export default [
|
|
71
|
+
defineVirtualNetwork('data-net'),
|
|
72
|
+
|
|
73
|
+
defineAwsVirtualNetworkSettings('data-net', {
|
|
74
|
+
maxAzs: 3,
|
|
75
|
+
// Keep Secrets Manager & KMS traffic inside the VPC
|
|
76
|
+
interfaceEndpoints: ['secretsmanager', 'kms'],
|
|
77
|
+
flowLogs: {
|
|
78
|
+
retentionDays: 30,
|
|
79
|
+
trafficType: AwsVpcFlowLogTrafficType.reject,
|
|
80
|
+
},
|
|
81
|
+
}),
|
|
82
|
+
];
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Related
|
|
86
|
+
|
|
87
|
+
- [defineVirtualNetwork](../core/virtual-network.md) — the core, provider-agnostic network these settings tune. Declare both, keyed by the same name.
|
|
88
|
+
- [defineGraphDatabase](../core/graph-database.md) — an in-network data store that runs inside the tuned VPC.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineBootstrapAwsOrganization
|
|
3
|
+
description: Bootstrap an AWS Organizations organizational unit and its member accounts.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineBootstrapAwsOrganization
|
|
7
|
+
|
|
8
|
+
Bootstraps an **AWS Organizations organizational unit (OU)** and a set of member AWS accounts placed inside it. Use this when standing up the account/organization structure that your applications will later deploy into.
|
|
9
|
+
|
|
10
|
+
This is an **organization bootstrap setting**: it configures AWS Organizations itself, not a deployed service. It is declared in a bootstrap config and deployed by the bootstrap stack (`BootstrapQpqServiceStack`).
|
|
11
|
+
|
|
12
|
+
- **On AWS:** deploys an `aws_organizations.CfnOrganizationalUnit` under the given root/parent OU, and one `aws_organizations.CfnAccount` per name in `accountNames`, each placed in the new OU. Member accounts are named `<organizationName>-<accountName>`, given a cross-account access role `account-<accountName>-AccessRole`, and assigned a generated `+`-suffixed email derived from `baseEmailAddress` (e.g. `me+<org>-<account>@example.com`). Deployed by `QpqBootstrapConfigAwsOrganizationConstruct`.
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import { defineBootstrapAwsOrganization } from 'quidproquo-config-aws';
|
|
16
|
+
|
|
17
|
+
export default [
|
|
18
|
+
defineBootstrapAwsOrganization(
|
|
19
|
+
'r-abcd', // root/parent OU id
|
|
20
|
+
'aws+billing@example.com', // base email for generated account emails
|
|
21
|
+
'acme', // organization / OU name
|
|
22
|
+
['prod', 'staging', 'dev'],// member account names
|
|
23
|
+
),
|
|
24
|
+
];
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Signature
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
function defineBootstrapAwsOrganization(
|
|
31
|
+
rootAwsOrganizationalUnitId: string,
|
|
32
|
+
baseEmailAddress: string,
|
|
33
|
+
name: string,
|
|
34
|
+
accountNames: string[],
|
|
35
|
+
): AwsOrganizationQPQConfigSetting;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Parameters
|
|
39
|
+
|
|
40
|
+
### `rootAwsOrganizationalUnitId` — `string` (required)
|
|
41
|
+
|
|
42
|
+
The id of the parent OU (typically the organization root, e.g. `r-xxxx`) that the new organizational unit is created under. Also forms part of the setting's `uniqueKey` (`<rootAwsOrganizationalUnitId>-<name>`).
|
|
43
|
+
|
|
44
|
+
### `baseEmailAddress` — `string` (required)
|
|
45
|
+
|
|
46
|
+
A base email address used to generate a unique email for each member account. The construct splits it at `@` and produces `<local>+<organizationName>-<accountName>@<domain>` per account, so every AWS account gets a distinct, deliverable root email from a single mailbox.
|
|
47
|
+
|
|
48
|
+
### `name` — `string` (required)
|
|
49
|
+
|
|
50
|
+
The organization/OU name. Used as the created OU's name, as the prefix for each member account name (`<name>-<accountName>`), and within the generated account emails and the setting's `uniqueKey`.
|
|
51
|
+
|
|
52
|
+
### `accountNames` — `string[]` (required)
|
|
53
|
+
|
|
54
|
+
The member accounts to create inside the OU. Each entry produces one AWS account named `<name>-<accountName>` with an access role `account-<accountName>-AccessRole`.
|
|
55
|
+
|
|
56
|
+
## Notes
|
|
57
|
+
|
|
58
|
+
- Creating AWS accounts via CloudFormation is not reversible in the usual sense — removing an account from `accountNames` does not close the AWS account. Treat this as a one-way bootstrap and manage account lifecycle deliberately.
|
|
59
|
+
- The source additionally sketches (currently commented out) support for per-account user access and an IAM Identity Center (SSO) admin permission set; those are not created by the current implementation.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
import { defineBootstrapAwsOrganization } from 'quidproquo-config-aws';
|
|
65
|
+
|
|
66
|
+
export default [
|
|
67
|
+
defineBootstrapAwsOrganization(
|
|
68
|
+
'r-abcd',
|
|
69
|
+
'aws-ops@example.com',
|
|
70
|
+
'acme',
|
|
71
|
+
['prod', 'staging', 'sandbox'],
|
|
72
|
+
),
|
|
73
|
+
];
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Related
|
|
77
|
+
|
|
78
|
+
- [defineBootstrapWaf](./bootstrap-waf.md) — another bootstrap-phase setting deployed by the same `BootstrapQpqServiceStack`.
|
|
79
|
+
- [defineAccountBudget](./account-budget.md), [defineAccountCloudTrail](./account-cloud-trail.md), [defineAccountSecurityServices](./account-security-services.md) — account-level settings applied per member account (from that account's own account config).
|
|
80
|
+
- **AWS implementation:** `QpqBootstrapConfigAwsOrganizationConstruct` (Organizations OU + member accounts) in `quidproquo-deploy-awscdk`.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineBootstrapWaf
|
|
3
|
+
description: Bootstrap the shared AWS WAF web ACLs (regional + CloudFront) for an app/environment that services opt into.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineBootstrapWaf
|
|
7
|
+
|
|
8
|
+
Bootstraps the **shared AWS WAF (WAFv2) web ACLs** for an app + environment: a REGIONAL web ACL (for API Gateway stages) and a CLOUDFRONT web ACL (for CloudFront distributions). Both evaluate the same set of rules. Individual services then opt into protection with `defineWafProtection` in their config.
|
|
9
|
+
|
|
10
|
+
This is a **bootstrap setting**: it is created once during the bootstrap phase for the whole app/environment rather than per-service. It is declared in a bootstrap config and deployed by the bootstrap stack (`BootstrapQpqServiceStack`). There is a single `defineBootstrapWaf` per config (its `uniqueKey` is the constant `'bootstrapWaf'`).
|
|
11
|
+
|
|
12
|
+
- **On AWS:** deploys two `aws_wafv2.CfnWebACL`s with `defaultAction: allow` and shared rules. The REGIONAL ACL (`qpq-waf-regional-<app>-<env>`) is created by `QpqBootstrapConfigWafConstruct` in the bootstrap stack and publishes its ARN to SSM; each service's API stack attaches via a `WebACLAssociation`. The CLOUDFRONT ACL (`qpq-waf-cloudfront-<app>-<env>`) must live in `us-east-1`, so it is a sibling stack (`WafCloudFrontWebAclStack`) that hands its ARN back to the deploy region via SSM (directly if deploying to `us-east-1`, otherwise via a cross-region `AwsCustomResource`). CloudWatch metrics and sampled requests are enabled on every rule.
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import { defineBootstrapWaf } from 'quidproquo-config-aws';
|
|
16
|
+
|
|
17
|
+
export default [
|
|
18
|
+
defineBootstrapWaf(),
|
|
19
|
+
];
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Signature
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
function defineBootstrapWaf(
|
|
26
|
+
options?: {
|
|
27
|
+
managedRuleGroups?: WafManagedRuleGroup[];
|
|
28
|
+
rateLimits?: WafRateLimit[];
|
|
29
|
+
},
|
|
30
|
+
): BootstrapWafQPQConfigSetting;
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Parameters
|
|
34
|
+
|
|
35
|
+
### `options` — (optional)
|
|
36
|
+
|
|
37
|
+
| Property | Type | Default | Description |
|
|
38
|
+
| --- | --- | --- | --- |
|
|
39
|
+
| `managedRuleGroups` | `WafManagedRuleGroup[]` | `[common, knownBadInputs, sqli]` | AWS-managed rule groups to enable, each added as a managed-rule-group statement with `overrideAction: none`. See [`WafManagedRuleGroup`](#wafmanagedrulegroup). |
|
|
40
|
+
| `rateLimits` | `WafRateLimit[]` | `[]` (none) | Rate-based blocking rules (e.g. brute-force throttling on auth endpoints). Evaluated **before** the managed rule groups. See [`WafRateLimit`](#wafratelimit). |
|
|
41
|
+
|
|
42
|
+
### `WafManagedRuleGroup`
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
export enum WafManagedRuleGroup {
|
|
46
|
+
common = 'common', // AWSManagedRulesCommonRuleSet
|
|
47
|
+
knownBadInputs = 'knownBadInputs', // AWSManagedRulesKnownBadInputsRuleSet
|
|
48
|
+
sqli = 'sqli', // AWSManagedRulesSQLiRuleSet
|
|
49
|
+
ipReputation = 'ipReputation', // AWSManagedRulesAmazonIpReputationList
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
| Member | AWS managed rule set |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `common` | `AWSManagedRulesCommonRuleSet` — broad OWASP-style protections. |
|
|
56
|
+
| `knownBadInputs` | `AWSManagedRulesKnownBadInputsRuleSet` — blocks request patterns known to be malicious. |
|
|
57
|
+
| `sqli` | `AWSManagedRulesSQLiRuleSet` — SQL-injection protections. |
|
|
58
|
+
| `ipReputation` | `AWSManagedRulesAmazonIpReputationList` — Amazon IP reputation list. |
|
|
59
|
+
|
|
60
|
+
### `WafRateLimit`
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
export interface WafRateLimit {
|
|
64
|
+
name: string;
|
|
65
|
+
limit: number;
|
|
66
|
+
uriPathStartsWith?: string;
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Property | Type | Description |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| `name` | `string` | Rule name (used to build the WAF rule and metric names, e.g. `rate-limit-<name>`). |
|
|
73
|
+
| `limit` | `number` | Maximum requests per 5-minute window per source IP before that IP is blocked (`aggregateKeyType: IP`). |
|
|
74
|
+
| `uriPathStartsWith` | `string` | Optional. Scope the rate limit to URI paths with this prefix (e.g. `/auth`) via a scope-down byte-match statement. Omit to rate limit all paths. |
|
|
75
|
+
|
|
76
|
+
## Notes
|
|
77
|
+
|
|
78
|
+
- Rate-limit rules are given the lowest priorities (evaluated first as cheap counters), then the managed rule groups follow.
|
|
79
|
+
- To actually apply these ACLs, a service opts in with `defineWafProtection()` in its (shared) service config; the ACL ARNs are resolved by convention from SSM at deploy time, so the bootstrap must be deployed before the service's API/web stacks.
|
|
80
|
+
|
|
81
|
+
## Examples
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
import { defineBootstrapWaf, WafManagedRuleGroup } from 'quidproquo-config-aws';
|
|
85
|
+
|
|
86
|
+
export default [
|
|
87
|
+
defineBootstrapWaf({
|
|
88
|
+
managedRuleGroups: [
|
|
89
|
+
WafManagedRuleGroup.common,
|
|
90
|
+
WafManagedRuleGroup.knownBadInputs,
|
|
91
|
+
WafManagedRuleGroup.sqli,
|
|
92
|
+
WafManagedRuleGroup.ipReputation,
|
|
93
|
+
],
|
|
94
|
+
rateLimits: [
|
|
95
|
+
{ name: 'auth-brute-force', limit: 100, uriPathStartsWith: '/auth' },
|
|
96
|
+
{ name: 'global', limit: 5000 },
|
|
97
|
+
],
|
|
98
|
+
}),
|
|
99
|
+
];
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Related
|
|
103
|
+
|
|
104
|
+
- [defineWafProtection](./waf-protection.md) — a per-service setting that opts a service's API Gateway stage and CloudFront distributions into these web ACLs.
|
|
105
|
+
- [defineBootstrapAwsOrganization](./bootstrap-aws-organization.md) — another bootstrap-phase setting deployed by the same `BootstrapQpqServiceStack`.
|
|
106
|
+
- **AWS implementation:** `QpqBootstrapConfigWafConstruct` (regional ACL) and `WafCloudFrontWebAclStack` (CloudFront ACL in us-east-1), with shared rule building in `wafRules.ts`, in `quidproquo-deploy-awscdk`.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineDomainCertificate
|
|
3
|
+
description: Issue a real ACM certificate with DNS validation for a root domain and its subdomains.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineDomainCertificate
|
|
7
|
+
|
|
8
|
+
Issues a real **ACM (AWS Certificate Manager) certificate**, DNS-validated against a Route 53 hosted zone, for a root domain and a set of subdomains. This is the concrete certificate that API Gateway and CloudFront distributions use for HTTPS. The webserver [`defineCertificate`](../webserver/certificate.md) is a portable shim that ultimately defers to a domain certificate like this one on AWS.
|
|
9
|
+
|
|
10
|
+
- **On AWS:** each unique `(region, rootDomain)` becomes a `DomainCertificateStack` (via `createDomainCertificateStacks` in `quidproquo-deploy-awscdk`). The stack resolves the root domain through the same environment/feature prefixing as [`defineApi`](../webserver/api.md) (`resolveDomainRoot`), so `rootDomain: "example.com"` in a dev deploy issues against `development.example.com`. It looks up the hosted zone, creates an `aws_certificatemanager.Certificate` with `CertificateValidation.fromDns(...)` covering the resolved subdomains (and the apex when `includeApex`), and publishes the cert ARN to SSM (keyed by region + root domain) — writing cross-region via a custom resource when the cert region differs from the deploy region. Entries sharing a `(region, rootDomain)` are merged into one cert covering the union of their names.
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { defineDomainCertificate } from 'quidproquo-config-aws';
|
|
14
|
+
|
|
15
|
+
export default [
|
|
16
|
+
// A cert for api.example.com and admin.example.com in the deploy region
|
|
17
|
+
defineDomainCertificate('example.com', 'us-east-1', ['api', 'admin']),
|
|
18
|
+
];
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Signature
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
function defineDomainCertificate(
|
|
25
|
+
rootDomain: string,
|
|
26
|
+
region: string,
|
|
27
|
+
subdomains: string[],
|
|
28
|
+
options?: { includeApex?: boolean },
|
|
29
|
+
): DomainCertificateQPQConfigSetting;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Parameters
|
|
33
|
+
|
|
34
|
+
### `rootDomain` — `string` (required)
|
|
35
|
+
|
|
36
|
+
The base, un-prefixed apex domain — the same value you pass to `defineApi` / web-entry `rootDomain` fields. At synth time it is resolved against the config's environment and feature (a dev deploy of `"example.com"` becomes `development.example.com`, or `myfeature.development.example.com`). Together with `region` it forms the setting's `uniqueKey`.
|
|
37
|
+
|
|
38
|
+
### `region` — `string` (required)
|
|
39
|
+
|
|
40
|
+
The AWS region to issue the certificate in. CloudFront requires certificates in `us-east-1`, while regional API Gateway certs live in the deploy region — declaring both for the same apex is a valid, merged case.
|
|
41
|
+
|
|
42
|
+
### `subdomains` — `string[]` (required)
|
|
43
|
+
|
|
44
|
+
The subdomain labels to cover, each combined with the resolved apex (e.g. `'api'` → `api.<resolved-apex>`). At least one subdomain must be declared unless `includeApex` is `true`, or synth throws.
|
|
45
|
+
|
|
46
|
+
### `options` — `{ includeApex?: boolean }` (optional)
|
|
47
|
+
|
|
48
|
+
| Property | Type | Default | Description |
|
|
49
|
+
| --- | --- | --- | --- |
|
|
50
|
+
| `includeApex` | `boolean` | `false` | Also cover the resolved apex domain itself (in addition to the subdomains). Merged entries OR this flag together. |
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
import { defineDomainCertificate } from 'quidproquo-config-aws';
|
|
56
|
+
|
|
57
|
+
export default [
|
|
58
|
+
// Regional API cert in the deploy region
|
|
59
|
+
defineDomainCertificate('example.com', 'us-east-1', ['api']),
|
|
60
|
+
|
|
61
|
+
// CloudFront cert (must be us-east-1) covering the apex and www
|
|
62
|
+
defineDomainCertificate('example.com', 'us-east-1', ['www'], { includeApex: true }),
|
|
63
|
+
];
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Related
|
|
67
|
+
|
|
68
|
+
- [defineCertificate](../webserver/certificate.md) — the portable webserver shim that defers to this real ACM certificate on AWS.
|
|
69
|
+
- [defineApi](../webserver/api.md) — its `rootDomain` uses the same resolution as this certificate's `rootDomain`.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineEventBusQuickSubscription
|
|
3
|
+
description: Attach direct SNS email or webhook subscribers to an event bus, with no compute in between.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineEventBusQuickSubscription
|
|
7
|
+
|
|
8
|
+
Attaches **direct SNS subscribers** — an email address or an incident-tool webhook URL — to a core [event bus](../core/event-bus.md), with no queue or Lambda in between. It's for a bus used as an alert channel: messages published to the bus (for example alarm-state changes routed via `onAlarm.publishToEventBus`) reach a human out-of-band, without depending on the service's own compute being healthy. For rich, in-band handling, use the normal bus → queue → function pattern instead.
|
|
9
|
+
|
|
10
|
+
This is an AWS-specific convenience — direct email/webhook delivery is an SNS feature, not a portable event-bus concept — which is why it lives in `quidproquo-config-aws` rather than on core's [`defineEventBus`](../core/event-bus.md).
|
|
11
|
+
|
|
12
|
+
- **On AWS:** resolved by `getEventBusQuickSubscriptions` and applied in `QpqCoreEventBusConstruct` (`quidproquo-deploy-awscdk`) to the bus's SNS topic. An `email` subscription adds an `EmailSubscription`; a `url` subscription adds a `UrlSubscription` (http vs https auto-detected from the URL). Multiple calls for the same bus are additive. Quick subscriptions are **not** supported on FIFO event buses (SNS FIFO topics only allow SQS subscriptions) — declaring one there fails the deploy.
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import { defineEventBus } from 'quidproquo-core';
|
|
16
|
+
import { defineEventBusQuickSubscription, EventBusQuickSubscriptionType } from 'quidproquo-config-aws';
|
|
17
|
+
|
|
18
|
+
export default [
|
|
19
|
+
defineEventBus('ops-alerts'),
|
|
20
|
+
|
|
21
|
+
defineEventBusQuickSubscription('ops-alerts', [
|
|
22
|
+
{ type: EventBusQuickSubscriptionType.email, email: 'oncall@example.com' },
|
|
23
|
+
]),
|
|
24
|
+
];
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Signature
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
function defineEventBusQuickSubscription(
|
|
31
|
+
eventBusName: string,
|
|
32
|
+
subscriptions: EventBusQuickSubscription[],
|
|
33
|
+
options?: QPQConfigAdvancedEventBusQuickSubscriptionSettings,
|
|
34
|
+
): EventBusQuickSubscriptionQPQConfigSetting;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Parameters
|
|
38
|
+
|
|
39
|
+
### `eventBusName` — `string` (required)
|
|
40
|
+
|
|
41
|
+
The name of the event bus to attach subscribers to (the setting's `uniqueKey`). Matches the name passed to `defineEventBus`.
|
|
42
|
+
|
|
43
|
+
### `subscriptions` — `EventBusQuickSubscription[]` (required)
|
|
44
|
+
|
|
45
|
+
The endpoints SNS delivers to directly. Each is a discriminated union on `type`:
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
type EventBusQuickSubscription =
|
|
49
|
+
| { type: EventBusQuickSubscriptionType.email; email: string }
|
|
50
|
+
| { type: EventBusQuickSubscriptionType.url; url: string };
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
| `type` | Field | Delivery |
|
|
54
|
+
| --- | --- | --- |
|
|
55
|
+
| `EventBusQuickSubscriptionType.email` | `email` | Sends an email to the address (SNS email confirmation applies). |
|
|
56
|
+
| `EventBusQuickSubscriptionType.url` | `url` | POSTs to an incident-tool webhook (PagerDuty / Slack / OpsGenie); http/https auto-detected from the URL prefix. |
|
|
57
|
+
|
|
58
|
+
### `options` — `QPQConfigAdvancedEventBusQuickSubscriptionSettings` (optional)
|
|
59
|
+
|
|
60
|
+
| Property | Type | Default | Description |
|
|
61
|
+
| --- | --- | --- | --- |
|
|
62
|
+
| `owner` | `CrossModuleOwner<'eventBusName'>` | – | The module that owns the target bus when it lives in another service (mirror the `owner` you pass to `defineEventBus`). The subscription then binds only to that owner's bus, so a same-named bus owned by a different module won't accidentally pick it up. Omit for a bus owned by this service. |
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
import { defineEventBus } from 'quidproquo-core';
|
|
68
|
+
import { defineEventBusQuickSubscription, EventBusQuickSubscriptionType } from 'quidproquo-config-aws';
|
|
69
|
+
|
|
70
|
+
export default [
|
|
71
|
+
defineEventBus('ops-alerts'),
|
|
72
|
+
|
|
73
|
+
// Email plus a Slack/PagerDuty webhook — additive across calls
|
|
74
|
+
defineEventBusQuickSubscription('ops-alerts', [
|
|
75
|
+
{ type: EventBusQuickSubscriptionType.email, email: 'oncall@example.com' },
|
|
76
|
+
{ type: EventBusQuickSubscriptionType.url, url: 'https://hooks.example.com/incident' },
|
|
77
|
+
]),
|
|
78
|
+
];
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Related
|
|
82
|
+
|
|
83
|
+
- [defineEventBus](../core/event-bus.md) — the core bus these subscribers attach to.
|
|
84
|
+
- [defineAwsAlarm](./aws-alarm.md) — publish alarm state to the bus (via `onAlarm.publishToEventBus`) so these subscribers get notified.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: defineWafProtection
|
|
3
|
+
description: Opt a service's API Gateway stage and CloudFront distributions into the app's WAF web ACLs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# defineWafProtection
|
|
7
|
+
|
|
8
|
+
Opts this service into the **WAF (web application firewall)** web ACLs created for the app. The web ACLs themselves are provisioned once, in the bootstrap phase, by [`defineBootstrapWaf`](./bootstrap-waf.md) (a regional ACL for API Gateway and a CloudFront ACL in `us-east-1`). This setting is what associates a service's API Gateway stage and CloudFront distributions with those ACLs. It's a separate setting because service configs and the bootstrap config are separate arrays — the ACL ARNs are resolved by convention from SSM at deploy time (so the bootstrap WAF must be deployed first).
|
|
9
|
+
|
|
10
|
+
- **On AWS:** flagged by `isWafProtectionEnabled` and consumed in `quidproquo-deploy-awscdk`. `ApiQpqWebserverApiConstruct` creates a `CfnWebACLAssociation` between the API Gateway stage and the regional web ACL ARN (read from SSM); `WebQpqWebserverWebEntryConstruct` sets the CloudFront distribution's `webAclId` to the CloudFront web ACL ARN (also from SSM). Without a bootstrap WAF deployed, there are no ACL ARNs to resolve.
|
|
11
|
+
|
|
12
|
+
```typescript
|
|
13
|
+
import { defineWafProtection } from 'quidproquo-config-aws';
|
|
14
|
+
|
|
15
|
+
export default [
|
|
16
|
+
defineWafProtection(),
|
|
17
|
+
];
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Signature
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
function defineWafProtection(): WafProtectionQPQConfigSetting;
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Parameters
|
|
27
|
+
|
|
28
|
+
This define takes no arguments — it's a presence flag. Include it in a service's config to attach that service's API Gateway stage and CloudFront distributions to the app's WAF web ACLs; omit it to leave the service unprotected. The rule content (managed rule groups, rate limits) is configured on the bootstrap side via [`defineBootstrapWaf`](./bootstrap-waf.md), not here.
|
|
29
|
+
|
|
30
|
+
## Examples
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { defineWafProtection } from 'quidproquo-config-aws';
|
|
34
|
+
|
|
35
|
+
// A shared service config module
|
|
36
|
+
export default [
|
|
37
|
+
// ...other settings...
|
|
38
|
+
defineWafProtection(),
|
|
39
|
+
];
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Related
|
|
43
|
+
|
|
44
|
+
- [defineBootstrapWaf](./bootstrap-waf.md) — creates the regional and CloudFront web ACLs, and configures their managed rule groups and rate limits, in the bootstrap config.
|
|
45
|
+
- [defineApi](../webserver/api.md) — the API Gateway stage that gets the regional ACL association.
|