@mouryaamit/nx-polystack 1.1.0 → 1.2.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 +1 -0
- package/USER-MANUAL.md +58 -4
- package/dist/src/cli/commands/app-from.d.ts +4 -0
- package/dist/src/cli/commands/app-from.js +248 -0
- package/dist/src/cli/commands/app-from.js.map +1 -0
- package/dist/src/cli/commands/app.d.ts +8 -1
- package/dist/src/cli/commands/app.js +5 -1
- package/dist/src/cli/commands/app.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts +5 -0
- package/dist/src/cli/commands/update.js +21 -2
- package/dist/src/cli/commands/update.js.map +1 -1
- package/dist/src/cli/help.js +12 -2
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/launcher.js +7 -1
- package/dist/src/cli/launcher.js.map +1 -1
- package/dist/src/cli/prompt.d.ts +17 -0
- package/dist/src/cli/prompt.js +58 -0
- package/dist/src/cli/prompt.js.map +1 -0
- package/dist/src/generators/app/from.d.ts +86 -0
- package/dist/src/generators/app/from.js +757 -0
- package/dist/src/generators/app/from.js.map +1 -0
- package/dist/src/generators/app/generator.js +21 -8
- package/dist/src/generators/app/generator.js.map +1 -1
- package/dist/src/generators/app/schema.d.ts +6 -0
- package/dist/src/generators/app/schema.json +19 -2
- package/dist/src/lib/env/empty.d.ts +16 -0
- package/dist/src/lib/env/empty.js +81 -0
- package/dist/src/lib/env/empty.js.map +1 -0
- package/dist/src/lib/env-encryption/env-file.d.ts +4 -0
- package/dist/src/lib/env-encryption/env-file.js +8 -2
- package/dist/src/lib/env-encryption/env-file.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ cd my-workspace
|
|
|
16
16
|
pstack app --type=angular --name=portal
|
|
17
17
|
pstack app --type=ionic --name=field-app --appId=com.acme.fieldapp
|
|
18
18
|
pstack app --type=flutter --name=mobile
|
|
19
|
+
pstack app --from=portal --name=partner-portal # a copy of portal, env values emptied
|
|
19
20
|
```
|
|
20
21
|
|
|
21
22
|
`pstack new` pins the plugin in the workspace. Inside a workspace, `pstack` hands commands to that
|
package/USER-MANUAL.md
CHANGED
|
@@ -143,7 +143,8 @@ OPTIONS — new / preset
|
|
|
143
143
|
--force new only — allow creating inside another Nx workspace
|
|
144
144
|
|
|
145
145
|
OPTIONS — update
|
|
146
|
-
--to=<version> Target version
|
|
146
|
+
--to=<version> Target version, also as "pstack update <version>"
|
|
147
|
+
(default: this CLI's version)
|
|
147
148
|
--allow-dirty Run with uncommitted changes
|
|
148
149
|
--force Allow downgrading
|
|
149
150
|
|
|
@@ -155,6 +156,8 @@ OPTIONS — app
|
|
|
155
156
|
--dir=<path> Put the app in apps/<path>/<name> (v0.17.0+)
|
|
156
157
|
--port=<n> Dev-server port (default: the lowest free port from 4200; v0.35.0+)
|
|
157
158
|
--env-layout=<layout> Angular/Ionic — default | per-env (v0.35.0+)
|
|
159
|
+
--from=<app> New app from an existing one; asks for the rest in a terminal (v1.2.0+)
|
|
160
|
+
--envs=<a,b> --csp=keep|clear --yes With --from (see section 5)
|
|
158
161
|
|
|
159
162
|
OPTIONS — shared (--app or --all required; v0.35.0+)
|
|
160
163
|
--app=<a,b> Angular/Ionic apps to wire the shared assets and styles into
|
|
@@ -263,13 +266,14 @@ pstack new <dir> [--npmScope=<scope>] [--baseBranch=<branch>] [--infra=…] [--c
|
|
|
263
266
|
## 3b. pstack update — upgrade a workspace
|
|
264
267
|
|
|
265
268
|
```bash
|
|
266
|
-
pstack update [--to=<version>] [--dry-run] [--allow-dirty] [--force]
|
|
269
|
+
pstack update [<version> | --to=<version>] [--dry-run] [--allow-dirty] [--force]
|
|
267
270
|
```
|
|
268
271
|
|
|
269
272
|
1. Reads the pinned version of `@mouryaamit/nx-polystack` from `package.json` (`1.2.0`, or the installed
|
|
270
273
|
version for a range such as `^1.2.0`). Any other spec (a git tag, a tarball, `latest`) uses the installed
|
|
271
274
|
version, and is rewritten to a normal pin.
|
|
272
|
-
2. Target is
|
|
275
|
+
2. Target is the version argument or `--to` (`pstack update 1.2.0` is `pstack update --to=1.2.0`), else the
|
|
276
|
+
global CLI's version. Downgrades need `--force`. If the global CLI is older than the
|
|
273
277
|
workspace pin, `update` tells you to upgrade the global CLI first (or pass `--force`).
|
|
274
278
|
3. Needs a clean git tree unless `--allow-dirty`. The check covers only the workspace folder.
|
|
275
279
|
4. Installs with `npm install @mouryaamit/nx-polystack@<to> --save-dev --save-exact` (`--save-prod` if the plugin
|
|
@@ -639,6 +643,53 @@ environments/<name>/
|
|
|
639
643
|
|
|
640
644
|
Web builds (`build-web`, `serve`) need Flutter 3.22 or later. Add icons under `web/` if you want them.
|
|
641
645
|
|
|
646
|
+
### A new app from an existing one (`--from`, v1.2.0)
|
|
647
|
+
|
|
648
|
+
```bash
|
|
649
|
+
pstack app --from=<app> [--name=<name>] [--dir=<path>] [--port=<n>] [--base-href=<path>|none]
|
|
650
|
+
[--app-id=<id>] [--envs=dev,uat,prod] [--csp=keep|clear] [--tags=a,b] [--yes] [--dry-run]
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
Duplicates an app pstack builds (Angular/Ionic with a release target, Flutter with flutter-build
|
|
654
|
+
targets) under a new name. In a terminal it asks for everything not given as a flag, with the base
|
|
655
|
+
app's values as defaults, shows a summary and asks to confirm; `--yes` (or a pipe, CI, or
|
|
656
|
+
`nx g @mouryaamit/nx-polystack:app --from=…`) takes the flags and defaults instead, and then
|
|
657
|
+
`--name` is required.
|
|
658
|
+
|
|
659
|
+
| Question | Default |
|
|
660
|
+
| ----------------------- | ----------------------------------------------- |
|
|
661
|
+
| New app name | — |
|
|
662
|
+
| Folder under apps/ | the base app's folder (`.` for apps/<name>) |
|
|
663
|
+
| Dev-server port | the lowest free port from 4200 |
|
|
664
|
+
| Base href (uat/prod) | `/<name>/` when the base app has one, else none |
|
|
665
|
+
| Capacitor appId (Ionic) | `com.example.<name>`; never the base app's |
|
|
666
|
+
| Environments to keep | all of the base app's (dev is always kept) |
|
|
667
|
+
| CSP allowlist | keep (`clear` starts from an empty one) |
|
|
668
|
+
| Tags | the base app's |
|
|
669
|
+
|
|
670
|
+
- **Copied:** the app folder (source, assets, tsconfig, ESLint, `csp-allowlist.json`, server configs)
|
|
671
|
+
and its `project.json` targets with every option (hardening included). Not copied: build output,
|
|
672
|
+
caches, `node_modules`, what the `.gitignore` files ignore, and possible secrets (`.env`,
|
|
673
|
+
keystores, `google-services.json`, …), which the report lists.
|
|
674
|
+
- **Renamed:** project name, paths and target references in `project.json` (relative paths follow a
|
|
675
|
+
different folder depth), `environments/<base>/` → `environments/<name>/`, the page title, the
|
|
676
|
+
Ionic `appId`/`appName`/package name, the Flutter `pubspec.yaml` name and `package:` imports,
|
|
677
|
+
the root npm scripts and the `tsconfig.base.json` alias of the app, and the listed encryption key
|
|
678
|
+
names in nx.json. `.htaccess`/`nginx.conf` written by `pstack csp` are written again.
|
|
679
|
+
- **Emptied:** every value in the kept env files, by type (`''`, `0`, `false`, `[]`, nested objects
|
|
680
|
+
the same way; `null` stays), including `production`, encrypted values and secret placeholders.
|
|
681
|
+
Values that are not literals become `''` and are listed. Keys, comments and the env layout stay.
|
|
682
|
+
- **Not copied from the release target:** the domain lock (`domains`, `includeWww`); the base href
|
|
683
|
+
and port are the new app's.
|
|
684
|
+
- Lines that still name the base app are listed (first 50) for review; nothing is guessed.
|
|
685
|
+
|
|
686
|
+
```bash
|
|
687
|
+
pstack app --from=web # asks
|
|
688
|
+
pstack app --from=web --name=partner-portal --envs=uat,prod --csp=clear --yes
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
Needs nx-polystack 1.2.0 in the workspace.
|
|
692
|
+
|
|
642
693
|
### Examples
|
|
643
694
|
|
|
644
695
|
```bash
|
|
@@ -1367,7 +1418,10 @@ npx nx g @mouryaamit/nx-polystack:infra --with=docs,ci --ci=jenkins
|
|
|
1367
1418
|
"name": "portal", // string — required
|
|
1368
1419
|
"type": "angular", // "angular" | "flutter" — required
|
|
1369
1420
|
"tags": ["platform:web"], // string[] — optional
|
|
1370
|
-
"cspConnectSrc": "https://..." // string — optional, angular only
|
|
1421
|
+
"cspConnectSrc": "https://...", // string — optional, angular only
|
|
1422
|
+
"from": "web", // string — optional: create the app from this app (v1.2.0)
|
|
1423
|
+
"envs": ["uat", "prod"], // with from — environments to keep (dev always kept)
|
|
1424
|
+
"csp": "keep" // with from — "keep" | "clear"
|
|
1371
1425
|
}
|
|
1372
1426
|
```
|
|
1373
1427
|
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.runAppFrom = void 0;
|
|
27
|
+
const tree_1 = require("nx/src/generators/tree");
|
|
28
|
+
const from_1 = require("../../generators/app/from");
|
|
29
|
+
const app_dir_1 = require("../../lib/utils/app-dir");
|
|
30
|
+
const base_href_1 = require("../../lib/utils/base-href");
|
|
31
|
+
const project_json_files_1 = require("../../lib/utils/project-json-files");
|
|
32
|
+
const serve_port_1 = require("../../lib/utils/serve-port");
|
|
33
|
+
const args_1 = require("../args");
|
|
34
|
+
const prompt_1 = require("../prompt");
|
|
35
|
+
const run_tree_1 = require("../run-tree");
|
|
36
|
+
const types_1 = require("../types");
|
|
37
|
+
const app_1 = require("./app");
|
|
38
|
+
/** Flags of `pstack app` that come from the base app with --from. */
|
|
39
|
+
const NOT_WITH_FROM = ['type', 'i18n', 'push', 'deeplink', 'envLayout', 'cspConnectSrc'];
|
|
40
|
+
const list = (v) => v
|
|
41
|
+
.split(',')
|
|
42
|
+
.map((s) => s.trim())
|
|
43
|
+
.filter(Boolean);
|
|
44
|
+
const kebab = (flag) => flag.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
|
|
45
|
+
function valueFlag(ctx, key, example) {
|
|
46
|
+
if (ctx.flags[key] === true)
|
|
47
|
+
throw new types_1.CliError(`--${kebab(key)} needs a value, e.g. ${example}.`);
|
|
48
|
+
return (0, args_1.flagString)(ctx.flags, key);
|
|
49
|
+
}
|
|
50
|
+
/** pstack app --from=<app>: a new app from an existing one (NX-66). */
|
|
51
|
+
async function runAppFrom(ctx, deps) {
|
|
52
|
+
const from = valueFlag(ctx, 'from', '--from=web');
|
|
53
|
+
if (!from)
|
|
54
|
+
throw new types_1.CliError('--from needs the name of an app, e.g. --from=web.');
|
|
55
|
+
for (const flag of NOT_WITH_FROM) {
|
|
56
|
+
if (ctx.flags[flag] !== undefined) {
|
|
57
|
+
throw new types_1.CliError(`--${kebab(flag)} does not apply with --from (the new app takes it from ${from}).`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Flags, checked before anything is read.
|
|
61
|
+
const given = {};
|
|
62
|
+
given.name = valueFlag(ctx, 'name', '--name=partner-portal');
|
|
63
|
+
const dir = valueFlag(ctx, 'dir', '--dir=legacy');
|
|
64
|
+
if (dir !== undefined)
|
|
65
|
+
given.dir = dir === '.' ? '.' : checked(() => (0, app_dir_1.parseDir)(dir, 'app'));
|
|
66
|
+
const port = valueFlag(ctx, 'port', '--port=4210');
|
|
67
|
+
if (port !== undefined) {
|
|
68
|
+
const n = /^\d+$/.test(port) ? Number(port) : NaN;
|
|
69
|
+
const problem = (0, serve_port_1.portProblem)(n);
|
|
70
|
+
if (problem)
|
|
71
|
+
throw new types_1.CliError(problem.replace(/\(got NaN\)/, `(got ${port})`) + '.');
|
|
72
|
+
given.port = n;
|
|
73
|
+
}
|
|
74
|
+
const href = valueFlag(ctx, 'baseHref', '--base-href=/portal/ or --base-href=none');
|
|
75
|
+
if (href !== undefined) {
|
|
76
|
+
given.baseHref = href === 'none' ? null : checked(() => (0, base_href_1.checkBaseHref)(href));
|
|
77
|
+
}
|
|
78
|
+
given.appId = valueFlag(ctx, 'appId', '--app-id=com.acme.portal');
|
|
79
|
+
const envs = valueFlag(ctx, 'envs', '--envs=dev,uat,prod');
|
|
80
|
+
if (envs !== undefined)
|
|
81
|
+
given.envs = list(envs);
|
|
82
|
+
const csp = valueFlag(ctx, 'csp', '--csp=keep');
|
|
83
|
+
if (csp !== undefined) {
|
|
84
|
+
if (csp !== 'keep' && csp !== 'clear')
|
|
85
|
+
throw new types_1.CliError('--csp must be keep or clear.');
|
|
86
|
+
given.csp = csp;
|
|
87
|
+
}
|
|
88
|
+
const tags = valueFlag(ctx, 'tags', '--tags=scope:partner');
|
|
89
|
+
if (tags !== undefined)
|
|
90
|
+
given.tags = list(tags);
|
|
91
|
+
const yes = (0, args_1.flagBoolean)(ctx.flags, 'yes') || (0, args_1.flagBoolean)(ctx.flags, 'y');
|
|
92
|
+
const root = (0, app_1.requireWorkspace)(ctx.cwd, 'app');
|
|
93
|
+
const tree = new tree_1.FsTree(root, false);
|
|
94
|
+
const base = checked(() => (0, from_1.describeBaseApp)(tree, from));
|
|
95
|
+
const interactive = deps.interactive ?? (!yes && (0, prompt_1.isInteractive)());
|
|
96
|
+
// Flag values the questions would not ask again are checked now, not after them.
|
|
97
|
+
if (given.name !== undefined && !app_dir_1.NAME_RE.test(given.name)) {
|
|
98
|
+
throw new types_1.CliError(`--name="${given.name}" must be kebab-case (e.g. partner-portal).`);
|
|
99
|
+
}
|
|
100
|
+
const unknownEnvs = (given.envs ?? []).filter((e) => !base.envs.includes(e));
|
|
101
|
+
if (unknownEnvs.length > 0) {
|
|
102
|
+
throw new types_1.CliError(`${base.name} has no environment ${unknownEnvs.join(', ')} (it has ${base.envs.join(', ')}).`);
|
|
103
|
+
}
|
|
104
|
+
let answers = given;
|
|
105
|
+
if (interactive) {
|
|
106
|
+
const prompter = deps.prompter ?? (0, prompt_1.terminalPrompter)();
|
|
107
|
+
try {
|
|
108
|
+
answers = await ask(tree, base, given, prompter);
|
|
109
|
+
summary(base, answers).forEach((l) => console.log(l));
|
|
110
|
+
const ok = await prompter.ask(`Create ${answers.name}? (Y/n)`, 'y');
|
|
111
|
+
if (!/^y(es)?$/i.test(ok)) {
|
|
112
|
+
console.log('Nothing was changed.');
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
prompter.close();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (!given.name) {
|
|
121
|
+
throw new types_1.CliError('--name is required with --from (or run pstack app --from in a terminal to be asked).\n\n' +
|
|
122
|
+
`Example: pstack app --from=${from} --name=partner-portal --yes`);
|
|
123
|
+
}
|
|
124
|
+
const { default: appGenerator } = await Promise.resolve().then(() => __importStar(require('../../generators/app/generator')));
|
|
125
|
+
await (0, run_tree_1.runInTree)(root, ctx, (t) => appGenerator(t, {
|
|
126
|
+
from,
|
|
127
|
+
name: answers.name,
|
|
128
|
+
type: base.type,
|
|
129
|
+
dir: answers.dir,
|
|
130
|
+
port: answers.port,
|
|
131
|
+
baseHref: answers.baseHref === null ? 'none' : answers.baseHref,
|
|
132
|
+
appId: answers.appId,
|
|
133
|
+
envs: answers.envs,
|
|
134
|
+
csp: answers.csp,
|
|
135
|
+
tags: answers.tags,
|
|
136
|
+
}));
|
|
137
|
+
return 0;
|
|
138
|
+
}
|
|
139
|
+
exports.runAppFrom = runAppFrom;
|
|
140
|
+
function checked(fn) {
|
|
141
|
+
try {
|
|
142
|
+
return fn();
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
throw new types_1.CliError(err.message.replace(/^app( --from)?: /, ''));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/** The questions for what was not given as a flag (base app values as defaults). */
|
|
149
|
+
async function ask(tree, base, given, p) {
|
|
150
|
+
const a = { ...given };
|
|
151
|
+
const projects = new Set((0, project_json_files_1.scanProjects)(tree).map((x) => x.name));
|
|
152
|
+
const folderProblem = (name, dir) => {
|
|
153
|
+
const r = (0, app_dir_1.appRoot)(name, dir === '.' ? undefined : dir);
|
|
154
|
+
return tree.exists(r) ? `${r} already exists` : undefined;
|
|
155
|
+
};
|
|
156
|
+
if (!a.name) {
|
|
157
|
+
a.name = await (0, prompt_1.askValid)(p, 'New app name', undefined, (v) => {
|
|
158
|
+
if (!app_dir_1.NAME_RE.test(v))
|
|
159
|
+
return 'kebab-case, e.g. partner-portal';
|
|
160
|
+
if (v === base.name || projects.has(v))
|
|
161
|
+
return `a project named ${v} already exists`;
|
|
162
|
+
return a.dir !== undefined ? folderProblem(v, a.dir) : undefined;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const name = a.name;
|
|
166
|
+
if (given.dir === undefined) {
|
|
167
|
+
const answer = await (0, prompt_1.askValid)(p, "Folder under apps/ ('.' for apps/<name>)", base.dir ?? '.', (v) => {
|
|
168
|
+
if (v === '.')
|
|
169
|
+
return folderProblem(name, undefined);
|
|
170
|
+
try {
|
|
171
|
+
(0, app_dir_1.parseDir)(v, 'app');
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
return err.message.replace(/^app: /, '');
|
|
175
|
+
}
|
|
176
|
+
return folderProblem(name, v);
|
|
177
|
+
});
|
|
178
|
+
a.dir = answer;
|
|
179
|
+
}
|
|
180
|
+
if (given.port === undefined) {
|
|
181
|
+
const used = (0, serve_port_1.usedServePorts)(tree);
|
|
182
|
+
const free = (0, serve_port_1.nextFreePort)(used.map((u) => u.port));
|
|
183
|
+
a.port = Number(await (0, prompt_1.askValid)(p, 'Dev-server port', String(free), (v) => {
|
|
184
|
+
const n = /^\d+$/.test(v) ? Number(v) : NaN;
|
|
185
|
+
const problem = (0, serve_port_1.portProblem)(n);
|
|
186
|
+
if (problem)
|
|
187
|
+
return problem.replace(/^--port /, 'the port ');
|
|
188
|
+
const owner = used.find((u) => u.port === n);
|
|
189
|
+
return owner ? `port ${n} is used by ${owner.project}` : undefined;
|
|
190
|
+
}));
|
|
191
|
+
}
|
|
192
|
+
if (given.baseHref === undefined) {
|
|
193
|
+
const answer = await (0, prompt_1.askValid)(p, 'Base href of the release builds (none for none)', base.baseHref ? `/${name}/` : 'none', (v) => {
|
|
194
|
+
if (v === 'none')
|
|
195
|
+
return undefined;
|
|
196
|
+
try {
|
|
197
|
+
(0, base_href_1.checkBaseHref)(v);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
return err.message;
|
|
201
|
+
}
|
|
202
|
+
return undefined;
|
|
203
|
+
});
|
|
204
|
+
a.baseHref = answer === 'none' ? null : answer;
|
|
205
|
+
}
|
|
206
|
+
if (base.type === 'ionic' && given.appId === undefined) {
|
|
207
|
+
a.appId = await (0, prompt_1.askValid)(p, 'Capacitor appId', (0, from_1.defaultAppId)(name), (v) => {
|
|
208
|
+
if (!from_1.APP_ID_RE.test(v))
|
|
209
|
+
return 'reverse-DNS, e.g. com.acme.portal';
|
|
210
|
+
return v === base.appId ? `that is ${base.name}'s appId; pick another` : undefined;
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
if (given.envs === undefined && base.envs.length > 1) {
|
|
214
|
+
const answer = await (0, prompt_1.askValid)(p, `Environments to keep (${base.devEnv} is always kept)`, base.envs.join(','), (v) => {
|
|
215
|
+
const unknown = list(v).filter((e) => !base.envs.includes(e));
|
|
216
|
+
return unknown.length > 0
|
|
217
|
+
? `${base.name} has no ${unknown.join(', ')} (it has ${base.envs.join(', ')})`
|
|
218
|
+
: undefined;
|
|
219
|
+
});
|
|
220
|
+
a.envs = list(answer);
|
|
221
|
+
}
|
|
222
|
+
if (base.type !== 'flutter' && given.csp === undefined) {
|
|
223
|
+
const answer = await (0, prompt_1.askValid)(p, 'CSP allowlist: keep or clear', 'keep', (v) => v === 'keep' || v === 'clear' ? undefined : 'keep or clear');
|
|
224
|
+
a.csp = answer;
|
|
225
|
+
}
|
|
226
|
+
if (given.tags === undefined) {
|
|
227
|
+
a.tags = list(await p.ask('Tags (comma-separated)', base.tags.join(',')));
|
|
228
|
+
}
|
|
229
|
+
return a;
|
|
230
|
+
}
|
|
231
|
+
function summary(base, a) {
|
|
232
|
+
const envs = a.envs
|
|
233
|
+
? base.envs.filter((e) => e === base.devEnv || a.envs?.includes(e))
|
|
234
|
+
: base.envs;
|
|
235
|
+
return [
|
|
236
|
+
'',
|
|
237
|
+
`${a.name} from ${base.name} (${base.type}):`,
|
|
238
|
+
` folder ${(0, app_dir_1.appRoot)(a.name, a.dir === '.' ? undefined : a.dir ?? base.dir)}`,
|
|
239
|
+
` port ${a.port ?? 'next free'}`,
|
|
240
|
+
` base href ${a.baseHref ?? 'none'}`,
|
|
241
|
+
...(base.type === 'ionic' ? [` appId ${a.appId}`] : []),
|
|
242
|
+
` envs ${envs.join(', ')} (every value emptied)`,
|
|
243
|
+
...(base.type !== 'flutter' ? [` CSP ${a.csp ?? 'keep'}`] : []),
|
|
244
|
+
` tags ${(a.tags ?? base.tags).join(', ') || 'none'}`,
|
|
245
|
+
'',
|
|
246
|
+
];
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=app-from.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-from.js","sourceRoot":"","sources":["../../../../src/cli/commands/app-from.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import { Prompter } from '../prompt';
|
|
1
2
|
import { CommandContext } from '../types';
|
|
3
|
+
export interface AppDeps {
|
|
4
|
+
/** Answers the --from questions (default: the terminal). */
|
|
5
|
+
prompter?: Prompter;
|
|
6
|
+
/** Ask the --from questions (default: when stdin/stdout are a terminal and --yes is not set). */
|
|
7
|
+
interactive?: boolean;
|
|
8
|
+
}
|
|
2
9
|
export declare function requireWorkspace(cwd: string, command: string): string;
|
|
3
|
-
export declare function runApp(ctx: CommandContext): Promise<number>;
|
|
10
|
+
export declare function runApp(ctx: CommandContext, deps?: AppDeps): Promise<number>;
|
|
@@ -38,7 +38,11 @@ function requireWorkspace(cwd, command) {
|
|
|
38
38
|
return root;
|
|
39
39
|
}
|
|
40
40
|
exports.requireWorkspace = requireWorkspace;
|
|
41
|
-
async function runApp(ctx) {
|
|
41
|
+
async function runApp(ctx, deps = {}) {
|
|
42
|
+
if (ctx.flags['from'] !== undefined) {
|
|
43
|
+
const { runAppFrom } = await Promise.resolve().then(() => __importStar(require('./app-from')));
|
|
44
|
+
return runAppFrom(ctx, deps);
|
|
45
|
+
}
|
|
42
46
|
const name = (0, args_1.flagString)(ctx.flags, 'name');
|
|
43
47
|
const type = (0, args_1.flagString)(ctx.flags, 'type');
|
|
44
48
|
if (!name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/cli/commands/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAmD;AACnD,kCAAqC;AACrC,wCAA+C;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/cli/commands/app.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAmD;AACnD,kCAAqC;AACrC,wCAA+C;AAE/C,0CAAwC;AACxC,oCAAoD;AASpD,SAAgB,gBAAgB,CAAC,GAAW,EAAE,OAAe;IAC3D,MAAM,IAAI,GAAG,IAAA,2BAAiB,EAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,gBAAQ,CAChB,qDAAqD;YACnD,eAAe,OAAO,kEAAkE,CAC3F,CAAC;KACH;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AATD,4CASC;AAEM,KAAK,UAAU,MAAM,CAAC,GAAmB,EAAE,OAAgB,EAAE;IAClE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE;QACnC,MAAM,EAAE,UAAU,EAAE,GAAG,wDAAa,YAAY,GAAC,CAAC;QAClD,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAC9B;IACD,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,gBAAQ,CAAC,yEAAyE,CAAC,CAAC;KAC/F;IACD,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,gBAAQ,CAChB,qGAAqG,CACtG,CAAC;KACH;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;QAC7B,MAAM,IAAI,gBAAQ,CAAC,qEAAqE,CAAC,CAAC;KAC3F;IACD,MAAM,GAAG,GAAG,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI;QACF,IAAA,kBAAQ,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;KACtB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,gBAAQ,CAAE,GAAa,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KAClE;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;QAClC,MAAM,IAAI,gBAAQ,CAAC,uDAAuD,CAAC,CAAC;KAC7E;IACD,MAAM,QAAQ,GAAG,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,2BAA2B,GAAC,CAAC;QACpE,IAAI;YACF,aAAa,CAAC,QAAQ,CAAC,CAAC;SACzB;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,gBAAQ,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;SAC5C;KACF;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,gBAAQ,CAAC,yCAAyC,CAAC,CAAC;IAC9F,IAAI,IAAwB,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,MAAM,EAAE,WAAW,EAAE,GAAG,wDAAa,4BAA4B,GAAC,CAAC;QACnE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACvD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,OAAO;YAAE,MAAM,IAAI,gBAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;KAC5F;IACD,MAAM,SAAS,GAAG,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACrD,IACE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,IAAI;QAC/B,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EACxE;QACA,MAAM,IAAI,gBAAQ,CAAC,0CAA0C,CAAC,CAAC;KAChE;IACD,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE;QACjD,MAAM,IAAI,gBAAQ,CAAC,2EAA2E,CAAC,CAAC;KACjG;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,wDAAa,gCAAgC,GAAC,CAAC;IACjF,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAClC,YAAY,CAAC,IAAI,EAAE;QACjB,IAAI;QACJ,IAAI,EAAE,IAAuC;QAC7C,GAAG;QACH,IAAI,EAAE,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;QAC/C,aAAa,EAAE,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC;QACrD,KAAK,EAAE,IAAA,iBAAU,EAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;QACrC,QAAQ;QACR,IAAI;QACJ,SAAS,EAAE,SAA8C;KAC1D,CAAC,CACH,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAvED,wBAuEC"}
|
|
@@ -8,4 +8,9 @@ export interface UpdateDeps {
|
|
|
8
8
|
}
|
|
9
9
|
/** Arguments for the child `_migrate` process. */
|
|
10
10
|
export declare function migrateArgs(from: string, to: string, verbose?: boolean): string[];
|
|
11
|
+
/**
|
|
12
|
+
* The target version asked for: `pstack update 1.2.0` or `--to=1.2.0` (both may be given if they
|
|
13
|
+
* agree), or undefined for the global CLI's own version.
|
|
14
|
+
*/
|
|
15
|
+
export declare function requestedVersion(positionals: string[], toFlag: string | undefined): string | undefined;
|
|
11
16
|
export declare function runUpdate(ctx: CommandContext, deps?: UpdateDeps): Promise<number>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runUpdate = exports.migrateArgs = void 0;
|
|
3
|
+
exports.runUpdate = exports.requestedVersion = exports.migrateArgs = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const fs = tslib_1.__importStar(require("fs"));
|
|
6
6
|
const path = tslib_1.__importStar(require("path"));
|
|
@@ -17,6 +17,24 @@ function migrateArgs(from, to, verbose = false) {
|
|
|
17
17
|
return ['_migrate', `--from=${from}`, `--to=${to}`, ...(verbose ? ['--verbose'] : [])];
|
|
18
18
|
}
|
|
19
19
|
exports.migrateArgs = migrateArgs;
|
|
20
|
+
/**
|
|
21
|
+
* The target version asked for: `pstack update 1.2.0` or `--to=1.2.0` (both may be given if they
|
|
22
|
+
* agree), or undefined for the global CLI's own version.
|
|
23
|
+
*/
|
|
24
|
+
function requestedVersion(positionals, toFlag) {
|
|
25
|
+
if (positionals.length > 1) {
|
|
26
|
+
throw new types_1.CliError(`pstack update takes one version, got: ${positionals.join(' ')}`);
|
|
27
|
+
}
|
|
28
|
+
const arg = positionals[0];
|
|
29
|
+
if (arg === undefined)
|
|
30
|
+
return toFlag;
|
|
31
|
+
const version = (0, versions_1.normalizeVersion)(arg);
|
|
32
|
+
if (toFlag !== undefined && (0, versions_1.normalizeVersion)(toFlag) !== version) {
|
|
33
|
+
throw new types_1.CliError(`"${arg}" and --to=${toFlag} name different versions; give one.`);
|
|
34
|
+
}
|
|
35
|
+
return version;
|
|
36
|
+
}
|
|
37
|
+
exports.requestedVersion = requestedVersion;
|
|
20
38
|
const defaultDeps = {
|
|
21
39
|
exec: exec_1.execOrThrow,
|
|
22
40
|
gitStatus: exec_1.gitStatus,
|
|
@@ -34,6 +52,7 @@ async function runUpdate(ctx, deps = defaultDeps) {
|
|
|
34
52
|
if (ctx.flags['to'] === true) {
|
|
35
53
|
throw new types_1.CliError('--to requires a version, e.g. --to=0.3.0');
|
|
36
54
|
}
|
|
55
|
+
const toVersion = requestedVersion(ctx.positionals, (0, args_1.flagString)(ctx.flags, 'to'));
|
|
37
56
|
const pkgText = fs.readFileSync(pkgPath, 'utf8');
|
|
38
57
|
const installedVersion = (0, context_1.resolveLocalPlugin)(root)?.version;
|
|
39
58
|
const pin = (0, update_plan_1.findPluginPin)(JSON.parse(pkgText.replace(/^\uFEFF/, '')), ctx.selfVersion, installedVersion);
|
|
@@ -49,7 +68,7 @@ async function runUpdate(ctx, deps = defaultDeps) {
|
|
|
49
68
|
pin.version = installed;
|
|
50
69
|
}
|
|
51
70
|
}
|
|
52
|
-
const target = (0, update_plan_1.resolveTarget)(pin.version,
|
|
71
|
+
const target = (0, update_plan_1.resolveTarget)(pin.version, toVersion, ctx.selfVersion, !!ctx.flags['force']);
|
|
53
72
|
// An unreadable pin on the current version is still rewritten to a normal pin.
|
|
54
73
|
if (target.action === 'noop' && !pin.fromInstalled) {
|
|
55
74
|
console.log(`Already on nx-polystack v${target.to}.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AACzB,mDAA6B;AAE7B,kCAAqC;AACrC,wCAAmE;AACnE,kCAAiD;AACjD,sDAAkD;AAClD,0CAAuC;AACvC,oCAAoD;AACpD,gDAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli/help.js
CHANGED
|
@@ -59,7 +59,8 @@ OPTIONS — new / preset
|
|
|
59
59
|
--force new only — allow creating inside another Nx workspace
|
|
60
60
|
|
|
61
61
|
OPTIONS — update
|
|
62
|
-
--to=<version> Target version
|
|
62
|
+
--to=<version> Target version, also as "pstack update <version>"
|
|
63
|
+
(default: this CLI's version)
|
|
63
64
|
--allow-dirty Run with uncommitted changes
|
|
64
65
|
--force Allow downgrading
|
|
65
66
|
|
|
@@ -74,6 +75,13 @@ OPTIONS — app
|
|
|
74
75
|
--port=<n> Dev-server port (default: the lowest free port from 4200)
|
|
75
76
|
--env-layout=<layout> Angular/Ionic — default (environment.ts for dev) | per-env
|
|
76
77
|
(environment.dev|uat|prod.ts replacing environments/environment.ts)
|
|
78
|
+
--from=<app> Create the app from an existing one: copy, rename, every env value
|
|
79
|
+
emptied; asks for name, folder, port, base href, appId, envs, CSP
|
|
80
|
+
and tags in a terminal (v1.2.0+)
|
|
81
|
+
--envs=<a,b> With --from: environments to keep (dev is always kept)
|
|
82
|
+
--csp=keep|clear With --from: the base app's CSP allowlist
|
|
83
|
+
--base-href=none With --from: no base href
|
|
84
|
+
--yes With --from: no questions (flags and defaults)
|
|
77
85
|
|
|
78
86
|
OPTIONS — shared (--app or --all required)
|
|
79
87
|
--app=<a,b> Angular/Ionic apps to wire
|
|
@@ -277,6 +285,8 @@ EXAMPLES
|
|
|
277
285
|
pstack release --app=portal --base-href=/portal/
|
|
278
286
|
pstack app --type=angular --name=portal --base-href=/portal/
|
|
279
287
|
pstack app --type=angular --name=admin --port=4300 --env-layout=per-env
|
|
288
|
+
pstack app --from=web
|
|
289
|
+
pstack app --from=web --name=partner-portal --envs=uat,prod --yes
|
|
280
290
|
pstack shared --all
|
|
281
291
|
nx run portal:clean
|
|
282
292
|
pstack csp --app=portal --add=connect-src:https://api.example.com
|
|
@@ -284,7 +294,7 @@ EXAMPLES
|
|
|
284
294
|
pstack hardening --app=portal
|
|
285
295
|
pstack hardening --app=portal --configuration=uat --obfuscate=light --sri
|
|
286
296
|
pstack update
|
|
287
|
-
pstack update
|
|
297
|
+
pstack update 0.3.0 --dry-run
|
|
288
298
|
`.trimStart();
|
|
289
299
|
}
|
|
290
300
|
exports.helpText = helpText;
|
package/dist/src/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AACjD,yCAAkD;AAElD,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO;yCACgC,OAAO
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AACjD,yCAAkD;AAElD,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO;yCACgC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAmP5C,IAAA,8BAAa,GAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,EAC5F;IACE,IAAA,+BAAoB,EAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ChC,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AAvSD,4BAuSC"}
|
package/dist/src/cli/launcher.js
CHANGED
|
@@ -39,7 +39,13 @@ exports.MIN_LOCAL_VERSION = {
|
|
|
39
39
|
};
|
|
40
40
|
/** First plugin version that understands a flag of a command (checked when the flag is given). */
|
|
41
41
|
exports.MIN_LOCAL_FLAG_VERSION = {
|
|
42
|
-
app: {
|
|
42
|
+
app: {
|
|
43
|
+
dir: '0.17.0',
|
|
44
|
+
baseHref: '0.32.0',
|
|
45
|
+
port: '0.35.0',
|
|
46
|
+
envLayout: '0.35.0',
|
|
47
|
+
from: '1.2.0',
|
|
48
|
+
},
|
|
43
49
|
env: { app: '0.34.0', all: '0.34.0', from: '0.34.0', baseHref: '0.34.0', domains: '0.34.0' },
|
|
44
50
|
lib: { dir: '0.19.0' },
|
|
45
51
|
csp: { import: '0.38.0' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../../src/cli/launcher.ts"],"names":[],"mappings":";;;;AAAA,iDAA0C;AAC1C,+CAAyB;AACzB,mDAA6B;AAI7B,mCAAmC;AACnC,yCAA6C;AAE7C,kDAAkD;AACrC,QAAA,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAEjF,uFAAuF;AAC1E,QAAA,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACxC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,SAAS;IACT,OAAO;IACP,YAAY;IACZ,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,QAAQ;CACT,CAAC,CAAC;AAEH,4FAA4F;AAC/E,QAAA,iBAAiB,GAAqC;IACjE,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,QAAQ;IACb,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,kGAAkG;AACrF,QAAA,sBAAsB,GAA+D;IAChG,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../../src/cli/launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Asks one question at a time; tests pass their own answers. */
|
|
2
|
+
export interface Prompter {
|
|
3
|
+
/** The answer, trimmed; the default when the answer is empty. */
|
|
4
|
+
ask(question: string, defaultValue?: string): Promise<string>;
|
|
5
|
+
close(): void;
|
|
6
|
+
}
|
|
7
|
+
/** Questions are asked only when both ends are a terminal. */
|
|
8
|
+
export declare function isInteractive(): boolean;
|
|
9
|
+
/** A prompter on stdin/stdout (Node readline; no extra dependency). */
|
|
10
|
+
export declare function terminalPrompter(): Prompter;
|
|
11
|
+
/** A prompter answering from a list (tests); throws when it runs out. */
|
|
12
|
+
export declare function scriptedPrompter(answers: string[], asked?: string[]): Prompter;
|
|
13
|
+
/**
|
|
14
|
+
* Asks until `check` accepts the answer (it returns the problem, or undefined); gives up after
|
|
15
|
+
* three tries.
|
|
16
|
+
*/
|
|
17
|
+
export declare function askValid(p: Prompter, question: string, defaultValue: string | undefined, check: (answer: string) => string | undefined, say?: (line: string) => void): Promise<string>;
|