@abgov/nx-adsp 13.15.3 → 13.16.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/README.md +14 -8
- package/package.json +1 -1
- package/src/generators/angular-app/angular-app.js +31 -16
- package/src/generators/angular-app/angular-app.js.map +1 -1
- package/src/generators/angular-app/angular-app.spec.ts +42 -1
- package/src/generators/angular-app/schema.d.ts +3 -1
- package/src/generators/angular-app/schema.json +4 -0
- package/src/generators/express-service/express-service.js +2 -5
- package/src/generators/express-service/express-service.js.map +1 -1
- package/src/generators/mean/mean.js +2 -5
- package/src/generators/mean/mean.js.map +1 -1
- package/src/generators/mean/mean.spec.ts +1 -0
- package/src/generators/mern/mern.js +2 -5
- package/src/generators/mern/mern.js.map +1 -1
- package/src/generators/mern/mern.spec.ts +1 -0
- package/src/generators/mevn/mevn.js +2 -5
- package/src/generators/mevn/mevn.js.map +1 -1
- package/src/generators/mevn/mevn.spec.ts +1 -0
- package/src/generators/pean/pean.js +1 -4
- package/src/generators/pean/pean.js.map +1 -1
- package/src/generators/pern/pern.js +1 -4
- package/src/generators/pern/pern.js.map +1 -1
- package/src/generators/pevn/pevn.js +1 -4
- package/src/generators/pevn/pevn.js.map +1 -1
- package/src/generators/react-app/react-app.js +38 -16
- package/src/generators/react-app/react-app.js.map +1 -1
- package/src/generators/react-app/react-app.spec.ts +41 -1
- package/src/generators/react-app/schema.d.ts +3 -1
- package/src/generators/react-app/schema.json +4 -0
- package/src/generators/vue-app/schema.d.ts +3 -1
- package/src/generators/vue-app/schema.json +4 -0
- package/src/generators/vue-app/vue-app.js +16 -25
- package/src/generators/vue-app/vue-app.js.map +1 -1
- package/src/generators/vue-app/vue-app.spec.ts +57 -1
- package/src/utils/express-service-port.d.ts +1 -0
- package/src/utils/express-service-port.js +11 -0
- package/src/utils/express-service-port.js.map +1 -0
- package/src/utils/paired-project.d.ts +7 -0
- package/src/utils/paired-project.js +29 -0
- package/src/utils/paired-project.js.map +1 -0
package/README.md
CHANGED
|
@@ -152,14 +152,20 @@ Creates a React/Redux frontend application configured for ADSP. Requires `@nx/re
|
|
|
152
152
|
npx nx g @abgov/nx-adsp:react-app my-app --env dev --tenant my-tenant
|
|
153
153
|
```
|
|
154
154
|
|
|
155
|
-
| Option
|
|
156
|
-
|
|
|
157
|
-
| `name`
|
|
158
|
-
| `env`
|
|
159
|
-
| `tenant`
|
|
160
|
-
| `tenantRealm`
|
|
161
|
-
| `accessToken`
|
|
162
|
-
| `
|
|
155
|
+
| Option | Alias | Required | Description |
|
|
156
|
+
| --------------- | ----- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
157
|
+
| `name` | — | Yes | Name of the application |
|
|
158
|
+
| `env` | `-e` | No | ADSP environment / access service. Defaults to `test` = access-uat.alberta.ca (UAT — use for dev and pre-prod); `prod` = access.alberta.ca; `dev` = ADSP platform dev (restricted) |
|
|
159
|
+
| `tenant` | `-t` | No | ADSP tenant name; resolves the Keycloak realm by name (sign in once with `@abgov/adsp-cli` — see Authentication) |
|
|
160
|
+
| `tenantRealm` | `-tr` | No | Keycloak realm UUID; overrides the realm resolved from `--tenant` |
|
|
161
|
+
| `accessToken` | `-at` | No | Access token for non-interactive retrieval of ADSP configuration |
|
|
162
|
+
| `pairedProject` | — | No | Name of an existing backend service project to derive the nginx/dev-server proxy and the `adsp:proxy-service:` sandbox tag from automatically — the project must already exist |
|
|
163
|
+
| `proxy` | — | No | Nginx proxy rule(s) as `{ location, proxyPass }` or an array of such objects — additional entries `--pairedProject` doesn't cover; can't duplicate its location |
|
|
164
|
+
|
|
165
|
+
Running this generator standalone against a backend that's already scaffolded? Pass
|
|
166
|
+
`--pairedProject <backend-project-name>` instead of hand-computing `--proxy` — it derives the same
|
|
167
|
+
`http://<name>:3333/<name>/` convention `pevn`/`pern`/`pean`/`mevn` already use internally, plus the
|
|
168
|
+
tag `@abgov/nx-oc:sandbox` needs to pre-create the backend's Service.
|
|
163
169
|
|
|
164
170
|
The generated Playwright e2e project includes an axe-core accessibility check (`a11y.spec.ts`),
|
|
165
171
|
scoped to WCAG 2.1 A/AA, that runs automatically as part of the `e2e` target — no separate command
|
package/package.json
CHANGED
|
@@ -10,22 +10,32 @@ const quality_1 = require("../../utils/quality");
|
|
|
10
10
|
const init_1 = require("../init/init");
|
|
11
11
|
const devkit_1 = require("@nx/devkit");
|
|
12
12
|
const path = require("path");
|
|
13
|
+
const paired_project_1 = require("../../utils/paired-project");
|
|
13
14
|
function normalizeOptions(host, options) {
|
|
14
15
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
15
16
|
const projectName = (0, devkit_1.names)(options.name).fileName;
|
|
16
17
|
const projectRoot = `${(0, devkit_1.getWorkspaceLayout)(host).appsDir}/${projectName}`;
|
|
17
18
|
const openshiftDirectory = `.openshift/${projectName}`;
|
|
18
19
|
const adsp = yield (0, nx_oc_1.getAdspConfiguration)(host, options);
|
|
19
|
-
const
|
|
20
|
+
const explicitProxies = Array.isArray(options.proxy)
|
|
20
21
|
? [...options.proxy]
|
|
21
22
|
: options.proxy
|
|
22
23
|
? [options.proxy]
|
|
23
24
|
: [];
|
|
25
|
+
const paired = (0, paired_project_1.resolvePairedProjectProxy)(host, options.pairedProject);
|
|
26
|
+
if (paired &&
|
|
27
|
+
explicitProxies.some((p) => p.location === paired.proxy.location)) {
|
|
28
|
+
throw new Error(`--pairedProject already derives a proxy for "${paired.proxy.location}" — remove the ` +
|
|
29
|
+
`explicit --proxy entry for that location, or give it a different location.`);
|
|
30
|
+
}
|
|
31
|
+
const nginxProxies = paired
|
|
32
|
+
? [paired.proxy, ...explicitProxies]
|
|
33
|
+
: explicitProxies;
|
|
24
34
|
return Object.assign(Object.assign({}, options), { projectName,
|
|
25
35
|
projectRoot,
|
|
26
36
|
openshiftDirectory,
|
|
27
37
|
adsp,
|
|
28
|
-
nginxProxies });
|
|
38
|
+
nginxProxies, pairedProjectTag: paired === null || paired === void 0 ? void 0 : paired.tag });
|
|
29
39
|
});
|
|
30
40
|
}
|
|
31
41
|
function addFiles(host, options) {
|
|
@@ -58,7 +68,7 @@ function addFiles(host, options) {
|
|
|
58
68
|
}
|
|
59
69
|
function default_1(host, options) {
|
|
60
70
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
71
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
62
72
|
// Checked before normalizeOptions, which resolves ADSP auth and can trigger
|
|
63
73
|
// an interactive login — a missing peer shouldn't surface only after that.
|
|
64
74
|
const { applicationGenerator: initAngular } = yield Promise.resolve().then(() => require('@nx/angular/generators')).catch(() => {
|
|
@@ -139,15 +149,20 @@ function default_1(host, options) {
|
|
|
139
149
|
// Add the webpack dev server proxy if there is proxy configuration.
|
|
140
150
|
config.targets.serve.options = Object.assign(Object.assign({}, config.targets.serve.options), { proxyConfig: `${normalizedOptions.projectRoot}/proxy.conf.json` });
|
|
141
151
|
}
|
|
152
|
+
// Lets the sandbox generator ensure the paired backend's Service exists before this
|
|
153
|
+
// frontend's nginx starts — see utils/paired-project.ts for why.
|
|
154
|
+
if (normalizedOptions.pairedProjectTag) {
|
|
155
|
+
config.tags = [...((_d = config.tags) !== null && _d !== void 0 ? _d : []), normalizedOptions.pairedProjectTag];
|
|
156
|
+
}
|
|
142
157
|
config.tags = [
|
|
143
|
-
...((
|
|
158
|
+
...((_e = config.tags) !== null && _e !== void 0 ? _e : []),
|
|
144
159
|
...(0, nx_oc_1.adspProjectTags)(normalizedOptions.env, normalizedOptions.adsp.tenant).filter((tag) => { var _a; return !((_a = config.tags) !== null && _a !== void 0 ? _a : []).includes(tag); }),
|
|
145
160
|
];
|
|
146
161
|
(0, devkit_1.updateProjectConfiguration)(host, options.name, config);
|
|
147
162
|
(0, quality_1.addSemgrepTarget)(host, options.name);
|
|
148
163
|
yield (0, devkit_1.formatFiles)(host);
|
|
149
164
|
if (normalizedOptions.adsp) {
|
|
150
|
-
const accessToken = (
|
|
165
|
+
const accessToken = (_f = normalizedOptions.adsp.accessToken) !== null && _f !== void 0 ? _f : options.accessToken;
|
|
151
166
|
const clientId = `urn:ads:${normalizedOptions.adsp.tenant}:${normalizedOptions.projectName}`;
|
|
152
167
|
yield (0, keycloak_admin_1.ensurePublicClient)(normalizedOptions.adsp.accessServiceUrl, normalizedOptions.adsp.tenantRealm, clientId, accessToken);
|
|
153
168
|
if (options.serviceClientId) {
|
|
@@ -156,17 +171,17 @@ function default_1(host, options) {
|
|
|
156
171
|
}
|
|
157
172
|
}
|
|
158
173
|
if (normalizedOptions.adsp && !options.skipAgent) {
|
|
159
|
-
const accessToken = (
|
|
160
|
-
const appComponentTs = (
|
|
161
|
-
.read(`${normalizedOptions.projectRoot}/src/app/app.component.ts`)) === null ||
|
|
162
|
-
const appComponentHtml = (
|
|
163
|
-
.read(`${normalizedOptions.projectRoot}/src/app/app.component.html`)) === null ||
|
|
164
|
-
const appConfigTs = (
|
|
165
|
-
.read(`${normalizedOptions.projectRoot}/src/app/app.config.ts`)) === null ||
|
|
166
|
-
const appRoutesTs = (
|
|
167
|
-
.read(`${normalizedOptions.projectRoot}/src/app/app.routes.ts`)) === null ||
|
|
168
|
-
const environmentTs = (
|
|
169
|
-
.read(`${normalizedOptions.projectRoot}/src/environments/environment.ts`)) === null ||
|
|
174
|
+
const accessToken = (_g = normalizedOptions.adsp.accessToken) !== null && _g !== void 0 ? _g : options.accessToken;
|
|
175
|
+
const appComponentTs = (_j = (_h = host
|
|
176
|
+
.read(`${normalizedOptions.projectRoot}/src/app/app.component.ts`)) === null || _h === void 0 ? void 0 : _h.toString()) !== null && _j !== void 0 ? _j : '';
|
|
177
|
+
const appComponentHtml = (_l = (_k = host
|
|
178
|
+
.read(`${normalizedOptions.projectRoot}/src/app/app.component.html`)) === null || _k === void 0 ? void 0 : _k.toString()) !== null && _l !== void 0 ? _l : '';
|
|
179
|
+
const appConfigTs = (_o = (_m = host
|
|
180
|
+
.read(`${normalizedOptions.projectRoot}/src/app/app.config.ts`)) === null || _m === void 0 ? void 0 : _m.toString()) !== null && _o !== void 0 ? _o : '';
|
|
181
|
+
const appRoutesTs = (_q = (_p = host
|
|
182
|
+
.read(`${normalizedOptions.projectRoot}/src/app/app.routes.ts`)) === null || _p === void 0 ? void 0 : _p.toString()) !== null && _q !== void 0 ? _q : '';
|
|
183
|
+
const environmentTs = (_s = (_r = host
|
|
184
|
+
.read(`${normalizedOptions.projectRoot}/src/environments/environment.ts`)) === null || _r === void 0 ? void 0 : _r.toString()) !== null && _s !== void 0 ? _s : '';
|
|
170
185
|
yield (0, agent_1.confirmAfterAgentInterrupt)(yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, accessToken, {
|
|
171
186
|
projectName: normalizedOptions.projectName,
|
|
172
187
|
projectType: 'angular-app',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/angular-app/angular-app.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"angular-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/angular-app/angular-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Tree,
|
|
4
|
+
addProjectConfiguration,
|
|
5
|
+
readProjectConfiguration,
|
|
6
|
+
} from '@nx/devkit';
|
|
3
7
|
|
|
4
8
|
import * as utils from '@abgov/nx-oc';
|
|
5
9
|
import { environments } from '@abgov/nx-oc';
|
|
@@ -159,4 +163,41 @@ describe('angular app generator', () => {
|
|
|
159
163
|
expect(proxyConf['/test/'].target).toBe('http://localhost:3333');
|
|
160
164
|
expect(proxyConf['/test/'].pathRewrite['^/test/']).toBe('/api/');
|
|
161
165
|
});
|
|
166
|
+
|
|
167
|
+
it('derives the nginx/dev proxy and the sandbox tag from --pairedProject alone', async () => {
|
|
168
|
+
addProjectConfiguration(appTree, 'test-service', {
|
|
169
|
+
root: 'apps/test-service',
|
|
170
|
+
});
|
|
171
|
+
await angularApp(appTree, { ...options, pairedProject: 'test-service' });
|
|
172
|
+
|
|
173
|
+
const nginxConf = appTree.read('apps/test/nginx.conf').toString();
|
|
174
|
+
expect(nginxConf).toContain('http://test-service:3333/test-service/');
|
|
175
|
+
|
|
176
|
+
const proxyConf = JSON.parse(
|
|
177
|
+
appTree.read('apps/test/proxy.conf.json').toString(),
|
|
178
|
+
);
|
|
179
|
+
expect(proxyConf['/api/'].target).toBe('http://localhost:3333');
|
|
180
|
+
|
|
181
|
+
const config = readProjectConfiguration(appTree, 'test');
|
|
182
|
+
expect(config.tags).toContain('adsp:proxy-service:test-service:3333');
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it('throws when --pairedProject names a project that does not exist', async () => {
|
|
186
|
+
await expect(
|
|
187
|
+
angularApp(appTree, { ...options, pairedProject: 'no-such-service' }),
|
|
188
|
+
).rejects.toThrow();
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
it('throws when --pairedProject and an explicit --proxy collide on the same location', async () => {
|
|
192
|
+
addProjectConfiguration(appTree, 'test-service', {
|
|
193
|
+
root: 'apps/test-service',
|
|
194
|
+
});
|
|
195
|
+
await expect(
|
|
196
|
+
angularApp(appTree, {
|
|
197
|
+
...options,
|
|
198
|
+
pairedProject: 'test-service',
|
|
199
|
+
proxy: { location: '/api/', proxyPass: 'http://other:9000/' },
|
|
200
|
+
}),
|
|
201
|
+
).rejects.toThrow(/already derives a proxy/);
|
|
202
|
+
});
|
|
162
203
|
});
|
|
@@ -11,7 +11,7 @@ export interface AngularAppGeneratorSchema {
|
|
|
11
11
|
proxy?: NginxProxyConfiguration | NginxProxyConfiguration[];
|
|
12
12
|
/** When true, skip the agent interaction. Used by composite generators that run the agent themselves. */
|
|
13
13
|
skipAgent?: boolean;
|
|
14
|
-
/** Name of
|
|
14
|
+
/** Name of an existing backend service project to derive the nginx/dev-server proxy and the adsp:proxy-service: sandbox tag from. */
|
|
15
15
|
pairedProject?: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -21,4 +21,6 @@ export interface NormalizedSchema extends AngularAppGeneratorSchema {
|
|
|
21
21
|
openshiftDirectory: string;
|
|
22
22
|
adsp: AdspConfiguration;
|
|
23
23
|
nginxProxies: NginxProxyConfiguration[];
|
|
24
|
+
/** The adsp:proxy-service: tag derived from pairedProject, if one was given. */
|
|
25
|
+
pairedProjectTag?: string;
|
|
24
26
|
}
|
|
@@ -75,6 +75,10 @@
|
|
|
75
75
|
}
|
|
76
76
|
]
|
|
77
77
|
},
|
|
78
|
+
"pairedProject": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Name of an existing backend service project (e.g. an express-service) to derive the nginx/dev-server proxy config from automatically, plus the adsp:proxy-service: tag the sandbox executor reads to pre-create its Service. The project must already exist. --proxy is still available for additional entries this doesn't cover, but can't duplicate the location this derives."
|
|
81
|
+
},
|
|
78
82
|
"skipAgent": {
|
|
79
83
|
"type": "boolean",
|
|
80
84
|
"description": "Skip the consultAgent interaction and generate base scaffolding only.",
|
|
@@ -11,10 +11,7 @@ const keycloak_admin_1 = require("../../utils/keycloak-admin");
|
|
|
11
11
|
const plugin_version_1 = require("../../utils/plugin-version");
|
|
12
12
|
const quality_1 = require("../../utils/quality");
|
|
13
13
|
const init_1 = require("../init/init");
|
|
14
|
-
|
|
15
|
-
// there's no --port option to source this from yet, so it's a second literal
|
|
16
|
-
// kept in sync by convention rather than a single shared value.
|
|
17
|
-
const DEFAULT_PORT = 3333;
|
|
14
|
+
const express_service_port_1 = require("../../utils/express-service-port");
|
|
18
15
|
function normalizeOptions(host, options) {
|
|
19
16
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
17
|
var _a;
|
|
@@ -52,7 +49,7 @@ function default_1(host, options) {
|
|
|
52
49
|
yield initExpress(host, initExpressOptions);
|
|
53
50
|
// @nx/node:e2e-project's own generated output has two bugs of its own —
|
|
54
51
|
// see fixExpressServiceE2eProject's doc comment for how each was confirmed.
|
|
55
|
-
(0, quality_1.fixExpressServiceE2eProject)(host, `${normalizedOptions.projectRoot}-e2e`,
|
|
52
|
+
(0, quality_1.fixExpressServiceE2eProject)(host, `${normalizedOptions.projectRoot}-e2e`, express_service_port_1.DEFAULT_EXPRESS_SERVICE_PORT);
|
|
56
53
|
(0, devkit_1.addDependenciesToPackageJson)(host, Object.assign(Object.assign({ '@abgov/adsp-service-sdk': '^2.23.0', '@asteasolutions/zod-to-openapi': '^7.3.4', compression: '^1.8.1', cors: '^2.8.5', dotenv: '^16.4.7', envalid: '^8.0.0', helmet: '^8.0.0', passport: '^0.7.0', 'passport-anonymous': '^1.0.1', zod: '^3.0.0' }, (normalizedOptions.database === 'postgres'
|
|
57
54
|
? { 'drizzle-orm': '^0.45.2', pg: '^8.11.0' }
|
|
58
55
|
: {})), (normalizedOptions.database === 'mongo' ? { mongoose: '^8.0.0' } : {})), Object.assign(Object.assign({ '@types/compression': '^1.7.5', '@types/cors': '^2.8.17', '@types/passport': '^1.0.16', '@types/passport-anonymous': '^1.0.3', supertest: '^7.0.0', '@types/supertest': '^6.0.0' }, (normalizedOptions.database === 'postgres'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express-service.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/express-service/express-service.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"express-service.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/express-service/express-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,11 +30,8 @@ function default_1(host, options) {
|
|
|
30
30
|
const serviceRoot = `${appsDir}/${serviceName}`;
|
|
31
31
|
const appRoot = `${appsDir}/${appName}`;
|
|
32
32
|
// Scaffold both projects before the agent interaction so files exist to upload.
|
|
33
|
-
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'mongo' }));
|
|
34
|
-
yield (0, angular_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName,
|
|
35
|
-
location: '/api/',
|
|
36
|
-
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
37
|
-
}, skipAgent: true }));
|
|
33
|
+
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'mongo', pairedProject: appName }));
|
|
34
|
+
yield (0, angular_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, skipAgent: true, pairedProject: serviceName }));
|
|
38
35
|
if (normalizedOptions.adsp) {
|
|
39
36
|
const accessToken = (_a = normalizedOptions.adsp.accessToken) !== null && _a !== void 0 ? _a : normalizedOptions.accessToken;
|
|
40
37
|
const serviceClientId = `urn:ads:${normalizedOptions.adsp.tenant}:${serviceName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mean.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mean/mean.ts"],"names":[],"mappings":";;AAiCA,
|
|
1
|
+
{"version":3,"file":"mean.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mean/mean.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,5 +48,6 @@ describe('MEAN Generator', () => {
|
|
|
48
48
|
expect(host.exists('apps/test-app/nginx.conf')).toBeTruthy();
|
|
49
49
|
const nginxConf = host.read('apps/test-app/nginx.conf').toString();
|
|
50
50
|
expect(nginxConf).toContain('http://test-service:3333/');
|
|
51
|
+
expect(appConfig.tags).toContain('adsp:proxy-service:test-service:3333');
|
|
51
52
|
}, 30000);
|
|
52
53
|
});
|
|
@@ -30,11 +30,8 @@ function default_1(host, options) {
|
|
|
30
30
|
const serviceRoot = `${appsDir}/${serviceName}`;
|
|
31
31
|
const appRoot = `${appsDir}/${appName}`;
|
|
32
32
|
// Scaffold both projects before the agent interaction so files exist to upload.
|
|
33
|
-
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'mongo' }));
|
|
34
|
-
yield (0, react_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName,
|
|
35
|
-
location: '/api/',
|
|
36
|
-
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
37
|
-
}, skipAgent: true }));
|
|
33
|
+
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'mongo', pairedProject: appName }));
|
|
34
|
+
yield (0, react_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, skipAgent: true, pairedProject: serviceName }));
|
|
38
35
|
if (normalizedOptions.adsp) {
|
|
39
36
|
const accessToken = (_a = normalizedOptions.adsp.accessToken) !== null && _a !== void 0 ? _a : normalizedOptions.accessToken;
|
|
40
37
|
const serviceClientId = `urn:ads:${normalizedOptions.adsp.tenant}:${serviceName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mern.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mern/mern.ts"],"names":[],"mappings":";;AAiCA,
|
|
1
|
+
{"version":3,"file":"mern.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mern/mern.ts"],"names":[],"mappings":";;AAiCA,4BAmGC;;AApID,uCAMoB;AACpB,wCAAoD;AACpD,wEAAoE;AACpE,sDAAkD;AAElD,6CAA6E;AAC7E,+DAGoC;AACpC,+DAA4D;AAE5D,SAAe,gBAAgB,CAC7B,IAAU,EACV,OAAe;;;QAEf,MAAM,IAAI,GAAG,MAAM,IAAA,4BAAoB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,wEAAwE;QACxE,6EAA6E;QAC7E,0DAA0D;QAC1D,uCACK,OAAO,KACV,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,OAAO,CAAC,WAAW,EACpD,IAAI,IACJ;IACJ,CAAC;CAAA;AAED,mBAA+B,IAAU,EAAE,OAAe;;;QACxD,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QACjD,MAAM,WAAW,GAAG,GAAG,WAAW,UAAU,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,WAAW,MAAM,CAAC;QACrC,MAAM,OAAO,GAAG,IAAA,2BAAkB,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACjD,MAAM,WAAW,GAAG,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;QAExC,gFAAgF;QAChF,MAAM,IAAA,yBAAkB,EAAC,IAAI,kCACxB,iBAAiB,KACpB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,OAAO,EACjB,aAAa,EAAE,OAAO,IACtB,CAAC;QACH,MAAM,IAAA,mBAAY,EAAC,IAAI,kCAClB,iBAAiB,KACpB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,WAAW,IAC1B,CAAC;QAEH,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,WAAW,GACf,MAAA,iBAAiB,CAAC,IAAI,CAAC,WAAW,mCAAI,iBAAiB,CAAC,WAAW,CAAC;YACtE,MAAM,eAAe,GAAG,WAAW,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAClF,MAAM,WAAW,GAAG,WAAW,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;YAC1E,MAAM,IAAA,qCAAoB,EACxB,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EACvC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAClC,WAAW,EACX,eAAe,EACf,WAAW,CACZ,CAAC;YACF,MAAM,IAAA,sCAAqB,EACzB,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EACvC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAClC,WAAW,EACX,eAAe,EACf,cAAc,EACd,WAAW,CACZ,CAAC;QACJ,CAAC;QAED,IAAI,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAC3D,4EAA4E;YAC5E,2EAA2E;YAC3E,2DAA2D;YAC3D,6EAA6E;YAC7E,8EAA8E;YAC9E,8EAA8E;YAC9E,6DAA6D;YAC7D,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;YACvD,MAAM,IAAA,kCAA0B,EAC9B,MAAM,IAAA,oBAAY,EAChB,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,EAC1C,WAAW,EACX;gBACE,WAAW;gBACX,WAAW,EAAE,MAAM;gBACnB,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM;gBACrC,aAAa,EAAE,+BAAc;gBAC7B,aAAa,EAAE;oBACb,qBAAqB,EACnB,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,cAAc,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBAC3D,4BAA4B,EAC1B,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,qBAAqB,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBAClE,yBAAyB,EACvB,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,kBAAkB,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBAC/D,uBAAuB,EACrB,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,gBAAgB,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBAC7D,qBAAqB,EACnB,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,kBAAkB,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBAC3D,kBAAkB,EAChB,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,eAAe,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBACxD,qCAAqC,EACnC,MAAA,MAAA,IAAI;yBACD,IAAI,CAAC,GAAG,OAAO,kCAAkC,CAAC,0CACjD,QAAQ,EAAE,mCAAI,EAAE;oBACtB,6BAA6B,EAC3B,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,0BAA0B,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;oBACnE,6BAA6B,EAC3B,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,0BAA0B,CAAC,0CAAE,QAAQ,EAAE,mCAAI,EAAE;iBACpE;aACF,EACD,IAAI,EACJ,WAAW,EACX,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CACtC,CACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAExB,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;CAAA"}
|
|
@@ -48,5 +48,6 @@ describe('MERN Generator', () => {
|
|
|
48
48
|
expect(host.exists('apps/test-app/nginx.conf')).toBeTruthy();
|
|
49
49
|
const nginxConf = host.read('apps/test-app/nginx.conf').toString();
|
|
50
50
|
expect(nginxConf).toContain('http://test-service:3333/');
|
|
51
|
+
expect(appConfig.tags).toContain('adsp:proxy-service:test-service:3333');
|
|
51
52
|
}, 30000);
|
|
52
53
|
});
|
|
@@ -26,11 +26,8 @@ function default_1(host, options) {
|
|
|
26
26
|
const appsDir = (0, devkit_1.getWorkspaceLayout)(host).appsDir;
|
|
27
27
|
const serviceRoot = `${appsDir}/${serviceName}`;
|
|
28
28
|
const appRoot = `${appsDir}/${appName}`;
|
|
29
|
-
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'mongo' }));
|
|
30
|
-
yield (0, vue_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName,
|
|
31
|
-
location: '/api/',
|
|
32
|
-
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
33
|
-
}, skipAgent: true }));
|
|
29
|
+
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'mongo', pairedProject: appName }));
|
|
30
|
+
yield (0, vue_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, skipAgent: true, pairedProject: serviceName }));
|
|
34
31
|
if (normalizedOptions.adsp) {
|
|
35
32
|
const accessToken = (_a = normalizedOptions.adsp.accessToken) !== null && _a !== void 0 ? _a : normalizedOptions.accessToken;
|
|
36
33
|
const serviceClientId = `urn:ads:${normalizedOptions.adsp.tenant}:${serviceName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mevn.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mevn/mevn.ts"],"names":[],"mappings":";;AA8BA,
|
|
1
|
+
{"version":3,"file":"mevn.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/mevn/mevn.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ describe('MEVN Generator', () => {
|
|
|
48
48
|
expect(host.exists('apps/test-app/public/nginx.conf')).toBeTruthy();
|
|
49
49
|
const nginxConf = host.read('apps/test-app/public/nginx.conf').toString();
|
|
50
50
|
expect(nginxConf).toContain('http://test-service:3333/');
|
|
51
|
+
expect(appConfig.tags).toContain('adsp:proxy-service:test-service:3333');
|
|
51
52
|
|
|
52
53
|
expect(host.exists('apps/test-app/src/App.vue')).toBeTruthy();
|
|
53
54
|
expect(host.exists('apps/test-service/src/db/schema.ts')).toBeFalsy();
|
|
@@ -31,10 +31,7 @@ function default_1(host, options) {
|
|
|
31
31
|
const appRoot = `${appsDir}/${appName}`;
|
|
32
32
|
// Scaffold both projects before the agent interaction so files exist to upload.
|
|
33
33
|
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'postgres', pairedProject: appName }));
|
|
34
|
-
yield (0, angular_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName,
|
|
35
|
-
location: '/api/',
|
|
36
|
-
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
37
|
-
}, skipAgent: true, pairedProject: serviceName }));
|
|
34
|
+
yield (0, angular_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, skipAgent: true, pairedProject: serviceName }));
|
|
38
35
|
if (normalizedOptions.adsp) {
|
|
39
36
|
const accessToken = (_a = normalizedOptions.adsp.accessToken) !== null && _a !== void 0 ? _a : normalizedOptions.accessToken;
|
|
40
37
|
const serviceClientId = `urn:ads:${normalizedOptions.adsp.tenant}:${serviceName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pean.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/pean/pean.ts"],"names":[],"mappings":";;AAiCA,
|
|
1
|
+
{"version":3,"file":"pean.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/pean/pean.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,10 +31,7 @@ function default_1(host, options) {
|
|
|
31
31
|
const appRoot = `${appsDir}/${appName}`;
|
|
32
32
|
// Scaffold both projects before the agent interaction so files exist to upload.
|
|
33
33
|
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'postgres', pairedProject: appName }));
|
|
34
|
-
yield (0, react_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName,
|
|
35
|
-
location: '/api/',
|
|
36
|
-
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
37
|
-
}, skipAgent: true, pairedProject: serviceName }));
|
|
34
|
+
yield (0, react_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, skipAgent: true, pairedProject: serviceName }));
|
|
38
35
|
if (normalizedOptions.adsp) {
|
|
39
36
|
const accessToken = (_a = normalizedOptions.adsp.accessToken) !== null && _a !== void 0 ? _a : normalizedOptions.accessToken;
|
|
40
37
|
const serviceClientId = `urn:ads:${normalizedOptions.adsp.tenant}:${serviceName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pern.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/pern/pern.ts"],"names":[],"mappings":";;AAiCA,
|
|
1
|
+
{"version":3,"file":"pern.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/pern/pern.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,10 +27,7 @@ function default_1(host, options) {
|
|
|
27
27
|
const serviceRoot = `${appsDir}/${serviceName}`;
|
|
28
28
|
const appRoot = `${appsDir}/${appName}`;
|
|
29
29
|
yield (0, express_service_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: serviceName, skipAgent: true, database: 'postgres', pairedProject: appName }));
|
|
30
|
-
yield (0, vue_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName,
|
|
31
|
-
location: '/api/',
|
|
32
|
-
proxyPass: `http://${serviceName}:3333/${serviceName}/`,
|
|
33
|
-
}, skipAgent: true, pairedProject: serviceName }));
|
|
30
|
+
yield (0, vue_app_1.default)(host, Object.assign(Object.assign({}, normalizedOptions), { name: appName, skipAgent: true, pairedProject: serviceName }));
|
|
34
31
|
if (normalizedOptions.adsp) {
|
|
35
32
|
const accessToken = (_a = normalizedOptions.adsp.accessToken) !== null && _a !== void 0 ? _a : normalizedOptions.accessToken;
|
|
36
33
|
const serviceClientId = `urn:ads:${normalizedOptions.adsp.tenant}:${serviceName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pevn.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/pevn/pevn.ts"],"names":[],"mappings":";;AA8BA,
|
|
1
|
+
{"version":3,"file":"pevn.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/pevn/pevn.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,22 +11,32 @@ const init_1 = require("../init/init");
|
|
|
11
11
|
const devkit_1 = require("@nx/devkit");
|
|
12
12
|
const eslint_1 = require("@nx/eslint");
|
|
13
13
|
const path = require("path");
|
|
14
|
+
const paired_project_1 = require("../../utils/paired-project");
|
|
14
15
|
function normalizeOptions(host, options) {
|
|
15
16
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
16
17
|
const projectName = (0, devkit_1.names)(options.name).fileName;
|
|
17
18
|
const projectRoot = `${(0, devkit_1.getWorkspaceLayout)(host).appsDir}/${projectName}`;
|
|
18
19
|
const openshiftDirectory = `.openshift/${projectName}`;
|
|
19
20
|
const adsp = yield (0, nx_oc_1.getAdspConfiguration)(host, options);
|
|
20
|
-
const
|
|
21
|
+
const explicitProxies = Array.isArray(options.proxy)
|
|
21
22
|
? [...options.proxy]
|
|
22
23
|
: options.proxy
|
|
23
24
|
? [options.proxy]
|
|
24
25
|
: [];
|
|
26
|
+
const paired = (0, paired_project_1.resolvePairedProjectProxy)(host, options.pairedProject);
|
|
27
|
+
if (paired &&
|
|
28
|
+
explicitProxies.some((p) => p.location === paired.proxy.location)) {
|
|
29
|
+
throw new Error(`--pairedProject already derives a proxy for "${paired.proxy.location}" — remove the ` +
|
|
30
|
+
`explicit --proxy entry for that location, or give it a different location.`);
|
|
31
|
+
}
|
|
32
|
+
const nginxProxies = paired
|
|
33
|
+
? [paired.proxy, ...explicitProxies]
|
|
34
|
+
: explicitProxies;
|
|
25
35
|
return Object.assign(Object.assign({}, options), { projectName,
|
|
26
36
|
projectRoot,
|
|
27
37
|
openshiftDirectory,
|
|
28
38
|
adsp,
|
|
29
|
-
nginxProxies });
|
|
39
|
+
nginxProxies, pairedProjectTag: paired === null || paired === void 0 ? void 0 : paired.tag });
|
|
30
40
|
});
|
|
31
41
|
}
|
|
32
42
|
function addFiles(host, options) {
|
|
@@ -64,7 +74,7 @@ function removeFiles(host, options) {
|
|
|
64
74
|
}
|
|
65
75
|
function default_1(host, options) {
|
|
66
76
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
77
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
68
78
|
// Checked before normalizeOptions, which resolves ADSP auth and can trigger
|
|
69
79
|
// an interactive login — a missing peer shouldn't surface only after that.
|
|
70
80
|
const { applicationGenerator: initReact } = yield Promise.resolve().then(() => require('@nx/react')).catch(() => {
|
|
@@ -93,7 +103,14 @@ function default_1(host, options) {
|
|
|
93
103
|
'@reduxjs/toolkit': '^2.5.1',
|
|
94
104
|
'keycloak-js': '^23.0.7',
|
|
95
105
|
'react-redux': '^9.2.0',
|
|
96
|
-
|
|
106
|
+
// 6.30.4, not 6.30.3: GHSA-2j2x-hqr9-3h42 (moderate) — a same-origin
|
|
107
|
+
// redirect whose path starts with "//" was reinterpreted as a
|
|
108
|
+
// protocol-relative URL, causing an open redirect. Fixed in 6.30.4,
|
|
109
|
+
// the last 6.x release. Two other advisories affecting this line
|
|
110
|
+
// (GHSA-jjmj-jmhj-qwj2, GHSA-wrjc-x8rr-h8h6) have no 6.x fix at all —
|
|
111
|
+
// only React Router v7 (a breaking migration: v7 merges
|
|
112
|
+
// react-router-dom into react-router and changes several APIs).
|
|
113
|
+
'react-router-dom': '6.30.4',
|
|
97
114
|
}, {
|
|
98
115
|
'@axe-core/playwright': '^4.12.1',
|
|
99
116
|
'html-webpack-plugin': '~5.5.0',
|
|
@@ -133,15 +150,20 @@ function default_1(host, options) {
|
|
|
133
150
|
// Add the webpack dev server proxy if there is proxy configuration.
|
|
134
151
|
config.targets.serve.options = Object.assign(Object.assign({}, config.targets.serve.options), { proxyConfig: `${normalizedOptions.projectRoot}/proxy.conf.json` });
|
|
135
152
|
}
|
|
153
|
+
// Lets the sandbox generator ensure the paired backend's Service exists before this
|
|
154
|
+
// frontend's nginx starts — see utils/paired-project.ts for why.
|
|
155
|
+
if (normalizedOptions.pairedProjectTag) {
|
|
156
|
+
config.tags = [...((_c = config.tags) !== null && _c !== void 0 ? _c : []), normalizedOptions.pairedProjectTag];
|
|
157
|
+
}
|
|
136
158
|
config.tags = [
|
|
137
|
-
...((
|
|
159
|
+
...((_d = config.tags) !== null && _d !== void 0 ? _d : []),
|
|
138
160
|
...(0, nx_oc_1.adspProjectTags)(normalizedOptions.env, normalizedOptions.adsp.tenant).filter((tag) => { var _a; return !((_a = config.tags) !== null && _a !== void 0 ? _a : []).includes(tag); }),
|
|
139
161
|
];
|
|
140
162
|
(0, devkit_1.updateProjectConfiguration)(host, options.name, config);
|
|
141
163
|
(0, quality_1.addSemgrepTarget)(host, options.name);
|
|
142
164
|
yield (0, devkit_1.formatFiles)(host);
|
|
143
165
|
if (normalizedOptions.adsp) {
|
|
144
|
-
const accessToken = (
|
|
166
|
+
const accessToken = (_e = normalizedOptions.adsp.accessToken) !== null && _e !== void 0 ? _e : options.accessToken;
|
|
145
167
|
const clientId = `urn:ads:${normalizedOptions.adsp.tenant}:${normalizedOptions.projectName}`;
|
|
146
168
|
yield (0, keycloak_admin_1.ensurePublicClient)(normalizedOptions.adsp.accessServiceUrl, normalizedOptions.adsp.tenantRealm, clientId, accessToken);
|
|
147
169
|
if (options.serviceClientId) {
|
|
@@ -150,16 +172,16 @@ function default_1(host, options) {
|
|
|
150
172
|
}
|
|
151
173
|
}
|
|
152
174
|
if (normalizedOptions.adsp && !options.skipAgent) {
|
|
153
|
-
const accessToken = (
|
|
154
|
-
const appTs = (
|
|
155
|
-
.read(`${normalizedOptions.projectRoot}/src/app/app.tsx`)) === null ||
|
|
156
|
-
const storeTs = (
|
|
157
|
-
const environmentTs = (
|
|
158
|
-
.read(`${normalizedOptions.projectRoot}/src/environments/environment.ts`)) === null ||
|
|
159
|
-
const configSliceTs = (
|
|
160
|
-
.read(`${normalizedOptions.projectRoot}/src/app/config.slice.ts`)) === null ||
|
|
161
|
-
const intakeSliceTs = (
|
|
162
|
-
.read(`${normalizedOptions.projectRoot}/src/app/intake.slice.ts`)) === null ||
|
|
175
|
+
const accessToken = (_f = normalizedOptions.adsp.accessToken) !== null && _f !== void 0 ? _f : options.accessToken;
|
|
176
|
+
const appTs = (_h = (_g = host
|
|
177
|
+
.read(`${normalizedOptions.projectRoot}/src/app/app.tsx`)) === null || _g === void 0 ? void 0 : _g.toString()) !== null && _h !== void 0 ? _h : '';
|
|
178
|
+
const storeTs = (_k = (_j = host.read(`${normalizedOptions.projectRoot}/src/store.ts`)) === null || _j === void 0 ? void 0 : _j.toString()) !== null && _k !== void 0 ? _k : '';
|
|
179
|
+
const environmentTs = (_m = (_l = host
|
|
180
|
+
.read(`${normalizedOptions.projectRoot}/src/environments/environment.ts`)) === null || _l === void 0 ? void 0 : _l.toString()) !== null && _m !== void 0 ? _m : '';
|
|
181
|
+
const configSliceTs = (_p = (_o = host
|
|
182
|
+
.read(`${normalizedOptions.projectRoot}/src/app/config.slice.ts`)) === null || _o === void 0 ? void 0 : _o.toString()) !== null && _p !== void 0 ? _p : '';
|
|
183
|
+
const intakeSliceTs = (_r = (_q = host
|
|
184
|
+
.read(`${normalizedOptions.projectRoot}/src/app/intake.slice.ts`)) === null || _q === void 0 ? void 0 : _q.toString()) !== null && _r !== void 0 ? _r : '';
|
|
163
185
|
yield (0, agent_1.confirmAfterAgentInterrupt)(yield (0, agent_1.consultAgent)(normalizedOptions.adsp.directoryServiceUrl, accessToken, {
|
|
164
186
|
projectName: normalizedOptions.projectName,
|
|
165
187
|
projectType: 'react-app',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/react-app/react-app.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"react-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/react-app/react-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readProjectConfiguration } from '@nx/devkit';
|
|
1
|
+
import { addProjectConfiguration, readProjectConfiguration } from '@nx/devkit';
|
|
2
2
|
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
|
|
3
3
|
|
|
4
4
|
import * as utils from '@abgov/nx-oc';
|
|
@@ -164,4 +164,44 @@ describe('React App Generator', () => {
|
|
|
164
164
|
expect(proxyConf['/test/'].target).toBe('http://localhost:3333');
|
|
165
165
|
expect(proxyConf['/test/'].pathRewrite['^/test/']).toBe('/api/');
|
|
166
166
|
});
|
|
167
|
+
|
|
168
|
+
it('derives the nginx/dev proxy and the sandbox tag from --pairedProject alone', async () => {
|
|
169
|
+
const host = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
|
|
170
|
+
addProjectConfiguration(host, 'test-service', {
|
|
171
|
+
root: 'apps/test-service',
|
|
172
|
+
});
|
|
173
|
+
await generator(host, { ...options, pairedProject: 'test-service' });
|
|
174
|
+
|
|
175
|
+
const nginxConf = host.read('apps/test/nginx.conf').toString();
|
|
176
|
+
expect(nginxConf).toContain('http://test-service:3333/test-service/');
|
|
177
|
+
|
|
178
|
+
const proxyConf = JSON.parse(
|
|
179
|
+
host.read('apps/test/proxy.conf.json').toString(),
|
|
180
|
+
);
|
|
181
|
+
expect(proxyConf['/api/'].target).toBe('http://localhost:3333');
|
|
182
|
+
|
|
183
|
+
const config = readProjectConfiguration(host, 'test');
|
|
184
|
+
expect(config.tags).toContain('adsp:proxy-service:test-service:3333');
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
it('throws when --pairedProject names a project that does not exist', async () => {
|
|
188
|
+
const host = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
|
|
189
|
+
await expect(
|
|
190
|
+
generator(host, { ...options, pairedProject: 'no-such-service' }),
|
|
191
|
+
).rejects.toThrow();
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it('throws when --pairedProject and an explicit --proxy collide on the same location', async () => {
|
|
195
|
+
const host = createTreeWithEmptyWorkspace({ layout: 'apps-libs' });
|
|
196
|
+
addProjectConfiguration(host, 'test-service', {
|
|
197
|
+
root: 'apps/test-service',
|
|
198
|
+
});
|
|
199
|
+
await expect(
|
|
200
|
+
generator(host, {
|
|
201
|
+
...options,
|
|
202
|
+
pairedProject: 'test-service',
|
|
203
|
+
proxy: { location: '/api/', proxyPass: 'http://other:9000/' },
|
|
204
|
+
}),
|
|
205
|
+
).rejects.toThrow(/already derives a proxy/);
|
|
206
|
+
});
|
|
167
207
|
});
|
|
@@ -11,7 +11,7 @@ export interface Schema {
|
|
|
11
11
|
proxy?: NginxProxyConfiguration | NginxProxyConfiguration[];
|
|
12
12
|
/** When true, skip the agent interaction. Used by composite generators that run the agent themselves. */
|
|
13
13
|
skipAgent?: boolean;
|
|
14
|
-
/** Name of
|
|
14
|
+
/** Name of an existing backend service project to derive the nginx/dev-server proxy and the adsp:proxy-service: sandbox tag from. */
|
|
15
15
|
pairedProject?: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -21,4 +21,6 @@ export interface NormalizedSchema extends Schema {
|
|
|
21
21
|
openshiftDirectory: string;
|
|
22
22
|
adsp: AdspConfiguration;
|
|
23
23
|
nginxProxies: NginxProxyConfiguration[];
|
|
24
|
+
/** The adsp:proxy-service: tag derived from pairedProject, if one was given. */
|
|
25
|
+
pairedProjectTag?: string;
|
|
24
26
|
}
|
|
@@ -75,6 +75,10 @@
|
|
|
75
75
|
}
|
|
76
76
|
]
|
|
77
77
|
},
|
|
78
|
+
"pairedProject": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Name of an existing backend service project (e.g. an express-service) to derive the nginx/dev-server proxy config from automatically, plus the adsp:proxy-service: tag the sandbox executor reads to pre-create its Service. The project must already exist. --proxy is still available for additional entries this doesn't cover, but can't duplicate the location this derives."
|
|
81
|
+
},
|
|
78
82
|
"skipAgent": {
|
|
79
83
|
"type": "boolean",
|
|
80
84
|
"description": "Skip the consultAgent interaction and generate base scaffolding only.",
|
|
@@ -11,7 +11,7 @@ export interface Schema {
|
|
|
11
11
|
proxy?: NginxProxyConfiguration | NginxProxyConfiguration[];
|
|
12
12
|
/** When true, skip the agent interaction. Used by composite generators that run the agent themselves. */
|
|
13
13
|
skipAgent?: boolean;
|
|
14
|
-
/** Name of
|
|
14
|
+
/** Name of an existing backend service project to derive the nginx/dev-server proxy and the adsp:proxy-service: sandbox tag from. */
|
|
15
15
|
pairedProject?: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -21,4 +21,6 @@ export interface NormalizedSchema extends Schema {
|
|
|
21
21
|
openshiftDirectory: string;
|
|
22
22
|
adsp: AdspConfiguration;
|
|
23
23
|
nginxProxies: NginxProxyConfiguration[];
|
|
24
|
+
/** The adsp:proxy-service: tag derived from pairedProject, if one was given. */
|
|
25
|
+
pairedProjectTag?: string;
|
|
24
26
|
}
|
|
@@ -75,6 +75,10 @@
|
|
|
75
75
|
}
|
|
76
76
|
]
|
|
77
77
|
},
|
|
78
|
+
"pairedProject": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Name of an existing backend service project (e.g. an express-service) to derive the nginx/dev-server proxy config from automatically, plus the adsp:proxy-service: tag the sandbox executor reads to pre-create its Service. The project must already exist. --proxy is still available for additional entries this doesn't cover, but can't duplicate the location this derives."
|
|
81
|
+
},
|
|
78
82
|
"skipAgent": {
|
|
79
83
|
"type": "boolean",
|
|
80
84
|
"description": "Skip the consultAgent interaction and generate base scaffolding only.",
|
|
@@ -10,6 +10,7 @@ const quality_1 = require("../../utils/quality");
|
|
|
10
10
|
const init_1 = require("../init/init");
|
|
11
11
|
const devkit_1 = require("@nx/devkit");
|
|
12
12
|
const path = require("path");
|
|
13
|
+
const paired_project_1 = require("../../utils/paired-project");
|
|
13
14
|
const vue_components_1 = require("../vue-components/vue-components");
|
|
14
15
|
function normalizeOptions(host, options) {
|
|
15
16
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -17,16 +18,25 @@ function normalizeOptions(host, options) {
|
|
|
17
18
|
const projectRoot = `${(0, devkit_1.getWorkspaceLayout)(host).appsDir}/${projectName}`;
|
|
18
19
|
const openshiftDirectory = `.openshift/${projectName}`;
|
|
19
20
|
const adsp = yield (0, nx_oc_1.getAdspConfiguration)(host, options);
|
|
20
|
-
const
|
|
21
|
+
const explicitProxies = Array.isArray(options.proxy)
|
|
21
22
|
? [...options.proxy]
|
|
22
23
|
: options.proxy
|
|
23
24
|
? [options.proxy]
|
|
24
25
|
: [];
|
|
26
|
+
const paired = (0, paired_project_1.resolvePairedProjectProxy)(host, options.pairedProject);
|
|
27
|
+
if (paired &&
|
|
28
|
+
explicitProxies.some((p) => p.location === paired.proxy.location)) {
|
|
29
|
+
throw new Error(`--pairedProject already derives a proxy for "${paired.proxy.location}" — remove the ` +
|
|
30
|
+
`explicit --proxy entry for that location, or give it a different location.`);
|
|
31
|
+
}
|
|
32
|
+
const nginxProxies = paired
|
|
33
|
+
? [paired.proxy, ...explicitProxies]
|
|
34
|
+
: explicitProxies;
|
|
25
35
|
return Object.assign(Object.assign({}, options), { projectName,
|
|
26
36
|
projectRoot,
|
|
27
37
|
openshiftDirectory,
|
|
28
38
|
adsp,
|
|
29
|
-
nginxProxies });
|
|
39
|
+
nginxProxies, pairedProjectTag: paired === null || paired === void 0 ? void 0 : paired.tag });
|
|
30
40
|
});
|
|
31
41
|
}
|
|
32
42
|
function addFiles(host, options) {
|
|
@@ -138,29 +148,10 @@ function default_1(host, options) {
|
|
|
138
148
|
if ((_b = config.targets.build) === null || _b === void 0 ? void 0 : _b.options) {
|
|
139
149
|
config.targets.build.options = Object.assign(Object.assign({}, config.targets.build.options), { outputPath: `dist/${normalizedOptions.projectRoot}` });
|
|
140
150
|
}
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (normalizedOptions.pairedProject) {
|
|
146
|
-
const pairedService = (0, devkit_1.names)(normalizedOptions.pairedProject).fileName;
|
|
147
|
-
const proxy = normalizedOptions.nginxProxies.find((p) => {
|
|
148
|
-
try {
|
|
149
|
-
return new URL(p.proxyPass).hostname === pairedService;
|
|
150
|
-
}
|
|
151
|
-
catch (_a) {
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
let port = 3333;
|
|
156
|
-
if (proxy) {
|
|
157
|
-
const url = new URL(proxy.proxyPass);
|
|
158
|
-
port = Number(url.port) || (url.protocol === 'https:' ? 443 : 80);
|
|
159
|
-
}
|
|
160
|
-
config.tags = [
|
|
161
|
-
...((_c = config.tags) !== null && _c !== void 0 ? _c : []),
|
|
162
|
-
`adsp:proxy-service:${pairedService}:${port}`,
|
|
163
|
-
];
|
|
151
|
+
// Lets the sandbox generator ensure the paired backend's Service exists before this
|
|
152
|
+
// frontend's nginx starts — see utils/paired-project.ts for why.
|
|
153
|
+
if (normalizedOptions.pairedProjectTag) {
|
|
154
|
+
config.tags = [...((_c = config.tags) !== null && _c !== void 0 ? _c : []), normalizedOptions.pairedProjectTag];
|
|
164
155
|
}
|
|
165
156
|
config.tags = [
|
|
166
157
|
...((_d = config.tags) !== null && _d !== void 0 ? _d : []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/vue-app/vue-app.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"vue-app.js","sourceRoot":"","sources":["../../../../../../packages/nx-adsp/src/generators/vue-app/vue-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
addProjectConfiguration,
|
|
3
|
+
readProjectConfiguration,
|
|
4
|
+
Tree,
|
|
5
|
+
} from '@nx/devkit';
|
|
2
6
|
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
|
|
3
7
|
|
|
4
8
|
import * as utils from '@abgov/nx-oc';
|
|
@@ -312,4 +316,56 @@ describe('Vue App Generator', () => {
|
|
|
312
316
|
expect(proxyConf['/test/'].target).toBe('http://localhost:3333');
|
|
313
317
|
expect(proxyConf['/test/'].pathRewrite['^/test/']).toBe('/api/');
|
|
314
318
|
});
|
|
319
|
+
|
|
320
|
+
it('derives the nginx/dev proxy and the sandbox tag from --pairedProject alone', async () => {
|
|
321
|
+
addProjectConfiguration(host, 'test-service', {
|
|
322
|
+
root: 'apps/test-service',
|
|
323
|
+
});
|
|
324
|
+
await generator(host, { ...options, pairedProject: 'test-service' });
|
|
325
|
+
|
|
326
|
+
const nginxConf = host.read('apps/test/public/nginx.conf').toString();
|
|
327
|
+
expect(nginxConf).toContain('http://test-service:3333/test-service/');
|
|
328
|
+
|
|
329
|
+
const proxyConf = JSON.parse(
|
|
330
|
+
host.read('apps/test/vite.proxy.json').toString(),
|
|
331
|
+
);
|
|
332
|
+
expect(proxyConf['/api/'].target).toBe('http://localhost:3333');
|
|
333
|
+
|
|
334
|
+
const config = readProjectConfiguration(host, 'test');
|
|
335
|
+
expect(config.tags).toContain('adsp:proxy-service:test-service:3333');
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
it('throws when --pairedProject names a project that does not exist', async () => {
|
|
339
|
+
await expect(
|
|
340
|
+
generator(host, { ...options, pairedProject: 'no-such-service' }),
|
|
341
|
+
).rejects.toThrow();
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
it('throws when --pairedProject and an explicit --proxy collide on the same location', async () => {
|
|
345
|
+
addProjectConfiguration(host, 'test-service', {
|
|
346
|
+
root: 'apps/test-service',
|
|
347
|
+
});
|
|
348
|
+
await expect(
|
|
349
|
+
generator(host, {
|
|
350
|
+
...options,
|
|
351
|
+
pairedProject: 'test-service',
|
|
352
|
+
proxy: { location: '/api/', proxyPass: 'http://other:9000/' },
|
|
353
|
+
}),
|
|
354
|
+
).rejects.toThrow(/already derives a proxy/);
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
it('--pairedProject and an explicit --proxy for a different location coexist', async () => {
|
|
358
|
+
addProjectConfiguration(host, 'test-service', {
|
|
359
|
+
root: 'apps/test-service',
|
|
360
|
+
});
|
|
361
|
+
await generator(host, {
|
|
362
|
+
...options,
|
|
363
|
+
pairedProject: 'test-service',
|
|
364
|
+
proxy: { location: '/other/', proxyPass: 'http://other-service:9000/' },
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
const nginxConf = host.read('apps/test/public/nginx.conf').toString();
|
|
368
|
+
expect(nginxConf).toContain('http://test-service:3333/test-service/');
|
|
369
|
+
expect(nginxConf).toContain('http://other-service:9000/');
|
|
370
|
+
});
|
|
315
371
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DEFAULT_EXPRESS_SERVICE_PORT = 3333;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_EXPRESS_SERVICE_PORT = void 0;
|
|
4
|
+
// express-service has no --port option to source a real value from yet, so every consumer that
|
|
5
|
+
// needs to reach a paired backend by convention (a frontend's nginx/dev-server proxy, the
|
|
6
|
+
// `adsp:proxy-service:` tag the sandbox executor reads) has to agree on the same default. One
|
|
7
|
+
// exported constant, not a literal repeated at each call site — update this alongside
|
|
8
|
+
// environment.ts.__tmpl__'s own `PORT: num({ default: ... })` if express-service ever gains a
|
|
9
|
+
// real --port option to read instead.
|
|
10
|
+
exports.DEFAULT_EXPRESS_SERVICE_PORT = 3333;
|
|
11
|
+
//# sourceMappingURL=express-service-port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express-service-port.js","sourceRoot":"","sources":["../../../../../packages/nx-adsp/src/utils/express-service-port.ts"],"names":[],"mappings":";;;AAAA,+FAA+F;AAC/F,0FAA0F;AAC1F,8FAA8F;AAC9F,sFAAsF;AACtF,8FAA8F;AAC9F,sCAAsC;AACzB,QAAA,4BAA4B,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Tree } from '@nx/devkit';
|
|
2
|
+
import { NginxProxyConfiguration } from './nginx';
|
|
3
|
+
export interface PairedProjectProxy {
|
|
4
|
+
proxy: NginxProxyConfiguration;
|
|
5
|
+
tag: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function resolvePairedProjectProxy(host: Tree, pairedProject: string | undefined): PairedProjectProxy | undefined;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolvePairedProjectProxy = resolvePairedProjectProxy;
|
|
4
|
+
const devkit_1 = require("@nx/devkit");
|
|
5
|
+
const express_service_port_1 = require("./express-service-port");
|
|
6
|
+
const PAIRED_PROJECT_LOCATION = '/api/';
|
|
7
|
+
// Resolves a frontend's --pairedProject into the nginx/dev-server proxy entry that routes API
|
|
8
|
+
// calls to it, plus the `adsp:proxy-service:<name>:<port>` tag the sandbox executor reads to
|
|
9
|
+
// pre-create the backend's Service before this frontend's nginx starts (nginx resolves
|
|
10
|
+
// proxy_pass upstreams at startup, so a missing Service would crashloop the pod — only the
|
|
11
|
+
// Service is needed, for DNS, not the backend's deployment). Throws if the named project doesn't
|
|
12
|
+
// exist yet — a paired reference only makes sense pointing at something already scaffolded, the
|
|
13
|
+
// same convention project-docs-ancestors uses elsewhere in this workspace.
|
|
14
|
+
function resolvePairedProjectProxy(host, pairedProject) {
|
|
15
|
+
if (!pairedProject) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const pairedService = (0, devkit_1.names)(pairedProject).fileName;
|
|
19
|
+
(0, devkit_1.readProjectConfiguration)(host, pairedService);
|
|
20
|
+
const port = express_service_port_1.DEFAULT_EXPRESS_SERVICE_PORT;
|
|
21
|
+
return {
|
|
22
|
+
proxy: {
|
|
23
|
+
location: PAIRED_PROJECT_LOCATION,
|
|
24
|
+
proxyPass: `http://${pairedService}:${port}/${pairedService}/`,
|
|
25
|
+
},
|
|
26
|
+
tag: `adsp:proxy-service:${pairedService}:${port}`,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=paired-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paired-project.js","sourceRoot":"","sources":["../../../../../packages/nx-adsp/src/utils/paired-project.ts"],"names":[],"mappings":";;AAkBA,8DAiBC;AAnCD,uCAAmE;AACnE,iEAAsE;AAQtE,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAExC,8FAA8F;AAC9F,6FAA6F;AAC7F,uFAAuF;AACvF,2FAA2F;AAC3F,iGAAiG;AACjG,gGAAgG;AAChG,2EAA2E;AAC3E,SAAgB,yBAAyB,CACvC,IAAU,EACV,aAAiC;IAEjC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAG,IAAA,cAAK,EAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;IACpD,IAAA,iCAAwB,EAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,mDAA4B,CAAC;IAC1C,OAAO;QACL,KAAK,EAAE;YACL,QAAQ,EAAE,uBAAuB;YACjC,SAAS,EAAE,UAAU,aAAa,IAAI,IAAI,IAAI,aAAa,GAAG;SAC/D;QACD,GAAG,EAAE,sBAAsB,aAAa,IAAI,IAAI,EAAE;KACnD,CAAC;AACJ,CAAC"}
|