@aws/nx-plugin 0.77.0 → 0.79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/LICENSE-THIRD-PARTY +36 -8
  2. package/package.json +2 -2
  3. package/src/open-api/ts-client/__snapshots__/generator.streaming.spec.ts.snap +401 -0
  4. package/src/open-api/ts-client/files/client.gen.ts.template +27 -4
  5. package/src/open-api/utils/codegen-data/types.d.ts +4 -0
  6. package/src/open-api/utils/codegen-data/types.js +8 -1
  7. package/src/open-api/utils/codegen-data/types.js.map +1 -1
  8. package/src/open-api/utils/codegen-data.js +21 -1
  9. package/src/open-api/utils/codegen-data.js.map +1 -1
  10. package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +42 -30
  11. package/src/py/fast-api/files/app/__name__/init.py.template +23 -17
  12. package/src/py/fast-api/files/app/__name__/main.py.template +2 -0
  13. package/src/py/fast-api/files/app/tests/test_main.py +1 -0
  14. package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +1 -1
  15. package/src/py/strands-agent/__snapshots__/generator.spec.ts.snap +16 -9
  16. package/src/py/strands-agent/files/app/agentcore_mcp_client.py.template +4 -12
  17. package/src/py/strands-agent/files/app/init.py.template +51 -1
  18. package/src/py/strands-agent/files/app/main.py.template +16 -9
  19. package/src/smithy/react-connection/__snapshots__/generator.spec.ts.snap +2 -2
  20. package/src/smithy/ts/api/__snapshots__/generator.spec.ts.snap +23 -17
  21. package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +60 -34
  22. package/src/trpc/backend/files/src/handler.ts.template +48 -0
  23. package/src/trpc/backend/files/src/index.ts.template +1 -1
  24. package/src/trpc/backend/files/src/router.ts.template +0 -38
  25. package/src/trpc/backend/files/src/schema/z-async-iterable.ts.template +115 -0
  26. package/src/trpc/backend/generator.js +6 -2
  27. package/src/trpc/backend/generator.js.map +1 -1
  28. package/src/trpc/react/__snapshots__/generator.spec.ts.snap +274 -27
  29. package/src/trpc/react/files/src/components/__apiNameClassName__ClientProvider.tsx.template +57 -1
  30. package/src/trpc/react/generator.js +11 -1
  31. package/src/trpc/react/generator.js.map +1 -1
  32. package/src/utils/api-constructs/files/cdk/app/apis/rest/__apiNameKebabCase__.ts.template +13 -1
  33. package/src/utils/api-constructs/files/cdk/core/api/trpc/trpc-utils.ts.template +3 -3
  34. package/src/utils/api-constructs/files/terraform/app/apis/rest/__apiNameKebabCase__/__apiNameKebabCase__.tf.template +8 -3
  35. package/src/utils/api-constructs/files/terraform/core/api/rest/rest-api/rest-api.tf.template +1 -1
  36. package/src/utils/connection/open-api/files/components/__apiNameClassName__Provider.tsx.template +1 -1
  37. package/src/utils/files/website/hooks/sigv4/useSigV4.tsx.template +81 -33
  38. package/src/utils/versions.d.ts +3 -1
  39. package/src/utils/versions.js +2 -0
  40. package/src/utils/versions.js.map +1 -1
@@ -4,54 +4,102 @@ import { fromCognitoIdentityPool } from '@aws-sdk/credential-provider-cognito-id
4
4
  import { useCallback, useRef } from 'react';
5
5
  import { useAuth } from 'react-oidc-context';
6
6
  import { useRuntimeConfig } from './useRuntimeConfig';
7
- import { AwsCredentialIdentity, AwsCredentialIdentityProvider } from '@smithy/types';
7
+ import {
8
+ AwsCredentialIdentity,
9
+ AwsCredentialIdentityProvider,
10
+ } from '@smithy/types';
8
11
 
9
12
  // Credential expiration grace time before considering credentials as expired
10
13
  const CREDENTIAL_EXPIRY_OFFSET_MILLIS = 30 * 1000;
11
14
 
12
- export const useSigV4 = () => {
15
+ type AwsSignInput = Parameters<AwsClient['sign']>[0];
16
+ type AwsSignInit = Parameters<AwsClient['sign']>[1];
17
+
18
+ export interface SigV4Client {
19
+ /** A SigV4-signing fetch drop-in replacement. */
20
+ fetch: typeof globalThis.fetch;
21
+ /** Signs a request. Same parameters as AwsClient.sign(). Returns an unsigned Request when signing is skipped. */
22
+ sign: AwsClient['sign'];
23
+ }
24
+
25
+ export const useSigV4 = (): SigV4Client => {
13
26
  const { cognitoProps } = useRuntimeConfig();
14
27
  const auth = useAuth();
15
28
  const user = auth?.user;
16
29
 
17
- const cachedCredentials = useRef<{ [key: string]: AwsCredentialIdentity }>({});
30
+ const cachedCredentials = useRef<{ [key: string]: AwsCredentialIdentity }>(
31
+ {},
32
+ );
18
33
 
19
- const withCachedCredentials = useCallback(async (provider: AwsCredentialIdentityProvider, ...cacheKeys: string[]): Promise<AwsCredentialIdentity> => {
20
- const key = `sigv4/${cacheKeys.join('/')}`;
21
- const cachedCreds = cachedCredentials.current[key];
22
- if (cachedCreds && cachedCreds.expiration && cachedCreds.expiration.getTime() > Date.now() + CREDENTIAL_EXPIRY_OFFSET_MILLIS) {
23
- return cachedCreds;
34
+ const skipSigning = !cognitoProps && import.meta.env.MODE === 'serve-local';
35
+
36
+ const withCachedCredentials = useCallback(
37
+ async (
38
+ provider: AwsCredentialIdentityProvider,
39
+ ...cacheKeys: string[]
40
+ ): Promise<AwsCredentialIdentity> => {
41
+ const key = `sigv4/${cacheKeys.join('/')}`;
42
+ const cachedCreds = cachedCredentials.current[key];
43
+ if (
44
+ cachedCreds &&
45
+ cachedCreds.expiration &&
46
+ cachedCreds.expiration.getTime() >
47
+ Date.now() + CREDENTIAL_EXPIRY_OFFSET_MILLIS
48
+ ) {
49
+ return cachedCreds;
50
+ }
51
+ const credentials = await provider();
52
+ cachedCredentials.current[key] = credentials;
53
+ return credentials;
54
+ },
55
+ [],
56
+ );
57
+
58
+ const getAwsClient = useCallback(async (): Promise<AwsClient> => {
59
+ if (!cognitoProps) {
60
+ throw new Error('cognitoProps is undefined!');
61
+ }
62
+ if (!user?.id_token) {
63
+ throw new Error('user.id_token is undefined!');
24
64
  }
25
- const credentials = await provider();
26
- cachedCredentials.current[key] = credentials;
27
- return credentials;
28
- }, []);
29
65
 
30
- return useCallback(
66
+ const credentialsFromCognitoIdentityPool = fromCognitoIdentityPool({
67
+ client: new CognitoIdentityClient({ region: cognitoProps.region }),
68
+ identityPoolId: cognitoProps.identityPoolId,
69
+ logins: {
70
+ [`cognito-idp.${cognitoProps.region}.amazonaws.com/${cognitoProps.userPoolId}`]:
71
+ user.id_token,
72
+ },
73
+ });
74
+ const credential = await withCachedCredentials(
75
+ credentialsFromCognitoIdentityPool,
76
+ cognitoProps.identityPoolId,
77
+ user.profile.sub,
78
+ );
79
+ return new AwsClient(credential);
80
+ }, [cognitoProps, user?.id_token, user?.profile.sub, withCachedCredentials]);
81
+
82
+ const sigv4Fetch: typeof globalThis.fetch = useCallback(
31
83
  async (input: RequestInfo | URL, init?: RequestInit | undefined) => {
32
- if (!cognitoProps && import.meta.env.MODE === 'serve-local') {
33
- // Skip request signing in serve-local mode when cognitoProps are not set
84
+ if (skipSigning) {
34
85
  return fetch(input, init);
35
86
  }
36
- if (!cognitoProps) {
37
- throw new Error('cognitoProps is undefined!');
38
- }
39
- if (!user?.id_token) {
40
- throw new Error('user.id_token is undefined!');
41
- }
42
-
43
- const credentialsFromCognitoIdentityPool = fromCognitoIdentityPool({
44
- client: new CognitoIdentityClient({ region: cognitoProps.region }),
45
- identityPoolId: cognitoProps.identityPoolId,
46
- logins: {
47
- [`cognito-idp.${cognitoProps.region}.amazonaws.com/${cognitoProps.userPoolId}`]:
48
- user.id_token,
49
- },
50
- });
51
- const credential = await withCachedCredentials(credentialsFromCognitoIdentityPool, cognitoProps.identityPoolId, user.profile.sub);
52
- const awsClient = new AwsClient(credential);
87
+ const awsClient = await getAwsClient();
53
88
  return awsClient.fetch(input, init);
54
89
  },
55
- [cognitoProps, user?.id_token, user?.profile.sub, withCachedCredentials]
90
+ [skipSigning, getAwsClient],
56
91
  );
92
+
93
+ const sign = useCallback(
94
+ async (input: AwsSignInput, init?: AwsSignInit): Promise<Request> => {
95
+ if (skipSigning) {
96
+ return new Request(input.toString(), init ?? undefined);
97
+ }
98
+ const awsClient = await getAwsClient();
99
+ return awsClient.sign(input, init);
100
+ },
101
+ [skipSigning, getAwsClient],
102
+ );
103
+
104
+ return { fetch: sigv4Fetch, sign };
57
105
  };
@@ -56,6 +56,8 @@ export declare const TS_VERSIONS: {
56
56
  readonly clsx: "2.1.1";
57
57
  readonly electrodb: "3.5.3";
58
58
  readonly esbuild: "0.27.3";
59
+ readonly 'event-source-polyfill': "1.0.31";
60
+ readonly '@types/event-source-polyfill': "1.0.5";
59
61
  readonly 'eslint-plugin-prettier': "5.5.5";
60
62
  readonly express: "5.2.1";
61
63
  readonly 'jsonc-eslint-parser': "2.4.2";
@@ -87,7 +89,7 @@ export type ITsDepVersion = keyof typeof TS_VERSIONS;
87
89
  * Add versions to the given dependencies
88
90
  */
89
91
  export declare const withVersions: (deps: ITsDepVersion[]) => {
90
- [k: string]: "3.992.0" | "3.972.3" | "1.0.0-alpha.10" | "2.31.0" | "6.4.5" | "22.1.0" | "9.0.1" | "22.5.1" | "1.27.0" | "0.19.0" | "0.2.2" | "1.160.2" | "1.160.1" | "1.154.7" | "1.158.0" | "3.0.149" | "3.0.1204" | "1.0.50" | "5.90.21" | "5.91.3" | "11.10.0" | "22.19.11" | "8.10.160" | "2.8.19" | "8.18.1" | "5.0.6" | "4.12.0" | "1.0.20" | "2.1106.0" | "2.238.0" | "2.238.0-alpha.0" | "3.12.0" | "10.5.0" | "2.8.6" | "0.7.1" | "2.1.1" | "3.5.3" | "0.27.3" | "5.5.5" | "5.2.1" | "2.4.2" | "4.0.0" | "2.0.0" | "19.3.2" | "3.4.1" | "3.8.1" | "3.3.0" | "19.2.4" | "6.1.3" | "1.0.0-rc.1" | "0.5.21" | "4.1.18" | "4.21.0" | "0.574.0" | "1.4.3" | "3.8.5" | "1.4.0" | "5.1.4" | "4.3.6" | "8.19.0";
92
+ [k: string]: "3.992.0" | "3.972.3" | "1.0.0-alpha.10" | "2.31.0" | "6.4.5" | "22.1.0" | "9.0.1" | "22.5.1" | "1.27.0" | "0.19.0" | "0.2.2" | "1.160.2" | "1.160.1" | "1.154.7" | "1.158.0" | "3.0.149" | "3.0.1204" | "1.0.50" | "5.90.21" | "5.91.3" | "11.10.0" | "22.19.11" | "8.10.160" | "2.8.19" | "8.18.1" | "5.0.6" | "4.12.0" | "1.0.20" | "2.1106.0" | "2.238.0" | "2.238.0-alpha.0" | "3.12.0" | "10.5.0" | "2.8.6" | "0.7.1" | "2.1.1" | "3.5.3" | "0.27.3" | "1.0.31" | "1.0.5" | "5.5.5" | "5.2.1" | "2.4.2" | "4.0.0" | "2.0.0" | "19.3.2" | "3.4.1" | "3.8.1" | "3.3.0" | "19.2.4" | "6.1.3" | "1.0.0-rc.1" | "0.5.21" | "4.1.18" | "4.21.0" | "0.574.0" | "1.4.3" | "3.8.5" | "1.4.0" | "5.1.4" | "4.3.6" | "8.19.0";
91
93
  };
92
94
  /**
93
95
  * Versions for Python dependencies added by generators
@@ -59,6 +59,8 @@ exports.TS_VERSIONS = {
59
59
  clsx: '2.1.1',
60
60
  electrodb: '3.5.3',
61
61
  esbuild: '0.27.3',
62
+ 'event-source-polyfill': '1.0.31',
63
+ '@types/event-source-polyfill': '1.0.5',
62
64
  'eslint-plugin-prettier': '5.5.5',
63
65
  express: '5.2.1',
64
66
  'jsonc-eslint-parser': '2.4.2',
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":"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"}