@aws/nx-plugin 1.0.0-rc.53 → 1.0.0-rc.55
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/migrations.json +50 -0
- package/package.json +1 -1
- package/src/agentcore-gateway/gateway-connection/generator.js +3 -1
- package/src/agentcore-gateway/gateway-connection/generator.js.map +1 -1
- package/src/agentcore-gateway/generator.d.ts +49 -1
- package/src/agentcore-gateway/generator.js +55 -22
- package/src/agentcore-gateway/generator.js.map +1 -1
- package/src/agentcore-gateway/mcp-connection/generator.js +3 -1
- package/src/agentcore-gateway/mcp-connection/generator.js.map +1 -1
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +2 -0
- package/src/infra/app/generator.d.ts +43 -0
- package/src/infra/app/generator.js +47 -18
- package/src/infra/app/generator.js.map +1 -1
- package/src/init/generator.d.ts +13 -0
- package/src/init/generator.js +14 -3
- package/src/init/generator.js.map +1 -1
- package/src/migrations/latest/backfill-generator-metadata/migration.d.ts +96 -0
- package/src/migrations/latest/backfill-generator-metadata/migration.js +670 -0
- package/src/migrations/latest/backfill-generator-metadata/migration.js.map +1 -0
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.d.ts +6 -0
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js +94 -0
- package/src/migrations/latest/order-access-log-delivery-after-bucket-policy/migration.js.map +1 -0
- package/src/preset/generator.d.ts +13 -0
- package/src/preset/generator.js +12 -3
- package/src/preset/generator.js.map +1 -1
- package/src/py/agent/a2a-connection/generator.d.ts +24 -0
- package/src/py/agent/a2a-connection/generator.js +49 -20
- package/src/py/agent/a2a-connection/generator.js.map +1 -1
- package/src/py/agent/gateway-connection/generator.d.ts +23 -0
- package/src/py/agent/gateway-connection/generator.js +45 -11
- package/src/py/agent/gateway-connection/generator.js.map +1 -1
- package/src/py/agent/generator.d.ts +146 -1
- package/src/py/agent/generator.js +173 -76
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/generator.d.ts +23 -0
- package/src/py/agent/mcp-connection/generator.js +45 -11
- package/src/py/agent/mcp-connection/generator.js.map +1 -1
- package/src/py/agent/react-connection/generator.d.ts +146 -0
- package/src/py/agent/react-connection/generator.js +27 -4
- package/src/py/agent/react-connection/generator.js.map +1 -1
- package/src/py/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/py/dynamodb/agent-connection/generator.js +7 -1
- package/src/py/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/py/dynamodb/fast-api-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/py/dynamodb/fast-api-connection/generator.js +3 -1
- package/src/py/dynamodb/fast-api-connection/generator.js.map +1 -1
- package/src/py/dynamodb/generator.d.ts +29 -0
- package/src/py/dynamodb/generator.js +32 -12
- package/src/py/dynamodb/generator.js.map +1 -1
- package/src/py/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/py/dynamodb/mcp-server-connection/generator.js +7 -1
- package/src/py/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/py/fast-api/generator.d.ts +63 -0
- package/src/py/fast-api/generator.js +58 -23
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/generator.d.ts +16 -1
- package/src/py/fast-api/react/generator.js +15 -3
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/lambda-function/generator.d.ts +21 -0
- package/src/py/lambda-function/generator.js +29 -10
- package/src/py/lambda-function/generator.js.map +1 -1
- package/src/py/mcp-server/generator.d.ts +60 -0
- package/src/py/mcp-server/generator.js +62 -25
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/project/generator.d.ts +13 -0
- package/src/py/project/generator.js +29 -10
- package/src/py/project/generator.js.map +1 -1
- package/src/py/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +19 -0
- package/src/py/rdb/agent-connection/generator.js +7 -1
- package/src/py/rdb/agent-connection/generator.js.map +1 -1
- package/src/py/rdb/fast-api-connection/__snapshots__/generator.spec.ts.snap +7 -0
- package/src/py/rdb/fast-api-connection/generator.js +3 -1
- package/src/py/rdb/fast-api-connection/generator.js.map +1 -1
- package/src/py/rdb/generator.d.ts +89 -0
- package/src/py/rdb/generator.js +88 -40
- package/src/py/rdb/generator.js.map +1 -1
- package/src/py/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/py/rdb/mcp-server-connection/generator.js +7 -1
- package/src/py/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/smithy/project/generator.d.ts +7 -0
- package/src/smithy/project/generator.js +8 -2
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/react-connection/generator.d.ts +15 -0
- package/src/smithy/react-connection/generator.js +17 -3
- package/src/smithy/react-connection/generator.js.map +1 -1
- package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/smithy/ts/api/generator.d.ts +79 -0
- package/src/smithy/ts/api/generator.js +77 -33
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/terraform/project/generator.d.ts +50 -0
- package/src/terraform/project/generator.js +63 -17
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/generator.d.ts +84 -0
- package/src/trpc/backend/generator.js +98 -38
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/react/generator.d.ts +37 -0
- package/src/trpc/react/generator.js +63 -26
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/agent/a2a-connection/generator.d.ts +46 -0
- package/src/ts/agent/a2a-connection/generator.js +53 -16
- package/src/ts/agent/a2a-connection/generator.js.map +1 -1
- package/src/ts/agent/gateway-connection/generator.d.ts +37 -0
- package/src/ts/agent/gateway-connection/generator.js +41 -14
- package/src/ts/agent/gateway-connection/generator.js.map +1 -1
- package/src/ts/agent/generator.d.ts +162 -0
- package/src/ts/agent/generator.js +166 -75
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/generator.d.ts +37 -0
- package/src/ts/agent/mcp-connection/generator.js +41 -14
- package/src/ts/agent/mcp-connection/generator.js.map +1 -1
- package/src/ts/agent/react-connection/generator.d.ts +186 -0
- package/src/ts/agent/react-connection/generator.js +70 -21
- package/src/ts/agent/react-connection/generator.js.map +1 -1
- package/src/ts/astro-docs/generator.d.ts +38 -0
- package/src/ts/astro-docs/generator.js +58 -19
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/dcr-proxy/generator.d.ts +24 -0
- package/src/ts/dcr-proxy/generator.js +31 -14
- package/src/ts/dcr-proxy/generator.js.map +1 -1
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/ts/dynamodb/agent-connection/generator.js +7 -1
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/generator.d.ts +41 -0
- package/src/ts/dynamodb/generator.js +47 -20
- package/src/ts/dynamodb/generator.js.map +1 -1
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +18 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js +7 -1
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/dynamodb/smithy-connection/generator.js +3 -1
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -1
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/dynamodb/trpc-connection/generator.js +3 -1
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -1
- package/src/ts/lambda-function/generator.d.ts +38 -0
- package/src/ts/lambda-function/generator.js +49 -20
- package/src/ts/lambda-function/generator.js.map +1 -1
- package/src/ts/lib/generator.d.ts +7 -0
- package/src/ts/lib/generator.js +8 -1
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/ts-project-utils.d.ts +3 -1
- package/src/ts/lib/ts-project-utils.js +3 -2
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/lib/vitest.d.ts +10 -1
- package/src/ts/lib/vitest.js +14 -2
- package/src/ts/lib/vitest.js.map +1 -1
- package/src/ts/mcp-server/generator.d.ts +71 -0
- package/src/ts/mcp-server/generator.js +73 -36
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/nx-generator/generator.d.ts +3 -0
- package/src/ts/nx-generator/generator.js +8 -2
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-migration/generator.d.ts +3 -0
- package/src/ts/nx-migration/generator.js +8 -2
- package/src/ts/nx-migration/generator.js.map +1 -1
- package/src/ts/nx-plugin/generator.d.ts +3 -0
- package/src/ts/nx-plugin/generator.js +8 -2
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/utils.d.ts +7 -2
- package/src/ts/nx-plugin/utils.js +10 -4
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/agent-connection/__snapshots__/generator.spec.ts.snap +10 -0
- package/src/ts/rdb/agent-connection/generator.js +8 -1
- package/src/ts/rdb/agent-connection/generator.js.map +1 -1
- package/src/ts/rdb/generator.d.ts +101 -0
- package/src/ts/rdb/generator.js +93 -41
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/rdb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +10 -0
- package/src/ts/rdb/mcp-server-connection/generator.js +8 -1
- package/src/ts/rdb/mcp-server-connection/generator.js.map +1 -1
- package/src/ts/rdb/smithy-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/rdb/smithy-connection/generator.js +4 -1
- package/src/ts/rdb/smithy-connection/generator.js.map +1 -1
- package/src/ts/rdb/trpc-connection/__snapshots__/generator.spec.ts.snap +9 -0
- package/src/ts/rdb/trpc-connection/generator.js +3 -1
- package/src/ts/rdb/trpc-connection/generator.js.map +1 -1
- package/src/ts/react-website/agui/generator.d.ts +86 -0
- package/src/ts/react-website/agui/generator.js +63 -28
- package/src/ts/react-website/agui/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +20 -2
- package/src/ts/react-website/app/generator.d.ts +136 -1
- package/src/ts/react-website/app/generator.js +109 -40
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/generator.d.ts +19 -0
- package/src/ts/react-website/cognito-auth/generator.js +21 -9
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/utils/add-dependencies.d.ts +38 -0
- package/src/utils/add-dependencies.js +83 -0
- package/src/utils/add-dependencies.js.map +1 -0
- package/src/utils/agent-connection/agent-connection.d.ts +27 -6
- package/src/utils/agent-connection/agent-connection.js +47 -18
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.d.ts +19 -1
- package/src/utils/agent-core-constructs/agent-core-constructs.js +26 -6
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/api-constructs/api-constructs.d.ts +21 -2
- package/src/utils/api-constructs/api-constructs.js +26 -5
- package/src/utils/api-constructs/api-constructs.js.map +1 -1
- package/src/utils/bundle/bundle.d.ts +6 -1
- package/src/utils/bundle/bundle.js +8 -2
- package/src/utils/bundle/bundle.js.map +1 -1
- package/src/utils/commands.d.ts +5 -4
- package/src/utils/commands.js +2 -6
- package/src/utils/commands.js.map +1 -1
- package/src/utils/connection/open-api/react.d.ts +18 -1
- package/src/utils/connection/open-api/react.js +27 -3
- package/src/utils/connection/open-api/react.js.map +1 -1
- package/src/utils/declared-dependencies.d.ts +140 -0
- package/src/utils/declared-dependencies.js +64 -0
- package/src/utils/declared-dependencies.js.map +1 -0
- package/src/utils/docker.d.ts +10 -1
- package/src/utils/docker.js +7 -3
- package/src/utils/docker.js.map +1 -1
- package/src/utils/fs.d.ts +15 -4
- package/src/utils/fs.js +26 -13
- package/src/utils/fs.js.map +1 -1
- package/src/utils/init.d.ts +14 -1
- package/src/utils/init.js +25 -7
- package/src/utils/init.js.map +1 -1
- package/src/utils/migration-versions.d.ts +15 -1
- package/src/utils/migration-versions.js +53 -7
- package/src/utils/migration-versions.js.map +1 -1
- package/src/utils/nx.d.ts +18 -0
- package/src/utils/nx.js +4 -0
- package/src/utils/nx.js.map +1 -1
- package/src/utils/py.d.ts +3 -2
- package/src/utils/py.js +10 -10
- package/src/utils/py.js.map +1 -1
- package/src/utils/shared-constructs-constants.d.ts +39 -4
- package/src/utils/shared-constructs-constants.js +29 -0
- package/src/utils/shared-constructs-constants.js.map +1 -1
- package/src/utils/shared-constructs.d.ts +4 -1
- package/src/utils/shared-constructs.js +5 -4
- package/src/utils/shared-constructs.js.map +1 -1
- package/src/utils/shared-dynamodb-scripts.d.ts +8 -1
- package/src/utils/shared-dynamodb-scripts.js +11 -3
- package/src/utils/shared-dynamodb-scripts.js.map +1 -1
- package/src/utils/shared-infra-scripts.d.ts +16 -1
- package/src/utils/shared-infra-scripts.js +18 -3
- package/src/utils/shared-infra-scripts.js.map +1 -1
- package/src/utils/shared-rdb-scripts.d.ts +12 -1
- package/src/utils/shared-rdb-scripts.js +17 -3
- package/src/utils/shared-rdb-scripts.js.map +1 -1
- package/src/utils/shared-shadcn.d.ts +26 -1
- package/src/utils/shared-shadcn.js +31 -14
- package/src/utils/shared-shadcn.js.map +1 -1
- package/src/utils/version-upgrade-migration/migration.d.ts +14 -0
- package/src/utils/version-upgrade-migration/migration.js +16 -0
- package/src/utils/version-upgrade-migration/migration.js.map +1 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.d.ts +35 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js +42 -0
- package/src/utils/version-upgrade-migration/nx-package-updates.js.map +1 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.d.ts +50 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js +98 -0
- package/src/utils/version-upgrade-migration/owned-dependencies.js.map +1 -0
- package/src/utils/version-upgrade-migration/register.d.ts +18 -0
- package/src/utils/version-upgrade-migration/register.js +33 -0
- package/src/utils/version-upgrade-migration/register.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.d.ts +13 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js +33 -0
- package/src/utils/version-upgrade-migration/sync-metrics-version.js.map +1 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.d.ts +10 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js +504 -0
- package/src/utils/version-upgrade-migration/sync-vended-versions.js.map +1 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.d.ts +14 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js +40 -0
- package/src/utils/version-upgrade-migration/vended-upgrade.js.map +1 -0
- package/src/utils/versions.d.ts +25 -5
- package/src/utils/versions.js +46 -4
- package/src/utils/versions.js.map +1 -1
- package/src/utils/website-constructs/files/cdk/core/static-website.ts.template +4 -0
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/
|
|
5
1
|
export declare const PACKAGES_DIR = "packages";
|
|
6
2
|
export declare const SHARED_CONSTRUCTS_NAME = "common-constructs";
|
|
7
3
|
export declare const SHARED_CONSTRUCTS_DIR = "common/constructs";
|
|
@@ -14,3 +10,42 @@ export declare const SHARED_INFRA_CONFIG_DIR = "common/infra-config";
|
|
|
14
10
|
export declare const SHARED_SCRIPTS_NAME = "common-scripts";
|
|
15
11
|
export declare const SHARED_SCRIPTS_DIR = "common/scripts";
|
|
16
12
|
export declare const DYNAMODB_GENERATOR_IDS: string[];
|
|
13
|
+
/**
|
|
14
|
+
* What a generator records about the infrastructure it generated.
|
|
15
|
+
*
|
|
16
|
+
* Every generator that creates infrastructure records the `iac` it used, so a
|
|
17
|
+
* predicate can tell a CDK project from a Terraform one at upgrade time. Absent
|
|
18
|
+
* when the generator was run with no infrastructure, so its presence doubles as
|
|
19
|
+
* "infrastructure was generated" — which is what gates the packages an infra
|
|
20
|
+
* helper adds.
|
|
21
|
+
*/
|
|
22
|
+
export interface IacMetadata {
|
|
23
|
+
readonly iac?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Whether infrastructure was generated at all, so the packages an infra helper
|
|
27
|
+
* adds are only claimed where that helper ran.
|
|
28
|
+
*
|
|
29
|
+
* Reads `iac` rather than the generator's own `infra` option: every generator
|
|
30
|
+
* resolves `iac` only on the infra branch, so one recorded field answers both
|
|
31
|
+
* questions and no generator needs a second one.
|
|
32
|
+
*/
|
|
33
|
+
export declare const generatedInfrastructure: (m: IacMetadata) => boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Dependencies a caller must declare to use the shared constructs project.
|
|
36
|
+
* Lives here so generators can spread it without importing the generator.
|
|
37
|
+
*
|
|
38
|
+
* `constructs` and `aws-cdk-lib` are gated on CDK because
|
|
39
|
+
* `sharedConstructsGenerator` creates the TypeScript constructs project on that
|
|
40
|
+
* branch alone — a Terraform workspace gets the shared Terraform project and
|
|
41
|
+
* never receives them.
|
|
42
|
+
*/
|
|
43
|
+
export declare const SHARED_CONSTRUCTS_DEPENDENCIES: readonly [{
|
|
44
|
+
readonly name: "constructs";
|
|
45
|
+
readonly when: (m: IacMetadata) => boolean;
|
|
46
|
+
}, {
|
|
47
|
+
readonly name: "aws-cdk-lib";
|
|
48
|
+
readonly when: (m: IacMetadata) => boolean;
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "@types/node";
|
|
51
|
+
}];
|
|
@@ -16,5 +16,34 @@ export const DYNAMODB_GENERATOR_IDS = [
|
|
|
16
16
|
'ts#dynamodb',
|
|
17
17
|
'py#dynamodb'
|
|
18
18
|
];
|
|
19
|
+
/**
|
|
20
|
+
* Whether infrastructure was generated at all, so the packages an infra helper
|
|
21
|
+
* adds are only claimed where that helper ran.
|
|
22
|
+
*
|
|
23
|
+
* Reads `iac` rather than the generator's own `infra` option: every generator
|
|
24
|
+
* resolves `iac` only on the infra branch, so one recorded field answers both
|
|
25
|
+
* questions and no generator needs a second one.
|
|
26
|
+
*/ export const generatedInfrastructure = (m)=>m.iac !== undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Dependencies a caller must declare to use the shared constructs project.
|
|
29
|
+
* Lives here so generators can spread it without importing the generator.
|
|
30
|
+
*
|
|
31
|
+
* `constructs` and `aws-cdk-lib` are gated on CDK because
|
|
32
|
+
* `sharedConstructsGenerator` creates the TypeScript constructs project on that
|
|
33
|
+
* branch alone — a Terraform workspace gets the shared Terraform project and
|
|
34
|
+
* never receives them.
|
|
35
|
+
*/ export const SHARED_CONSTRUCTS_DEPENDENCIES = [
|
|
36
|
+
{
|
|
37
|
+
name: 'constructs',
|
|
38
|
+
when: (m)=>m.iac === 'cdk'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'aws-cdk-lib',
|
|
42
|
+
when: (m)=>m.iac === 'cdk'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: '@types/node'
|
|
46
|
+
}
|
|
47
|
+
];
|
|
19
48
|
|
|
20
49
|
//# sourceMappingURL=shared-constructs-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs-constants.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const PACKAGES_DIR = 'packages';\nexport const SHARED_CONSTRUCTS_NAME = 'common-constructs';\nexport const SHARED_CONSTRUCTS_DIR = 'common/constructs';\nexport const SHARED_TERRAFORM_NAME = 'terraform';\nexport const SHARED_TERRAFORM_DIR = 'common/terraform';\nexport const SHARED_SHADCN_NAME = 'common-shadcn';\nexport const SHARED_SHADCN_DIR = 'common/shadcn';\nexport const SHARED_INFRA_CONFIG_NAME = 'common-infra-config';\nexport const SHARED_INFRA_CONFIG_DIR = 'common/infra-config';\nexport const SHARED_SCRIPTS_NAME = 'common-scripts';\nexport const SHARED_SCRIPTS_DIR = 'common/scripts';\n\nexport const DYNAMODB_GENERATOR_IDS = ['ts#dynamodb', 'py#dynamodb'];\n"],"names":["PACKAGES_DIR","SHARED_CONSTRUCTS_NAME","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_NAME","SHARED_TERRAFORM_DIR","SHARED_SHADCN_NAME","SHARED_SHADCN_DIR","SHARED_INFRA_CONFIG_NAME","SHARED_INFRA_CONFIG_DIR","SHARED_SCRIPTS_NAME","SHARED_SCRIPTS_DIR","DYNAMODB_GENERATOR_IDS"],"mappings":"AAAA;;;CAGC,
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs-constants.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type { DeclaredTsDependency } from './declared-dependencies';\nimport type { ITsDepVersion } from './versions';\n\nexport const PACKAGES_DIR = 'packages';\nexport const SHARED_CONSTRUCTS_NAME = 'common-constructs';\nexport const SHARED_CONSTRUCTS_DIR = 'common/constructs';\nexport const SHARED_TERRAFORM_NAME = 'terraform';\nexport const SHARED_TERRAFORM_DIR = 'common/terraform';\nexport const SHARED_SHADCN_NAME = 'common-shadcn';\nexport const SHARED_SHADCN_DIR = 'common/shadcn';\nexport const SHARED_INFRA_CONFIG_NAME = 'common-infra-config';\nexport const SHARED_INFRA_CONFIG_DIR = 'common/infra-config';\nexport const SHARED_SCRIPTS_NAME = 'common-scripts';\nexport const SHARED_SCRIPTS_DIR = 'common/scripts';\n\nexport const DYNAMODB_GENERATOR_IDS = ['ts#dynamodb', 'py#dynamodb'];\n\n/**\n * What a generator records about the infrastructure it generated.\n *\n * Every generator that creates infrastructure records the `iac` it used, so a\n * predicate can tell a CDK project from a Terraform one at upgrade time. Absent\n * when the generator was run with no infrastructure, so its presence doubles as\n * \"infrastructure was generated\" — which is what gates the packages an infra\n * helper adds.\n */\nexport interface IacMetadata {\n readonly iac?: string;\n}\n\n/**\n * Whether infrastructure was generated at all, so the packages an infra helper\n * adds are only claimed where that helper ran.\n *\n * Reads `iac` rather than the generator's own `infra` option: every generator\n * resolves `iac` only on the infra branch, so one recorded field answers both\n * questions and no generator needs a second one.\n */\nexport const generatedInfrastructure = (m: IacMetadata): boolean =>\n m.iac !== undefined;\n\n/**\n * Dependencies a caller must declare to use the shared constructs project.\n * Lives here so generators can spread it without importing the generator.\n *\n * `constructs` and `aws-cdk-lib` are gated on CDK because\n * `sharedConstructsGenerator` creates the TypeScript constructs project on that\n * branch alone — a Terraform workspace gets the shared Terraform project and\n * never receives them.\n */\nexport const SHARED_CONSTRUCTS_DEPENDENCIES = [\n { name: 'constructs', when: (m: IacMetadata) => m.iac === 'cdk' },\n { name: 'aws-cdk-lib', when: (m: IacMetadata) => m.iac === 'cdk' },\n { name: '@types/node' },\n] as const satisfies readonly DeclaredTsDependency<\n ITsDepVersion,\n IacMetadata\n>[];\n"],"names":["PACKAGES_DIR","SHARED_CONSTRUCTS_NAME","SHARED_CONSTRUCTS_DIR","SHARED_TERRAFORM_NAME","SHARED_TERRAFORM_DIR","SHARED_SHADCN_NAME","SHARED_SHADCN_DIR","SHARED_INFRA_CONFIG_NAME","SHARED_INFRA_CONFIG_DIR","SHARED_SCRIPTS_NAME","SHARED_SCRIPTS_DIR","DYNAMODB_GENERATOR_IDS","generatedInfrastructure","m","iac","undefined","SHARED_CONSTRUCTS_DEPENDENCIES","name","when"],"mappings":"AAAA;;;CAGC,GAID,OAAO,MAAMA,eAAe,WAAW;AACvC,OAAO,MAAMC,yBAAyB,oBAAoB;AAC1D,OAAO,MAAMC,wBAAwB,oBAAoB;AACzD,OAAO,MAAMC,wBAAwB,YAAY;AACjD,OAAO,MAAMC,uBAAuB,mBAAmB;AACvD,OAAO,MAAMC,qBAAqB,gBAAgB;AAClD,OAAO,MAAMC,oBAAoB,gBAAgB;AACjD,OAAO,MAAMC,2BAA2B,sBAAsB;AAC9D,OAAO,MAAMC,0BAA0B,sBAAsB;AAC7D,OAAO,MAAMC,sBAAsB,iBAAiB;AACpD,OAAO,MAAMC,qBAAqB,iBAAiB;AAEnD,OAAO,MAAMC,yBAAyB;IAAC;IAAe;CAAc,CAAC;AAerE;;;;;;;CAOC,GACD,OAAO,MAAMC,0BAA0B,CAACC,IACtCA,EAAEC,GAAG,KAAKC,UAAU;AAEtB;;;;;;;;CAQC,GACD,OAAO,MAAMC,iCAAiC;IAC5C;QAAEC,MAAM;QAAcC,MAAM,CAACL,IAAmBA,EAAEC,GAAG,KAAK;IAAM;IAChE;QAAEG,MAAM;QAAeC,MAAM,CAACL,IAAmBA,EAAEC,GAAG,KAAK;IAAM;IACjE;QAAEG,MAAM;IAAc;CACvB,CAGG"}
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
|
+
import type { DependencyDeclaration, MustDeclare } from './declared-dependencies';
|
|
6
7
|
import type { Iac } from './iac';
|
|
8
|
+
import { SHARED_CONSTRUCTS_DEPENDENCIES } from './shared-constructs-constants';
|
|
9
|
+
export { SHARED_CONSTRUCTS_DEPENDENCIES };
|
|
7
10
|
export interface SharedConstructsGeneratorOptions {
|
|
8
11
|
iac: Iac;
|
|
9
12
|
}
|
|
10
|
-
export declare function sharedConstructsGenerator(tree: Tree, options: SharedConstructsGeneratorOptions): Promise<void>;
|
|
13
|
+
export declare function sharedConstructsGenerator<const D extends DependencyDeclaration>(tree: Tree, options: SharedConstructsGeneratorOptions, declaration: D & MustDeclare<typeof SHARED_CONSTRUCTS_DEPENDENCIES, D>): Promise<void>;
|
|
@@ -10,9 +10,10 @@ import { formatFilesInSubtree } from "./format.js";
|
|
|
10
10
|
import { esmVars } from "./module-format.js";
|
|
11
11
|
import { getNpmScopePrefix } from "./npm-scope.js";
|
|
12
12
|
import { getPackageManagerDisplayCommands } from "./pkg-manager.js";
|
|
13
|
-
import { PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, SHARED_CONSTRUCTS_NAME, SHARED_TERRAFORM_DIR, SHARED_TERRAFORM_NAME } from "./shared-constructs-constants.js";
|
|
13
|
+
import { PACKAGES_DIR, SHARED_CONSTRUCTS_DEPENDENCIES, SHARED_CONSTRUCTS_DIR, SHARED_CONSTRUCTS_NAME, SHARED_TERRAFORM_DIR, SHARED_TERRAFORM_NAME } from "./shared-constructs-constants.js";
|
|
14
|
+
export { SHARED_CONSTRUCTS_DEPENDENCIES };
|
|
14
15
|
import { terraformProviderVersions, withVersions } from "./versions.js";
|
|
15
|
-
export async function sharedConstructsGenerator(tree, options) {
|
|
16
|
+
export async function sharedConstructsGenerator(tree, options, declaration) {
|
|
16
17
|
const { iac } = options;
|
|
17
18
|
const npmScopePrefix = getNpmScopePrefix(tree);
|
|
18
19
|
updateGitignore(tree);
|
|
@@ -39,10 +40,10 @@ export async function sharedConstructsGenerator(tree, options) {
|
|
|
39
40
|
}, {
|
|
40
41
|
overwriteStrategy: OverwriteStrategy.Overwrite
|
|
41
42
|
});
|
|
42
|
-
addDependenciesToPackageJson(tree, withVersions([
|
|
43
|
+
addDependenciesToPackageJson(tree, withVersions(declaration, [
|
|
43
44
|
'constructs',
|
|
44
45
|
'aws-cdk-lib'
|
|
45
|
-
]), withVersions([
|
|
46
|
+
]), withVersions(declaration, [
|
|
46
47
|
'@types/node'
|
|
47
48
|
]), joinPathFragments(joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR), 'package.json'));
|
|
48
49
|
await formatFilesInSubtree(tree);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport terraformProjectGenerator from '../terraform/project/generator';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport { readAwsNxPluginConfig } from './config/utils';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport type { Iac } from './iac';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DIR,\n SHARED_CONSTRUCTS_NAME,\n SHARED_TERRAFORM_DIR,\n SHARED_TERRAFORM_NAME,\n} from './shared-constructs-constants';\nimport { terraformProviderVersions, withVersions } from './versions';\n\nexport interface SharedConstructsGeneratorOptions {\n iac: Iac;\n}\n\nexport async function sharedConstructsGenerator(\n tree: Tree,\n options: SharedConstructsGeneratorOptions,\n) {\n const { iac } = options;\n const npmScopePrefix = getNpmScopePrefix(tree);\n updateGitignore(tree);\n\n if (iac === 'cdk') {\n if (\n !tree.exists(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'project.json'),\n )\n ) {\n await tsProjectGenerator(tree, {\n name: SHARED_CONSTRUCTS_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_CONSTRUCTS_DIR,\n });\n tree.delete(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n );\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_CONSTRUCTS_DIR,\n 'src',\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n {\n npmScopePrefix,\n scopeAlias: npmScopePrefix,\n tags: readAwsNxPluginConfig(tree)?.tags ?? [],\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_CONSTRUCTS_NAME}`,\n name: SHARED_CONSTRUCTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n addDependenciesToPackageJson(\n tree,\n withVersions(['constructs', 'aws-cdk-lib']),\n withVersions(['@types/node']),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n 'package.json',\n ),\n );\n await formatFilesInSubtree(tree);\n }\n }\n\n // Handle Terraform provider\n if (iac === 'terraform') {\n const terraformLibPath = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n );\n if (!tree.exists(joinPathFragments(terraformLibPath, 'project.json'))) {\n await terraformProjectGenerator(tree, {\n name: SHARED_TERRAFORM_NAME,\n directory: joinPathFragments(PACKAGES_DIR, 'common'),\n type: 'library',\n });\n\n // `build` is a no-op orchestration target that produces no files of its\n // own. Terraform writes runtime-config entries into\n // `dist/{projectRoot}/runtime-config` at apply time, and other terraform\n // projects contribute their own entries to the same directory. Without\n // explicit outputs, Nx infers `dist/{projectRoot}` as this target's\n // cached output and, on a cache hit, restores the cached copy over the\n // freshly-applied config — wiping the very values consumers read. Declare\n // no outputs so Nx never treats runtime config as a cacheable artifact.\n updateJson(\n tree,\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'project.json'),\n (projectConfig: ProjectConfiguration) => {\n projectConfig.targets ??= {};\n projectConfig.targets.build ??= {};\n projectConfig.targets.build.outputs = [];\n return projectConfig;\n },\n );\n\n tree.delete(joinPathFragments(terraformLibPath, 'src', 'main.tf'));\n\n // Create the metrics.tf file with empty initial values\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform'),\n terraformLibPath,\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await formatFilesInSubtree(tree);\n }\n }\n}\n\nconst updateGitignore = (tree: Tree) => {\n const gitignore = tree.exists('.gitignore')\n ? tree.read('.gitignore', 'utf-8')\n : '';\n const regex = /runtime-config.json/gm;\n const hasRuntimeConfig = regex.test(gitignore ?? '');\n if (hasRuntimeConfig) {\n return;\n }\n tree.write('.gitignore', `${gitignore}\\n\\nruntime-config.json`);\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","terraformProjectGenerator","tsProjectGenerator","readAwsNxPluginConfig","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_CONSTRUCTS_DIR","SHARED_CONSTRUCTS_NAME","SHARED_TERRAFORM_DIR","SHARED_TERRAFORM_NAME","terraformProviderVersions","withVersions","sharedConstructsGenerator","tree","options","iac","npmScopePrefix","updateGitignore","exists","name","directory","subDirectory","delete","dirname","scopeAlias","tags","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite","terraformLibPath","type","projectConfig","targets","build","outputs","gitignore","read","regex","hasRuntimeConfig","test","write"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,EAGjBC,UAAU,QACL,aAAa;AACpB,OAAOC,+BAA+B,oCAAiC;AACvE,OAAOC,wBAAwB,yBAAsB;AACrD,SAASC,qBAAqB,QAAQ,oBAAiB;
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-constructs.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type ProjectConfiguration,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport terraformProjectGenerator from '../terraform/project/generator';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport { readAwsNxPluginConfig } from './config/utils';\nimport type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport type { Iac } from './iac';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n PACKAGES_DIR,\n SHARED_CONSTRUCTS_DEPENDENCIES,\n SHARED_CONSTRUCTS_DIR,\n SHARED_CONSTRUCTS_NAME,\n SHARED_TERRAFORM_DIR,\n SHARED_TERRAFORM_NAME,\n} from './shared-constructs-constants';\n\nexport { SHARED_CONSTRUCTS_DEPENDENCIES };\n\nimport { terraformProviderVersions, withVersions } from './versions';\n\nexport interface SharedConstructsGeneratorOptions {\n iac: Iac;\n}\n\nexport async function sharedConstructsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n options: SharedConstructsGeneratorOptions,\n declaration: D & MustDeclare<typeof SHARED_CONSTRUCTS_DEPENDENCIES, D>,\n) {\n const { iac } = options;\n const npmScopePrefix = getNpmScopePrefix(tree);\n updateGitignore(tree);\n\n if (iac === 'cdk') {\n if (\n !tree.exists(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'project.json'),\n )\n ) {\n await tsProjectGenerator(tree, {\n name: SHARED_CONSTRUCTS_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_CONSTRUCTS_DIR,\n });\n tree.delete(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n );\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_CONSTRUCTS_DIR,\n 'src',\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR, 'src'),\n {\n npmScopePrefix,\n scopeAlias: npmScopePrefix,\n tags: readAwsNxPluginConfig(tree)?.tags ?? [],\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_CONSTRUCTS_NAME}`,\n name: SHARED_CONSTRUCTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_CONSTRUCTS_DEPENDENCIES\n >,\n ['constructs', 'aws-cdk-lib'],\n ),\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_CONSTRUCTS_DEPENDENCIES\n >,\n ['@types/node'],\n ),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_CONSTRUCTS_DIR),\n 'package.json',\n ),\n );\n await formatFilesInSubtree(tree);\n }\n }\n\n // Handle Terraform provider\n if (iac === 'terraform') {\n const terraformLibPath = joinPathFragments(\n PACKAGES_DIR,\n SHARED_TERRAFORM_DIR,\n );\n if (!tree.exists(joinPathFragments(terraformLibPath, 'project.json'))) {\n await terraformProjectGenerator(tree, {\n name: SHARED_TERRAFORM_NAME,\n directory: joinPathFragments(PACKAGES_DIR, 'common'),\n type: 'library',\n });\n\n // `build` is a no-op orchestration target that produces no files of its\n // own. Terraform writes runtime-config entries into\n // `dist/{projectRoot}/runtime-config` at apply time, and other terraform\n // projects contribute their own entries to the same directory. Without\n // explicit outputs, Nx infers `dist/{projectRoot}` as this target's\n // cached output and, on a cache hit, restores the cached copy over the\n // freshly-applied config — wiping the very values consumers read. Declare\n // no outputs so Nx never treats runtime config as a cacheable artifact.\n updateJson(\n tree,\n joinPathFragments(PACKAGES_DIR, SHARED_TERRAFORM_DIR, 'project.json'),\n (projectConfig: ProjectConfiguration) => {\n projectConfig.targets ??= {};\n projectConfig.targets.build ??= {};\n projectConfig.targets.build.outputs = [];\n return projectConfig;\n },\n );\n\n tree.delete(joinPathFragments(terraformLibPath, 'src', 'main.tf'));\n\n // Create the metrics.tf file with empty initial values\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'terraform'),\n terraformLibPath,\n { ...terraformProviderVersions() },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n await formatFilesInSubtree(tree);\n }\n }\n}\n\nconst updateGitignore = (tree: Tree) => {\n const gitignore = tree.exists('.gitignore')\n ? tree.read('.gitignore', 'utf-8')\n : '';\n const regex = /runtime-config.json/gm;\n const hasRuntimeConfig = regex.test(gitignore ?? '');\n if (hasRuntimeConfig) {\n return;\n }\n tree.write('.gitignore', `${gitignore}\\n\\nruntime-config.json`);\n};\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","terraformProjectGenerator","tsProjectGenerator","readAwsNxPluginConfig","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_CONSTRUCTS_DEPENDENCIES","SHARED_CONSTRUCTS_DIR","SHARED_CONSTRUCTS_NAME","SHARED_TERRAFORM_DIR","SHARED_TERRAFORM_NAME","terraformProviderVersions","withVersions","sharedConstructsGenerator","tree","options","declaration","iac","npmScopePrefix","updateGitignore","exists","name","directory","subDirectory","delete","dirname","scopeAlias","tags","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite","terraformLibPath","type","projectConfig","targets","build","outputs","gitignore","read","regex","hasRuntimeConfig","test","write"],"mappings":"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"}
|
|
@@ -3,9 +3,16 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
|
+
import type { DependencyDeclaration, MustDeclare } from './declared-dependencies';
|
|
7
|
+
/** Dependencies a caller must declare to use the shared DynamoDB scripts. */
|
|
8
|
+
export declare const SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES: readonly [{
|
|
9
|
+
readonly name: "@aws-sdk/client-dynamodb";
|
|
10
|
+
}, {
|
|
11
|
+
readonly name: "tsx";
|
|
12
|
+
}];
|
|
6
13
|
/**
|
|
7
14
|
* Ensures the shared scripts package exists and adds DynamoDB local-dev scripts
|
|
8
15
|
* to packages/common/scripts/src/dynamodb/. Used by both ts#dynamodb and
|
|
9
16
|
* py#dynamodb so a single set of TypeScript scripts serves both.
|
|
10
17
|
*/
|
|
11
|
-
export declare function sharedDynamoDBScriptsGenerator(tree: Tree): Promise<void>;
|
|
18
|
+
export declare function sharedDynamoDBScriptsGenerator<const D extends DependencyDeclaration>(tree: Tree, declaration: D & MustDeclare<typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES, D>): Promise<void>;
|
|
@@ -6,20 +6,28 @@ import { addDependenciesToPackageJson } from "./dependencies.js";
|
|
|
6
6
|
import { PACKAGES_DIR, SHARED_SCRIPTS_DIR } from "./shared-constructs-constants.js";
|
|
7
7
|
import { ensureSharedScriptsProject } from "./shared-scripts.js";
|
|
8
8
|
import { withVersions } from "./versions.js";
|
|
9
|
+
/** Dependencies a caller must declare to use the shared DynamoDB scripts. */ export const SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES = [
|
|
10
|
+
{
|
|
11
|
+
name: '@aws-sdk/client-dynamodb'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: 'tsx'
|
|
15
|
+
}
|
|
16
|
+
];
|
|
9
17
|
/**
|
|
10
18
|
* Ensures the shared scripts package exists and adds DynamoDB local-dev scripts
|
|
11
19
|
* to packages/common/scripts/src/dynamodb/. Used by both ts#dynamodb and
|
|
12
20
|
* py#dynamodb so a single set of TypeScript scripts serves both.
|
|
13
|
-
*/ export async function sharedDynamoDBScriptsGenerator(tree) {
|
|
21
|
+
*/ export async function sharedDynamoDBScriptsGenerator(tree, declaration) {
|
|
14
22
|
const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);
|
|
15
23
|
await ensureSharedScriptsProject(tree);
|
|
16
24
|
generateFiles(tree, joinPathFragments(import.meta.dirname, 'files', SHARED_SCRIPTS_DIR, 'src', 'dynamodb'), joinPathFragments(scriptsDir, 'src', 'dynamodb'), {}, {
|
|
17
25
|
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
18
26
|
});
|
|
19
|
-
addDependenciesToPackageJson(tree, withVersions([
|
|
27
|
+
addDependenciesToPackageJson(tree, withVersions(declaration, [
|
|
20
28
|
'@aws-sdk/client-dynamodb'
|
|
21
29
|
]), {}, joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'));
|
|
22
|
-
addDependenciesToPackageJson(tree, {}, withVersions([
|
|
30
|
+
addDependenciesToPackageJson(tree, {}, withVersions(declaration, [
|
|
23
31
|
'tsx'
|
|
24
32
|
]));
|
|
25
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-dynamodb-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { withVersions } from './versions';\n\n/**\n * Ensures the shared scripts package exists and adds DynamoDB local-dev scripts\n * to packages/common/scripts/src/dynamodb/. Used by both ts#dynamodb and\n * py#dynamodb so a single set of TypeScript scripts serves both.\n */\nexport async function sharedDynamoDBScriptsGenerator(\n tree: Tree,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'dynamodb',\n ),\n joinPathFragments(scriptsDir, 'src', 'dynamodb'),\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(['@aws-sdk/client-dynamodb']),\n {},\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(tree
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-dynamodb-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/** Dependencies a caller must declare to use the shared DynamoDB scripts. */\nexport const SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES = [\n { name: '@aws-sdk/client-dynamodb' },\n { name: 'tsx' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\n/**\n * Ensures the shared scripts package exists and adds DynamoDB local-dev scripts\n * to packages/common/scripts/src/dynamodb/. Used by both ts#dynamodb and\n * py#dynamodb so a single set of TypeScript scripts serves both.\n */\nexport async function sharedDynamoDBScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n declaration: D & MustDeclare<typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'dynamodb',\n ),\n joinPathFragments(scriptsDir, 'src', 'dynamodb'),\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES\n >,\n ['@aws-sdk/client-dynamodb'],\n ),\n {},\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES\n >,\n ['tsx'],\n ),\n );\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","PACKAGES_DIR","SHARED_SCRIPTS_DIR","ensureSharedScriptsProject","withVersions","SHARED_DYNAMODB_SCRIPTS_DEPENDENCIES","name","sharedDynamoDBScriptsGenerator","tree","declaration","scriptsDir","dirname","overwriteStrategy","KeepExisting"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAKpB,SAASC,4BAA4B,QAAQ,oBAAiB;AAC9D,SACEC,YAAY,EACZC,kBAAkB,QACb,mCAAgC;AACvC,SAASC,0BAA0B,QAAQ,sBAAmB;AAC9D,SAA6BC,YAAY,QAAQ,gBAAa;AAE9D,2EAA2E,GAC3E,OAAO,MAAMC,uCAAuC;IAClD;QAAEC,MAAM;IAA2B;IACnC;QAAEA,MAAM;IAAM;CACf,CAAuD;AAExD;;;;CAIC,GACD,OAAO,eAAeC,+BAGpBC,IAAU,EACVC,WAA4E;IAE5E,MAAMC,aAAaZ,kBAAkBG,cAAcC;IAEnD,MAAMC,2BAA2BK;IAEjCX,cACEW,MACAV,kBACE,YAAYa,OAAO,EACnB,SACAT,oBACA,OACA,aAEFJ,kBAAkBY,YAAY,OAAO,aACrC,CAAC,GACD;QAAEE,mBAAmBb,kBAAkBc,YAAY;IAAC;IAGtDb,6BACEQ,MACAJ,aACEK,aAGA;QAAC;KAA2B,GAE9B,CAAC,GACDX,kBAAkBG,cAAcC,oBAAoB;IAEtDF,6BACEQ,MACA,CAAC,GACDJ,aACEK,aAGA;QAAC;KAAM;AAGb"}
|
|
@@ -3,9 +3,24 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
|
+
import type { DependencyDeclaration, MustDeclare } from './declared-dependencies';
|
|
7
|
+
import { type IacMetadata } from './shared-constructs-constants';
|
|
8
|
+
/**
|
|
9
|
+
* Dependencies a caller must declare to use the shared infra scripts.
|
|
10
|
+
*
|
|
11
|
+
* Gated on infrastructure having been generated, since the scripts project is
|
|
12
|
+
* only created on that branch.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SHARED_INFRA_SCRIPTS_DEPENDENCIES: readonly [{
|
|
15
|
+
readonly name: "@aws-sdk/client-sts";
|
|
16
|
+
readonly when: (m: IacMetadata) => boolean;
|
|
17
|
+
}, {
|
|
18
|
+
readonly name: "@aws-sdk/credential-providers";
|
|
19
|
+
readonly when: (m: IacMetadata) => boolean;
|
|
20
|
+
}];
|
|
6
21
|
/**
|
|
7
22
|
* Ensures the shared scripts package exists and adds infra-deploy/infra-destroy
|
|
8
23
|
* scripts to packages/common/scripts/src/infra/. Called by ts#infra when
|
|
9
24
|
* stageConfig is enabled.
|
|
10
25
|
*/
|
|
11
|
-
export declare function sharedInfraScriptsGenerator(tree: Tree): Promise<void>;
|
|
26
|
+
export declare function sharedInfraScriptsGenerator<const D extends DependencyDeclaration>(tree: Tree, declaration: D & MustDeclare<typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES, D>): Promise<void>;
|
|
@@ -7,14 +7,29 @@ import { formatFilesInSubtree } from "./format.js";
|
|
|
7
7
|
import { esmVars } from "./module-format.js";
|
|
8
8
|
import { getNpmScopePrefix } from "./npm-scope.js";
|
|
9
9
|
import { getPackageManagerDisplayCommands } from "./pkg-manager.js";
|
|
10
|
-
import { PACKAGES_DIR, SHARED_SCRIPTS_DIR, SHARED_SCRIPTS_NAME } from "./shared-constructs-constants.js";
|
|
10
|
+
import { generatedInfrastructure, PACKAGES_DIR, SHARED_SCRIPTS_DIR, SHARED_SCRIPTS_NAME } from "./shared-constructs-constants.js";
|
|
11
11
|
import { ensureSharedScriptsProject } from "./shared-scripts.js";
|
|
12
12
|
import { withVersions } from "./versions.js";
|
|
13
|
+
/**
|
|
14
|
+
* Dependencies a caller must declare to use the shared infra scripts.
|
|
15
|
+
*
|
|
16
|
+
* Gated on infrastructure having been generated, since the scripts project is
|
|
17
|
+
* only created on that branch.
|
|
18
|
+
*/ export const SHARED_INFRA_SCRIPTS_DEPENDENCIES = [
|
|
19
|
+
{
|
|
20
|
+
name: '@aws-sdk/client-sts',
|
|
21
|
+
when: generatedInfrastructure
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: '@aws-sdk/credential-providers',
|
|
25
|
+
when: generatedInfrastructure
|
|
26
|
+
}
|
|
27
|
+
];
|
|
13
28
|
/**
|
|
14
29
|
* Ensures the shared scripts package exists and adds infra-deploy/infra-destroy
|
|
15
30
|
* scripts to packages/common/scripts/src/infra/. Called by ts#infra when
|
|
16
31
|
* stageConfig is enabled.
|
|
17
|
-
*/ export async function sharedInfraScriptsGenerator(tree) {
|
|
32
|
+
*/ export async function sharedInfraScriptsGenerator(tree, declaration) {
|
|
18
33
|
const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);
|
|
19
34
|
await ensureSharedScriptsProject(tree);
|
|
20
35
|
const npmScopePrefix = getNpmScopePrefix(tree);
|
|
@@ -26,7 +41,7 @@ import { withVersions } from "./versions.js";
|
|
|
26
41
|
overwriteStrategy: OverwriteStrategy.KeepExisting
|
|
27
42
|
});
|
|
28
43
|
// Used by deploy-time scripts for assumeRole
|
|
29
|
-
addDependenciesToPackageJson(tree, {}, withVersions([
|
|
44
|
+
addDependenciesToPackageJson(tree, {}, withVersions(declaration, [
|
|
30
45
|
'@aws-sdk/client-sts',
|
|
31
46
|
'@aws-sdk/credential-providers'
|
|
32
47
|
]), joinPathFragments(joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR), 'package.json'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-infra-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n SHARED_SCRIPTS_NAME,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { withVersions } from './versions';\n\n/**\n * Ensures the shared scripts package exists and adds infra-deploy/infra-destroy\n * scripts to packages/common/scripts/src/infra/. Called by ts#infra when\n * stageConfig is enabled.\n */\nexport async function sharedInfraScriptsGenerator(tree: Tree): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'infra',\n ),\n joinPathFragments(scriptsDir, 'src', 'infra'),\n { scopeAlias, ...esmVars(tree) },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Used by deploy-time scripts for assumeRole\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(['@aws-sdk/client-sts', '@aws-sdk/credential-providers']),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR),\n 'package.json',\n ),\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n scriptsDir,\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_SCRIPTS_NAME}`,\n name: SHARED_SCRIPTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n { overwriteStrategy: OverwriteStrategy.Overwrite },\n );\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_SCRIPTS_NAME","ensureSharedScriptsProject","withVersions","sharedInfraScriptsGenerator","tree","scriptsDir","npmScopePrefix","scopeAlias","dirname","overwriteStrategy","KeepExisting","fullyQualifiedName","
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-infra-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport type {\n DeclaredTsDependency,\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport { getPackageManagerDisplayCommands } from './pkg-manager';\nimport {\n generatedInfrastructure,\n type IacMetadata,\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n SHARED_SCRIPTS_NAME,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/**\n * Dependencies a caller must declare to use the shared infra scripts.\n *\n * Gated on infrastructure having been generated, since the scripts project is\n * only created on that branch.\n */\nexport const SHARED_INFRA_SCRIPTS_DEPENDENCIES = [\n { name: '@aws-sdk/client-sts', when: generatedInfrastructure },\n { name: '@aws-sdk/credential-providers', when: generatedInfrastructure },\n] as const satisfies readonly DeclaredTsDependency<\n ITsDepVersion,\n IacMetadata\n>[];\n\n/**\n * Ensures the shared scripts package exists and adds infra-deploy/infra-destroy\n * scripts to packages/common/scripts/src/infra/. Called by ts#infra when\n * stageConfig is enabled.\n */\nexport async function sharedInfraScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n declaration: D & MustDeclare<typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n const scriptsDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR);\n\n await ensureSharedScriptsProject(tree);\n\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'infra',\n ),\n joinPathFragments(scriptsDir, 'src', 'infra'),\n { scopeAlias, ...esmVars(tree) },\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // Used by deploy-time scripts for assumeRole\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_INFRA_SCRIPTS_DEPENDENCIES\n >,\n ['@aws-sdk/client-sts', '@aws-sdk/credential-providers'],\n ),\n joinPathFragments(\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR),\n 'package.json',\n ),\n );\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'common', 'readme'),\n scriptsDir,\n {\n fullyQualifiedName: `${npmScopePrefix}${SHARED_SCRIPTS_NAME}`,\n name: SHARED_SCRIPTS_NAME,\n pkgMgrCmd: getPackageManagerDisplayCommands().exec,\n },\n { overwriteStrategy: OverwriteStrategy.Overwrite },\n );\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","getPackageManagerDisplayCommands","generatedInfrastructure","PACKAGES_DIR","SHARED_SCRIPTS_DIR","SHARED_SCRIPTS_NAME","ensureSharedScriptsProject","withVersions","SHARED_INFRA_SCRIPTS_DEPENDENCIES","name","when","sharedInfraScriptsGenerator","tree","declaration","scriptsDir","npmScopePrefix","scopeAlias","dirname","overwriteStrategy","KeepExisting","fullyQualifiedName","pkgMgrCmd","exec","Overwrite"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAMpB,SAASC,4BAA4B,QAAQ,oBAAiB;AAC9D,SAASC,oBAAoB,QAAQ,cAAW;AAChD,SAASC,OAAO,QAAQ,qBAAkB;AAC1C,SAASC,iBAAiB,QAAQ,iBAAc;AAChD,SAASC,gCAAgC,QAAQ,mBAAgB;AACjE,SACEC,uBAAuB,EAEvBC,YAAY,EACZC,kBAAkB,EAClBC,mBAAmB,QACd,mCAAgC;AACvC,SAASC,0BAA0B,QAAQ,sBAAmB;AAC9D,SAA6BC,YAAY,QAAQ,gBAAa;AAE9D;;;;;CAKC,GACD,OAAO,MAAMC,oCAAoC;IAC/C;QAAEC,MAAM;QAAuBC,MAAMR;IAAwB;IAC7D;QAAEO,MAAM;QAAiCC,MAAMR;IAAwB;CACxE,CAGG;AAEJ;;;;CAIC,GACD,OAAO,eAAeS,4BAGpBC,IAAU,EACVC,WAAyE;IAEzE,MAAMC,aAAanB,kBAAkBQ,cAAcC;IAEnD,MAAME,2BAA2BM;IAEjC,MAAMG,iBAAiBf,kBAAkBY;IACzC,MAAMI,aAAaD;IAEnBrB,cACEkB,MACAjB,kBACE,YAAYsB,OAAO,EACnB,SACAb,oBACA,OACA,UAEFT,kBAAkBmB,YAAY,OAAO,UACrC;QAAEE;QAAY,GAAGjB,QAAQa,KAAK;IAAC,GAC/B;QAAEM,mBAAmBtB,kBAAkBuB,YAAY;IAAC;IAGtD,6CAA6C;IAC7CtB,6BACEe,MACA,CAAC,GACDL,aACEM,aAGA;QAAC;QAAuB;KAAgC,GAE1DlB,kBACEA,kBAAkBQ,cAAcC,qBAChC;IAIJV,cACEkB,MACAjB,kBAAkB,YAAYsB,OAAO,EAAE,SAAS,UAAU,WAC1DH,YACA;QACEM,oBAAoB,GAAGL,iBAAiBV,qBAAqB;QAC7DI,MAAMJ;QACNgB,WAAWpB,mCAAmCqB,IAAI;IACpD,GACA;QAAEJ,mBAAmBtB,kBAAkB2B,SAAS;IAAC;IAGnD,MAAMzB,qBAAqBc;AAC7B"}
|
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
|
+
import type { DependencyDeclaration, MustDeclare } from './declared-dependencies';
|
|
7
|
+
/** Dependencies a caller must declare to use the shared RDB scripts. */
|
|
8
|
+
export declare const SHARED_RDB_SCRIPTS_DEPENDENCIES: readonly [{
|
|
9
|
+
readonly name: "pg";
|
|
10
|
+
}, {
|
|
11
|
+
readonly name: "@types/pg";
|
|
12
|
+
}, {
|
|
13
|
+
readonly name: "mariadb";
|
|
14
|
+
}, {
|
|
15
|
+
readonly name: "tsx";
|
|
16
|
+
}];
|
|
6
17
|
/**
|
|
7
18
|
* Ensures the shared scripts package exists and adds RDB local-dev scripts
|
|
8
19
|
* to packages/common/scripts/src/rdb/. Used by ts#rdb.
|
|
@@ -13,4 +24,4 @@ import { type Tree } from '@nx/devkit';
|
|
|
13
24
|
* The engine-specific file names allow postgres and mysql projects to
|
|
14
25
|
* coexist in the same workspace.
|
|
15
26
|
*/
|
|
16
|
-
export declare function sharedRdbScriptsGenerator(tree: Tree, engine: 'postgres' | 'mysql'): Promise<void>;
|
|
27
|
+
export declare function sharedRdbScriptsGenerator<const D extends DependencyDeclaration>(tree: Tree, engine: 'postgres' | 'mysql', declaration: D & MustDeclare<typeof SHARED_RDB_SCRIPTS_DEPENDENCIES, D>): Promise<void>;
|
|
@@ -6,6 +6,20 @@ import { addDependenciesToPackageJson } from "./dependencies.js";
|
|
|
6
6
|
import { PACKAGES_DIR, SHARED_SCRIPTS_DIR } from "./shared-constructs-constants.js";
|
|
7
7
|
import { ensureSharedScriptsProject } from "./shared-scripts.js";
|
|
8
8
|
import { withVersions } from "./versions.js";
|
|
9
|
+
/** Dependencies a caller must declare to use the shared RDB scripts. */ export const SHARED_RDB_SCRIPTS_DEPENDENCIES = [
|
|
10
|
+
{
|
|
11
|
+
name: 'pg'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
name: '@types/pg'
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'mariadb'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'tsx'
|
|
21
|
+
}
|
|
22
|
+
];
|
|
9
23
|
/**
|
|
10
24
|
* Ensures the shared scripts package exists and adds RDB local-dev scripts
|
|
11
25
|
* to packages/common/scripts/src/rdb/. Used by ts#rdb.
|
|
@@ -15,7 +29,7 @@ import { withVersions } from "./versions.js";
|
|
|
15
29
|
* projects do not reference database client packages they don't install.
|
|
16
30
|
* The engine-specific file names allow postgres and mysql projects to
|
|
17
31
|
* coexist in the same workspace.
|
|
18
|
-
*/ export async function sharedRdbScriptsGenerator(tree, engine) {
|
|
32
|
+
*/ export async function sharedRdbScriptsGenerator(tree, engine, declaration) {
|
|
19
33
|
await ensureSharedScriptsProject(tree);
|
|
20
34
|
const rdbScriptsDir = joinPathFragments(import.meta.dirname, 'files', SHARED_SCRIPTS_DIR, 'src', 'rdb');
|
|
21
35
|
const targetDir = joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'src', 'rdb');
|
|
@@ -36,8 +50,8 @@ import { withVersions } from "./versions.js";
|
|
|
36
50
|
const clientDevDeps = engine === 'postgres' ? [
|
|
37
51
|
'@types/pg'
|
|
38
52
|
] : [];
|
|
39
|
-
addDependenciesToPackageJson(tree, withVersions(clientDeps), withVersions(clientDevDeps), joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'));
|
|
40
|
-
addDependenciesToPackageJson(tree, {}, withVersions([
|
|
53
|
+
addDependenciesToPackageJson(tree, withVersions(declaration, clientDeps), withVersions(declaration, clientDevDeps), joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'));
|
|
54
|
+
addDependenciesToPackageJson(tree, {}, withVersions(declaration, [
|
|
41
55
|
'tsx'
|
|
42
56
|
]));
|
|
43
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-rdb-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/**\n * Ensures the shared scripts package exists and adds RDB local-dev scripts\n * to packages/common/scripts/src/rdb/. Used by ts#rdb.\n *\n * Engine-agnostic scripts (pull-image, start-container) are always vended.\n * Only the wait-for-db script for the requested engine is vended so that\n * projects do not reference database client packages they don't install.\n * The engine-specific file names allow postgres and mysql projects to\n * coexist in the same workspace.\n */\nexport async function sharedRdbScriptsGenerator(\n tree: Tree,\n engine: 'postgres' | 'mysql',\n): Promise<void> {\n await ensureSharedScriptsProject(tree);\n\n const rdbScriptsDir = joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n const targetDir = joinPathFragments(\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, 'shared'),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, engine),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The engine's wait-for-db script imports the database client, so declare it\n // in the scripts project's own package.json (tsx runs the scripts and lives\n // in the workspace root devDependencies).\n const clientDeps:
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-rdb-scripts.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n} from '@nx/devkit';\nimport type {\n DependencyDeclaration,\n MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport {\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n} from './shared-constructs-constants';\nimport { ensureSharedScriptsProject } from './shared-scripts';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/** Dependencies a caller must declare to use the shared RDB scripts. */\nexport const SHARED_RDB_SCRIPTS_DEPENDENCIES = [\n { name: 'pg' },\n { name: '@types/pg' },\n { name: 'mariadb' },\n { name: 'tsx' },\n] as const satisfies readonly { name: ITsDepVersion }[];\n\n/**\n * Ensures the shared scripts package exists and adds RDB local-dev scripts\n * to packages/common/scripts/src/rdb/. Used by ts#rdb.\n *\n * Engine-agnostic scripts (pull-image, start-container) are always vended.\n * Only the wait-for-db script for the requested engine is vended so that\n * projects do not reference database client packages they don't install.\n * The engine-specific file names allow postgres and mysql projects to\n * coexist in the same workspace.\n */\nexport async function sharedRdbScriptsGenerator<\n const D extends DependencyDeclaration,\n>(\n tree: Tree,\n engine: 'postgres' | 'mysql',\n declaration: D & MustDeclare<typeof SHARED_RDB_SCRIPTS_DEPENDENCIES, D>,\n): Promise<void> {\n await ensureSharedScriptsProject(tree);\n\n const rdbScriptsDir = joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n const targetDir = joinPathFragments(\n PACKAGES_DIR,\n SHARED_SCRIPTS_DIR,\n 'src',\n 'rdb',\n );\n\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, 'shared'),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n generateFiles(\n tree,\n joinPathFragments(rdbScriptsDir, engine),\n targetDir,\n {},\n { overwriteStrategy: OverwriteStrategy.KeepExisting },\n );\n\n // The engine's wait-for-db script imports the database client, so declare it\n // in the scripts project's own package.json (tsx runs the scripts and lives\n // in the workspace root devDependencies).\n const clientDeps: (typeof SHARED_RDB_SCRIPTS_DEPENDENCIES)[number]['name'][] =\n engine === 'postgres' ? ['pg'] : ['mariadb'];\n const clientDevDeps: (typeof SHARED_RDB_SCRIPTS_DEPENDENCIES)[number]['name'][] =\n engine === 'postgres' ? ['@types/pg'] : [];\n addDependenciesToPackageJson(\n tree,\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n clientDeps,\n ),\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n clientDevDeps,\n ),\n joinPathFragments(PACKAGES_DIR, SHARED_SCRIPTS_DIR, 'package.json'),\n );\n addDependenciesToPackageJson(\n tree,\n {},\n withVersions(\n declaration as DependencyDeclaration<\n typeof SHARED_RDB_SCRIPTS_DEPENDENCIES\n >,\n ['tsx'],\n ),\n );\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","addDependenciesToPackageJson","PACKAGES_DIR","SHARED_SCRIPTS_DIR","ensureSharedScriptsProject","withVersions","SHARED_RDB_SCRIPTS_DEPENDENCIES","name","sharedRdbScriptsGenerator","tree","engine","declaration","rdbScriptsDir","dirname","targetDir","overwriteStrategy","KeepExisting","clientDeps","clientDevDeps"],"mappings":"AAAA;;;CAGC,GACD,SACEA,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QAEZ,aAAa;AAKpB,SAASC,4BAA4B,QAAQ,oBAAiB;AAC9D,SACEC,YAAY,EACZC,kBAAkB,QACb,mCAAgC;AACvC,SAASC,0BAA0B,QAAQ,sBAAmB;AAC9D,SAA6BC,YAAY,QAAQ,gBAAa;AAE9D,sEAAsE,GACtE,OAAO,MAAMC,kCAAkC;IAC7C;QAAEC,MAAM;IAAK;IACb;QAAEA,MAAM;IAAY;IACpB;QAAEA,MAAM;IAAU;IAClB;QAAEA,MAAM;IAAM;CACf,CAAuD;AAExD;;;;;;;;;CASC,GACD,OAAO,eAAeC,0BAGpBC,IAAU,EACVC,MAA4B,EAC5BC,WAAuE;IAEvE,MAAMP,2BAA2BK;IAEjC,MAAMG,gBAAgBb,kBACpB,YAAYc,OAAO,EACnB,SACAV,oBACA,OACA;IAEF,MAAMW,YAAYf,kBAChBG,cACAC,oBACA,OACA;IAGFL,cACEW,MACAV,kBAAkBa,eAAe,WACjCE,WACA,CAAC,GACD;QAAEC,mBAAmBf,kBAAkBgB,YAAY;IAAC;IAEtDlB,cACEW,MACAV,kBAAkBa,eAAeF,SACjCI,WACA,CAAC,GACD;QAAEC,mBAAmBf,kBAAkBgB,YAAY;IAAC;IAGtD,6EAA6E;IAC7E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAMC,aACJP,WAAW,aAAa;QAAC;KAAK,GAAG;QAAC;KAAU;IAC9C,MAAMQ,gBACJR,WAAW,aAAa;QAAC;KAAY,GAAG,EAAE;IAC5CT,6BACEQ,MACAJ,aACEM,aAGAM,aAEFZ,aACEM,aAGAO,gBAEFnB,kBAAkBG,cAAcC,oBAAoB;IAEtDF,6BACEQ,MACA,CAAC,GACDJ,aACEM,aAGA;QAAC;KAAM;AAGb"}
|
|
@@ -3,4 +3,29 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { type Tree } from '@nx/devkit';
|
|
6
|
-
|
|
6
|
+
import { type DependencyDeclaration, type MustDeclare } from './declared-dependencies';
|
|
7
|
+
/** Dependencies a caller must declare to use the shared shadcn project. */
|
|
8
|
+
export declare const SHADCN_DEPENDENCIES: readonly [{
|
|
9
|
+
readonly name: "react";
|
|
10
|
+
}, {
|
|
11
|
+
readonly name: "react-dom";
|
|
12
|
+
}, {
|
|
13
|
+
readonly name: "class-variance-authority";
|
|
14
|
+
}, {
|
|
15
|
+
readonly name: "clsx";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "tailwind-merge";
|
|
18
|
+
}, {
|
|
19
|
+
readonly name: "lucide-react";
|
|
20
|
+
}, {
|
|
21
|
+
readonly name: "tw-animate-css";
|
|
22
|
+
}, {
|
|
23
|
+
readonly name: "radix-ui";
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "vite";
|
|
26
|
+
}, {
|
|
27
|
+
readonly name: "vitest";
|
|
28
|
+
}, {
|
|
29
|
+
readonly name: "@vitest/coverage-v8";
|
|
30
|
+
}];
|
|
31
|
+
export declare function sharedShadcnGenerator<const D extends DependencyDeclaration>(tree: Tree, declaration: D & MustDeclare<typeof SHADCN_DEPENDENCIES, D>): Promise<void>;
|
|
@@ -4,23 +4,42 @@
|
|
|
4
4
|
*/ import { generateFiles, joinPathFragments, OverwriteStrategy, updateJson } from "@nx/devkit";
|
|
5
5
|
import tsProjectGenerator from "../ts/lib/generator.js";
|
|
6
6
|
import { configureTsProject } from "../ts/lib/ts-project-utils.js";
|
|
7
|
+
import { VITEST_DEPENDENCIES } from "../ts/lib/vitest.js";
|
|
8
|
+
import { declaredNames, forDependencies } from "./declared-dependencies.js";
|
|
7
9
|
import { addDependenciesToPackageJson } from "./dependencies.js";
|
|
8
10
|
import { formatFilesInSubtree } from "./format.js";
|
|
9
11
|
import { esmVars } from "./module-format.js";
|
|
10
12
|
import { getNpmScopePrefix } from "./npm-scope.js";
|
|
11
13
|
import { PACKAGES_DIR, SHARED_SHADCN_DIR, SHARED_SHADCN_NAME } from "./shared-constructs-constants.js";
|
|
12
14
|
import { withVersions } from "./versions.js";
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
/** Dependencies a caller must declare to use the shared shadcn project. */ export const SHADCN_DEPENDENCIES = [
|
|
16
|
+
{
|
|
17
|
+
name: 'react'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'react-dom'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'class-variance-authority'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'clsx'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'tailwind-merge'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'lucide-react'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'tw-animate-css'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'radix-ui'
|
|
39
|
+
},
|
|
40
|
+
...VITEST_DEPENDENCIES
|
|
22
41
|
];
|
|
23
|
-
export async function sharedShadcnGenerator(tree) {
|
|
42
|
+
export async function sharedShadcnGenerator(tree, declaration) {
|
|
24
43
|
const npmScopePrefix = getNpmScopePrefix(tree);
|
|
25
44
|
const scopeAlias = npmScopePrefix;
|
|
26
45
|
const sharedShadcnAlias = `${scopeAlias}${SHARED_SHADCN_NAME}`;
|
|
@@ -49,7 +68,7 @@ export async function sharedShadcnGenerator(tree) {
|
|
|
49
68
|
await configureTsProject(tree, {
|
|
50
69
|
dir: libraryRoot,
|
|
51
70
|
fullyQualifiedName
|
|
52
|
-
});
|
|
71
|
+
}, forDependencies(declaration));
|
|
53
72
|
updateJson(tree, joinPathFragments(libraryRoot, 'tsconfig.lib.json'), (json)=>({
|
|
54
73
|
...json,
|
|
55
74
|
compilerOptions: {
|
|
@@ -67,9 +86,7 @@ export async function sharedShadcnGenerator(tree) {
|
|
|
67
86
|
'src/**/*.tsx'
|
|
68
87
|
]))
|
|
69
88
|
}));
|
|
70
|
-
addDependenciesToPackageJson(tree, withVersions(
|
|
71
|
-
...SHADCN_DEPS
|
|
72
|
-
]), {}, joinPathFragments(libraryRoot, 'package.json'));
|
|
89
|
+
addDependenciesToPackageJson(tree, withVersions(forDependencies(declaration), declaredNames(SHADCN_DEPENDENCIES)), {}, joinPathFragments(libraryRoot, 'package.json'));
|
|
73
90
|
}
|
|
74
91
|
updateJson(tree, 'tsconfig.base.json', (json)=>({
|
|
75
92
|
...json,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-shadcn.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport { configureTsProject } from '../ts/lib/ts-project-utils';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport {\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n SHARED_SHADCN_NAME,\n} from './shared-constructs-constants';\nimport { type ITsDepVersion, withVersions } from './versions';\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../packages/nx-plugin/src/utils/shared-shadcn.ts"],"sourcesContent":["/**\n * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport {\n generateFiles,\n joinPathFragments,\n OverwriteStrategy,\n type Tree,\n updateJson,\n} from '@nx/devkit';\nimport tsProjectGenerator from '../ts/lib/generator';\nimport { configureTsProject } from '../ts/lib/ts-project-utils';\nimport { VITEST_DEPENDENCIES } from '../ts/lib/vitest';\nimport {\n type DependencyDeclaration,\n declaredNames,\n forDependencies,\n type MustDeclare,\n} from './declared-dependencies';\nimport { addDependenciesToPackageJson } from './dependencies';\nimport { formatFilesInSubtree } from './format';\nimport { esmVars } from './module-format';\nimport { getNpmScopePrefix } from './npm-scope';\nimport {\n PACKAGES_DIR,\n SHARED_SHADCN_DIR,\n SHARED_SHADCN_NAME,\n} from './shared-constructs-constants';\nimport { type ITsDepVersion, withVersions } from './versions';\n\n/** Dependencies a caller must declare to use the shared shadcn project. */\nexport const SHADCN_DEPENDENCIES = [\n { name: 'react' },\n { name: 'react-dom' },\n { name: 'class-variance-authority' },\n { name: 'clsx' },\n { name: 'tailwind-merge' },\n { name: 'lucide-react' },\n { name: 'tw-animate-css' },\n { name: 'radix-ui' },\n ...VITEST_DEPENDENCIES,\n] as const satisfies readonly { name: ITsDepVersion }[];\n\nexport async function sharedShadcnGenerator<\n const D extends DependencyDeclaration,\n>(tree: Tree, declaration: D & MustDeclare<typeof SHADCN_DEPENDENCIES, D>) {\n const npmScopePrefix = getNpmScopePrefix(tree);\n const scopeAlias = npmScopePrefix;\n const sharedShadcnAlias = `${scopeAlias}${SHARED_SHADCN_NAME}`;\n const fullyQualifiedName = `${npmScopePrefix}${SHARED_SHADCN_NAME}`;\n const libraryRoot = joinPathFragments(PACKAGES_DIR, SHARED_SHADCN_DIR);\n const shadcnSrcRoot = joinPathFragments(libraryRoot, 'src');\n\n if (!tree.exists(joinPathFragments(libraryRoot, 'project.json'))) {\n await tsProjectGenerator(tree, {\n name: SHARED_SHADCN_NAME,\n directory: PACKAGES_DIR,\n subDirectory: SHARED_SHADCN_DIR,\n });\n\n tree.delete(shadcnSrcRoot);\n\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', SHARED_SHADCN_DIR, 'src'),\n shadcnSrcRoot,\n {\n scopeAlias,\n ...esmVars(tree),\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n\n generateFiles(\n tree,\n joinPathFragments(\n import.meta.dirname,\n 'files',\n SHARED_SHADCN_DIR,\n 'readme',\n ),\n libraryRoot,\n {\n fullyQualifiedName,\n scopeAlias,\n },\n {\n overwriteStrategy: OverwriteStrategy.Overwrite,\n },\n );\n\n await configureTsProject(\n tree,\n {\n dir: libraryRoot,\n fullyQualifiedName,\n },\n forDependencies<typeof SHADCN_DEPENDENCIES>(declaration),\n );\n\n updateJson(\n tree,\n joinPathFragments(libraryRoot, 'tsconfig.lib.json'),\n (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n jsx: 'react-jsx',\n module: 'preserve',\n moduleResolution: 'bundler',\n lib: Array.from(\n new Set([...(json.compilerOptions?.lib ?? []), 'DOM']),\n ),\n },\n include: Array.from(new Set([...(json.include ?? []), 'src/**/*.tsx'])),\n }),\n );\n\n addDependenciesToPackageJson(\n tree,\n withVersions(\n forDependencies<typeof SHADCN_DEPENDENCIES>(declaration),\n declaredNames(SHADCN_DEPENDENCIES),\n ),\n {},\n joinPathFragments(libraryRoot, 'package.json'),\n );\n }\n\n updateJson(tree, 'tsconfig.base.json', (json) => ({\n ...json,\n compilerOptions: {\n ...json.compilerOptions,\n paths: {\n ...(json.compilerOptions?.paths ?? {}),\n [`${sharedShadcnAlias}/*`]: [\n `./${joinPathFragments(libraryRoot, 'src', '*')}`,\n ],\n },\n },\n }));\n\n // components.json lives in the package so `shadcn add` runs there and\n // installs component dependencies into the package's own manifest.\n if (!tree.exists(joinPathFragments(libraryRoot, 'components.json'))) {\n generateFiles(\n tree,\n joinPathFragments(import.meta.dirname, 'files', 'shadcn'),\n libraryRoot,\n {\n sharedShadcnAlias,\n },\n {\n overwriteStrategy: OverwriteStrategy.KeepExisting,\n },\n );\n }\n\n await formatFilesInSubtree(tree);\n}\n"],"names":["generateFiles","joinPathFragments","OverwriteStrategy","updateJson","tsProjectGenerator","configureTsProject","VITEST_DEPENDENCIES","declaredNames","forDependencies","addDependenciesToPackageJson","formatFilesInSubtree","esmVars","getNpmScopePrefix","PACKAGES_DIR","SHARED_SHADCN_DIR","SHARED_SHADCN_NAME","withVersions","SHADCN_DEPENDENCIES","name","sharedShadcnGenerator","tree","declaration","npmScopePrefix","scopeAlias","sharedShadcnAlias","fullyQualifiedName","libraryRoot","shadcnSrcRoot","exists","directory","subDirectory","delete","dirname","overwriteStrategy","KeepExisting","Overwrite","dir","json","compilerOptions","jsx","module","moduleResolution","lib","Array","from","Set","include","paths"],"mappings":"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"}
|