@ethlete/cli 3.0.0-next.23 → 3.0.0-next.25
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 +85 -0
- package/design/contrast.ts +49 -0
- package/design/define-call.ts +48 -8
- package/design/define-part.ts +83 -1
- package/design/embed-page.ts +37 -4
- package/design/icon-sheet.ts +151 -0
- package/design/mark-part.ts +79 -2
- package/design/morph.ts +67 -0
- package/design/motion-runtime.ts +407 -0
- package/design/spring.ts +53 -0
- package/design/token-sheet.ts +87 -0
- package/design/web/env.d.ts +6 -2
- package/design/web/frame.ts +159 -6
- package/package.json +2 -1
- package/src/lib/design/calls-tsconfig.js +1 -2
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/changed-parts.d.ts +4 -4
- package/src/lib/design/changed-parts.js +10 -6
- package/src/lib/design/changed-parts.js.map +1 -1
- package/src/lib/design/contact-sheet.d.ts +26 -13
- package/src/lib/design/contact-sheet.js +122 -40
- package/src/lib/design/contact-sheet.js.map +1 -1
- package/src/lib/design/design-command.js +50 -2
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/force-interactions.d.ts +2 -1
- package/src/lib/design/force-interactions.js +7 -4
- package/src/lib/design/force-interactions.js.map +1 -1
- package/src/lib/design/generated-stylesheets.d.ts +15 -0
- package/src/lib/design/generated-stylesheets.js +52 -0
- package/src/lib/design/generated-stylesheets.js.map +1 -0
- package/src/lib/design/inbox-command.d.ts +1 -0
- package/src/lib/design/inbox-command.js +15 -0
- package/src/lib/design/inbox-command.js.map +1 -1
- package/src/lib/design/mcp-command.d.ts +60 -0
- package/src/lib/design/mcp-command.js +327 -0
- package/src/lib/design/mcp-command.js.map +1 -0
- package/src/lib/design/merge-compare.d.ts +10 -0
- package/src/lib/design/merge-compare.js +17 -4
- package/src/lib/design/merge-compare.js.map +1 -1
- package/src/lib/design/motion-command.d.ts +71 -0
- package/src/lib/design/motion-command.js +314 -0
- package/src/lib/design/motion-command.js.map +1 -0
- package/src/lib/design/motion-endpoint.d.ts +61 -0
- package/src/lib/design/motion-endpoint.js +133 -0
- package/src/lib/design/motion-endpoint.js.map +1 -0
- package/src/lib/design/motion-flow.d.ts +5 -0
- package/src/lib/design/motion-flow.js +29 -0
- package/src/lib/design/motion-flow.js.map +1 -0
- package/src/lib/design/motion-shot.d.ts +43 -0
- package/src/lib/design/motion-shot.js +97 -0
- package/src/lib/design/motion-shot.js.map +1 -0
- package/src/lib/design/paths.d.ts +11 -0
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/ready-shots.d.ts +7 -0
- package/src/lib/design/ready-shots.js +22 -1
- package/src/lib/design/ready-shots.js.map +1 -1
- package/src/lib/design/render-packages.d.ts +9 -0
- package/src/lib/design/render-packages.js +13 -3
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render.js +3 -3
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/serve.js +108 -21
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/shot-command.d.ts +12 -6
- package/src/lib/design/shot-command.js +60 -48
- package/src/lib/design/shot-command.js.map +1 -1
- package/src/lib/design/shot.d.ts +30 -4
- package/src/lib/design/shot.js +138 -53
- package/src/lib/design/shot.js.map +1 -1
- package/src/lib/design/sketch-command.js +132 -39
- package/src/lib/design/sketch-command.js.map +1 -1
- package/src/lib/design/sketch-stylesheets.d.ts +7 -0
- package/src/lib/design/sketch-stylesheets.js +63 -0
- package/src/lib/design/sketch-stylesheets.js.map +1 -0
- package/src/lib/design/studio-api.d.ts +28 -6
- package/src/lib/design/studio-api.js +102 -17
- package/src/lib/design/studio-api.js.map +1 -1
- package/src/lib/design/system/check-system.js +8 -0
- package/src/lib/design/system/check-system.js.map +1 -1
- package/src/lib/design/system/comments/comment.d.ts +17 -0
- package/src/lib/design/system/comments/comment.js +35 -1
- package/src/lib/design/system/comments/comment.js.map +1 -1
- package/src/lib/design/system/comments/complete.js +4 -2
- package/src/lib/design/system/comments/complete.js.map +1 -1
- package/src/lib/design/system/complete-command.d.ts +9 -0
- package/src/lib/design/system/complete-command.js +134 -0
- package/src/lib/design/system/complete-command.js.map +1 -0
- package/src/lib/design/system/complete.d.ts +171 -0
- package/src/lib/design/system/complete.js +1106 -0
- package/src/lib/design/system/complete.js.map +1 -0
- package/src/lib/design/system/contrast-check.d.ts +26 -0
- package/src/lib/design/system/contrast-check.js +153 -0
- package/src/lib/design/system/contrast-check.js.map +1 -0
- package/src/lib/design/system/exceptions.d.ts +59 -0
- package/src/lib/design/system/exceptions.js +132 -0
- package/src/lib/design/system/exceptions.js.map +1 -0
- package/src/lib/design/system/flows/flow.d.ts +3 -0
- package/src/lib/design/system/flows/flow.js +5 -3
- package/src/lib/design/system/flows/flow.js.map +1 -1
- package/src/lib/design/system/handoff.d.ts +11 -0
- package/src/lib/design/system/handoff.js +30 -0
- package/src/lib/design/system/handoff.js.map +1 -0
- package/src/lib/design/system/imports.d.ts +28 -3
- package/src/lib/design/system/imports.js +84 -7
- package/src/lib/design/system/imports.js.map +1 -1
- package/src/lib/design/system/inventory-approval.d.ts +41 -0
- package/src/lib/design/system/inventory-approval.js +71 -0
- package/src/lib/design/system/inventory-approval.js.map +1 -0
- package/src/lib/design/system/inventory.d.ts +65 -0
- package/src/lib/design/system/inventory.js +168 -0
- package/src/lib/design/system/inventory.js.map +1 -0
- package/src/lib/design/system/list-system.d.ts +11 -0
- package/src/lib/design/system/list-system.js +26 -3
- package/src/lib/design/system/list-system.js.map +1 -1
- package/src/lib/design/system/product-stylesheets.d.ts +3 -0
- package/src/lib/design/system/product-stylesheets.js +40 -0
- package/src/lib/design/system/product-stylesheets.js.map +1 -0
- package/src/lib/design/system/render-check.js +30 -4
- package/src/lib/design/system/render-check.js.map +1 -1
- package/src/lib/design/system/resolve-product.d.ts +2 -3
- package/src/lib/design/system/resolve-product.js +4 -6
- package/src/lib/design/system/resolve-product.js.map +1 -1
- package/src/lib/design/system/rules/canonical-class.d.ts +9 -0
- package/src/lib/design/system/rules/canonical-class.js +132 -0
- package/src/lib/design/system/rules/canonical-class.js.map +1 -0
- package/src/lib/design/system/rules/inline-svg.d.ts +7 -0
- package/src/lib/design/system/rules/inline-svg.js +28 -0
- package/src/lib/design/system/rules/inline-svg.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +4 -0
- package/src/lib/design/system/rules/motion.js +46 -2
- package/src/lib/design/system/rules/motion.js.map +1 -1
- package/src/lib/design/system/rules/stale-replace.js +41 -2
- package/src/lib/design/system/rules/stale-replace.js.map +1 -1
- package/src/lib/design/system/rules/token-selectors.js +1 -1
- package/src/lib/design/system/rules/token-selectors.js.map +1 -1
- package/src/lib/design/system/rules/utility-css.d.ts +11 -0
- package/src/lib/design/system/rules/utility-css.js +290 -0
- package/src/lib/design/system/rules/utility-css.js.map +1 -0
- package/src/lib/design/system/sketch/baseline.d.ts +3 -2
- package/src/lib/design/system/sketch/baseline.js +10 -4
- package/src/lib/design/system/sketch/baseline.js.map +1 -1
- package/src/lib/design/system/sketch/host-edit.d.ts +4 -0
- package/src/lib/design/system/sketch/host-edit.js +68 -0
- package/src/lib/design/system/sketch/host-edit.js.map +1 -0
- package/src/lib/design/system/sketch/merge-preview.d.ts +4 -2
- package/src/lib/design/system/sketch/merge-preview.js +20 -3
- package/src/lib/design/system/sketch/merge-preview.js.map +1 -1
- package/src/lib/design/system/sketch/merge-shared.d.ts +42 -6
- package/src/lib/design/system/sketch/merge-shared.js +122 -24
- package/src/lib/design/system/sketch/merge-shared.js.map +1 -1
- package/src/lib/design/system/sketch/merge.d.ts +6 -5
- package/src/lib/design/system/sketch/merge.js +95 -35
- package/src/lib/design/system/sketch/merge.js.map +1 -1
- package/src/lib/design/system/sketch/merged-parts.d.ts +17 -0
- package/src/lib/design/system/sketch/merged-parts.js +35 -2
- package/src/lib/design/system/sketch/merged-parts.js.map +1 -1
- package/src/lib/design/system/sketch/no-visible-change.d.ts +10 -3
- package/src/lib/design/system/sketch/no-visible-change.js +75 -20
- package/src/lib/design/system/sketch/no-visible-change.js.map +1 -1
- package/src/lib/design/system/sketch/overlay.js +16 -3
- package/src/lib/design/system/sketch/overlay.js.map +1 -1
- package/src/lib/design/system/sketch/part-definition.d.ts +12 -0
- package/src/lib/design/system/sketch/part-definition.js +40 -1
- package/src/lib/design/system/sketch/part-definition.js.map +1 -1
- package/src/lib/design/system/sketch/sketch.d.ts +40 -3
- package/src/lib/design/system/sketch/sketch.js +147 -50
- package/src/lib/design/system/sketch/sketch.js.map +1 -1
- package/src/lib/design/system/sketch/unchanged-states.d.ts +10 -4
- package/src/lib/design/system/sketch/unchanged-states.js +37 -23
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -1
- package/src/lib/design/system/sketch/unused-closure.d.ts +12 -0
- package/src/lib/design/system/sketch/unused-closure.js +185 -0
- package/src/lib/design/system/sketch/unused-closure.js.map +1 -0
- package/src/lib/design/system/system-modules.d.ts +5 -1
- package/src/lib/design/system/system-modules.js +32 -17
- package/src/lib/design/system/system-modules.js.map +1 -1
- package/src/lib/design/system/system-tsconfig.d.ts +2 -1
- package/src/lib/design/system/system-tsconfig.js +11 -6
- package/src/lib/design/system/system-tsconfig.js.map +1 -1
- package/src/lib/design/thumb.d.ts +6 -2
- package/src/lib/design/thumb.js +36 -15
- package/src/lib/design/thumb.js.map +1 -1
- package/src/lib/design/variant-diff.d.ts +12 -10
- package/src/lib/design/variant-diff.js +14 -13
- package/src/lib/design/variant-diff.js.map +1 -1
- package/src/lib/design/warm-pages.d.ts +20 -0
- package/src/lib/design/warm-pages.js +78 -0
- package/src/lib/design/warm-pages.js.map +1 -0
- package/src/lib/update/commits.d.ts +9 -0
- package/src/lib/update/commits.js +15 -1
- package/src/lib/update/commits.js.map +1 -1
- package/src/lib/update/migration-manifest.d.ts +6 -0
- package/src/lib/update/migration-manifest.js +7 -0
- package/src/lib/update/migration-manifest.js.map +1 -1
- package/src/lib/update/migrations-command.js +1 -0
- package/src/lib/update/migrations-command.js.map +1 -1
- package/src/lib/update/run-migrations.d.ts +22 -0
- package/src/lib/update/run-migrations.js +60 -1
- package/src/lib/update/run-migrations.js.map +1 -1
- package/src/lib/update/update-command.d.ts +10 -0
- package/src/lib/update/update-command.js +28 -2
- package/src/lib/update/update-command.js.map +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.importsAnyOf = exports.changesOnlyImports = void 0;
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const imports_1 = require("../imports");
|
|
9
|
+
const resolve_product_1 = require("../resolve-product");
|
|
10
|
+
const ts_source_1 = require("../ts-source");
|
|
11
|
+
const IMPORTED = '\u0000';
|
|
12
|
+
const importedBindingsOf = (source) => new Set(source.statements.filter(typescript_1.default.isImportDeclaration).flatMap((declaration) => {
|
|
13
|
+
const clause = declaration.importClause;
|
|
14
|
+
const bindings = clause === null || clause === void 0 ? void 0 : clause.namedBindings;
|
|
15
|
+
return [
|
|
16
|
+
...((clause === null || clause === void 0 ? void 0 : clause.name) ? [clause.name.text] : []),
|
|
17
|
+
...(bindings && typescript_1.default.isNamespaceImport(bindings) ? [bindings.name.text] : []),
|
|
18
|
+
...(bindings && typescript_1.default.isNamedImports(bindings) ? bindings.elements.map((element) => element.name.text) : []),
|
|
19
|
+
];
|
|
20
|
+
}));
|
|
21
|
+
const rootOf = (node) => typescript_1.default.isPropertyAccessExpression(node) ? rootOf(node.expression) : node;
|
|
22
|
+
const tokensOf = (text) => {
|
|
23
|
+
const scanner = typescript_1.default.createScanner(typescript_1.default.ScriptTarget.Latest, true, typescript_1.default.LanguageVariant.Standard, text);
|
|
24
|
+
const tokens = [];
|
|
25
|
+
for (let kind = scanner.scan(); kind !== typescript_1.default.SyntaxKind.EndOfFileToken; kind = scanner.scan())
|
|
26
|
+
tokens.push(scanner.getTokenText());
|
|
27
|
+
return tokens;
|
|
28
|
+
};
|
|
29
|
+
/** The source without its import declarations, each use of an imported name (with its member access) as one token. */
|
|
30
|
+
const bodyOf = (text) => {
|
|
31
|
+
const source = typescript_1.default.createSourceFile('part.ts', text, typescript_1.default.ScriptTarget.Latest, true);
|
|
32
|
+
const imported = importedBindingsOf(source);
|
|
33
|
+
const ranges = [];
|
|
34
|
+
const visit = (node) => {
|
|
35
|
+
if (typescript_1.default.isImportDeclaration(node)) {
|
|
36
|
+
ranges.push({ start: node.getStart(source), end: node.end, with: ' ' });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const root = typescript_1.default.isPropertyAccessExpression(node) || typescript_1.default.isIdentifier(node) ? rootOf(node) : null;
|
|
40
|
+
if (root &&
|
|
41
|
+
typescript_1.default.isIdentifier(root) &&
|
|
42
|
+
imported.has(root.text) &&
|
|
43
|
+
!(typescript_1.default.isPropertyAccessExpression(node.parent) && node.parent.expression === node) &&
|
|
44
|
+
!(typescript_1.default.isPropertyAccessExpression(node.parent) && node.parent.name === node)) {
|
|
45
|
+
ranges.push({ start: node.getStart(source), end: node.end, with: ` ${IMPORTED} ` });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
typescript_1.default.forEachChild(node, visit);
|
|
49
|
+
};
|
|
50
|
+
visit(source);
|
|
51
|
+
const sorted = ranges.sort((a, b) => a.start - b.start);
|
|
52
|
+
let body = '';
|
|
53
|
+
let at = 0;
|
|
54
|
+
for (const range of sorted) {
|
|
55
|
+
body += `${text.slice(at, range.start)}${range.with}`;
|
|
56
|
+
at = range.end;
|
|
57
|
+
}
|
|
58
|
+
return tokensOf(body + text.slice(at)).join(' ');
|
|
59
|
+
};
|
|
60
|
+
/** Whether `after` differs from `before` only in what it imports and how it spells the imported names it uses. */
|
|
61
|
+
const changesOnlyImports = (before, after) => bodyOf(before) === bodyOf(after);
|
|
62
|
+
exports.changesOnlyImports = changesOnlyImports;
|
|
63
|
+
/** Whether a part source imports one of `targets` (`<layer>/<name>` keys). */
|
|
64
|
+
const importsAnyOf = (source, targets) => (0, ts_source_1.importsOf)(source)
|
|
65
|
+
.map(imports_1.classifyImport)
|
|
66
|
+
.some((imported) => imported.kind === 'part' && targets.includes((0, resolve_product_1.partKeyOf)(imported)));
|
|
67
|
+
exports.importsAnyOf = importsAnyOf;
|
|
68
|
+
//# sourceMappingURL=host-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-edit.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/host-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,13 @@ import { ResolvedProduct } from '../resolve-product';
|
|
|
2
2
|
import { Sketch } from './sketch';
|
|
3
3
|
export type MergePreview = {
|
|
4
4
|
changed: string[];
|
|
5
|
+
shared: string[];
|
|
5
6
|
affected: string[];
|
|
6
7
|
};
|
|
7
8
|
/**
|
|
8
|
-
* What a merge of one variant changes: the parts the variant holds
|
|
9
|
-
* uses one of them, directly or
|
|
9
|
+
* What a merge of one variant changes: the parts the variant holds and, in `shared`, each other part that imports a
|
|
10
|
+
* `shared/` file the variant edits (both in `changed`), and each element and page that uses one of them, directly or
|
|
11
|
+
* through another part.
|
|
10
12
|
*/
|
|
11
13
|
export declare const mergePreviewOf: (options: {
|
|
12
14
|
product: ResolvedProduct;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergePreviewOf = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
4
5
|
const imports_1 = require("../imports");
|
|
5
6
|
const resolve_product_1 = require("../resolve-product");
|
|
7
|
+
const merge_shared_1 = require("./merge-shared");
|
|
6
8
|
const overlay_1 = require("./overlay");
|
|
9
|
+
const sketch_1 = require("./sketch");
|
|
7
10
|
const SHOWN = new Set(['elements', 'pages']);
|
|
8
11
|
const usersOf = (product) => {
|
|
9
12
|
var _a;
|
|
@@ -16,14 +19,27 @@ const usersOf = (product) => {
|
|
|
16
19
|
}
|
|
17
20
|
return users;
|
|
18
21
|
};
|
|
22
|
+
const sharedReachOf = (options) => {
|
|
23
|
+
const { product, held } = options;
|
|
24
|
+
const edited = new Set((0, merge_shared_1.editedSharedPathsOf)(options));
|
|
25
|
+
if (edited.size === 0)
|
|
26
|
+
return [];
|
|
27
|
+
return product.parts
|
|
28
|
+
.filter((part) => !held.has((0, resolve_product_1.partKeyOf)(part)))
|
|
29
|
+
.filter((part) => (0, imports_1.importedSharedOf)({ product, files: (0, sketch_1.sourceFilesIn)((0, path_1.dirname)(part.file)) }).some(({ path }) => edited.has(path)))
|
|
30
|
+
.map(resolve_product_1.partKeyOf);
|
|
31
|
+
};
|
|
19
32
|
/**
|
|
20
|
-
* What a merge of one variant changes: the parts the variant holds
|
|
21
|
-
* uses one of them, directly or
|
|
33
|
+
* What a merge of one variant changes: the parts the variant holds and, in `shared`, each other part that imports a
|
|
34
|
+
* `shared/` file the variant edits (both in `changed`), and each element and page that uses one of them, directly or
|
|
35
|
+
* through another part.
|
|
22
36
|
*/
|
|
23
37
|
const mergePreviewOf = (options) => {
|
|
24
38
|
var _a;
|
|
25
39
|
const users = usersOf(options.product);
|
|
26
|
-
const
|
|
40
|
+
const held = new Set((0, overlay_1.overlaySketch)(options).sketched);
|
|
41
|
+
const shared = sharedReachOf(Object.assign(Object.assign({}, options), { held }));
|
|
42
|
+
const changed = new Set([...held, ...shared]);
|
|
27
43
|
const reached = new Set();
|
|
28
44
|
const queue = [...changed];
|
|
29
45
|
for (let key = queue.shift(); key !== undefined; key = queue.shift()) {
|
|
@@ -36,6 +52,7 @@ const mergePreviewOf = (options) => {
|
|
|
36
52
|
}
|
|
37
53
|
return {
|
|
38
54
|
changed: [...changed].sort(),
|
|
55
|
+
shared: shared.sort(),
|
|
39
56
|
affected: [...reached].filter((key) => { var _a; return !changed.has(key) && SHOWN.has((_a = key.split('/')[0]) !== null && _a !== void 0 ? _a : ''); }).sort(),
|
|
40
57
|
};
|
|
41
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-preview.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge-preview.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"merge-preview.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,61 @@
|
|
|
1
|
+
import { ProductSource } from '../base';
|
|
1
2
|
import { Sketch } from './sketch';
|
|
2
3
|
type PartFile = {
|
|
3
4
|
layer: string;
|
|
4
5
|
name: string;
|
|
5
6
|
file: string;
|
|
6
7
|
};
|
|
8
|
+
type SharedProduct = Pick<ProductSource, 'dir'> & {
|
|
9
|
+
base: Pick<ProductSource, 'dir'> | null;
|
|
10
|
+
};
|
|
7
11
|
/**
|
|
8
|
-
* What a merge does with the sketch's `shared/` folder: `carry`
|
|
9
|
-
*
|
|
10
|
-
*
|
|
12
|
+
* What a merge does with the sketch's `shared/` folder: `carry` names the folder of each target with the paths of the
|
|
13
|
+
* files the product's `shared/` does not hold that it takes - each file it imports, directly or through another such
|
|
14
|
+
* file, and each file nobody imports that its `shared/` held in the product; a file nobody imports and no target held
|
|
15
|
+
* goes to the one target importing `@shared/`. Or why the merge must stop - a part other than a target imports one, a
|
|
16
|
+
* target taking files holds a `shared/` folder of its own, or a file nobody imports has no target to go to.
|
|
11
17
|
*/
|
|
12
18
|
export declare const sharedPlanOf: (options: {
|
|
13
19
|
sketch: Sketch;
|
|
20
|
+
variant: string;
|
|
14
21
|
parts: PartFile[];
|
|
15
|
-
|
|
22
|
+
product: SharedProduct & {
|
|
23
|
+
parts: PartFile[];
|
|
24
|
+
};
|
|
25
|
+
}) => {
|
|
26
|
+
carry: {
|
|
27
|
+
targetDir: string;
|
|
28
|
+
paths: string[];
|
|
29
|
+
}[];
|
|
30
|
+
} | string;
|
|
31
|
+
/**
|
|
32
|
+
* The files of the sketch's and the variant's `shared/` whose path the product's or its base's `shared/` holds, each
|
|
33
|
+
* with the file it replaces in the product's own `shared/`.
|
|
34
|
+
*/
|
|
35
|
+
export declare const productSharedChangesOf: (options: {
|
|
36
|
+
sketch: Sketch;
|
|
37
|
+
variant: string;
|
|
38
|
+
product: SharedProduct;
|
|
39
|
+
}) => {
|
|
40
|
+
from: string;
|
|
41
|
+
to: string;
|
|
42
|
+
}[];
|
|
43
|
+
/** The paths of the product's or its base's `shared/` files that the sketch's or the variant's `shared/` changes. */
|
|
44
|
+
export declare const editedSharedPathsOf: (options: {
|
|
45
|
+
sketch: Sketch;
|
|
46
|
+
variant: string;
|
|
47
|
+
product: SharedProduct;
|
|
48
|
+
}) => string[];
|
|
16
49
|
/**
|
|
17
|
-
* Copies the sketch's `shared/` folder,
|
|
18
|
-
* and turns each `@shared/` import there
|
|
50
|
+
* Copies the files at `paths` of the sketch's `shared/` folder, the picked variant's own `shared/` winning, into the
|
|
51
|
+
* merged target's folder, and turns each `@shared/` import there of a file the product's `shared/` does not hold into a
|
|
52
|
+
* relative one.
|
|
19
53
|
*/
|
|
20
54
|
export declare const carryShared: (options: {
|
|
21
55
|
sketch: Sketch;
|
|
22
56
|
variant: string;
|
|
23
57
|
targetDir: string;
|
|
58
|
+
paths: string[];
|
|
59
|
+
product: SharedProduct;
|
|
24
60
|
}) => void;
|
|
25
61
|
export {};
|
|
@@ -1,50 +1,148 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.carryShared = exports.sharedPlanOf = void 0;
|
|
3
|
+
exports.carryShared = exports.editedSharedPathsOf = exports.productSharedChangesOf = exports.sharedPlanOf = void 0;
|
|
4
4
|
const fs_1 = require("fs");
|
|
5
5
|
const path_1 = require("path");
|
|
6
|
+
const assets_1 = require("../assets");
|
|
6
7
|
const imports_1 = require("../imports");
|
|
7
8
|
const resolve_product_1 = require("../resolve-product");
|
|
8
9
|
const ts_source_1 = require("../ts-source");
|
|
9
10
|
const sketch_1 = require("./sketch");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
11
|
+
const inProductShared = (product, path) => (0, imports_1.sharedFileOf)({ dirs: (0, imports_1.productSharedDirsOf)(product), path }) !== null;
|
|
12
|
+
const importsSketchShared = (product, file) => (0, ts_source_1.importsOf)((0, fs_1.readFileSync)(file, 'utf8')).some((specifier) => specifier.startsWith(imports_1.SHARED_PREFIX) && !inProductShared(product, specifier.slice(imports_1.SHARED_PREFIX.length)));
|
|
13
|
+
const sharedImportersOf = (product, parts) => parts.filter((part) => (0, sketch_1.sourceFilesIn)((0, path_1.dirname)(part.file)).some((file) => importsSketchShared(product, file)));
|
|
14
|
+
const sketchSharedDirsOf = (sketch, variant) => [
|
|
15
|
+
(0, sketch_1.variantSharedDirOf)(sketch, variant),
|
|
16
|
+
(0, sketch_1.sharedDirOf)(sketch),
|
|
17
|
+
];
|
|
18
|
+
/** The files of the sketch's and the variant's `shared/` under their path there, the variant's file winning. */
|
|
19
|
+
const sketchSharedFilesOf = (sketch, variant) => {
|
|
20
|
+
const files = new Map();
|
|
21
|
+
for (const dir of sketchSharedDirsOf(sketch, variant).reverse())
|
|
22
|
+
for (const file of (0, assets_1.filesBelow)(dir))
|
|
23
|
+
files.set((0, path_1.relative)(dir, file), file);
|
|
24
|
+
return files;
|
|
25
|
+
};
|
|
26
|
+
const SOURCE = /\.(?:ts|js|mjs)$/u;
|
|
27
|
+
const reachedSharedOf = (options) => {
|
|
28
|
+
const { dirs, partDir, product } = options;
|
|
29
|
+
const reached = new Set();
|
|
30
|
+
const queue = (0, sketch_1.sourceFilesIn)(partDir).map((file) => ({ file, at: null }));
|
|
31
|
+
for (let next = queue.shift(); next; next = queue.shift()) {
|
|
32
|
+
for (const specifier of (0, ts_source_1.importsOf)((0, fs_1.readFileSync)(next.file, 'utf8'))) {
|
|
33
|
+
const path = specifier.startsWith(imports_1.SHARED_PREFIX)
|
|
34
|
+
? specifier.slice(imports_1.SHARED_PREFIX.length)
|
|
35
|
+
: next.at !== null && specifier.startsWith('.')
|
|
36
|
+
? (0, path_1.join)((0, path_1.dirname)(next.at), specifier)
|
|
37
|
+
: null;
|
|
38
|
+
if (path === null || path.startsWith('..'))
|
|
39
|
+
continue;
|
|
40
|
+
if (specifier.startsWith(imports_1.SHARED_PREFIX) && inProductShared(product, path))
|
|
41
|
+
continue;
|
|
42
|
+
const file = (0, imports_1.sharedFileOf)({ dirs, path });
|
|
43
|
+
const dir = file && dirs.find((candidate) => !(0, path_1.relative)(candidate, file).startsWith('..'));
|
|
44
|
+
if (!file || !dir)
|
|
45
|
+
continue;
|
|
46
|
+
const at = (0, path_1.relative)(dir, file);
|
|
47
|
+
if (reached.has(at))
|
|
48
|
+
continue;
|
|
49
|
+
reached.add(at);
|
|
50
|
+
if (SOURCE.test(at))
|
|
51
|
+
queue.push({ file, at });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return reached;
|
|
55
|
+
};
|
|
12
56
|
/**
|
|
13
|
-
* What a merge does with the sketch's `shared/` folder: `carry`
|
|
14
|
-
*
|
|
15
|
-
*
|
|
57
|
+
* What a merge does with the sketch's `shared/` folder: `carry` names the folder of each target with the paths of the
|
|
58
|
+
* files the product's `shared/` does not hold that it takes - each file it imports, directly or through another such
|
|
59
|
+
* file, and each file nobody imports that its `shared/` held in the product; a file nobody imports and no target held
|
|
60
|
+
* goes to the one target importing `@shared/`. Or why the merge must stop - a part other than a target imports one, a
|
|
61
|
+
* target taking files holds a `shared/` folder of its own, or a file nobody imports has no target to go to.
|
|
16
62
|
*/
|
|
17
63
|
const sharedPlanOf = (options) => {
|
|
18
|
-
const { sketch, parts } = options;
|
|
19
|
-
const importers = sharedImportersOf(parts);
|
|
20
|
-
const others = importers.filter((part) => (0, resolve_product_1.partKeyOf)(part)
|
|
21
|
-
const
|
|
64
|
+
const { sketch, variant, parts, product } = options;
|
|
65
|
+
const importers = sharedImportersOf(product, parts);
|
|
66
|
+
const others = importers.filter((part) => !sketch.targets.includes((0, resolve_product_1.partKeyOf)(part)));
|
|
67
|
+
const takers = sketch.targets.join(', ');
|
|
22
68
|
if (others.length > 0)
|
|
23
|
-
return `${others.map(resolve_product_1.partKeyOf).join(', ')} import ${imports_1.SHARED_PREFIX} - only ${sketch.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
69
|
+
return `${others.map(resolve_product_1.partKeyOf).join(', ')} import ${imports_1.SHARED_PREFIX} - only ${takers} take${sketch.targets.length > 1 ? '' : 's'} the sketch's ${imports_1.SHARED_FOLDER}/ into the product; move that code into the part`;
|
|
70
|
+
const dirs = sketchSharedDirsOf(sketch, variant);
|
|
71
|
+
const targets = parts.filter((part) => sketch.targets.includes((0, resolve_product_1.partKeyOf)(part)));
|
|
72
|
+
const reached = targets.map((part) => reachedSharedOf({ dirs, partDir: (0, path_1.dirname)(part.file), product }));
|
|
73
|
+
const unreached = [...sketchSharedFilesOf(sketch, variant).keys()].filter((path) => !inProductShared(product, path) && !reached.some((paths) => paths.has(path)));
|
|
74
|
+
const heldBy = (part, path) => product.parts.some((held) => (0, resolve_product_1.partKeyOf)(held) === (0, resolve_product_1.partKeyOf)(part) && (0, fs_1.existsSync)((0, path_1.resolve)((0, path_1.dirname)(held.file), imports_1.SHARED_FOLDER, path)));
|
|
75
|
+
const ownersOf = (path) => targets.filter((part) => heldBy(part, path));
|
|
76
|
+
const solo = importers.length === 1 ? importers[0] : undefined;
|
|
77
|
+
const orphan = importers.length > 1 ? unreached.find((path) => ownersOf(path).length === 0) : undefined;
|
|
78
|
+
if (orphan !== undefined)
|
|
79
|
+
return `${imports_1.SHARED_FOLDER}/${orphan.split(path_1.sep).join('/')} is imported by no target and was held by none in the product - import it or delete it`;
|
|
80
|
+
const carry = targets
|
|
81
|
+
.map((part, index) => {
|
|
82
|
+
var _a;
|
|
83
|
+
return ({
|
|
84
|
+
part,
|
|
85
|
+
paths: [
|
|
86
|
+
...((_a = reached[index]) !== null && _a !== void 0 ? _a : []),
|
|
87
|
+
...unreached.filter((path) => (ownersOf(path).length > 0 ? heldBy(part, path) : part === solo)),
|
|
88
|
+
].sort(),
|
|
89
|
+
});
|
|
90
|
+
})
|
|
91
|
+
.filter(({ paths }) => paths.length > 0);
|
|
92
|
+
const owning = carry.find(({ part }) => (0, fs_1.existsSync)((0, path_1.resolve)((0, path_1.dirname)(part.file), imports_1.SHARED_FOLDER)));
|
|
93
|
+
if (owning)
|
|
94
|
+
return `${(0, resolve_product_1.partKeyOf)(owning.part)} holds a ${imports_1.SHARED_FOLDER}/ folder of its own and imports ${imports_1.SHARED_PREFIX} - rename the folder`;
|
|
95
|
+
return { carry: carry.map(({ part, paths }) => ({ targetDir: (0, path_1.resolve)(product.dir, part.layer, part.name), paths })) };
|
|
29
96
|
};
|
|
30
97
|
exports.sharedPlanOf = sharedPlanOf;
|
|
98
|
+
/**
|
|
99
|
+
* The files of the sketch's and the variant's `shared/` whose path the product's or its base's `shared/` holds, each
|
|
100
|
+
* with the file it replaces in the product's own `shared/`.
|
|
101
|
+
*/
|
|
102
|
+
const productSharedChangesOf = (options) => {
|
|
103
|
+
const { sketch, variant, product } = options;
|
|
104
|
+
return [...sketchSharedFilesOf(sketch, variant)]
|
|
105
|
+
.filter(([path]) => inProductShared(product, path))
|
|
106
|
+
.map(([path, file]) => ({ from: file, to: (0, path_1.resolve)(product.dir, imports_1.SHARED_FOLDER, path) }));
|
|
107
|
+
};
|
|
108
|
+
exports.productSharedChangesOf = productSharedChangesOf;
|
|
109
|
+
/** The paths of the product's or its base's `shared/` files that the sketch's or the variant's `shared/` changes. */
|
|
110
|
+
const editedSharedPathsOf = (options) => {
|
|
111
|
+
const { sketch, variant, product } = options;
|
|
112
|
+
return [...sketchSharedFilesOf(sketch, variant)].flatMap(([path, file]) => {
|
|
113
|
+
const own = (0, imports_1.sharedFileOf)({ dirs: (0, imports_1.productSharedDirsOf)(product), path });
|
|
114
|
+
return own && (0, fs_1.readFileSync)(own, 'utf8') !== (0, fs_1.readFileSync)(file, 'utf8') ? [path.split(path_1.sep).join('/')] : [];
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
exports.editedSharedPathsOf = editedSharedPathsOf;
|
|
31
118
|
const relativeSpecifierOf = (options) => {
|
|
32
119
|
const path = (0, path_1.relative)((0, path_1.dirname)(options.from), options.to).split(path_1.sep).join('/');
|
|
33
120
|
return path.startsWith('.') ? path : `./${path}`;
|
|
34
121
|
};
|
|
35
122
|
/**
|
|
36
|
-
* Copies the sketch's `shared/` folder,
|
|
37
|
-
* and turns each `@shared/` import there
|
|
123
|
+
* Copies the files at `paths` of the sketch's `shared/` folder, the picked variant's own `shared/` winning, into the
|
|
124
|
+
* merged target's folder, and turns each `@shared/` import there of a file the product's `shared/` does not hold into a
|
|
125
|
+
* relative one.
|
|
38
126
|
*/
|
|
39
127
|
const carryShared = (options) => {
|
|
40
|
-
const { sketch, variant, targetDir } = options;
|
|
41
|
-
const shared = (0, path_1.resolve)(targetDir,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
128
|
+
const { sketch, variant, targetDir, paths, product } = options;
|
|
129
|
+
const shared = (0, path_1.resolve)(targetDir, imports_1.SHARED_FOLDER);
|
|
130
|
+
const files = sketchSharedFilesOf(sketch, variant);
|
|
131
|
+
for (const path of paths) {
|
|
132
|
+
const file = files.get(path);
|
|
133
|
+
if (!file)
|
|
134
|
+
continue;
|
|
135
|
+
(0, fs_1.mkdirSync)((0, path_1.dirname)((0, path_1.resolve)(shared, path)), { recursive: true });
|
|
136
|
+
(0, fs_1.cpSync)(file, (0, path_1.resolve)(shared, path));
|
|
137
|
+
}
|
|
45
138
|
for (const file of (0, sketch_1.sourceFilesIn)(targetDir)) {
|
|
46
139
|
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
47
|
-
const rewritten = source.replace(new RegExp(`(['"])${imports_1.SHARED_PREFIX}([^'"]+)\\1`, 'gu'), (...
|
|
140
|
+
const rewritten = source.replace(new RegExp(`(['"])${imports_1.SHARED_PREFIX}([^'"]+)\\1`, 'gu'), (...args) => {
|
|
141
|
+
const [match = '', quote = '', path = ''] = args;
|
|
142
|
+
return inProductShared(product, path)
|
|
143
|
+
? match
|
|
144
|
+
: `${quote}${relativeSpecifierOf({ from: file, to: (0, path_1.resolve)(shared, path) })}${quote}`;
|
|
145
|
+
});
|
|
48
146
|
if (rewritten !== source)
|
|
49
147
|
(0, fs_1.writeFileSync)(file, rewritten);
|
|
50
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge-shared.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge-shared.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"merge-shared.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/sketch/merge-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,10 +8,11 @@ export type MergeRefusal = {
|
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
10
|
* Merges the variant the user picked in a ready sketch into the product: copies each part it holds
|
|
11
|
-
* over the product's
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* over the product's - a part the product takes from its base over the base's, unless the sketch was opened with
|
|
12
|
+
* `override`; `into-base` also removes the product copy and its `merged.json` entry - sets `note` (when given) and `madeBy` (the file's own plus the variant's authors) on the target, runs the check
|
|
13
|
+
* records each merged part's hash in `merged.json` and deletes the sketch. With `override`, a target the product only takes from its base is copied into the product first. When the check fails, the
|
|
14
|
+
* product's old files come back and the sketch stays. Each file in the variant's `assets/` goes into the product's `assets/`. A file of the sketch's `shared/` folder whose path the product's `shared/` holds
|
|
15
|
+
* replaces it there; the rest goes into the target's folder when the target imports it, with its `@shared/` imports made relative; any other part that imports it stops the merge. Otherwise the addressed comments on its variants, and those on the merged parts that have no sketch, are resolved, and the open ones on its variants are addressed, by `author` or the user. Refuses without a
|
|
15
16
|
* pick, and when a part the variant replaces changed in the product since the sketch's baseline. Answers with the merged part keys, or with why nothing was merged - and, when a rebase
|
|
16
17
|
* would let it, the parts that changed (`[]` without a baseline).
|
|
17
18
|
*/
|
|
@@ -23,7 +24,7 @@ export declare const mergeSketch: (options: {
|
|
|
23
24
|
note?: string;
|
|
24
25
|
author?: string;
|
|
25
26
|
}) => string[] | MergeRefusal;
|
|
26
|
-
/** Deletes a sketch with all its variants and
|
|
27
|
+
/** Deletes a sketch with all its variants and resolves the addressed comments on them and marks the open ones addressed, by `author` or the user. */
|
|
27
28
|
export declare const discardSketch: (options: {
|
|
28
29
|
target: string;
|
|
29
30
|
sketch: Sketch;
|