@aws/nx-plugin 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-THIRD-PARTY +531 -21
- package/README.md +3 -9
- package/generators.json +14 -0
- package/package.json +7 -7
- package/src/cloudscape-website/cognito-auth/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/cloudscape-website/cognito-auth/files/common/constructs/src/core/user-identity.ts.template +1 -0
- package/src/infra/app/__snapshots__/generator.spec.ts.snap +54 -12
- package/src/infra/app/generator.js +14 -0
- package/src/infra/app/generator.js.map +1 -1
- package/src/open-api/ts-metadata/__snapshots__/generator.spec.ts.snap +49 -0
- package/src/open-api/ts-metadata/files/metadata.gen.ts.template +17 -0
- package/src/open-api/ts-metadata/generator.d.ts +16 -0
- package/src/open-api/ts-metadata/generator.js +32 -0
- package/src/open-api/ts-metadata/generator.js.map +1 -0
- package/src/{utils/http-api.d.ts → open-api/ts-metadata/schema.d.ts} +5 -2
- package/src/open-api/ts-metadata/schema.json +20 -0
- package/src/open-api/utils/codegen-data.js +3 -0
- package/src/open-api/utils/codegen-data.js.map +1 -1
- package/src/open-api/utils/normalise.js +6 -0
- package/src/open-api/utils/normalise.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +199 -0
- package/src/preset/files/README.md +107 -0
- package/src/preset/generator.d.ts +10 -0
- package/src/preset/generator.js +63 -0
- package/src/preset/generator.js.map +1 -0
- package/src/preset/schema.d.ts +7 -0
- package/src/preset/schema.json +14 -0
- package/src/py/fast-api/__snapshots__/generator.spec.ts.snap +972 -0
- package/src/py/fast-api/files/app/__name__/init.py.template +8 -0
- package/src/py/fast-api/generator.js +53 -15
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/py/fast-api/react/files/website/components/__apiNameClassName__Provider.tsx.template +1 -1
- package/src/py/fast-api/react/generator.js +6 -23
- package/src/py/fast-api/react/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.d.ts +14 -0
- package/src/py/fast-api/react/open-api.js +53 -0
- package/src/py/fast-api/react/open-api.js.map +1 -0
- package/src/py/fast-api/schema.d.ts +3 -0
- package/src/py/fast-api/schema.json +8 -0
- package/src/setup-tests.d.ts +2 -0
- package/src/setup-tests.js +14 -0
- package/src/setup-tests.js.map +1 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1061 -88
- package/src/trpc/backend/files/backend/src/client/index.ts.template +2 -13
- package/src/trpc/backend/files/backend/src/index.ts.template +1 -0
- package/src/trpc/backend/files/backend/src/init.ts.template +4 -4
- package/src/trpc/backend/files/backend/src/middleware/index.ts.template +3 -2
- package/src/trpc/backend/files/backend/src/router.ts.template +11 -2
- package/src/trpc/backend/generator.js +12 -10
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/trpc/backend/schema.d.ts +1 -1
- package/src/trpc/backend/schema.json +8 -0
- package/src/trpc/react/__snapshots__/generator.spec.ts.snap +4 -19
- package/src/trpc/react/files/src/components/TrpcClients/TrpcProvider.tsx.template +2 -13
- package/src/trpc/react/generator.js +1 -1
- package/src/trpc/react/generator.js.map +1 -1
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +26 -9
- package/src/ts/lib/generator.js +9 -0
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +1 -4
- package/src/ts/nx-generator/generator.js +4 -3
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/utils/api-constructs/api-constructs.d.ts +29 -0
- package/src/utils/api-constructs/api-constructs.js +65 -0
- package/src/utils/api-constructs/api-constructs.js.map +1 -0
- package/src/utils/api-constructs/files/app/apis/http/__apiNameKebabCase__.ts.template +135 -0
- package/src/utils/api-constructs/files/app/apis/rest/__apiNameKebabCase__.ts.template +156 -0
- package/src/utils/api-constructs/files/core/api/http/http-api.ts.template +112 -0
- package/src/utils/api-constructs/files/core/api/rest/rest-api.ts.template +137 -0
- package/src/utils/api-constructs/files/core/api/trpc/trpc-utils.ts.template +67 -0
- package/src/utils/api-constructs/files/core/api/utils/utils.ts.template +223 -0
- package/src/utils/versions.d.ts +3 -3
- package/src/utils/versions.js +2 -2
- package/src/py/fast-api/files/common/constructs/src/app/http-apis/__apiNameKebabCase__.ts.template +0 -22
- package/src/trpc/backend/files/common/constructs/src/app/http-apis/__apiNameKebabCase__.ts.template +0 -22
- package/src/utils/files/http-api/common/constructs/src/core/http-api.ts.template +0 -87
- package/src/utils/http-api.js +0 -51
- package/src/utils/http-api.js.map +0 -1
|
@@ -5,6 +5,9 @@ from collections.abc import Callable
|
|
|
5
5
|
from aws_lambda_powertools import Logger, Metrics, Tracer
|
|
6
6
|
from aws_lambda_powertools.metrics import MetricUnit
|
|
7
7
|
from fastapi import FastAPI, Request, Response
|
|
8
|
+
<%_ if (computeType === 'ServerlessApiGatewayRestApi') { _%>
|
|
9
|
+
from fastapi.middleware.cors import CORSMiddleware
|
|
10
|
+
<%_ } _%>
|
|
8
11
|
from fastapi.openapi.utils import get_openapi
|
|
9
12
|
from fastapi.responses import JSONResponse
|
|
10
13
|
from fastapi.routing import APIRoute
|
|
@@ -38,6 +41,11 @@ lambda_handler = logger.inject_lambda_context(lambda_handler, clear_state=True)
|
|
|
38
41
|
# Add metrics last to properly flush metrics.
|
|
39
42
|
lambda_handler = metrics.log_metrics(lambda_handler, capture_cold_start_metric=True)
|
|
40
43
|
|
|
44
|
+
<%_ if (computeType === 'ServerlessApiGatewayRestApi') { _%>
|
|
45
|
+
# Add cors middleware
|
|
46
|
+
app.add_middleware(CORSMiddleware, allow_origins=['*'], allow_methods=['*'])
|
|
47
|
+
|
|
48
|
+
<%_ } _%>
|
|
41
49
|
# Add exception middleware(s)
|
|
42
50
|
app.add_middleware(ExceptionMiddleware, handlers=app.exception_handlers)
|
|
43
51
|
|
|
@@ -14,12 +14,13 @@ const toml_1 = require("@iarna/toml");
|
|
|
14
14
|
const shared_constructs_1 = require("../../utils/shared-constructs");
|
|
15
15
|
const shared_constructs_constants_1 = require("../../utils/shared-constructs-constants");
|
|
16
16
|
const names_1 = require("../../utils/names");
|
|
17
|
-
const ast_1 = require("../../utils/ast");
|
|
18
17
|
const format_1 = require("../../utils/format");
|
|
19
|
-
const http_api_1 = require("../../utils/http-api");
|
|
20
18
|
const object_1 = require("../../utils/object");
|
|
21
19
|
const nx_1 = require("../../utils/nx");
|
|
22
20
|
const metrics_1 = require("../../utils/metrics");
|
|
21
|
+
const api_constructs_1 = require("../../utils/api-constructs/api-constructs");
|
|
22
|
+
const open_api_1 = require("./react/open-api");
|
|
23
|
+
const git_1 = require("../../utils/git");
|
|
23
24
|
exports.FAST_API_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
24
25
|
/**
|
|
25
26
|
* Generates a Python FastAPI project
|
|
@@ -34,10 +35,6 @@ const fastApiProjectGenerator = (tree, schema) => tslib_1.__awaiter(void 0, void
|
|
|
34
35
|
const apiNameSnakeCase = (0, names_1.toSnakeCase)(schema.name);
|
|
35
36
|
const apiNameKebabCase = (0, names_1.toKebabCase)(schema.name);
|
|
36
37
|
const apiNameClassName = (0, names_1.toClassName)(schema.name);
|
|
37
|
-
const enhancedOptions = Object.assign(Object.assign({}, schema), { dir,
|
|
38
|
-
apiNameClassName,
|
|
39
|
-
apiNameKebabCase,
|
|
40
|
-
apiNameSnakeCase });
|
|
41
38
|
yield (0, generator_1.default)(tree, {
|
|
42
39
|
name: normalizedName,
|
|
43
40
|
directory: schema.directory,
|
|
@@ -75,6 +72,8 @@ const fastApiProjectGenerator = (tree, schema) => tslib_1.__awaiter(void 0, void
|
|
|
75
72
|
};
|
|
76
73
|
projectConfig.targets = (0, object_1.sortObjectKeys)(projectConfig.targets);
|
|
77
74
|
(0, devkit_1.updateProjectConfiguration)(tree, normalizedName, projectConfig);
|
|
75
|
+
// Add OpenAPI spec generation to the project, run as part of build
|
|
76
|
+
const { specPath } = (0, open_api_1.addOpenApiGeneration)(tree, { project: projectConfig });
|
|
78
77
|
[
|
|
79
78
|
(0, devkit_1.joinPathFragments)(dir, normalizedModuleName !== null && normalizedModuleName !== void 0 ? normalizedModuleName : normalizedName, 'hello.py'),
|
|
80
79
|
(0, devkit_1.joinPathFragments)(dir, 'tests', 'test_hello.py'),
|
|
@@ -85,31 +84,70 @@ const fastApiProjectGenerator = (tree, schema) => tslib_1.__awaiter(void 0, void
|
|
|
85
84
|
{
|
|
86
85
|
name: normalizedName,
|
|
87
86
|
apiNameClassName,
|
|
87
|
+
computeType: schema.computeType,
|
|
88
88
|
}, {
|
|
89
89
|
overwriteStrategy: devkit_1.OverwriteStrategy.Overwrite,
|
|
90
90
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
91
|
+
// Add the CDK construct to deploy the FastAPI to shared constructs
|
|
92
|
+
(0, api_constructs_1.addApiGatewayConstruct)(tree, {
|
|
93
|
+
apiNameClassName,
|
|
94
|
+
apiNameKebabCase,
|
|
95
|
+
constructType: schema.computeType === 'ServerlessApiGatewayHttpApi' ? 'http' : 'rest',
|
|
96
|
+
backend: {
|
|
97
|
+
type: 'fastapi',
|
|
98
|
+
dir,
|
|
99
|
+
apiNameSnakeCase,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
const generatedMetadataDir = (0, devkit_1.joinPathFragments)('generated', apiNameKebabCase);
|
|
103
|
+
const generatedMetadataDirFromRoot = (0, devkit_1.joinPathFragments)((0, devkit_1.joinPathFragments)(shared_constructs_constants_1.PACKAGES_DIR, shared_constructs_constants_1.SHARED_CONSTRUCTS_DIR), 'src', generatedMetadataDir);
|
|
99
104
|
(0, devkit_1.updateJson)(tree, (0, devkit_1.joinPathFragments)(shared_constructs_constants_1.PACKAGES_DIR, shared_constructs_constants_1.SHARED_CONSTRUCTS_DIR, 'project.json'), (config) => {
|
|
100
|
-
var _a;
|
|
105
|
+
var _a, _b;
|
|
101
106
|
if (!config.targets) {
|
|
102
107
|
config.targets = {};
|
|
103
108
|
}
|
|
104
109
|
if (!config.targets.build) {
|
|
105
110
|
config.targets.build = {};
|
|
106
111
|
}
|
|
112
|
+
// If not already defined, add a target to generate metadata from the OpenAPI spec, used
|
|
113
|
+
// for providing a type-safe CDK construct
|
|
114
|
+
const metadataTargetName = `generate:${apiNameKebabCase}-metadata`;
|
|
115
|
+
if (!config.targets[metadataTargetName]) {
|
|
116
|
+
config.targets[metadataTargetName] = {
|
|
117
|
+
cache: true,
|
|
118
|
+
executor: 'nx:run-commands',
|
|
119
|
+
inputs: [
|
|
120
|
+
{
|
|
121
|
+
dependentTasksOutputFiles: '**/*.json',
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
outputs: [
|
|
125
|
+
(0, devkit_1.joinPathFragments)('{workspaceRoot}', generatedMetadataDirFromRoot),
|
|
126
|
+
],
|
|
127
|
+
options: {
|
|
128
|
+
commands: [
|
|
129
|
+
`nx g @aws/nx-plugin:open-api#ts-metadata --openApiSpecPath="${specPath}" --outputPath="${generatedMetadataDirFromRoot}" --no-interactive`,
|
|
130
|
+
],
|
|
131
|
+
},
|
|
132
|
+
dependsOn: [`${projectConfig.name}:openapi`],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
107
135
|
config.targets.build.dependsOn = [
|
|
108
136
|
...((_a = config.targets.build.dependsOn) !== null && _a !== void 0 ? _a : []),
|
|
109
137
|
`${fullyQualifiedName}:build`,
|
|
110
138
|
];
|
|
139
|
+
if (!config.targets.compile) {
|
|
140
|
+
config.targets.compile = {};
|
|
141
|
+
}
|
|
142
|
+
config.targets.compile.dependsOn = [
|
|
143
|
+
...((_b = config.targets.compile.dependsOn) !== null && _b !== void 0 ? _b : []),
|
|
144
|
+
metadataTargetName,
|
|
145
|
+
];
|
|
111
146
|
return config;
|
|
112
147
|
});
|
|
148
|
+
// Ignore the generated metadata by default
|
|
149
|
+
// Users can safely remove the entry from the .gitignore if they prefer to check it in
|
|
150
|
+
(0, git_1.updateGitIgnore)(tree, (0, devkit_1.joinPathFragments)(shared_constructs_constants_1.PACKAGES_DIR, shared_constructs_constants_1.SHARED_CONSTRUCTS_DIR), (patterns) => [...patterns, (0, devkit_1.joinPathFragments)('src', generatedMetadataDir)]);
|
|
113
151
|
const projectToml = (0, toml_1.parse)(tree.read((0, devkit_1.joinPathFragments)(dir, 'pyproject.toml'), 'utf8'));
|
|
114
152
|
projectToml.project.dependencies = [
|
|
115
153
|
'fastapi',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/fast-api/generator.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAWoB;AAEpB,oEAAmE;AACnE,oEAAiE;AACjE,0EAA+E;AAC/E,sCAA+C;AAE/C,qEAA0E;AAC1E,yFAGiD;AACjD,6CAA0E;AAC1E
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/py/fast-api/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ export const TestApiClientContext = createContext<TestApi | undefined>(
|
|
|
44
44
|
|
|
45
45
|
const useCreateTestApiClient = (): TestApi => {
|
|
46
46
|
const runtimeConfig = useRuntimeConfig();
|
|
47
|
-
const apiUrl = runtimeConfig.
|
|
47
|
+
const apiUrl = runtimeConfig.apis.TestApi;
|
|
48
48
|
return useMemo(
|
|
49
49
|
() =>
|
|
50
50
|
new TestApi({
|
|
@@ -108,7 +108,7 @@ export const TestApiClientContext = createContext<TestApi | undefined>(
|
|
|
108
108
|
|
|
109
109
|
const useCreateTestApiClient = (): TestApi => {
|
|
110
110
|
const runtimeConfig = useRuntimeConfig();
|
|
111
|
-
const apiUrl = runtimeConfig.
|
|
111
|
+
const apiUrl = runtimeConfig.apis.TestApi;
|
|
112
112
|
const sigv4Client = useSigV4();
|
|
113
113
|
return useMemo(
|
|
114
114
|
() =>
|
package/src/py/fast-api/react/files/website/components/__apiNameClassName__Provider.tsx.template
CHANGED
|
@@ -10,7 +10,7 @@ export const <%- apiNameClassName %>ClientContext = createContext<<%- apiNameCla
|
|
|
10
10
|
|
|
11
11
|
const useCreate<%- apiNameClassName %>Client = (): <%- apiNameClassName %> => {
|
|
12
12
|
const runtimeConfig = useRuntimeConfig();
|
|
13
|
-
const apiUrl = runtimeConfig.
|
|
13
|
+
const apiUrl = runtimeConfig.apis.<%- apiNameClassName %>;
|
|
14
14
|
<%_ if(auth === 'IAM') { _%>
|
|
15
15
|
const sigv4Client = useSigV4();
|
|
16
16
|
<%_ } _%>
|
|
@@ -9,7 +9,6 @@ const tslib_1 = require("tslib");
|
|
|
9
9
|
const devkit_1 = require("@nx/devkit");
|
|
10
10
|
const generator_1 = require("../../../cloudscape-website/runtime-config/generator");
|
|
11
11
|
const lodash_snakecase_1 = tslib_1.__importDefault(require("lodash.snakecase"));
|
|
12
|
-
const path = tslib_1.__importStar(require("path"));
|
|
13
12
|
const lodash_kebabcase_1 = tslib_1.__importDefault(require("lodash.kebabcase"));
|
|
14
13
|
const object_1 = require("../../../utils/object");
|
|
15
14
|
const names_1 = require("../../../utils/names");
|
|
@@ -19,33 +18,17 @@ const git_1 = require("../../../utils/git");
|
|
|
19
18
|
const ast_1 = require("../../../utils/ast");
|
|
20
19
|
const nx_1 = require("../../../utils/nx");
|
|
21
20
|
const metrics_1 = require("../../../utils/metrics");
|
|
21
|
+
const open_api_1 = require("./open-api");
|
|
22
22
|
exports.FAST_API_REACT_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
23
23
|
const fastApiReactGenerator = (tree, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
var _a
|
|
24
|
+
var _a;
|
|
25
25
|
const frontendProjectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.frontendProjectName);
|
|
26
26
|
const fastApiProjectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.fastApiProjectName);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
moduleName,
|
|
27
|
+
// Add OpenAPI spec generation to the project, run as part of build
|
|
28
|
+
const { specPath } = (0, open_api_1.addOpenApiGeneration)(tree, {
|
|
29
|
+
project: fastApiProjectConfig,
|
|
31
30
|
});
|
|
32
|
-
|
|
33
|
-
const fastApiOpenApiDist = (0, devkit_1.joinPathFragments)('dist', fastApiProjectConfig.root, 'openapi');
|
|
34
|
-
const specPath = (0, devkit_1.joinPathFragments)(fastApiOpenApiDist, 'openapi.json');
|
|
35
|
-
(0, devkit_1.updateProjectConfiguration)(tree, options.fastApiProjectName, Object.assign(Object.assign({}, fastApiProjectConfig), { targets: (0, object_1.sortObjectKeys)(Object.assign(Object.assign({}, fastApiProjectConfig.targets), { build: Object.assign(Object.assign({}, (_a = fastApiProjectConfig.targets) === null || _a === void 0 ? void 0 : _a.build), { dependsOn: [
|
|
36
|
-
...((_d = (_c = (_b = fastApiProjectConfig.targets) === null || _b === void 0 ? void 0 : _b.build) === null || _c === void 0 ? void 0 : _c.dependsOn) !== null && _d !== void 0 ? _d : []).filter((t) => t !== 'openapi'),
|
|
37
|
-
'openapi',
|
|
38
|
-
] }), openapi: {
|
|
39
|
-
cache: true,
|
|
40
|
-
executor: 'nx:run-commands',
|
|
41
|
-
outputs: [(0, devkit_1.joinPathFragments)('{workspaceRoot}', fastApiOpenApiDist)],
|
|
42
|
-
options: {
|
|
43
|
-
commands: [
|
|
44
|
-
`uv run python ${(0, devkit_1.joinPathFragments)(fastApiProjectConfig.root, 'scripts', 'generate_open_api.py')} "${specPath}"`,
|
|
45
|
-
],
|
|
46
|
-
},
|
|
47
|
-
} })) }));
|
|
48
|
-
const apiName = (_e = fastApiProjectConfig.metadata) === null || _e === void 0 ? void 0 : _e.apiName;
|
|
31
|
+
const apiName = (_a = fastApiProjectConfig.metadata) === null || _a === void 0 ? void 0 : _a.apiName;
|
|
49
32
|
const clientGenTarget = `generate:${(0, lodash_kebabcase_1.default)(apiName)}-client`;
|
|
50
33
|
const generatedClientDir = (0, devkit_1.joinPathFragments)('generated', (0, lodash_kebabcase_1.default)(apiName));
|
|
51
34
|
const generatedClientDirFromRoot = (0, devkit_1.joinPathFragments)(frontendProjectConfig.sourceRoot, generatedClientDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/fast-api/react/generator.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCASoB;AAEpB,oFAA8F;AAC9F,gFAAyC;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/fast-api/react/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { ProjectConfiguration, Tree } from '@nx/devkit';
|
|
6
|
+
export interface AddOpenApiGenerationOptions {
|
|
7
|
+
project: ProjectConfiguration;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Adds FastAPI -> OpenApi spec generation as part of the FastAPI project build
|
|
11
|
+
*/
|
|
12
|
+
export declare const addOpenApiGeneration: (tree: Tree, { project }: AddOpenApiGenerationOptions) => {
|
|
13
|
+
specPath: string;
|
|
14
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addOpenApiGeneration = void 0;
|
|
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 lodash_snakecase_1 = tslib_1.__importDefault(require("lodash.snakecase"));
|
|
11
|
+
const object_1 = require("../../../utils/object");
|
|
12
|
+
/**
|
|
13
|
+
* Adds FastAPI -> OpenApi spec generation as part of the FastAPI project build
|
|
14
|
+
*/
|
|
15
|
+
const addOpenApiGeneration = (tree, { project }) => {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
17
|
+
const moduleName = getFastApiModuleName(project);
|
|
18
|
+
// Add OpenAPI spec generation script to FastAPI spec (if it does not exist already)
|
|
19
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files/fast-api'), project.root, {
|
|
20
|
+
moduleName,
|
|
21
|
+
});
|
|
22
|
+
// Instrument the script as part of the fastapi project build
|
|
23
|
+
const fastApiOpenApiDist = (0, devkit_1.joinPathFragments)('dist', project.root, 'openapi');
|
|
24
|
+
const specPath = (0, devkit_1.joinPathFragments)(fastApiOpenApiDist, 'openapi.json');
|
|
25
|
+
(0, devkit_1.updateProjectConfiguration)(tree, project.name, Object.assign(Object.assign({}, project), { targets: (0, object_1.sortObjectKeys)(Object.assign(Object.assign({}, project.targets), { build: Object.assign(Object.assign({}, (_a = project.targets) === null || _a === void 0 ? void 0 : _a.build), { dependsOn: [
|
|
26
|
+
...((_d = (_c = (_b = project.targets) === null || _b === void 0 ? void 0 : _b.build) === null || _c === void 0 ? void 0 : _c.dependsOn) !== null && _d !== void 0 ? _d : []).filter((t) => t !== 'openapi'),
|
|
27
|
+
'openapi',
|
|
28
|
+
] }), openapi: {
|
|
29
|
+
cache: true,
|
|
30
|
+
executor: 'nx:run-commands',
|
|
31
|
+
outputs: [(0, devkit_1.joinPathFragments)('{workspaceRoot}', fastApiOpenApiDist)],
|
|
32
|
+
options: {
|
|
33
|
+
commands: [
|
|
34
|
+
`uv run python ${(0, devkit_1.joinPathFragments)(project.root, 'scripts', 'generate_open_api.py')} "${specPath}"`,
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
} })) }));
|
|
38
|
+
return { specPath };
|
|
39
|
+
};
|
|
40
|
+
exports.addOpenApiGeneration = addOpenApiGeneration;
|
|
41
|
+
const getFastApiModuleName = (projectConfig) => {
|
|
42
|
+
var _a;
|
|
43
|
+
if (projectConfig.sourceRoot) {
|
|
44
|
+
const sourceRootParts = projectConfig.sourceRoot.split('/');
|
|
45
|
+
return sourceRootParts[sourceRootParts.length - 1];
|
|
46
|
+
}
|
|
47
|
+
const apiName = (_a = projectConfig.metadata) === null || _a === void 0 ? void 0 : _a.apiName;
|
|
48
|
+
if (apiName) {
|
|
49
|
+
return (0, lodash_snakecase_1.default)(apiName);
|
|
50
|
+
}
|
|
51
|
+
new Error(`Could not determine sourceRoot for project ${projectConfig.name}`);
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=open-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-api.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/py/fast-api/react/open-api.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAMoB;AACpB,gFAAyC;AACzC,kDAAuD;AAMvD;;GAEG;AACI,MAAM,oBAAoB,GAAG,CAClC,IAAU,EACV,EAAE,OAAO,EAA+B,EAClB,EAAE;;IACxB,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEjD,oFAAoF;IACpF,IAAA,sBAAa,EACX,IAAI,EACJ,IAAA,0BAAiB,EAAC,SAAS,EAAE,gBAAgB,CAAC,EAC9C,OAAO,CAAC,IAAI,EACZ;QACE,UAAU;KACX,CACF,CAAC;IAEF,6DAA6D;IAC7D,MAAM,kBAAkB,GAAG,IAAA,0BAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,IAAA,0BAAiB,EAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACvE,IAAA,mCAA0B,EAAC,IAAI,EAAE,OAAO,CAAC,IAAI,kCACxC,OAAO,KACV,OAAO,EAAE,IAAA,uBAAc,kCAClB,OAAO,CAAC,OAAO,KAClB,KAAK,kCACA,MAAA,OAAO,CAAC,OAAO,0CAAE,KAAK,KACzB,SAAS,EAAE;oBACT,GAAG,CAAC,MAAA,MAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,KAAK,0CAAE,SAAS,mCAAI,EAAE,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CACvB;oBACD,SAAS;iBACV,KAEH,OAAO,EAAE;gBACP,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO,EAAE,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;gBACnE,OAAO,EAAE;oBACP,QAAQ,EAAE;wBACR,iBAAiB,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,sBAAsB,CAAC,KAAK,QAAQ,GAAG;qBACpG;iBACF;aACF,IACD,IACF,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC;AA9CW,QAAA,oBAAoB,wBA8C/B;AAEF,MAAM,oBAAoB,GAAG,CAAC,aAAmC,EAAU,EAAE;;IAC3E,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;QAC7B,MAAM,eAAe,GAAG,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,OAAO,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,MAAC,aAAa,CAAC,QAAgB,0CAAE,OAAO,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,IAAA,0BAAS,EAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,CAAC,8CAA8C,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;AAChF,CAAC,CAAC"}
|
|
@@ -15,6 +15,14 @@
|
|
|
15
15
|
},
|
|
16
16
|
"x-prompt": "What name would you like your API to have? i.e: MyApi"
|
|
17
17
|
},
|
|
18
|
+
"computeType": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "The type of compute to use to deploy this API. Choose between ServerlessApiGatewayRestApi (default) or ServerlessApiGatewayHttpApi.",
|
|
21
|
+
"default": "ServerlessApiGatewayRestApi",
|
|
22
|
+
"enum": ["ServerlessApiGatewayRestApi", "ServerlessApiGatewayHttpApi"],
|
|
23
|
+
"x-prompt": "What compute type would you like to deploy your API with?",
|
|
24
|
+
"x-priority": "important"
|
|
25
|
+
},
|
|
18
26
|
"directory": {
|
|
19
27
|
"type": "string",
|
|
20
28
|
"description": "The directory to store the application in.",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
/**
|
|
5
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
const devkit_1 = require("@nx/devkit");
|
|
9
|
+
// Global Setup https://vitest.dev/config/#globalsetup
|
|
10
|
+
exports.default = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
11
|
+
// Create the project graph in global setup to ensure it's cached in the daemon
|
|
12
|
+
yield (0, devkit_1.createProjectGraphAsync)();
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=setup-tests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-tests.js","sourceRoot":"","sources":["../../../../packages/nx-plugin/src/setup-tests.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAAqD;AAErD,sDAAsD;AACtD,kBAAe,GAAS,EAAE;IACxB,+EAA+E;IAC/E,MAAM,IAAA,gCAAuB,GAAE,CAAC;AAClC,CAAC,CAAA,CAAC"}
|