@aws/nx-plugin 0.1.2 → 0.1.4
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-THIRD-PARTY +5976 -0
- package/package.json +3 -2
- package/src/cloudscape-website/app/files/app/src/layouts/App/index.tsx.template +20 -20
- package/src/cloudscape-website/app/files/app/src/main.tsx.template +18 -17
- package/src/cloudscape-website/app/files/common/constructs/src/__websiteNameKebabCase__/index.ts.template +2 -2
- package/src/cloudscape-website/app/files/common/constructs/src/__websiteNameKebabCase__/static-website.ts.template +6 -4
- package/src/cloudscape-website/app/generator.js +2 -1
- package/src/cloudscape-website/app/generator.js.map +1 -1
- package/src/cloudscape-website/cognito-auth/__snapshots__/generator.spec.ts.snap +1 -2
- package/src/cloudscape-website/cognito-auth/files/app/components/CognitoAuth/index.tsx.template +15 -15
- package/src/cloudscape-website/cognito-auth/files/common/constructs/src/identity/index.ts.template +2 -2
- package/src/cloudscape-website/cognito-auth/files/common/constructs/src/identity/user-identity.ts.template +1 -4
- package/src/cloudscape-website/cognito-auth/files/common/constructs/src/identity/userpool-with-mfa.ts.template +38 -38
- package/src/cloudscape-website/cognito-auth/generator.js +4 -3
- package/src/cloudscape-website/cognito-auth/generator.js.map +1 -1
- package/src/cloudscape-website/runtime-config/__snapshots__/generator.spec.ts.snap +2 -5
- package/src/cloudscape-website/runtime-config/files/app/components/RuntimeConfig/index.tsx.template +12 -8
- package/src/cloudscape-website/runtime-config/generator.js +3 -2
- package/src/cloudscape-website/runtime-config/generator.js.map +1 -1
- package/src/gitlab/generator.js +0 -1
- package/src/gitlab/generator.js.map +1 -1
- package/src/infra/app/files/src/main.ts.template +9 -9
- package/src/infra/app/generator.js +2 -1
- package/src/infra/app/generator.js.map +1 -1
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/trpc/backend/files/backend/src/lambdas/router.ts.template +4 -4
- package/src/trpc/backend/files/common/constructs/src/__apiNameKebabCase__/index.ts.template +69 -44
- package/src/trpc/backend/files/schema/src/index.ts.template +2 -2
- package/src/trpc/backend/generator.js +2 -1
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/react/files/src/components/TRPCClientProvider/index.tsx.template +21 -21
- package/src/trpc/react/generator.js +2 -1
- package/src/trpc/react/generator.js.map +1 -1
- package/src/utils/files/common/constructs/src/index.ts.template +1 -1
- package/src/utils/files/common/constructs/src/runtime-config/runtime-config.ts.template +4 -4
- package/src/utils/files/common/types/src/index.ts.template +1 -1
- package/src/utils/format.d.ts +10 -0
- package/src/utils/format.js +64 -0
- package/src/utils/format.js.map +1 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { CdkGraph, FilterPreset, Filters } from
|
|
2
|
-
import { CdkGraphDiagramPlugin } from
|
|
3
|
-
import { CdkGraphThreatComposerPlugin } from
|
|
4
|
-
import { AwsPrototypingChecks, PDKNag } from
|
|
5
|
-
import { ApplicationStack } from
|
|
1
|
+
import { CdkGraph, FilterPreset, Filters } from '@aws/pdk/cdk-graph';
|
|
2
|
+
import { CdkGraphDiagramPlugin } from '@aws/pdk/cdk-graph-plugin-diagram';
|
|
3
|
+
import { CdkGraphThreatComposerPlugin } from '@aws/pdk/cdk-graph-plugin-threat-composer';
|
|
4
|
+
import { AwsPrototypingChecks, PDKNag } from '@aws/pdk/pdk-nag';
|
|
5
|
+
import { ApplicationStack } from './stacks/application-stack.js';
|
|
6
6
|
|
|
7
7
|
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
8
8
|
(async () => {
|
|
@@ -11,10 +11,10 @@ import { ApplicationStack } from "./stacks/application-stack.js";
|
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
// Use this to deploy your own sandbox environment (assumes your CLI credentials)
|
|
14
|
-
new ApplicationStack(app,
|
|
14
|
+
new ApplicationStack(app, '<%= name %>-sandbox', {
|
|
15
15
|
env: {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
account: process.env.CDK_DEFAULT_ACCOUNT,
|
|
17
|
+
region: process.env.CDK_DEFAULT_REGION,
|
|
18
18
|
},
|
|
19
19
|
});
|
|
20
20
|
|
|
@@ -34,4 +34,4 @@ import { ApplicationStack } from "./stacks/application-stack.js";
|
|
|
34
34
|
|
|
35
35
|
app.synth();
|
|
36
36
|
await graph.report();
|
|
37
|
-
})();
|
|
37
|
+
})();
|
|
@@ -9,6 +9,7 @@ const tslib_1 = require("tslib");
|
|
|
9
9
|
const devkit_1 = require("@nx/devkit");
|
|
10
10
|
const generator_1 = tslib_1.__importStar(require("../../ts/lib/generator"));
|
|
11
11
|
const versions_1 = require("../../utils/versions");
|
|
12
|
+
const format_1 = require("../../utils/format");
|
|
12
13
|
function infraGenerator(tree, schema) {
|
|
13
14
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
14
15
|
const lib = (0, generator_1.getTsLibDetails)(tree, schema);
|
|
@@ -53,7 +54,7 @@ function infraGenerator(tree, schema) {
|
|
|
53
54
|
'constructs',
|
|
54
55
|
'source-map-support',
|
|
55
56
|
]), (0, versions_1.withVersions)(['tsx']));
|
|
56
|
-
yield (0,
|
|
57
|
+
yield (0, format_1.formatFilesInSubtree)(tree, libraryRoot);
|
|
57
58
|
return tsLibGeneratorCallback;
|
|
58
59
|
});
|
|
59
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/infra/app/generator.ts"],"names":[],"mappings":";;AAmBA,wCAuEC;;AA1FD;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/infra/app/generator.ts"],"names":[],"mappings":";;AAmBA,wCAuEC;;AA1FD;;;GAGG;AACH,uCASoB;AAEpB,4EAAyE;AACzE,mDAAoD;AACpD,+CAA0D;AAE1D,SAAsB,cAAc,CAClC,IAAU,EACV,MAA4B;;QAE5B,MAAM,GAAG,GAAG,IAAA,2BAAe,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,sBAAsB,GAAG,MAAM,IAAA,mBAAc,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAElE,MAAM,gBAAgB,GAAG,SAAS,GAAG,CAAC,GAAG,UAAU,CAAC;QACpD,MAAM,mBAAmB,GACvB,GAAG,CAAC,GAAG;aACJ,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;QAClC,MAAM,aAAa,GAAG,IAAA,iCAAwB,EAAC,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,IAAA,0BAAiB,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;QACnD,IAAA,sBAAa,EACX,IAAI,EAAE,0BAA0B;QAChC,IAAA,0BAAiB,EAAC,SAAS,EAAE,SAAS,CAAC,EAAE,6BAA6B;QACtE,WAAW,kBAET,QAAQ,EAAE,mBAAmB,IAC1B,MAAM,EAEZ,CAAC;QAEF,IAAA,mBAAU,EACR,IAAI,EACJ,GAAG,WAAW,eAAe,EAC7B,CAAC,MAA4B,EAAE,EAAE;YAC/B,MAAM,CAAC,WAAW,GAAG,aAAa,CAAC;YAEnC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG;gBACrB,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE,CAAC,kBAAkB,gBAAgB,EAAE,CAAC;gBAC/C,SAAS,EAAE,CAAC,QAAQ,CAAC;gBACrB,OAAO,EAAE;oBACP,GAAG,EAAE,WAAW;oBAChB,OAAO,EAAE,WAAW;iBACrB;aACF,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG;gBACtB,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE;oBACP,GAAG,EAAE,WAAW;oBAChB,OAAO,EAAE,6CAA6C,mBAAmB,EAAE;iBAC5E;aACF,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;QAEF,IAAA,qCAA4B,EAC1B,IAAI,EACJ,IAAA,uBAAY,EAAC;YACX,UAAU;YACV,aAAa;YACb,SAAS;YACT,SAAS;YACT,YAAY;YACZ,oBAAoB;SACrB,CAAC,EACF,IAAA,uBAAY,EAAC,CAAC,KAAK,CAAC,CAAC,CACtB,CAAC;QAEF,MAAM,IAAA,6BAAoB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE9C,OAAO,sBAAsB,CAAC;IAChC,CAAC;CAAA;AAED,kBAAe,cAAc,CAAC"}
|
|
@@ -54,7 +54,7 @@ export class TestApi extends Construct {
|
|
|
54
54
|
)
|
|
55
55
|
),
|
|
56
56
|
environment: {
|
|
57
|
-
AWS_CONNECTION_REUSE_ENABLED: '1'
|
|
57
|
+
AWS_CONNECTION_REUSE_ENABLED: '1'
|
|
58
58
|
},
|
|
59
59
|
});
|
|
60
60
|
|
|
@@ -92,7 +92,7 @@ export class TestApi extends Construct {
|
|
|
92
92
|
new CfnOutput(this, 'TestApiUrl', { value: this.api.url! });
|
|
93
93
|
|
|
94
94
|
RuntimeConfig.ensure(this).config.trpcApis = {
|
|
95
|
-
TestApi: this.api.url
|
|
95
|
+
'TestApi': this.api.url!
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -17,10 +17,10 @@ export type Context = IMiddlewareContext;
|
|
|
17
17
|
const t = initTRPC.context<Context>().create();
|
|
18
18
|
export const router = t.router;
|
|
19
19
|
export const publicProcedure = t.procedure
|
|
20
|
-
.unstable_concat(createLoggerPlugin().loggerPlugin)
|
|
21
|
-
.unstable_concat(createTracerPlugin().tracerPlugin)
|
|
22
|
-
.unstable_concat(createMetricsPlugin().metricsPlugin)
|
|
23
|
-
.unstable_concat(createErrorPlugin().errorPlugin)
|
|
20
|
+
.unstable_concat(createLoggerPlugin().loggerPlugin)
|
|
21
|
+
.unstable_concat(createTracerPlugin().tracerPlugin)
|
|
22
|
+
.unstable_concat(createMetricsPlugin().metricsPlugin)
|
|
23
|
+
.unstable_concat(createErrorPlugin().errorPlugin);
|
|
24
24
|
|
|
25
25
|
const appRouter = router({
|
|
26
26
|
echo: publicProcedure
|
|
@@ -2,63 +2,88 @@ import { Construct } from 'constructs';
|
|
|
2
2
|
import { Runtime, RuntimeFamily } from 'aws-cdk-lib/aws-lambda';
|
|
3
3
|
import { CfnOutput, Duration } from 'aws-cdk-lib';
|
|
4
4
|
import * as url from 'url';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
CorsHttpMethod,
|
|
7
|
+
HttpApi,
|
|
8
|
+
HttpMethod,
|
|
9
|
+
IHttpRouteAuthorizer,
|
|
10
|
+
} from 'aws-cdk-lib/aws-apigatewayv2';
|
|
6
11
|
import { HttpLambdaIntegration } from 'aws-cdk-lib/aws-apigatewayv2-integrations';
|
|
7
12
|
import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';
|
|
8
13
|
import { Effect, IRole, PolicyStatement } from 'aws-cdk-lib/aws-iam';
|
|
9
14
|
import { RuntimeConfig } from '../runtime-config/index.js';
|
|
10
15
|
|
|
11
16
|
export interface <%= apiNameClassName %>Props {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
|
|
17
|
+
readonly defaultAuthorizer: IHttpRouteAuthorizer;
|
|
18
|
+
readonly allowedOrigins?: string[];
|
|
19
|
+
}
|
|
16
20
|
|
|
17
21
|
export class <%= apiNameClassName %> extends Construct {
|
|
18
|
-
|
|
22
|
+
public readonly api: HttpApi;
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
constructor(scope: Construct, id: string, props: <%= apiNameClassName %>Props) {
|
|
25
|
+
super(scope, id);
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
const routerFunction = new NodejsFunction(this, '<%= apiNameClassName %>Handler', {
|
|
28
|
+
timeout: Duration.seconds(30),
|
|
29
|
+
runtime: new Runtime('nodejs20.x', RuntimeFamily.NODEJS),
|
|
30
|
+
handler: 'handler',
|
|
31
|
+
entry: url.fileURLToPath(
|
|
32
|
+
new URL(
|
|
33
|
+
'../../<%= relativePathToProjectRoot %>/backend/src/lambdas/router.ts',
|
|
34
|
+
import.meta.url
|
|
35
|
+
)
|
|
36
|
+
),
|
|
37
|
+
environment: {
|
|
38
|
+
AWS_CONNECTION_REUSE_ENABLED: '1'
|
|
39
|
+
},
|
|
40
|
+
});
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
this.api = new HttpApi(this, '<%= apiNameClassName %>', {
|
|
43
|
+
corsPreflight: {
|
|
44
|
+
allowOrigins: props.allowedOrigins ?? ['*'],
|
|
45
|
+
allowMethods: [CorsHttpMethod.ANY],
|
|
46
|
+
allowHeaders: [
|
|
47
|
+
'authorization',
|
|
48
|
+
'content-type',
|
|
49
|
+
'x-amz-content-sha256',
|
|
50
|
+
'x-amz-date',
|
|
51
|
+
'x-amz-security-token',
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
defaultAuthorizer: props.defaultAuthorizer,
|
|
55
|
+
});
|
|
41
56
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
57
|
+
this.api.addRoutes({
|
|
58
|
+
path: '/{proxy+}',
|
|
59
|
+
methods: [
|
|
60
|
+
HttpMethod.GET,
|
|
61
|
+
HttpMethod.DELETE,
|
|
62
|
+
HttpMethod.POST,
|
|
63
|
+
HttpMethod.PUT,
|
|
64
|
+
HttpMethod.PATCH,
|
|
65
|
+
HttpMethod.HEAD,
|
|
66
|
+
],
|
|
67
|
+
integration: new HttpLambdaIntegration(
|
|
68
|
+
'RouterIntegration',
|
|
69
|
+
routerFunction
|
|
70
|
+
),
|
|
71
|
+
});
|
|
47
72
|
|
|
48
|
-
|
|
73
|
+
new CfnOutput(this, '<%= apiNameClassName %>Url', { value: this.api.url! });
|
|
49
74
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
75
|
+
RuntimeConfig.ensure(this).config.trpcApis = {
|
|
76
|
+
'<%= apiName %>': this.api.url!
|
|
77
|
+
};
|
|
78
|
+
}
|
|
54
79
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
80
|
+
public grantInvokeAccess(role: IRole) {
|
|
81
|
+
role.addToPrincipalPolicy(
|
|
82
|
+
new PolicyStatement({
|
|
83
|
+
effect: Effect.ALLOW,
|
|
84
|
+
actions: ['execute-api:Invoke'],
|
|
85
|
+
resources: [this.api.arnForExecuteApi('*', '/*', '*')],
|
|
86
|
+
})
|
|
87
|
+
);
|
|
63
88
|
}
|
|
64
|
-
}
|
|
89
|
+
}
|
|
@@ -15,6 +15,7 @@ const generator_1 = tslib_1.__importDefault(require("../../ts/lib/generator"));
|
|
|
15
15
|
const npm_scope_1 = require("../../utils/npm-scope");
|
|
16
16
|
const versions_1 = require("../../utils/versions");
|
|
17
17
|
const paths_1 = require("../../utils/paths");
|
|
18
|
+
const format_1 = require("../../utils/format");
|
|
18
19
|
const toClassName = (str) => {
|
|
19
20
|
const words = str.replace(/[^a-zA-Z0-9]/g, ' ').split(/\s+/);
|
|
20
21
|
return words
|
|
@@ -97,7 +98,7 @@ function trpcBackendGenerator(tree, options) {
|
|
|
97
98
|
]), (0, versions_1.withVersions)(['@types/aws-lambda']));
|
|
98
99
|
tree.delete((0, devkit_1.joinPathFragments)(backendRoot, 'package.json'));
|
|
99
100
|
tree.delete((0, devkit_1.joinPathFragments)(schemaRoot, 'package.json'));
|
|
100
|
-
yield (0,
|
|
101
|
+
yield (0, format_1.formatFilesInSubtree)(tree, projectRoot);
|
|
101
102
|
return () => {
|
|
102
103
|
(0, devkit_1.installPackagesTask)(tree);
|
|
103
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/backend/generator.ts"],"names":[],"mappings":";;AAyCA,oDA8JC;;AAvMD;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/backend/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,29 +6,29 @@ import { RuntimeConfigContext } from '../RuntimeConfig';
|
|
|
6
6
|
<% if(auth === 'IAM') { %> import useSigV4Client from "@aws-northstar/ui/components/CognitoAuth/hooks/useSigv4Client"; <% } %>
|
|
7
7
|
|
|
8
8
|
const TRPCClientProvider: FC<any> = ({ children }) => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const trpc = useTrpc();
|
|
10
|
+
const runtimeContext = useContext(RuntimeConfigContext);
|
|
11
|
+
const [queryClient] = useState(() => new QueryClient());
|
|
12
|
+
<% if(auth === 'IAM') { %> const sigv4Client = useSigV4Client(); <% } %>
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
const [trpcClient] = useState(() =>
|
|
15
|
+
trpc.createClient({
|
|
16
|
+
links: [
|
|
17
|
+
httpBatchLink({
|
|
18
|
+
url: runtimeContext?.trpcApis?.['<%= apiName %>']!,
|
|
19
|
+
<% if(auth === 'IAM') { %> fetch: sigv4Client <% } %>
|
|
20
|
+
})
|
|
21
|
+
],
|
|
22
|
+
}),
|
|
23
|
+
);
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
25
|
+
return (
|
|
26
|
+
<trpc.Provider client={trpcClient} queryClient={queryClient}>
|
|
27
|
+
<QueryClientProvider client={queryClient}>
|
|
28
|
+
{children}
|
|
29
|
+
</QueryClientProvider>
|
|
30
|
+
</trpc.Provider>
|
|
31
|
+
);
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
export default TRPCClientProvider;
|
|
@@ -12,6 +12,7 @@ const tsquery_1 = require("@phenomnomnominal/tsquery");
|
|
|
12
12
|
const generator_1 = require("../../cloudscape-website/runtime-config/generator");
|
|
13
13
|
const npm_scope_1 = require("../../utils/npm-scope");
|
|
14
14
|
const versions_1 = require("../../utils/versions");
|
|
15
|
+
const format_1 = require("../../utils/format");
|
|
15
16
|
function reactGenerator(tree, options) {
|
|
16
17
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
18
|
var _a;
|
|
@@ -57,7 +58,7 @@ function reactGenerator(tree, options) {
|
|
|
57
58
|
'@trpc/react-query',
|
|
58
59
|
'@tanstack/react-query',
|
|
59
60
|
]), {});
|
|
60
|
-
yield (0,
|
|
61
|
+
yield (0, format_1.formatFilesInSubtree)(tree, frontendProjectConfig.root);
|
|
61
62
|
return () => {
|
|
62
63
|
(0, devkit_1.installPackagesTask)(tree);
|
|
63
64
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/react/generator.ts"],"names":[],"mappings":";;AAyBA,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/trpc/react/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './runtime-config/index.js';
|
|
1
|
+
export * from './runtime-config/index.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*! Copyright [Amazon.com](http://amazon.com/), Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
SPDX-License-Identifier: Apache-2.0 */
|
|
3
|
-
import type { IRuntimeConfig } from
|
|
4
|
-
import { Stack } from
|
|
5
|
-
import { Construct } from
|
|
3
|
+
import type { IRuntimeConfig } from '<%= scopeAlias %>common-types';
|
|
4
|
+
import { Stack } from 'aws-cdk-lib';
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
6
|
|
|
7
|
-
const RuntimeConfigKey =
|
|
7
|
+
const RuntimeConfigKey = '__RuntimeConfig__';
|
|
8
8
|
|
|
9
9
|
export class RuntimeConfig extends Construct {
|
|
10
10
|
static ensure(scope: Construct): RuntimeConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './runtime-config.js';
|
|
1
|
+
export * from './runtime-config.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { Tree } from '@nx/devkit';
|
|
6
|
+
/**
|
|
7
|
+
* Format files in the given directory within the tree
|
|
8
|
+
* See https://github.com/nrwl/nx/blob/4cd640a9187954505d12de5b6d76a90d8ce4c2eb/packages/devkit/src/generators/format-files.ts#L11
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatFilesInSubtree(tree: Tree, dir: string): Promise<void>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatFilesInSubtree = formatFilesInSubtree;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const devkit_1 = require("@nx/devkit");
|
|
10
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
11
|
+
/**
|
|
12
|
+
* Format files in the given directory within the tree
|
|
13
|
+
* See https://github.com/nrwl/nx/blob/4cd640a9187954505d12de5b6d76a90d8ce4c2eb/packages/devkit/src/generators/format-files.ts#L11
|
|
14
|
+
*/
|
|
15
|
+
function formatFilesInSubtree(tree, dir) {
|
|
16
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
17
|
+
let prettier;
|
|
18
|
+
try {
|
|
19
|
+
prettier = yield Promise.resolve().then(() => tslib_1.__importStar(require('prettier')));
|
|
20
|
+
}
|
|
21
|
+
catch (_a) {
|
|
22
|
+
// Skip formatting if pretter cannot be imported
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const files = new Set(tree
|
|
26
|
+
.listChanges()
|
|
27
|
+
.filter((file) => file.type !== 'DELETE')
|
|
28
|
+
.filter((file) => file.path.startsWith(dir)));
|
|
29
|
+
const changedPrettierInTree = getChangedPrettierConfigInTree(tree);
|
|
30
|
+
yield Promise.all(Array.from(files).map((file) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
try {
|
|
32
|
+
const systemPath = path_1.default.join(tree.root, file.path);
|
|
33
|
+
const resolvedOptions = yield prettier.resolveConfig(systemPath, {
|
|
34
|
+
editorconfig: true,
|
|
35
|
+
});
|
|
36
|
+
const options = Object.assign(Object.assign(Object.assign({}, resolvedOptions), changedPrettierInTree), { filepath: systemPath });
|
|
37
|
+
const support = yield prettier.getFileInfo(systemPath, options);
|
|
38
|
+
if (support.ignored || !support.inferredParser) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
tree.write(file.path,
|
|
42
|
+
// In prettier v3 the format result is a promise
|
|
43
|
+
yield prettier.format(file.content.toString('utf-8'), options));
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
console.warn(`Could not format ${file.path}. Error: "${e.message}"`);
|
|
47
|
+
}
|
|
48
|
+
})));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function getChangedPrettierConfigInTree(tree) {
|
|
52
|
+
if (tree.listChanges().find((file) => file.path === '.prettierrc')) {
|
|
53
|
+
try {
|
|
54
|
+
return (0, devkit_1.readJson)(tree, '.prettierrc');
|
|
55
|
+
}
|
|
56
|
+
catch (_a) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/format.ts"],"names":[],"mappings":";;AAYA,oDAqDC;;AAjED;;;GAGG;AACH,uCAA4C;AAC5C,wDAAwB;AAGxB;;;GAGG;AACH,SAAsB,oBAAoB,CACxC,IAAU,EACV,GAAW;;QAEX,IAAI,QAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,gEAAa,UAAU,GAAC,CAAC;QACtC,CAAC;QAAC,WAAM,CAAC;YACP,gDAAgD;YAChD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,IAAI;aACD,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;aACxC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC/C,CAAC;QAEF,MAAM,qBAAqB,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAEnE,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;YACnC,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEnD,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE;oBAC/D,YAAY,EAAE,IAAI;iBACnB,CAAC,CAAC;gBAEH,MAAM,OAAO,iDACR,eAAe,GACf,qBAAqB,KACxB,QAAQ,EAAE,UAAU,GACrB,CAAC;gBAEF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,OAAc,CAAC,CAAC;gBACvE,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,IAAI;gBACT,gDAAgD;gBAChD,MAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAEnD,CACZ,CAAC;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAA,CAAC,CACH,CAAC;IACJ,CAAC;CAAA;AAED,SAAS,8BAA8B,CAAC,IAAU;IAChD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,OAAO,IAAA,iBAAQ,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QACvC,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|