@ethlete/cli 3.0.0-next.18 → 3.0.0-next.20
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/CHANGELOG.md +46 -0
- package/design/css-inline.d.ts +4 -0
- package/design/define-call.ts +232 -3
- package/design/web/env.d.ts +2 -1
- package/design/web/frame.ts +51 -6
- package/package.json +27 -3
- package/src/index.js +26 -4
- package/src/index.js.map +1 -1
- package/src/lib/api/clear.js +10 -2
- package/src/lib/api/clear.js.map +1 -1
- package/src/lib/api/index.js +33 -20
- package/src/lib/api/index.js.map +1 -1
- package/src/lib/api/lock.js +11 -3
- package/src/lib/api/lock.js.map +1 -1
- package/src/lib/api/ports.js +12 -4
- package/src/lib/api/ports.js.map +1 -1
- package/src/lib/api/run-locked.js +10 -2
- package/src/lib/api/run-locked.js.map +1 -1
- package/src/lib/api/run-ready.js +12 -4
- package/src/lib/api/run-ready.js.map +1 -1
- package/src/lib/api/run-snapshot.js +10 -2
- package/src/lib/api/run-snapshot.js.map +1 -1
- package/src/lib/api/run.js +13 -5
- package/src/lib/api/run.js.map +1 -1
- package/src/lib/api/snapshot.js +13 -5
- package/src/lib/api/snapshot.js.map +1 -1
- package/src/lib/auth/auth-command.js +10 -2
- package/src/lib/auth/auth-command.js.map +1 -1
- package/src/lib/auth/gitlab-token.js +12 -4
- package/src/lib/auth/gitlab-token.js.map +1 -1
- package/src/lib/auth/index.js +18 -5
- package/src/lib/auth/index.js.map +1 -1
- package/src/lib/config/index.js +16 -3
- package/src/lib/config/index.js.map +1 -1
- package/src/lib/design/browser.d.ts +9 -0
- package/src/lib/design/browser.js +37 -0
- package/src/lib/design/browser.js.map +1 -0
- package/src/lib/design/calls-tsconfig.js +6 -2
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/check.d.ts +2 -1
- package/src/lib/design/check.js +151 -69
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/design-command.d.ts +1 -1
- package/src/lib/design/design-command.js +60 -3
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/index.js +19 -6
- package/src/lib/design/index.js.map +1 -1
- package/src/lib/design/legacy.d.ts +11 -0
- package/src/lib/design/legacy.js +66 -0
- package/src/lib/design/legacy.js.map +1 -0
- package/src/lib/design/missing-package.d.ts +2 -0
- package/src/lib/design/missing-package.js +15 -0
- package/src/lib/design/missing-package.js.map +1 -0
- package/src/lib/design/new-call.d.ts +11 -0
- package/src/lib/design/new-call.js +129 -0
- package/src/lib/design/new-call.js.map +1 -0
- package/src/lib/design/paths.d.ts +23 -2
- package/src/lib/design/paths.js +1 -1
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/render-fields.d.ts +29 -0
- package/src/lib/design/render-fields.js +31 -0
- package/src/lib/design/render-fields.js.map +1 -0
- package/src/lib/design/render-packages.d.ts +87 -0
- package/src/lib/design/render-packages.js +232 -0
- package/src/lib/design/render-packages.js.map +1 -0
- package/src/lib/design/render-worker.d.ts +1 -0
- package/src/lib/design/render-worker.js +149 -0
- package/src/lib/design/render-worker.js.map +1 -0
- package/src/lib/design/render.d.ts +23 -0
- package/src/lib/design/render.js +119 -0
- package/src/lib/design/render.js.map +1 -0
- package/src/lib/design/serve.d.ts +1 -1
- package/src/lib/design/serve.js +49 -12
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/ssr-shims.d.ts +10 -0
- package/src/lib/design/ssr-shims.js +128 -0
- package/src/lib/design/ssr-shims.js.map +1 -0
- package/src/lib/design/stamp.d.ts +16 -0
- package/src/lib/design/stamp.js +77 -0
- package/src/lib/design/stamp.js.map +1 -0
- package/src/lib/design/status.d.ts +33 -0
- package/src/lib/design/status.js +58 -0
- package/src/lib/design/status.js.map +1 -0
- package/src/lib/design/system-use.d.ts +23 -0
- package/src/lib/design/system-use.js +61 -0
- package/src/lib/design/system-use.js.map +1 -0
- package/src/lib/doctor/index.js +15 -2
- package/src/lib/doctor/index.js.map +1 -1
- package/src/lib/index.js +22 -9
- package/src/lib/index.js.map +1 -1
- package/src/lib/release.js +10 -2
- package/src/lib/release.js.map +1 -1
- package/src/lib/update/agent-setup.js +11 -3
- package/src/lib/update/agent-setup.js.map +1 -1
- package/src/lib/update/ai.js +13 -5
- package/src/lib/update/ai.js.map +1 -1
- package/src/lib/update/index.js +32 -19
- package/src/lib/update/index.js.map +1 -1
- package/src/lib/update/registry.js +10 -2
- package/src/lib/update/registry.js.map +1 -1
- package/src/lib/update/update-command.js +16 -8
- package/src/lib/update/update-command.js.map +1 -1
- package/src/lib/utils.js +11 -3
- package/src/lib/utils.js.map +1 -1
- package/design/web/host.css +0 -494
- package/design/web/host.ts +0 -445
- package/design/web/index.html +0 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Starts the design
|
|
2
|
+
* Starts the design server for a checkout and keeps it running. The returned exit code is the
|
|
3
3
|
* command's, not the server's: a listening server holds the process open on its own.
|
|
4
4
|
*/
|
|
5
5
|
export declare const serveDesign: (options: {
|
package/src/lib/design/serve.js
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.serveDesign = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
13
|
const fs_1 = require("fs");
|
|
6
14
|
const path_1 = require("path");
|
|
7
15
|
const calls_tsconfig_1 = require("./calls-tsconfig");
|
|
8
16
|
const vite_paths_1 = require("./vite-paths");
|
|
17
|
+
const render_1 = require("./render");
|
|
18
|
+
const render_packages_1 = require("./render-packages");
|
|
19
|
+
const stamp_1 = require("./stamp");
|
|
9
20
|
const paths_1 = require("./paths");
|
|
10
21
|
const VIRTUAL = 'virtual:design-explore';
|
|
11
22
|
/** What a slug says about which project drew it: its first segment. */
|
|
12
23
|
const projectOf = (slug) => { var _a; return (_a = slug.split('/')[0]) !== null && _a !== void 0 ? _a : ''; };
|
|
13
|
-
const registry = (target
|
|
14
|
-
var _a;
|
|
24
|
+
const registry = (target) => {
|
|
15
25
|
const root = (0, paths_1.callsRootOf)(target);
|
|
16
26
|
const entries = (0, fs_1.globSync)('**/call.ts', { cwd: root })
|
|
17
27
|
.sort()
|
|
18
28
|
.map((file) => [(0, vite_paths_1.callSlugOf)(file), (0, vite_paths_1.fsUrl)((0, path_1.resolve)(root, file))]);
|
|
19
29
|
return `export const calls = {\n${entries
|
|
20
30
|
.map(([slug, url]) => ` ${JSON.stringify(slug)}: () => import(${JSON.stringify(url)}),`)
|
|
21
|
-
.join('\n')}\n};\
|
|
31
|
+
.join('\n')}\n};\n`;
|
|
22
32
|
};
|
|
23
33
|
/**
|
|
24
34
|
* Vite's own tsconfigPaths resolves against the tsconfig nearest the importing file, which is not
|
|
@@ -48,23 +58,41 @@ const workspaceAliases = (target) => {
|
|
|
48
58
|
* draw under whichever stylesheet came last.
|
|
49
59
|
*/
|
|
50
60
|
const env = (target, config) => {
|
|
51
|
-
var _a;
|
|
61
|
+
var _a, _b;
|
|
52
62
|
const loaders = Object.entries((_a = config.projects) !== null && _a !== void 0 ? _a : {}).map(([name, project]) => {
|
|
53
63
|
var _a;
|
|
54
64
|
return ` ${JSON.stringify(name)}: () => Promise.all([${((_a = project.styles) !== null && _a !== void 0 ? _a : [])
|
|
55
65
|
.map((style) => `import(${JSON.stringify((0, vite_paths_1.fsUrl)((0, path_1.resolve)(target, style)))})`)
|
|
56
66
|
.join(', ')}]),`;
|
|
57
67
|
});
|
|
68
|
+
const themes = Object.fromEntries(Object.entries((_b = config.projects) !== null && _b !== void 0 ? _b : {}).map(([name, project]) => {
|
|
69
|
+
var _a, _b, _c, _d;
|
|
70
|
+
return [
|
|
71
|
+
name,
|
|
72
|
+
{ surface: (_b = (_a = project.themes) === null || _a === void 0 ? void 0 : _a.surface) !== null && _b !== void 0 ? _b : [], color: (_d = (_c = project.themes) === null || _c === void 0 ? void 0 : _c.color) !== null && _d !== void 0 ? _d : [] },
|
|
73
|
+
];
|
|
74
|
+
}));
|
|
58
75
|
return (`const envs = {\n${loaders.join('\n')}\n};\n` +
|
|
59
|
-
`export const loadEnv = (project) => (envs[project] ?? (() => Promise.resolve()))();\n`
|
|
76
|
+
`export const loadEnv = (project) => (envs[project] ?? (() => Promise.resolve()))();\n` +
|
|
77
|
+
`const themes = ${JSON.stringify(themes)};\n` +
|
|
78
|
+
`export const themesOf = (project) => themes[project] ?? { surface: [], color: [] };\n`);
|
|
60
79
|
};
|
|
61
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* Serves the call registry and each project's global stylesheet to the frame page, and renders the
|
|
82
|
+
* Angular templates a drawing asks for with `ng()`.
|
|
83
|
+
*/
|
|
62
84
|
const designExplore = (target, config) => ({
|
|
63
85
|
name: 'design-explore',
|
|
64
|
-
|
|
86
|
+
enforce: 'pre',
|
|
87
|
+
resolveId: (id) => {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
if (id === VIRTUAL || id === `${VIRTUAL}/env`)
|
|
90
|
+
return `\0${id}`;
|
|
91
|
+
return (0, render_packages_1.mappedSubpathOf)({ specifier: id, packages: (_b = (_a = config.render) === null || _a === void 0 ? void 0 : _a.packages) !== null && _b !== void 0 ? _b : {}, target });
|
|
92
|
+
},
|
|
65
93
|
load: (id) => {
|
|
66
94
|
if (id === `\0${VIRTUAL}`)
|
|
67
|
-
return registry(target
|
|
95
|
+
return registry(target);
|
|
68
96
|
if (id === `\0${VIRTUAL}/env`)
|
|
69
97
|
return env(target, config);
|
|
70
98
|
return null;
|
|
@@ -85,6 +113,7 @@ const designExplore = (target, config) => ({
|
|
|
85
113
|
/** The registry is built once per load, so a new call folder is invisible until it is invalidated. */
|
|
86
114
|
configureServer: (vite) => {
|
|
87
115
|
const callsRoot = (0, paths_1.callsRootOf)(target);
|
|
116
|
+
const stamp = (0, stamp_1.buildStampOf)();
|
|
88
117
|
const refresh = (file) => {
|
|
89
118
|
if (!(0, vite_paths_1.isCallFile)({ callsRoot, file }))
|
|
90
119
|
return;
|
|
@@ -93,16 +122,21 @@ const designExplore = (target, config) => ({
|
|
|
93
122
|
vite.moduleGraph.invalidateModule(module);
|
|
94
123
|
vite.ws.send({ type: 'full-reload' });
|
|
95
124
|
};
|
|
125
|
+
vite.middlewares.use(stamp_1.STAMP_PATH, (_request, response) => {
|
|
126
|
+
response.setHeader('content-type', 'application/json');
|
|
127
|
+
response.end(JSON.stringify(stamp));
|
|
128
|
+
});
|
|
129
|
+
vite.middlewares.use(render_1.RENDER_PATH, (0, render_1.renderMiddleware)((0, render_1.createRenderer)({ target, config })));
|
|
96
130
|
vite.watcher.add(callsRoot);
|
|
97
131
|
vite.watcher.on('add', refresh);
|
|
98
132
|
vite.watcher.on('unlink', refresh);
|
|
99
133
|
},
|
|
100
134
|
});
|
|
101
135
|
/**
|
|
102
|
-
* Starts the design
|
|
136
|
+
* Starts the design server for a checkout and keeps it running. The returned exit code is the
|
|
103
137
|
* command's, not the server's: a listening server holds the process open on its own.
|
|
104
138
|
*/
|
|
105
|
-
const serveDesign = (options) =>
|
|
139
|
+
const serveDesign = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
106
140
|
const { target } = options;
|
|
107
141
|
const config = (0, paths_1.readConfig)(target);
|
|
108
142
|
if (!config) {
|
|
@@ -126,11 +160,14 @@ const serveDesign = (options) => tslib_1.__awaiter(void 0, void 0, void 0, funct
|
|
|
126
160
|
resolve: {
|
|
127
161
|
alias: [{ find: /^@design-explore$/, replacement: (0, path_1.resolve)(here, 'define-call.ts') }, ...workspaceAliases(target)],
|
|
128
162
|
},
|
|
163
|
+
// A design mock ships as TS that imports CSS with `?inline`, which the dependency pre-bundler
|
|
164
|
+
// can not load.
|
|
165
|
+
optimizeDeps: { exclude: ['@ethlete/components', '@ethlete/core'] },
|
|
129
166
|
plugins: [designExplore(target, config)],
|
|
130
167
|
server: {
|
|
131
168
|
port: (0, paths_1.portOf)(config),
|
|
132
169
|
strictPort: true,
|
|
133
|
-
// The
|
|
170
|
+
// The frame page lives inside this package, which is outside the checkout it draws. Vite
|
|
134
171
|
// serves neither root unless both are allowed.
|
|
135
172
|
fs: { allow: [target, here] },
|
|
136
173
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/serve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domino lowercases and hyphenates every property name its `CSSStyleDeclaration` parses or sets,
|
|
3
|
+
* so `--accentDeep` serialises as `--accentdeep`. Custom properties are case-sensitive; this
|
|
4
|
+
* makes the `style` of every element created from `elementProto` keep their case.
|
|
5
|
+
*/
|
|
6
|
+
export declare const keepCustomPropertyCase: (elementProto: object) => void;
|
|
7
|
+
/** Domino ships no `MutationObserver`; nothing mutates a server render after it is serialised, so one that never fires is exact. */
|
|
8
|
+
export declare const shimMutationObserver: (scope: {
|
|
9
|
+
MutationObserver?: unknown;
|
|
10
|
+
}) => void;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shimMutationObserver = exports.keepCustomPropertyCase = void 0;
|
|
4
|
+
const CUSTOM_PROPERTY_NAME = /(?:^|;)\s*(--[^:;\s]+)\s*:/g;
|
|
5
|
+
const IMPORTANT = /\s*!\s*important$/i;
|
|
6
|
+
const isCustom = (property) => property.startsWith('--');
|
|
7
|
+
const foldedName = (name) => name.replace(/[a-z][A-Z]/g, (pair) => `${pair[0]}-${pair[1]}`).toLowerCase();
|
|
8
|
+
const renameKeys = (record, names) => Object.fromEntries(Object.entries(record).map(([key, value]) => { var _a; return [(_a = names.get(key)) !== null && _a !== void 0 ? _a : key, value]; }));
|
|
9
|
+
const removeCustom = (style, property) => {
|
|
10
|
+
const styles = style._parsed;
|
|
11
|
+
if (!(property in styles.property))
|
|
12
|
+
return;
|
|
13
|
+
delete styles.property[property];
|
|
14
|
+
delete styles.priority[property];
|
|
15
|
+
style._serialize();
|
|
16
|
+
};
|
|
17
|
+
// Domino defines every CSSStyleDeclaration member non-configurable on its prototype, so the
|
|
18
|
+
// case-keeping members go on each instance instead.
|
|
19
|
+
const keepCaseOn = (style) => {
|
|
20
|
+
var _a;
|
|
21
|
+
const proto = Object.getPrototypeOf(style);
|
|
22
|
+
const descriptors = Object.getOwnPropertyDescriptors(proto);
|
|
23
|
+
const parsed = (_a = descriptors['_parsed']) === null || _a === void 0 ? void 0 : _a.get;
|
|
24
|
+
const method = (name) => { var _a; return (_a = descriptors[name]) === null || _a === void 0 ? void 0 : _a.value; };
|
|
25
|
+
if (!parsed || Object.getOwnPropertyDescriptor(style, '_parsed'))
|
|
26
|
+
return style;
|
|
27
|
+
const getPropertyValue = method('getPropertyValue');
|
|
28
|
+
const getPropertyPriority = method('getPropertyPriority');
|
|
29
|
+
const setProperty = method('setProperty');
|
|
30
|
+
const removeProperty = method('removeProperty');
|
|
31
|
+
Object.defineProperties(style, {
|
|
32
|
+
_parsed: {
|
|
33
|
+
configurable: true,
|
|
34
|
+
get() {
|
|
35
|
+
var _a, _b;
|
|
36
|
+
const styles = parsed.call(this);
|
|
37
|
+
const names = new Map();
|
|
38
|
+
for (const match of ((_a = this.cssText) !== null && _a !== void 0 ? _a : '').matchAll(CUSTOM_PROPERTY_NAME)) {
|
|
39
|
+
const name = (_b = match[1]) !== null && _b !== void 0 ? _b : '';
|
|
40
|
+
if (foldedName(name) !== name)
|
|
41
|
+
names.set(foldedName(name), name);
|
|
42
|
+
}
|
|
43
|
+
if ([...names.keys()].some((key) => key in styles.property)) {
|
|
44
|
+
styles.property = renameKeys(styles.property, names);
|
|
45
|
+
styles.priority = renameKeys(styles.priority, names);
|
|
46
|
+
}
|
|
47
|
+
return styles;
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
getPropertyValue: {
|
|
51
|
+
value(property) {
|
|
52
|
+
var _a;
|
|
53
|
+
return isCustom(property) ? ((_a = this._parsed.property[property]) !== null && _a !== void 0 ? _a : '') : getPropertyValue.call(this, property);
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
getPropertyPriority: {
|
|
57
|
+
value(property) {
|
|
58
|
+
var _a;
|
|
59
|
+
return isCustom(property) ? ((_a = this._parsed.priority[property]) !== null && _a !== void 0 ? _a : '') : getPropertyPriority.call(this, property);
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
setProperty: {
|
|
63
|
+
// eslint-disable-next-line max-params -- the arity of CSSStyleDeclaration.setProperty
|
|
64
|
+
value(property, value, priority) {
|
|
65
|
+
if (!isCustom(property))
|
|
66
|
+
return setProperty.call(this, property, value, priority);
|
|
67
|
+
const text = String(value !== null && value !== void 0 ? value : '').trim();
|
|
68
|
+
if (text === '')
|
|
69
|
+
return removeCustom(this, property);
|
|
70
|
+
if (priority && !/^important$/i.test(priority))
|
|
71
|
+
return undefined;
|
|
72
|
+
const styles = this._parsed;
|
|
73
|
+
styles.property[property] = text.replace(IMPORTANT, '');
|
|
74
|
+
if (priority || IMPORTANT.test(text))
|
|
75
|
+
styles.priority[property] = 'important';
|
|
76
|
+
else
|
|
77
|
+
delete styles.priority[property];
|
|
78
|
+
this._serialize();
|
|
79
|
+
return undefined;
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
removeProperty: {
|
|
83
|
+
value(property) {
|
|
84
|
+
return isCustom(property) ? removeCustom(this, property) : removeProperty.call(this, property);
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
return style;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Domino lowercases and hyphenates every property name its `CSSStyleDeclaration` parses or sets,
|
|
92
|
+
* so `--accentDeep` serialises as `--accentdeep`. Custom properties are case-sensitive; this
|
|
93
|
+
* makes the `style` of every element created from `elementProto` keep their case.
|
|
94
|
+
*/
|
|
95
|
+
const keepCustomPropertyCase = (elementProto) => {
|
|
96
|
+
if (Object.getOwnPropertyDescriptor(elementProto, '_style'))
|
|
97
|
+
return;
|
|
98
|
+
const styles = new WeakMap();
|
|
99
|
+
// Domino caches each element's declaration in `this._style`; an accessor here sees it created.
|
|
100
|
+
Object.defineProperty(elementProto, '_style', {
|
|
101
|
+
configurable: true,
|
|
102
|
+
get() {
|
|
103
|
+
return styles.get(this);
|
|
104
|
+
},
|
|
105
|
+
set(style) {
|
|
106
|
+
styles.set(this, keepCaseOn(style));
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
exports.keepCustomPropertyCase = keepCustomPropertyCase;
|
|
111
|
+
class NoopMutationObserver {
|
|
112
|
+
observe() {
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
disconnect() {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
takeRecords() {
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Domino ships no `MutationObserver`; nothing mutates a server render after it is serialised, so one that never fires is exact. */
|
|
123
|
+
const shimMutationObserver = (scope) => {
|
|
124
|
+
var _a;
|
|
125
|
+
(_a = scope.MutationObserver) !== null && _a !== void 0 ? _a : (scope.MutationObserver = NoopMutationObserver);
|
|
126
|
+
};
|
|
127
|
+
exports.shimMutationObserver = shimMutationObserver;
|
|
128
|
+
//# sourceMappingURL=ssr-shims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr-shims.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/ssr-shims.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const STAMP_PATH = "/__design/stamp";
|
|
2
|
+
/** What a design server was started from: the cli version and a hash of its code and frame assets. */
|
|
3
|
+
export type BuildStamp = {
|
|
4
|
+
version: string;
|
|
5
|
+
build: string;
|
|
6
|
+
};
|
|
7
|
+
/** The stamp of the cli on disk now. A server takes it once at start, so a reinstall moves the two apart. */
|
|
8
|
+
export declare const buildStampOf: () => BuildStamp;
|
|
9
|
+
/**
|
|
10
|
+
* Why the server at `base` cannot be checked against: unreachable, or started from a different
|
|
11
|
+
* cli than this one. Null when it is the same build.
|
|
12
|
+
*/
|
|
13
|
+
export declare const serverProblemOf: (options: {
|
|
14
|
+
base: string;
|
|
15
|
+
own: BuildStamp;
|
|
16
|
+
}) => Promise<string | null>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.serverProblemOf = exports.buildStampOf = exports.STAMP_PATH = void 0;
|
|
13
|
+
const crypto_1 = require("crypto");
|
|
14
|
+
const fs_1 = require("fs");
|
|
15
|
+
const path_1 = require("path");
|
|
16
|
+
const paths_1 = require("./paths");
|
|
17
|
+
exports.STAMP_PATH = '/__design/stamp';
|
|
18
|
+
const filesUnder = (dir) => (0, fs_1.readdirSync)(dir, { recursive: true })
|
|
19
|
+
.filter((file) => (0, fs_1.statSync)((0, path_1.join)(dir, file)).isFile())
|
|
20
|
+
.sort()
|
|
21
|
+
.map((file) => ({ name: file, path: (0, path_1.join)(dir, file) }));
|
|
22
|
+
/** The stamp of the cli on disk now. A server takes it once at start, so a reinstall moves the two apart. */
|
|
23
|
+
const buildStampOf = () => {
|
|
24
|
+
var _a;
|
|
25
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
26
|
+
for (const dir of [__dirname, (0, paths_1.assetRoot)()]) {
|
|
27
|
+
for (const file of filesUnder(dir))
|
|
28
|
+
hash.update(file.name).update((0, fs_1.readFileSync)(file.path));
|
|
29
|
+
}
|
|
30
|
+
const manifest = JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, '../../../package.json'), 'utf8'));
|
|
31
|
+
return { version: (_a = manifest.version) !== null && _a !== void 0 ? _a : 'unknown', build: hash.digest('hex').slice(0, 12) };
|
|
32
|
+
};
|
|
33
|
+
exports.buildStampOf = buildStampOf;
|
|
34
|
+
const isStamp = (value) => typeof (value === null || value === void 0 ? void 0 : value.version) === 'string' && typeof (value === null || value === void 0 ? void 0 : value.build) === 'string';
|
|
35
|
+
/**
|
|
36
|
+
* Node connects `localhost` to 127.0.0.1 alone, while Vite may listen on ::1 alone, so a local
|
|
37
|
+
* base is also tried at each loopback address.
|
|
38
|
+
*/
|
|
39
|
+
const stampUrlsOf = (base) => {
|
|
40
|
+
const url = new URL(exports.STAMP_PATH, base);
|
|
41
|
+
if (url.hostname !== 'localhost')
|
|
42
|
+
return [url.href];
|
|
43
|
+
return ['localhost', '127.0.0.1', '[::1]'].map((hostname) => Object.assign(new URL(url), { hostname }).href);
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Why the server at `base` cannot be checked against: unreachable, or started from a different
|
|
47
|
+
* cli than this one. Null when it is the same build.
|
|
48
|
+
*/
|
|
49
|
+
const serverProblemOf = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
+
var _a;
|
|
51
|
+
const { base, own } = options;
|
|
52
|
+
let response = null;
|
|
53
|
+
let failure = null;
|
|
54
|
+
for (const url of stampUrlsOf(base)) {
|
|
55
|
+
try {
|
|
56
|
+
response = yield fetch(url);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
failure !== null && failure !== void 0 ? failure : (failure = error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!response) {
|
|
64
|
+
const reason = String((_a = failure === null || failure === void 0 ? void 0 : failure.cause) !== null && _a !== void 0 ? _a : failure);
|
|
65
|
+
return `NO SERVER - nothing answers at ${base} (${reason}). Start it with \`et design\`.`;
|
|
66
|
+
}
|
|
67
|
+
const served = yield response.json().catch(() => null);
|
|
68
|
+
if (!isStamp(served)) {
|
|
69
|
+
return `STALE SERVER - the server at ${base} predates this cli and reports no build stamp. Restart it.`;
|
|
70
|
+
}
|
|
71
|
+
if (served.version === own.version && served.build === own.build)
|
|
72
|
+
return null;
|
|
73
|
+
return (`STALE SERVER - the server at ${base} runs @ethlete/cli ${served.version} (build ${served.build}), ` +
|
|
74
|
+
`this check ${own.version} (build ${own.build}). Restart it.`);
|
|
75
|
+
});
|
|
76
|
+
exports.serverProblemOf = serverProblemOf;
|
|
77
|
+
//# sourceMappingURL=stamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stamp.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/stamp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const CALL_STATES: readonly ["scaffolded", "drawing", "checking", "ready", "failed"];
|
|
2
|
+
export type CallState = (typeof CALL_STATES)[number];
|
|
3
|
+
export type CallStatus = {
|
|
4
|
+
state: CallState;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Where the state of one call is kept: next to Ethlete Studio's check receipts, named by the same
|
|
10
|
+
* scheme as `status_path` in `apps/ethlete-studio/src-tauri/src/call_status.rs`. Both sides must agree.
|
|
11
|
+
*/
|
|
12
|
+
export declare const statusPath: (options: {
|
|
13
|
+
checkout: string;
|
|
14
|
+
slug: string;
|
|
15
|
+
}) => string;
|
|
16
|
+
/** Records the state a call is in, for Ethlete Studio to show. */
|
|
17
|
+
export declare const writeStatus: (options: {
|
|
18
|
+
checkout: string;
|
|
19
|
+
slug: string;
|
|
20
|
+
state: CallState;
|
|
21
|
+
message?: string;
|
|
22
|
+
}) => void;
|
|
23
|
+
/** Remembers a call's status as it is now, and answers with the function that puts it back. */
|
|
24
|
+
export declare const holdStatus: (options: {
|
|
25
|
+
checkout: string;
|
|
26
|
+
slug: string;
|
|
27
|
+
}) => () => void;
|
|
28
|
+
/** `et design status <slug> <state>` records the state of a call by hand. */
|
|
29
|
+
export declare const designStatus: (options: {
|
|
30
|
+
target: string;
|
|
31
|
+
argv: string[];
|
|
32
|
+
invocation: string;
|
|
33
|
+
}) => 0 | 1 | 2;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.designStatus = exports.holdStatus = exports.writeStatus = exports.statusPath = exports.CALL_STATES = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const os_1 = require("os");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const paths_1 = require("./paths");
|
|
8
|
+
exports.CALL_STATES = ['scaffolded', 'drawing', 'checking', 'ready', 'failed'];
|
|
9
|
+
const MESSAGE_LIMIT = 400;
|
|
10
|
+
const flattened = (value) => value.replace(/[^A-Za-z0-9]/gu, '-');
|
|
11
|
+
/**
|
|
12
|
+
* Where the state of one call is kept: next to Ethlete Studio's check receipts, named by the same
|
|
13
|
+
* scheme as `status_path` in `apps/ethlete-studio/src-tauri/src/call_status.rs`. Both sides must agree.
|
|
14
|
+
*/
|
|
15
|
+
const statusPath = (options) => (0, path_1.join)((0, os_1.tmpdir)(), 'ethlete-studio-checks', `${flattened(`${options.checkout} ${options.slug}`)}.status.json`);
|
|
16
|
+
exports.statusPath = statusPath;
|
|
17
|
+
/** Records the state a call is in, for Ethlete Studio to show. */
|
|
18
|
+
const writeStatus = (options) => {
|
|
19
|
+
const { checkout, slug, state, message } = options;
|
|
20
|
+
const path = (0, exports.statusPath)({ checkout, slug });
|
|
21
|
+
const status = Object.assign({ state, updatedAt: new Date().toISOString() }, (message ? { message: message.slice(0, MESSAGE_LIMIT) } : {}));
|
|
22
|
+
(0, fs_1.mkdirSync)((0, path_1.join)(path, '..'), { recursive: true });
|
|
23
|
+
(0, fs_1.writeFileSync)(path, JSON.stringify(status));
|
|
24
|
+
};
|
|
25
|
+
exports.writeStatus = writeStatus;
|
|
26
|
+
/** Remembers a call's status as it is now, and answers with the function that puts it back. */
|
|
27
|
+
const holdStatus = (options) => {
|
|
28
|
+
const path = (0, exports.statusPath)(options);
|
|
29
|
+
const held = (0, fs_1.existsSync)(path) ? (0, fs_1.readFileSync)(path, 'utf8') : null;
|
|
30
|
+
return () => {
|
|
31
|
+
if (held === null) {
|
|
32
|
+
(0, fs_1.rmSync)(path, { force: true });
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
(0, fs_1.writeFileSync)(path, held);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
exports.holdStatus = holdStatus;
|
|
40
|
+
const isState = (value) => exports.CALL_STATES.includes(value);
|
|
41
|
+
/** `et design status <slug> <state>` records the state of a call by hand. */
|
|
42
|
+
const designStatus = (options) => {
|
|
43
|
+
const { target, argv, invocation } = options;
|
|
44
|
+
const [slug, state] = argv;
|
|
45
|
+
if (!slug || !isState(state)) {
|
|
46
|
+
console.error(`usage: ${invocation} status <slug> <${exports.CALL_STATES.join('|')}>`);
|
|
47
|
+
return 2;
|
|
48
|
+
}
|
|
49
|
+
if (!(0, fs_1.existsSync)((0, path_1.join)((0, paths_1.callsRootOf)(target), ...slug.split('/')))) {
|
|
50
|
+
console.error(`NO CALL "${slug}" - pass the folder's path under .ethlete/design/calls.`);
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
(0, exports.writeStatus)({ checkout: target, slug, state });
|
|
54
|
+
console.log(`${slug} is ${state}`);
|
|
55
|
+
return 0;
|
|
56
|
+
};
|
|
57
|
+
exports.designStatus = designStatus;
|
|
58
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/status.ts"],"names":[],"mappings":";;;AAAA,2BAAgF;AAChF,2BAA4B;AAC5B,+BAA4B;AAC5B,mCAAsC;AAEzB,QAAA,WAAW,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAC;AAU7F,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAE1E;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,OAA2C,EAAE,EAAE,CACxE,IAAA,WAAI,EAAC,IAAA,WAAM,GAAE,EAAE,uBAAuB,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC;AADhG,QAAA,UAAU,cACsF;AAE7G,kEAAkE;AAC3D,MAAM,WAAW,GAAG,CAAC,OAA+E,EAAE,EAAE;IAC7G,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,MAAM,mBACV,KAAK,EACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAChC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACjE,CAAC;IAEF,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAXW,QAAA,WAAW,eAWtB;AAEF,+FAA+F;AACxF,MAAM,UAAU,GAAG,CAAC,OAA2C,EAAE,EAAE;IACxE,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAElE,OAAO,GAAG,EAAE;QACV,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,IAAA,WAAM,EAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAA,kBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,UAAU,cAWrB;AAEF,MAAM,OAAO,GAAG,CAAC,KAAyB,EAAsB,EAAE,CAAC,mBAAW,CAAC,QAAQ,CAAC,KAAkB,CAAC,CAAC;AAE5G,6EAA6E;AACtE,MAAM,YAAY,GAAG,CAAC,OAA+D,EAAE,EAAE;IAC9F,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IAE3B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,UAAU,UAAU,mBAAmB,mBAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,IAAA,mBAAW,EAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,yDAAyD,CAAC,CAAC;QAEzF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAA,mBAAW,EAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC;IAEnC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AApBW,QAAA,YAAY,gBAoBvB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Whether a variant of the call imports anything from its project's design system. */
|
|
2
|
+
export declare const drawsFromSystem: (options: {
|
|
3
|
+
target: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
}) => boolean;
|
|
6
|
+
/** The warning for a call whose stage builds on the design system but draws nothing from it. */
|
|
7
|
+
export declare const systemWarningOf: (options: {
|
|
8
|
+
target: string;
|
|
9
|
+
slug: string;
|
|
10
|
+
stage: string | null;
|
|
11
|
+
}) => string | null;
|
|
12
|
+
/** The warning for an inventory on a call that is no wireframe call. */
|
|
13
|
+
export declare const inventoryWarningOf: (options: {
|
|
14
|
+
slug: string;
|
|
15
|
+
stage: string | null;
|
|
16
|
+
hasInventory: boolean;
|
|
17
|
+
}) => string | null;
|
|
18
|
+
/** The problem with a call that declares no known stage and is no legacy call, or null. */
|
|
19
|
+
export declare const stageProblemOf: (options: {
|
|
20
|
+
slug: string;
|
|
21
|
+
stage: string | null;
|
|
22
|
+
legacy: boolean;
|
|
23
|
+
}) => string | null;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stageProblemOf = exports.inventoryWarningOf = exports.systemWarningOf = exports.drawsFromSystem = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const new_call_1 = require("./new-call");
|
|
7
|
+
const paths_1 = require("./paths");
|
|
8
|
+
const STAGES_ON_THE_SYSTEM = new Set(['element', 'page', 'prototype']);
|
|
9
|
+
const SPECIFIER = /(?:\bfrom\s*|\bimport\s*\(?\s*)['"]([^'"]+)['"]/g;
|
|
10
|
+
/** Whether a variant of the call imports anything from its project's design system. */
|
|
11
|
+
const drawsFromSystem = (options) => {
|
|
12
|
+
var _a;
|
|
13
|
+
const { target, slug } = options;
|
|
14
|
+
const project = (_a = slug.split('/')[0]) !== null && _a !== void 0 ? _a : '';
|
|
15
|
+
const system = (0, path_1.resolve)(target, paths_1.DESIGN_DIR, 'system', project);
|
|
16
|
+
const folder = (0, path_1.resolve)((0, paths_1.callsRootOf)(target), slug);
|
|
17
|
+
if (!(0, fs_1.existsSync)(folder))
|
|
18
|
+
return false;
|
|
19
|
+
return (0, fs_1.readdirSync)(folder)
|
|
20
|
+
.filter((name) => /^variant-.*\.ts$/.test(name))
|
|
21
|
+
.some((name) => [...(0, fs_1.readFileSync)((0, path_1.resolve)(folder, name), 'utf8').matchAll(SPECIFIER)]
|
|
22
|
+
.map((match) => { var _a; return (_a = match[1]) !== null && _a !== void 0 ? _a : ''; })
|
|
23
|
+
.filter((specifier) => specifier.startsWith('.'))
|
|
24
|
+
.some((specifier) => {
|
|
25
|
+
const inside = (0, path_1.relative)(system, (0, path_1.resolve)((0, path_1.dirname)((0, path_1.resolve)(folder, name)), specifier));
|
|
26
|
+
return !inside.startsWith('..') && !(0, path_1.isAbsolute)(inside);
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
exports.drawsFromSystem = drawsFromSystem;
|
|
30
|
+
/** The warning for a call whose stage builds on the design system but draws nothing from it. */
|
|
31
|
+
const systemWarningOf = (options) => {
|
|
32
|
+
const { target, slug, stage } = options;
|
|
33
|
+
if (!stage || !STAGES_ON_THE_SYSTEM.has(stage) || (0, exports.drawsFromSystem)({ target, slug }))
|
|
34
|
+
return null;
|
|
35
|
+
return (`WARNING ${slug} is a ${stage} call but no variant imports from ` +
|
|
36
|
+
`${paths_1.DESIGN_DIR}/system/${slug.split('/')[0]}/ - it draws no design-system entry, so its parts ` +
|
|
37
|
+
`may not match the system.`);
|
|
38
|
+
};
|
|
39
|
+
exports.systemWarningOf = systemWarningOf;
|
|
40
|
+
/** The warning for an inventory on a call that is no wireframe call. */
|
|
41
|
+
const inventoryWarningOf = (options) => {
|
|
42
|
+
const { slug, stage, hasInventory } = options;
|
|
43
|
+
if (!hasInventory || stage === 'wireframe')
|
|
44
|
+
return null;
|
|
45
|
+
return `WARNING ${slug} has an inventory, but only a wireframe call takes one.`;
|
|
46
|
+
};
|
|
47
|
+
exports.inventoryWarningOf = inventoryWarningOf;
|
|
48
|
+
/** The problem with a call that declares no known stage and is no legacy call, or null. */
|
|
49
|
+
const stageProblemOf = (options) => {
|
|
50
|
+
const { slug, stage, legacy } = options;
|
|
51
|
+
if (stage === null) {
|
|
52
|
+
if (legacy)
|
|
53
|
+
return null;
|
|
54
|
+
return (`NO STAGE on ${slug} - set one of ${new_call_1.CALL_STAGES.join(', ')}. ` + `A quick exploration of an idea takes 'sketch'.`);
|
|
55
|
+
}
|
|
56
|
+
if (!new_call_1.CALL_STAGES.includes(stage))
|
|
57
|
+
return `BAD STAGE "${stage}" on ${slug} - use one of ${new_call_1.CALL_STAGES.join(', ')}.`;
|
|
58
|
+
return null;
|
|
59
|
+
};
|
|
60
|
+
exports.stageProblemOf = stageProblemOf;
|
|
61
|
+
//# sourceMappingURL=system-use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-use.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/design/system-use.ts"],"names":[],"mappings":"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"}
|