@aws-blocks/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +174 -0
- package/dist/api.d.ts +147 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +10 -0
- package/dist/api.test.d.ts +2 -0
- package/dist/api.test.d.ts.map +1 -0
- package/dist/api.test.js +19 -0
- package/dist/bb-utils.d.ts +11 -0
- package/dist/bb-utils.d.ts.map +1 -0
- package/dist/bb-utils.js +12 -0
- package/dist/builtin-routes.d.ts +6 -0
- package/dist/builtin-routes.d.ts.map +1 -0
- package/dist/builtin-routes.js +57 -0
- package/dist/cdk/__fixtures__/factory-backend.d.ts +3 -0
- package/dist/cdk/__fixtures__/factory-backend.d.ts.map +1 -0
- package/dist/cdk/__fixtures__/factory-backend.js +6 -0
- package/dist/cdk/__fixtures__/fullid-construct-backend.d.ts +2 -0
- package/dist/cdk/__fixtures__/fullid-construct-backend.d.ts.map +1 -0
- package/dist/cdk/__fixtures__/fullid-construct-backend.js +37 -0
- package/dist/cdk/__fixtures__/handler.d.ts +5 -0
- package/dist/cdk/__fixtures__/handler.d.ts.map +1 -0
- package/dist/cdk/__fixtures__/handler.js +3 -0
- package/dist/cdk/__fixtures__/side-effect-backend.d.ts +2 -0
- package/dist/cdk/__fixtures__/side-effect-backend.d.ts.map +1 -0
- package/dist/cdk/__fixtures__/side-effect-backend.js +5 -0
- package/dist/cdk/blocks-backend.d.ts +68 -0
- package/dist/cdk/blocks-backend.d.ts.map +1 -0
- package/dist/cdk/blocks-backend.js +214 -0
- package/dist/cdk/blocks-backend.test.d.ts +2 -0
- package/dist/cdk/blocks-backend.test.d.ts.map +1 -0
- package/dist/cdk/blocks-backend.test.js +151 -0
- package/dist/cdk/blocks-stack.test.d.ts +2 -0
- package/dist/cdk/blocks-stack.test.d.ts.map +1 -0
- package/dist/cdk/blocks-stack.test.js +78 -0
- package/dist/cdk/config-registry.d.ts +26 -0
- package/dist/cdk/config-registry.d.ts.map +1 -0
- package/dist/cdk/config-registry.js +80 -0
- package/dist/cdk/index.d.ts +35 -0
- package/dist/cdk/index.d.ts.map +1 -0
- package/dist/cdk/index.js +90 -0
- package/dist/cdk/mixins.d.ts +28 -0
- package/dist/cdk/mixins.d.ts.map +1 -0
- package/dist/cdk/mixins.js +37 -0
- package/dist/cdk/mixins.test.d.ts +2 -0
- package/dist/cdk/mixins.test.d.ts.map +1 -0
- package/dist/cdk/mixins.test.js +108 -0
- package/dist/cdk/node-version.d.ts +14 -0
- package/dist/cdk/node-version.d.ts.map +1 -0
- package/dist/cdk/node-version.js +15 -0
- package/dist/cdk/stack-metadata.d.ts +12 -0
- package/dist/cdk/stack-metadata.d.ts.map +1 -0
- package/dist/cdk/stack-metadata.js +22 -0
- package/dist/cdk/stack-metadata.test.d.ts +2 -0
- package/dist/cdk/stack-metadata.test.d.ts.map +1 -0
- package/dist/cdk/stack-metadata.test.js +56 -0
- package/dist/cdk/synth-guard.d.ts +14 -0
- package/dist/cdk/synth-guard.d.ts.map +1 -0
- package/dist/cdk/synth-guard.js +20 -0
- package/dist/cdk/synth-guard.test.d.ts +2 -0
- package/dist/cdk/synth-guard.test.d.ts.map +1 -0
- package/dist/cdk/synth-guard.test.js +15 -0
- package/dist/client/index.d.ts +97 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +238 -0
- package/dist/client/index.test.d.ts +2 -0
- package/dist/client/index.test.d.ts.map +1 -0
- package/dist/client/index.test.js +113 -0
- package/dist/common/config.d.ts +45 -0
- package/dist/common/config.d.ts.map +1 -0
- package/dist/common/config.js +154 -0
- package/dist/common/config.test.d.ts +2 -0
- package/dist/common/config.test.d.ts.map +1 -0
- package/dist/common/config.test.js +173 -0
- package/dist/common/constants.d.ts +11 -0
- package/dist/common/constants.d.ts.map +1 -0
- package/dist/common/constants.js +12 -0
- package/dist/common/crypto.d.ts +6 -0
- package/dist/common/crypto.d.ts.map +1 -0
- package/dist/common/crypto.js +14 -0
- package/dist/common/index.d.ts +220 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +180 -0
- package/dist/common/index.test.d.ts +2 -0
- package/dist/common/index.test.d.ts.map +1 -0
- package/dist/common/index.test.js +195 -0
- package/dist/common/mock-data.d.ts +40 -0
- package/dist/common/mock-data.d.ts.map +1 -0
- package/dist/common/mock-data.js +39 -0
- package/dist/common/official-bb-names.generated.d.ts +7 -0
- package/dist/common/official-bb-names.generated.d.ts.map +1 -0
- package/dist/common/official-bb-names.generated.js +28 -0
- package/dist/common/sdk-registry.d.ts +136 -0
- package/dist/common/sdk-registry.d.ts.map +1 -0
- package/dist/common/sdk-registry.js +125 -0
- package/dist/constants.d.ts +27 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +28 -0
- package/dist/cors.d.ts +39 -0
- package/dist/cors.d.ts.map +1 -0
- package/dist/cors.js +85 -0
- package/dist/cors.test.d.ts +2 -0
- package/dist/cors.test.d.ts.map +1 -0
- package/dist/cors.test.js +241 -0
- package/dist/db-naming.d.ts +21 -0
- package/dist/db-naming.d.ts.map +1 -0
- package/dist/db-naming.js +38 -0
- package/dist/db-naming.test.d.ts +2 -0
- package/dist/db-naming.test.d.ts.map +1 -0
- package/dist/db-naming.test.js +29 -0
- package/dist/errors.d.ts +67 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +69 -0
- package/dist/hosting.d.ts +258 -0
- package/dist/hosting.d.ts.map +1 -0
- package/dist/hosting.js +340 -0
- package/dist/hosting.test.d.ts +2 -0
- package/dist/hosting.test.d.ts.map +1 -0
- package/dist/hosting.test.js +1077 -0
- package/dist/index.cdk.d.ts +13 -0
- package/dist/index.cdk.d.ts.map +1 -0
- package/dist/index.cdk.js +13 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/lambda-handler.d.ts +131 -0
- package/dist/lambda-handler.d.ts.map +1 -0
- package/dist/lambda-handler.js +610 -0
- package/dist/lambda-handler.test.d.ts +2 -0
- package/dist/lambda-handler.test.d.ts.map +1 -0
- package/dist/lambda-handler.test.js +835 -0
- package/dist/pipeline/index.d.ts +4 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/pipeline-construct.d.ts +130 -0
- package/dist/pipeline/pipeline-construct.d.ts.map +1 -0
- package/dist/pipeline/pipeline-construct.js +484 -0
- package/dist/pipeline/pipeline.test.d.ts +2 -0
- package/dist/pipeline/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline/pipeline.test.js +1231 -0
- package/dist/pipeline/types.d.ts +351 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +3 -0
- package/dist/raw-route.cdk.d.ts +47 -0
- package/dist/raw-route.cdk.d.ts.map +1 -0
- package/dist/raw-route.cdk.js +51 -0
- package/dist/raw-route.d.ts +119 -0
- package/dist/raw-route.d.ts.map +1 -0
- package/dist/raw-route.js +239 -0
- package/dist/raw-route.mock.d.ts +47 -0
- package/dist/raw-route.mock.d.ts.map +1 -0
- package/dist/raw-route.mock.js +51 -0
- package/dist/raw-route.test.d.ts +2 -0
- package/dist/raw-route.test.d.ts.map +1 -0
- package/dist/raw-route.test.js +597 -0
- package/dist/redact.d.ts +51 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +134 -0
- package/dist/redact.test.d.ts +2 -0
- package/dist/redact.test.d.ts.map +1 -0
- package/dist/redact.test.js +199 -0
- package/dist/rpc.d.ts +54 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +127 -0
- package/dist/rpc.test.d.ts +2 -0
- package/dist/rpc.test.d.ts.map +1 -0
- package/dist/rpc.test.js +60 -0
- package/dist/scripts/cdk-telemetry-env.d.ts +13 -0
- package/dist/scripts/cdk-telemetry-env.d.ts.map +1 -0
- package/dist/scripts/cdk-telemetry-env.js +21 -0
- package/dist/scripts/cdk-telemetry-env.test.d.ts +2 -0
- package/dist/scripts/cdk-telemetry-env.test.d.ts.map +1 -0
- package/dist/scripts/cdk-telemetry-env.test.js +56 -0
- package/dist/scripts/cleanup.d.ts +3 -0
- package/dist/scripts/cleanup.d.ts.map +1 -0
- package/dist/scripts/cleanup.js +35 -0
- package/dist/scripts/console.d.ts +6 -0
- package/dist/scripts/console.d.ts.map +1 -0
- package/dist/scripts/console.js +25 -0
- package/dist/scripts/deploy.d.ts +6 -0
- package/dist/scripts/deploy.d.ts.map +1 -0
- package/dist/scripts/deploy.js +82 -0
- package/dist/scripts/destroy.d.ts +6 -0
- package/dist/scripts/destroy.d.ts.map +1 -0
- package/dist/scripts/destroy.js +30 -0
- package/dist/scripts/dev-server-cors.test.d.ts +2 -0
- package/dist/scripts/dev-server-cors.test.d.ts.map +1 -0
- package/dist/scripts/dev-server-cors.test.js +23 -0
- package/dist/scripts/dev-server-telemetry.test.d.ts +2 -0
- package/dist/scripts/dev-server-telemetry.test.d.ts.map +1 -0
- package/dist/scripts/dev-server-telemetry.test.js +113 -0
- package/dist/scripts/dev-server.d.ts +21 -0
- package/dist/scripts/dev-server.d.ts.map +1 -0
- package/dist/scripts/dev-server.js +456 -0
- package/dist/scripts/ensure-secrets.d.ts +31 -0
- package/dist/scripts/ensure-secrets.d.ts.map +1 -0
- package/dist/scripts/ensure-secrets.js +100 -0
- package/dist/scripts/ensure-secrets.test.d.ts +2 -0
- package/dist/scripts/ensure-secrets.test.d.ts.map +1 -0
- package/dist/scripts/ensure-secrets.test.js +44 -0
- package/dist/scripts/external-migrations-step.d.ts +62 -0
- package/dist/scripts/external-migrations-step.d.ts.map +1 -0
- package/dist/scripts/external-migrations-step.js +243 -0
- package/dist/scripts/external-migrations-step.test.d.ts +2 -0
- package/dist/scripts/external-migrations-step.test.d.ts.map +1 -0
- package/dist/scripts/external-migrations-step.test.js +47 -0
- package/dist/scripts/extract-ts-types.d.ts +65 -0
- package/dist/scripts/extract-ts-types.d.ts.map +1 -0
- package/dist/scripts/extract-ts-types.js +664 -0
- package/dist/scripts/extract-ts-types.test.d.ts +2 -0
- package/dist/scripts/extract-ts-types.test.d.ts.map +1 -0
- package/dist/scripts/extract-ts-types.test.js +497 -0
- package/dist/scripts/generate-client-worker.d.ts +2 -0
- package/dist/scripts/generate-client-worker.d.ts.map +1 -0
- package/dist/scripts/generate-client-worker.js +13 -0
- package/dist/scripts/generate-client.d.ts +14 -0
- package/dist/scripts/generate-client.d.ts.map +1 -0
- package/dist/scripts/generate-client.js +73 -0
- package/dist/scripts/generate-client.test.d.ts +2 -0
- package/dist/scripts/generate-client.test.d.ts.map +1 -0
- package/dist/scripts/generate-client.test.js +48 -0
- package/dist/scripts/generate-spec-cli.d.ts +3 -0
- package/dist/scripts/generate-spec-cli.d.ts.map +1 -0
- package/dist/scripts/generate-spec-cli.js +77 -0
- package/dist/scripts/generate-spec-cli.test.d.ts +14 -0
- package/dist/scripts/generate-spec-cli.test.d.ts.map +1 -0
- package/dist/scripts/generate-spec-cli.test.js +90 -0
- package/dist/scripts/generate-spec.d.ts +61 -0
- package/dist/scripts/generate-spec.d.ts.map +1 -0
- package/dist/scripts/generate-spec.js +746 -0
- package/dist/scripts/generate-spec.test.d.ts +12 -0
- package/dist/scripts/generate-spec.test.d.ts.map +1 -0
- package/dist/scripts/generate-spec.test.js +88 -0
- package/dist/scripts/index.d.ts +12 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +13 -0
- package/dist/scripts/sandbox.d.ts +11 -0
- package/dist/scripts/sandbox.d.ts.map +1 -0
- package/dist/scripts/sandbox.js +200 -0
- package/dist/scripts/telemetry-cli.d.ts +3 -0
- package/dist/scripts/telemetry-cli.d.ts.map +1 -0
- package/dist/scripts/telemetry-cli.js +8 -0
- package/dist/scripts/telemetry.d.ts +17 -0
- package/dist/scripts/telemetry.d.ts.map +1 -0
- package/dist/scripts/telemetry.js +150 -0
- package/dist/scripts/telemetry.test.d.ts +2 -0
- package/dist/scripts/telemetry.test.d.ts.map +1 -0
- package/dist/scripts/telemetry.test.js +203 -0
- package/dist/scripts/validate-spec.d.ts +22 -0
- package/dist/scripts/validate-spec.d.ts.map +1 -0
- package/dist/scripts/validate-spec.js +159 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/withAuth.d.ts +142 -0
- package/dist/server/withAuth.d.ts.map +1 -0
- package/dist/server/withAuth.js +261 -0
- package/dist/server/withAuth.test.d.ts +2 -0
- package/dist/server/withAuth.test.d.ts.map +1 -0
- package/dist/server/withAuth.test.js +278 -0
- package/dist/telemetry/client.d.ts +59 -0
- package/dist/telemetry/client.d.ts.map +1 -0
- package/dist/telemetry/client.js +215 -0
- package/dist/telemetry/config-writer.d.ts +16 -0
- package/dist/telemetry/config-writer.d.ts.map +1 -0
- package/dist/telemetry/config-writer.js +36 -0
- package/dist/telemetry/consent-commands.test.d.ts +2 -0
- package/dist/telemetry/consent-commands.test.d.ts.map +1 -0
- package/dist/telemetry/consent-commands.test.js +161 -0
- package/dist/telemetry/consent.d.ts +60 -0
- package/dist/telemetry/consent.d.ts.map +1 -0
- package/dist/telemetry/consent.js +122 -0
- package/dist/telemetry/environment.d.ts +33 -0
- package/dist/telemetry/environment.d.ts.map +1 -0
- package/dist/telemetry/environment.js +87 -0
- package/dist/telemetry/identifiers.d.ts +20 -0
- package/dist/telemetry/identifiers.d.ts.map +1 -0
- package/dist/telemetry/identifiers.js +86 -0
- package/dist/telemetry/index.d.ts +6 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +4 -0
- package/dist/telemetry/telemetry.test.d.ts +2 -0
- package/dist/telemetry/telemetry.test.d.ts.map +1 -0
- package/dist/telemetry/telemetry.test.js +1131 -0
- package/dist/telemetry/trackCommand.d.ts +32 -0
- package/dist/telemetry/trackCommand.d.ts.map +1 -0
- package/dist/telemetry/trackCommand.js +102 -0
- package/dist/telemetry/types.d.ts +92 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +1 -0
- package/dist/types.d.ts +24 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/package.json +83 -0
- package/src/api.test.ts +25 -0
- package/src/api.ts +163 -0
- package/src/bb-utils.ts +13 -0
- package/src/builtin-routes.ts +62 -0
- package/src/cdk/__fixtures__/factory-backend.ts +8 -0
- package/src/cdk/__fixtures__/fullid-construct-backend.ts +42 -0
- package/src/cdk/__fixtures__/handler.ts +4 -0
- package/src/cdk/__fixtures__/side-effect-backend.ts +7 -0
- package/src/cdk/blocks-backend.test.ts +207 -0
- package/src/cdk/blocks-backend.ts +249 -0
- package/src/cdk/blocks-stack.test.ts +106 -0
- package/src/cdk/config-registry.ts +106 -0
- package/src/cdk/index.ts +115 -0
- package/src/cdk/mixins.test.ts +129 -0
- package/src/cdk/mixins.ts +41 -0
- package/src/cdk/node-version.ts +17 -0
- package/src/cdk/stack-metadata.test.ts +71 -0
- package/src/cdk/stack-metadata.ts +29 -0
- package/src/cdk/synth-guard.test.ts +21 -0
- package/src/cdk/synth-guard.ts +23 -0
- package/src/client/index.test.ts +118 -0
- package/src/client/index.ts +320 -0
- package/src/common/config.test.ts +236 -0
- package/src/common/config.ts +169 -0
- package/src/common/constants.ts +15 -0
- package/src/common/crypto.ts +15 -0
- package/src/common/index.test.ts +242 -0
- package/src/common/index.ts +335 -0
- package/src/common/mock-data.ts +52 -0
- package/src/common/official-bb-names.generated.ts +29 -0
- package/src/common/sdk-registry.ts +150 -0
- package/src/constants.ts +31 -0
- package/src/cors.test.ts +279 -0
- package/src/cors.ts +91 -0
- package/src/db-naming.test.ts +48 -0
- package/src/db-naming.ts +41 -0
- package/src/errors.ts +72 -0
- package/src/hosting.test.ts +1431 -0
- package/src/hosting.ts +626 -0
- package/src/index.cdk.ts +45 -0
- package/src/index.ts +22 -0
- package/src/lambda-handler.test.ts +1005 -0
- package/src/lambda-handler.ts +706 -0
- package/src/pipeline/index.ts +12 -0
- package/src/pipeline/pipeline-construct.ts +662 -0
- package/src/pipeline/pipeline.test.ts +1565 -0
- package/src/pipeline/types.ts +384 -0
- package/src/raw-route.cdk.ts +56 -0
- package/src/raw-route.mock.ts +56 -0
- package/src/raw-route.test.ts +819 -0
- package/src/raw-route.ts +316 -0
- package/src/redact.test.ts +222 -0
- package/src/redact.ts +143 -0
- package/src/rpc.test.ts +73 -0
- package/src/rpc.ts +174 -0
- package/src/scripts/cdk-telemetry-env.test.ts +75 -0
- package/src/scripts/cdk-telemetry-env.ts +23 -0
- package/src/scripts/cleanup.ts +39 -0
- package/src/scripts/console.ts +34 -0
- package/src/scripts/deploy.ts +106 -0
- package/src/scripts/destroy.ts +42 -0
- package/src/scripts/dev-server-cors.test.ts +28 -0
- package/src/scripts/dev-server-telemetry.test.ts +127 -0
- package/src/scripts/dev-server.ts +515 -0
- package/src/scripts/ensure-secrets.test.ts +50 -0
- package/src/scripts/ensure-secrets.ts +113 -0
- package/src/scripts/external-migrations-step.test.ts +64 -0
- package/src/scripts/external-migrations-step.ts +269 -0
- package/src/scripts/extract-ts-types.test.ts +516 -0
- package/src/scripts/extract-ts-types.ts +773 -0
- package/src/scripts/generate-client-worker.ts +15 -0
- package/src/scripts/generate-client.test.ts +69 -0
- package/src/scripts/generate-client.ts +86 -0
- package/src/scripts/generate-spec-cli.test.ts +106 -0
- package/src/scripts/generate-spec-cli.ts +92 -0
- package/src/scripts/generate-spec.test.ts +99 -0
- package/src/scripts/generate-spec.ts +833 -0
- package/src/scripts/index.ts +21 -0
- package/src/scripts/sandbox.ts +230 -0
- package/src/scripts/telemetry-cli.ts +10 -0
- package/src/scripts/telemetry.test.ts +239 -0
- package/src/scripts/telemetry.ts +173 -0
- package/src/scripts/validate-spec.ts +199 -0
- package/src/server/index.ts +5 -0
- package/src/server/withAuth.test.ts +348 -0
- package/src/server/withAuth.ts +323 -0
- package/src/telemetry/client.ts +226 -0
- package/src/telemetry/config-writer.ts +52 -0
- package/src/telemetry/consent-commands.test.ts +196 -0
- package/src/telemetry/consent.ts +154 -0
- package/src/telemetry/environment.ts +100 -0
- package/src/telemetry/identifiers.ts +94 -0
- package/src/telemetry/index.ts +11 -0
- package/src/telemetry/telemetry.test.ts +1343 -0
- package/src/telemetry/trackCommand.ts +110 -0
- package/src/telemetry/types.ts +92 -0
- package/src/types.ts +33 -0
- package/src/version.ts +2 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { CommandName, CommandState, TrackCommandOptions } from './types.js';
|
|
2
|
+
import { isTelemetryEnabled } from './consent.js';
|
|
3
|
+
import { buildAndSendEvent } from './client.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Classify a caught error into a telemetry-safe error code.
|
|
7
|
+
* Only inspects the error message for known patterns — never transmits raw messages.
|
|
8
|
+
*/
|
|
9
|
+
export function classifyError(error: unknown): { code: string; phase: string } {
|
|
10
|
+
if (!(error instanceof Error)) return { code: 'UNKNOWN', phase: 'unknown' };
|
|
11
|
+
const msg = error.message.toLowerCase();
|
|
12
|
+
|
|
13
|
+
if (msg.includes('eaddrinuse') || (msg.includes('port') && msg.includes('in use'))) {
|
|
14
|
+
return { code: 'PORT_IN_USE', phase: 'startup' };
|
|
15
|
+
}
|
|
16
|
+
if (msg.includes('access denied') || msg.includes('not authorized') || msg.includes('forbidden')) {
|
|
17
|
+
return { code: 'PERMISSION_DENIED', phase: 'auth' };
|
|
18
|
+
}
|
|
19
|
+
if (msg.includes('credentials') || msg.includes('no credentials') || msg.includes('security token')) {
|
|
20
|
+
return { code: 'CREDENTIALS_FAILED', phase: 'auth' };
|
|
21
|
+
}
|
|
22
|
+
if (msg.includes('cdk synth') || msg.includes('synthesis')) {
|
|
23
|
+
return { code: 'CDK_SYNTH_FAILED', phase: 'synth' };
|
|
24
|
+
}
|
|
25
|
+
if (msg.includes('cdk deploy') || msg.includes('deployment failed')) {
|
|
26
|
+
return { code: 'CDK_DEPLOY_FAILED', phase: 'deploy' };
|
|
27
|
+
}
|
|
28
|
+
if (msg.includes('cdk destroy') || msg.includes('destroy failed')) {
|
|
29
|
+
return { code: 'CDK_DESTROY_FAILED', phase: 'destroy' };
|
|
30
|
+
}
|
|
31
|
+
if (msg.includes('npm install') || msg.includes('npm err')) {
|
|
32
|
+
return { code: 'NPM_INSTALL_FAILED', phase: 'install' };
|
|
33
|
+
}
|
|
34
|
+
if (msg.includes('codegen') || msg.includes('generate client')) {
|
|
35
|
+
return { code: 'CODEGEN_FAILED', phase: 'codegen' };
|
|
36
|
+
}
|
|
37
|
+
if (msg.includes('vite') || msg.includes('next build') || msg.includes('frontend build')) {
|
|
38
|
+
return { code: 'FRONTEND_BUILD_FAILED', phase: 'build' };
|
|
39
|
+
}
|
|
40
|
+
if (msg.includes('template') && msg.includes('copy')) {
|
|
41
|
+
return { code: 'TEMPLATE_COPY_FAILED', phase: 'init' };
|
|
42
|
+
}
|
|
43
|
+
if (msg.includes('argument') || msg.includes('parse')) {
|
|
44
|
+
return { code: 'ARG_PARSE_FAILED', phase: 'init' };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return { code: 'UNKNOWN', phase: 'unknown' };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Wrap a CLI command function with telemetry tracking.
|
|
52
|
+
*
|
|
53
|
+
* Measures wall-clock duration, classifies errors, and sends a single telemetry event
|
|
54
|
+
* after the command completes (success or failure). The telemetry send is fire-and-forget
|
|
55
|
+
* and bounded by a 5s timeout — it will never delay the command or affect its exit code.
|
|
56
|
+
*
|
|
57
|
+
* If telemetry is disabled (via env var or config), the function is executed directly
|
|
58
|
+
* with zero overhead.
|
|
59
|
+
*
|
|
60
|
+
* @param commandName - The command being tracked
|
|
61
|
+
* @param fn - The async function to execute
|
|
62
|
+
* @param options - Optional metadata (template, framework, etc.)
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* await trackCommand('sandbox', async () => {
|
|
67
|
+
* await startSandbox({ backendPath: '...' });
|
|
68
|
+
* });
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export async function trackCommand(
|
|
72
|
+
commandName: CommandName,
|
|
73
|
+
fn: () => Promise<void>,
|
|
74
|
+
options?: TrackCommandOptions,
|
|
75
|
+
): Promise<void> {
|
|
76
|
+
if (!isTelemetryEnabled()) {
|
|
77
|
+
return fn();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const startTime = Date.now();
|
|
81
|
+
let state: CommandState = 'SUCCESS';
|
|
82
|
+
let errorInfo: { code: string; phase: string } | undefined;
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
await fn();
|
|
86
|
+
} catch (error: unknown) {
|
|
87
|
+
state = 'FAIL';
|
|
88
|
+
errorInfo = classifyError(error);
|
|
89
|
+
throw error;
|
|
90
|
+
} finally {
|
|
91
|
+
const duration = Date.now() - startTime;
|
|
92
|
+
buildAndSendEvent({
|
|
93
|
+
command: commandName,
|
|
94
|
+
state,
|
|
95
|
+
duration,
|
|
96
|
+
...(errorInfo && { error: errorInfo }),
|
|
97
|
+
...(options && {
|
|
98
|
+
product: {
|
|
99
|
+
...(options.cdkVersion && { cdkVersion: options.cdkVersion }),
|
|
100
|
+
...(options.framework && { framework: options.framework }),
|
|
101
|
+
...(options.template && { template: options.template }),
|
|
102
|
+
...(options.templateVersion && { templateVersion: options.templateVersion }),
|
|
103
|
+
},
|
|
104
|
+
}),
|
|
105
|
+
...(options?.blocksCount !== undefined && {
|
|
106
|
+
counters: { blocksCount: options.blocksCount },
|
|
107
|
+
}),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command names tracked by the Blocks CLI telemetry system.
|
|
3
|
+
*/
|
|
4
|
+
export type CommandName =
|
|
5
|
+
| 'create-blocks-app'
|
|
6
|
+
| 'dev'
|
|
7
|
+
| 'sandbox'
|
|
8
|
+
| 'sandbox:destroy'
|
|
9
|
+
| 'deploy'
|
|
10
|
+
| 'destroy'
|
|
11
|
+
| 'cleanup'
|
|
12
|
+
| 'console'
|
|
13
|
+
| 'vendorize';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Terminal state of a command execution.
|
|
17
|
+
*/
|
|
18
|
+
export type CommandState = 'SUCCESS' | 'FAIL' | 'ABORTED';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The telemetry event payload sent to the endpoint.
|
|
22
|
+
*
|
|
23
|
+
* Matches the server schema exactly (additionalProperties: false).
|
|
24
|
+
* All fields are anonymized — no PII, no customer content, no account IDs.
|
|
25
|
+
*/
|
|
26
|
+
export interface BlocksTelemetryEvent {
|
|
27
|
+
telemetryVersion: string;
|
|
28
|
+
identifiers: {
|
|
29
|
+
installationId: string;
|
|
30
|
+
projectId: string;
|
|
31
|
+
eventId: string;
|
|
32
|
+
timestamp: string;
|
|
33
|
+
};
|
|
34
|
+
event: {
|
|
35
|
+
command: CommandName;
|
|
36
|
+
state: CommandState;
|
|
37
|
+
duration: number;
|
|
38
|
+
error?: {
|
|
39
|
+
code: string;
|
|
40
|
+
phase: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
environment: {
|
|
44
|
+
os: 'linux' | 'darwin' | 'win32';
|
|
45
|
+
nodeVersion: string;
|
|
46
|
+
ci: boolean;
|
|
47
|
+
packageManager?: string;
|
|
48
|
+
agent?: string;
|
|
49
|
+
};
|
|
50
|
+
product?: {
|
|
51
|
+
blocksVersion: string;
|
|
52
|
+
cdkVersion?: string;
|
|
53
|
+
framework?: 'nextjs' | 'spa' | 'static';
|
|
54
|
+
template?: { name: string; version?: string };
|
|
55
|
+
buildingBlocks?: Array<{ name: string; version: string }>;
|
|
56
|
+
};
|
|
57
|
+
counters?: {
|
|
58
|
+
blocksCount: number;
|
|
59
|
+
customBuildingBlocks?: number;
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Options for the `trackCommand` utility.
|
|
65
|
+
*/
|
|
66
|
+
export interface TrackCommandOptions {
|
|
67
|
+
template?: string;
|
|
68
|
+
templateVersion?: string;
|
|
69
|
+
framework?: 'nextjs' | 'spa' | 'static';
|
|
70
|
+
cdkVersion?: string;
|
|
71
|
+
blocksCount?: number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Options accepted by `buildAndSendEvent()`.
|
|
76
|
+
*
|
|
77
|
+
* Callers provide minimal metadata; the function resolves identifiers,
|
|
78
|
+
* environment, and consent internally.
|
|
79
|
+
*/
|
|
80
|
+
export interface BuildAndSendEventOptions {
|
|
81
|
+
command: CommandName;
|
|
82
|
+
state: CommandState;
|
|
83
|
+
duration: number;
|
|
84
|
+
error?: { code: string; phase: string };
|
|
85
|
+
product?: {
|
|
86
|
+
cdkVersion?: string;
|
|
87
|
+
framework?: 'nextjs' | 'spa' | 'static';
|
|
88
|
+
template?: string;
|
|
89
|
+
templateVersion?: string;
|
|
90
|
+
};
|
|
91
|
+
counters?: { blocksCount: number; customBuildingBlocks?: number };
|
|
92
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import type { Construct } from 'constructs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Infrastructure layer function signature.
|
|
8
|
+
* Exported from `infra.ts` in a Building Block.
|
|
9
|
+
*/
|
|
10
|
+
export type MaterializeFn<TOptions = any> = (
|
|
11
|
+
scope: Construct,
|
|
12
|
+
name: string,
|
|
13
|
+
options: TOptions
|
|
14
|
+
) => void | Record<string, any>;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Building Block metadata discovered by Blocks.
|
|
18
|
+
*/
|
|
19
|
+
export interface BuildingBlockMetadata {
|
|
20
|
+
name: string;
|
|
21
|
+
runtimePath?: string; // index.ts
|
|
22
|
+
infraPath?: string; // infra.ts
|
|
23
|
+
mockPath?: string; // mock.ts
|
|
24
|
+
clientHookPath?: string; // client-hook.ts
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Client-side protocol extension hook.
|
|
29
|
+
*/
|
|
30
|
+
export interface ClientSideAPIHook {
|
|
31
|
+
onResponse?(response: Response): Promise<void>;
|
|
32
|
+
onRequest?(request: Request): Promise<void>;
|
|
33
|
+
}
|
package/src/version.ts
ADDED