@ethlete/cli 3.0.0-next.20 → 3.0.0-next.22
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 +190 -0
- package/design/assets.d.ts +9 -0
- package/design/define-call.ts +20 -11
- package/design/define-part.ts +102 -0
- package/design/embed-page.ts +70 -0
- package/design/interaction-rows.ts +32 -0
- package/design/mark-part.ts +66 -0
- package/design/svg-asset.ts +36 -0
- package/design/systems/config.json +10 -0
- package/design/systems/ethlete-components/components/button/button.ts +18 -0
- package/design/web/env.d.ts +20 -0
- package/design/web/frame.ts +173 -41
- package/design/wireframe-kit.ts +386 -0
- package/package.json +4 -2
- package/src/index.js.map +1 -1
- package/src/lib/api/api-command.js.map +1 -1
- package/src/lib/api/api-context.js.map +1 -1
- package/src/lib/api/api-state.js.map +1 -1
- package/src/lib/api/auth-hint.js.map +1 -1
- package/src/lib/api/clear.js.map +1 -1
- package/src/lib/api/clone.js.map +1 -1
- package/src/lib/api/compose.js.map +1 -1
- package/src/lib/api/definition.js.map +1 -1
- package/src/lib/api/doctor.js.map +1 -1
- package/src/lib/api/fingerprint.js.map +1 -1
- package/src/lib/api/git.js.map +1 -1
- package/src/lib/api/help.js.map +1 -1
- package/src/lib/api/index.js.map +1 -1
- package/src/lib/api/load-definitions.js.map +1 -1
- package/src/lib/api/lock.js.map +1 -1
- package/src/lib/api/parse-argv.js.map +1 -1
- package/src/lib/api/ports.js.map +1 -1
- package/src/lib/api/resolve-checkout.js.map +1 -1
- package/src/lib/api/run-locked.js.map +1 -1
- package/src/lib/api/run-ready.js.map +1 -1
- package/src/lib/api/run-snapshot.js.map +1 -1
- package/src/lib/api/run-status.js.map +1 -1
- package/src/lib/api/run.js.map +1 -1
- package/src/lib/api/seeds.js.map +1 -1
- package/src/lib/api/setup.js.map +1 -1
- package/src/lib/api/snapshot.js.map +1 -1
- package/src/lib/api/state.js.map +1 -1
- package/src/lib/api/suggest.js.map +1 -1
- package/src/lib/api/validate-definition.js.map +1 -1
- package/src/lib/auth/auth-command.js.map +1 -1
- package/src/lib/auth/composer-auth.js.map +1 -1
- package/src/lib/auth/composer-repositories.js.map +1 -1
- package/src/lib/auth/gitlab-token.js.map +1 -1
- package/src/lib/auth/index.js.map +1 -1
- package/src/lib/config/diagnose.js.map +1 -1
- package/src/lib/config/index.js.map +1 -1
- package/src/lib/config/local-config.js.map +1 -1
- package/src/lib/design/asset-shot.d.ts +26 -0
- package/src/lib/design/asset-shot.js +191 -0
- package/src/lib/design/asset-shot.js.map +1 -0
- package/src/lib/design/browser.js.map +1 -1
- package/src/lib/design/calls-tsconfig.d.ts +14 -1
- package/src/lib/design/calls-tsconfig.js +23 -18
- package/src/lib/design/calls-tsconfig.js.map +1 -1
- package/src/lib/design/calls.d.ts +28 -0
- package/src/lib/design/calls.js +58 -0
- package/src/lib/design/calls.js.map +1 -0
- package/src/lib/design/changed-parts.d.ts +51 -0
- package/src/lib/design/changed-parts.js +103 -0
- package/src/lib/design/changed-parts.js.map +1 -0
- package/src/lib/design/check.js +53 -54
- package/src/lib/design/check.js.map +1 -1
- package/src/lib/design/contact-sheet.d.ts +68 -0
- package/src/lib/design/contact-sheet.js +169 -0
- package/src/lib/design/contact-sheet.js.map +1 -0
- package/src/lib/design/design-command.js +165 -6
- package/src/lib/design/design-command.js.map +1 -1
- package/src/lib/design/force-interactions.d.ts +13 -0
- package/src/lib/design/force-interactions.js +75 -0
- package/src/lib/design/force-interactions.js.map +1 -0
- package/src/lib/design/inbox-command.d.ts +21 -0
- package/src/lib/design/inbox-command.js +156 -0
- package/src/lib/design/inbox-command.js.map +1 -0
- package/src/lib/design/index.js.map +1 -1
- package/src/lib/design/json-layout.d.ts +5 -0
- package/src/lib/design/json-layout.js +41 -0
- package/src/lib/design/json-layout.js.map +1 -0
- package/src/lib/design/legacy.d.ts +7 -0
- package/src/lib/design/legacy.js +23 -8
- package/src/lib/design/legacy.js.map +1 -1
- package/src/lib/design/merge-compare.d.ts +57 -0
- package/src/lib/design/merge-compare.js +80 -0
- package/src/lib/design/merge-compare.js.map +1 -0
- package/src/lib/design/missing-package.js.map +1 -1
- package/src/lib/design/new-call.js.map +1 -1
- package/src/lib/design/part-marks.d.ts +12 -0
- package/src/lib/design/part-marks.js +38 -0
- package/src/lib/design/part-marks.js.map +1 -0
- package/src/lib/design/paths.d.ts +35 -2
- package/src/lib/design/paths.js +62 -4
- package/src/lib/design/paths.js.map +1 -1
- package/src/lib/design/product-command.d.ts +38 -0
- package/src/lib/design/product-command.js +158 -0
- package/src/lib/design/product-command.js.map +1 -0
- package/src/lib/design/ready-shots.d.ts +13 -0
- package/src/lib/design/ready-shots.js +55 -0
- package/src/lib/design/ready-shots.js.map +1 -0
- package/src/lib/design/render-fields.js.map +1 -1
- package/src/lib/design/render-packages.js.map +1 -1
- package/src/lib/design/render-worker.js.map +1 -1
- package/src/lib/design/render.d.ts +8 -1
- package/src/lib/design/render.js +43 -14
- package/src/lib/design/render.js.map +1 -1
- package/src/lib/design/serve.d.ts +17 -0
- package/src/lib/design/serve.js +446 -62
- package/src/lib/design/serve.js.map +1 -1
- package/src/lib/design/shot-command.d.ts +75 -0
- package/src/lib/design/shot-command.js +361 -0
- package/src/lib/design/shot-command.js.map +1 -0
- package/src/lib/design/shot.d.ts +97 -0
- package/src/lib/design/shot.js +346 -0
- package/src/lib/design/shot.js.map +1 -0
- package/src/lib/design/sketch-at.d.ts +16 -0
- package/src/lib/design/sketch-at.js +34 -0
- package/src/lib/design/sketch-at.js.map +1 -0
- package/src/lib/design/sketch-command.d.ts +9 -0
- package/src/lib/design/sketch-command.js +572 -0
- package/src/lib/design/sketch-command.js.map +1 -0
- package/src/lib/design/ssr-shims.js.map +1 -1
- package/src/lib/design/stamp.js.map +1 -1
- package/src/lib/design/status.d.ts +2 -2
- package/src/lib/design/status.js +2 -2
- package/src/lib/design/status.js.map +1 -1
- package/src/lib/design/studio-api.d.ts +102 -0
- package/src/lib/design/studio-api.js +452 -0
- package/src/lib/design/studio-api.js.map +1 -0
- package/src/lib/design/system/accept-command.d.ts +7 -0
- package/src/lib/design/system/accept-command.js +55 -0
- package/src/lib/design/system/accept-command.js.map +1 -0
- package/src/lib/design/system/assets.d.ts +34 -0
- package/src/lib/design/system/assets.js +64 -0
- package/src/lib/design/system/assets.js.map +1 -0
- package/src/lib/design/system/base.d.ts +33 -0
- package/src/lib/design/system/base.js +49 -0
- package/src/lib/design/system/base.js.map +1 -0
- package/src/lib/design/system/check-system.d.ts +23 -0
- package/src/lib/design/system/check-system.js +151 -0
- package/src/lib/design/system/check-system.js.map +1 -0
- package/src/lib/design/system/colour.d.ts +2 -0
- package/src/lib/design/system/colour.js +9 -0
- package/src/lib/design/system/colour.js.map +1 -0
- package/src/lib/design/system/comments/comment.d.ts +196 -0
- package/src/lib/design/system/comments/comment.js +332 -0
- package/src/lib/design/system/comments/comment.js.map +1 -0
- package/src/lib/design/system/comments/complete.d.ts +15 -0
- package/src/lib/design/system/comments/complete.js +63 -0
- package/src/lib/design/system/comments/complete.js.map +1 -0
- package/src/lib/design/system/comments/inbox.d.ts +49 -0
- package/src/lib/design/system/comments/inbox.js +100 -0
- package/src/lib/design/system/comments/inbox.js.map +1 -0
- package/src/lib/design/system/css-source.d.ts +12 -0
- package/src/lib/design/system/css-source.js +39 -0
- package/src/lib/design/system/css-source.js.map +1 -0
- package/src/lib/design/system/flows/flow.d.ts +66 -0
- package/src/lib/design/system/flows/flow.js +157 -0
- package/src/lib/design/system/flows/flow.js.map +1 -0
- package/src/lib/design/system/imports.d.ts +70 -0
- package/src/lib/design/system/imports.js +159 -0
- package/src/lib/design/system/imports.js.map +1 -0
- package/src/lib/design/system/kit.d.ts +4 -0
- package/src/lib/design/system/kit.js +51 -0
- package/src/lib/design/system/kit.js.map +1 -0
- package/src/lib/design/system/layers.d.ts +9 -0
- package/src/lib/design/system/layers.js +16 -0
- package/src/lib/design/system/layers.js.map +1 -0
- package/src/lib/design/system/list-system.d.ts +104 -0
- package/src/lib/design/system/list-system.js +212 -0
- package/src/lib/design/system/list-system.js.map +1 -0
- package/src/lib/design/system/notes/note.d.ts +53 -0
- package/src/lib/design/system/notes/note.js +116 -0
- package/src/lib/design/system/notes/note.js.map +1 -0
- package/src/lib/design/system/part-command.d.ts +7 -0
- package/src/lib/design/system/part-command.js +134 -0
- package/src/lib/design/system/part-command.js.map +1 -0
- package/src/lib/design/system/problem.d.ts +5 -0
- package/src/lib/design/system/problem.js +3 -0
- package/src/lib/design/system/problem.js.map +1 -0
- package/src/lib/design/system/product.d.ts +18 -0
- package/src/lib/design/system/product.js +35 -0
- package/src/lib/design/system/product.js.map +1 -0
- package/src/lib/design/system/render-check.d.ts +45 -0
- package/src/lib/design/system/render-check.js +427 -0
- package/src/lib/design/system/render-check.js.map +1 -0
- package/src/lib/design/system/resolve-product.d.ts +32 -0
- package/src/lib/design/system/resolve-product.js +62 -0
- package/src/lib/design/system/resolve-product.js.map +1 -0
- package/src/lib/design/system/rules/component-copy.d.ts +7 -0
- package/src/lib/design/system/rules/component-copy.js +53 -0
- package/src/lib/design/system/rules/component-copy.js.map +1 -0
- package/src/lib/design/system/rules/flow.d.ts +8 -0
- package/src/lib/design/system/rules/flow.js +60 -0
- package/src/lib/design/system/rules/flow.js.map +1 -0
- package/src/lib/design/system/rules/hard-coded-colour.d.ts +7 -0
- package/src/lib/design/system/rules/hard-coded-colour.js +27 -0
- package/src/lib/design/system/rules/hard-coded-colour.js.map +1 -0
- package/src/lib/design/system/rules/interactions.d.ts +4 -0
- package/src/lib/design/system/rules/interactions.js +16 -0
- package/src/lib/design/system/rules/interactions.js.map +1 -0
- package/src/lib/design/system/rules/kit-outside-pages.d.ts +4 -0
- package/src/lib/design/system/rules/kit-outside-pages.js +14 -0
- package/src/lib/design/system/rules/kit-outside-pages.js.map +1 -0
- package/src/lib/design/system/rules/motion.d.ts +4 -0
- package/src/lib/design/system/rules/motion.js +13 -0
- package/src/lib/design/system/rules/motion.js.map +1 -0
- package/src/lib/design/system/rules/stale-comment.d.ts +8 -0
- package/src/lib/design/system/rules/stale-comment.js +51 -0
- package/src/lib/design/system/rules/stale-comment.js.map +1 -0
- package/src/lib/design/system/rules/stale-replace.d.ts +4 -0
- package/src/lib/design/system/rules/stale-replace.js +65 -0
- package/src/lib/design/system/rules/stale-replace.js.map +1 -0
- package/src/lib/design/system/rules/svg-asset.d.ts +6 -0
- package/src/lib/design/system/rules/svg-asset.js +30 -0
- package/src/lib/design/system/rules/svg-asset.js.map +1 -0
- package/src/lib/design/system/rules/token-selectors.d.ts +3 -0
- package/src/lib/design/system/rules/token-selectors.js +87 -0
- package/src/lib/design/system/rules/token-selectors.js.map +1 -0
- package/src/lib/design/system/rules/undefined-token.d.ts +8 -0
- package/src/lib/design/system/rules/undefined-token.js +103 -0
- package/src/lib/design/system/rules/undefined-token.js.map +1 -0
- package/src/lib/design/system/rules/unused-shared-export.d.ts +18 -0
- package/src/lib/design/system/rules/unused-shared-export.js +60 -0
- package/src/lib/design/system/rules/unused-shared-export.js.map +1 -0
- package/src/lib/design/system/rules/upward-dependency.d.ts +4 -0
- package/src/lib/design/system/rules/upward-dependency.js +17 -0
- package/src/lib/design/system/rules/upward-dependency.js.map +1 -0
- package/src/lib/design/system/rules/widths.d.ts +4 -0
- package/src/lib/design/system/rules/widths.js +14 -0
- package/src/lib/design/system/rules/widths.js.map +1 -0
- package/src/lib/design/system/sketch/baseline.d.ts +38 -0
- package/src/lib/design/system/sketch/baseline.js +66 -0
- package/src/lib/design/system/sketch/baseline.js.map +1 -0
- package/src/lib/design/system/sketch/check-format.d.ts +17 -0
- package/src/lib/design/system/sketch/check-format.js +56 -0
- package/src/lib/design/system/sketch/check-format.js.map +1 -0
- package/src/lib/design/system/sketch/check-sketches.d.ts +38 -0
- package/src/lib/design/system/sketch/check-sketches.js +104 -0
- package/src/lib/design/system/sketch/check-sketches.js.map +1 -0
- package/src/lib/design/system/sketch/cli-args.d.ts +26 -0
- package/src/lib/design/system/sketch/cli-args.js +63 -0
- package/src/lib/design/system/sketch/cli-args.js.map +1 -0
- package/src/lib/design/system/sketch/duplicate-class.d.ts +14 -0
- package/src/lib/design/system/sketch/duplicate-class.js +57 -0
- package/src/lib/design/system/sketch/duplicate-class.js.map +1 -0
- package/src/lib/design/system/sketch/merge-preview.d.ts +15 -0
- package/src/lib/design/system/sketch/merge-preview.js +43 -0
- package/src/lib/design/system/sketch/merge-preview.js.map +1 -0
- package/src/lib/design/system/sketch/merge-shared.d.ts +25 -0
- package/src/lib/design/system/sketch/merge-shared.js +53 -0
- package/src/lib/design/system/sketch/merge-shared.js.map +1 -0
- package/src/lib/design/system/sketch/merge.d.ts +31 -0
- package/src/lib/design/system/sketch/merge.js +145 -0
- package/src/lib/design/system/sketch/merge.js.map +1 -0
- package/src/lib/design/system/sketch/merged-parts.d.ts +59 -0
- package/src/lib/design/system/sketch/merged-parts.js +134 -0
- package/src/lib/design/system/sketch/merged-parts.js.map +1 -0
- package/src/lib/design/system/sketch/no-visible-change.d.ts +15 -0
- package/src/lib/design/system/sketch/no-visible-change.js +70 -0
- package/src/lib/design/system/sketch/no-visible-change.js.map +1 -0
- package/src/lib/design/system/sketch/overlay.d.ts +20 -0
- package/src/lib/design/system/sketch/overlay.js +38 -0
- package/src/lib/design/system/sketch/overlay.js.map +1 -0
- package/src/lib/design/system/sketch/part-definition.d.ts +31 -0
- package/src/lib/design/system/sketch/part-definition.js +157 -0
- package/src/lib/design/system/sketch/part-definition.js.map +1 -0
- package/src/lib/design/system/sketch/shared-class.d.ts +9 -0
- package/src/lib/design/system/sketch/shared-class.js +65 -0
- package/src/lib/design/system/sketch/shared-class.js.map +1 -0
- package/src/lib/design/system/sketch/sketch.d.ts +221 -0
- package/src/lib/design/system/sketch/sketch.js +481 -0
- package/src/lib/design/system/sketch/sketch.js.map +1 -0
- package/src/lib/design/system/sketch/unchanged-states.d.ts +23 -0
- package/src/lib/design/system/sketch/unchanged-states.js +144 -0
- package/src/lib/design/system/sketch/unchanged-states.js.map +1 -0
- package/src/lib/design/system/sketch/unused-files.d.ts +10 -0
- package/src/lib/design/system/sketch/unused-files.js +56 -0
- package/src/lib/design/system/sketch/unused-files.js.map +1 -0
- package/src/lib/design/system/system-command.d.ts +9 -0
- package/src/lib/design/system/system-command.js +56 -0
- package/src/lib/design/system/system-command.js.map +1 -0
- package/src/lib/design/system/system-modules.d.ts +58 -0
- package/src/lib/design/system/system-modules.js +189 -0
- package/src/lib/design/system/system-modules.js.map +1 -0
- package/src/lib/design/system/system-tsconfig.d.ts +26 -0
- package/src/lib/design/system/system-tsconfig.js +68 -0
- package/src/lib/design/system/system-tsconfig.js.map +1 -0
- package/src/lib/design/system/ts-source.d.ts +13 -0
- package/src/lib/design/system/ts-source.js +108 -0
- package/src/lib/design/system/ts-source.js.map +1 -0
- package/src/lib/design/system-use.js.map +1 -1
- package/src/lib/design/thumb.d.ts +67 -0
- package/src/lib/design/thumb.js +222 -0
- package/src/lib/design/thumb.js.map +1 -0
- package/src/lib/design/typecheck.d.ts +27 -0
- package/src/lib/design/typecheck.js +60 -0
- package/src/lib/design/typecheck.js.map +1 -0
- package/src/lib/design/variant-diff.d.ts +48 -0
- package/src/lib/design/variant-diff.js +77 -0
- package/src/lib/design/variant-diff.js.map +1 -0
- package/src/lib/design/vite-paths.d.ts +2 -0
- package/src/lib/design/vite-paths.js +10 -1
- package/src/lib/design/vite-paths.js.map +1 -1
- package/src/lib/doctor/doctor-command.js.map +1 -1
- package/src/lib/doctor/index.js.map +1 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/invocation.js +6 -2
- package/src/lib/invocation.js.map +1 -1
- package/src/lib/release.js.map +1 -1
- package/src/lib/update/agent-rules-sync.js.map +1 -1
- package/src/lib/update/agent-setup.js.map +1 -1
- package/src/lib/update/ai.js.map +1 -1
- package/src/lib/update/args.js.map +1 -1
- package/src/lib/update/available-migrations.js.map +1 -1
- package/src/lib/update/commits.js.map +1 -1
- package/src/lib/update/gitignore.js.map +1 -1
- package/src/lib/update/index.js.map +1 -1
- package/src/lib/update/migration-manifest.js.map +1 -1
- package/src/lib/update/migration-record.js.map +1 -1
- package/src/lib/update/migrations-command.js +14 -4
- package/src/lib/update/migrations-command.js.map +1 -1
- package/src/lib/update/package-manager.d.ts +1 -1
- package/src/lib/update/package-manager.js.map +1 -1
- package/src/lib/update/packages.js.map +1 -1
- package/src/lib/update/pending.js.map +1 -1
- package/src/lib/update/plan.js.map +1 -1
- package/src/lib/update/registry.js.map +1 -1
- package/src/lib/update/run-migrations.js.map +1 -1
- package/src/lib/update/scan.js +8 -3
- package/src/lib/update/scan.js.map +1 -1
- package/src/lib/update/semver.js.map +1 -1
- package/src/lib/update/tasks.js.map +1 -1
- package/src/lib/update/update-command.js.map +1 -1
- package/src/lib/utils.js.map +1 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flowProblemsOf = void 0;
|
|
4
|
+
const comment_1 = require("../comments/comment");
|
|
5
|
+
const flow_1 = require("../flows/flow");
|
|
6
|
+
const resolve_product_1 = require("../resolve-product");
|
|
7
|
+
const overlay_1 = require("../sketch/overlay");
|
|
8
|
+
const sketch_1 = require("../sketch/sketch");
|
|
9
|
+
const nameOf = (state) => `${state.part} "${state.state}"`;
|
|
10
|
+
const sketchOnlyOf = (product, key) => (0, sketch_1.listSketches)({ productDir: product.dir, product: product.name }).find((sketch) => typeof sketch !== 'string' && sketch.target === key && sketch.variants.length > 0);
|
|
11
|
+
/** Why a frame points at nothing; a part the product lacks is looked up in the first variant of its open sketch. */
|
|
12
|
+
const goneFrameOf = (product, frame) => {
|
|
13
|
+
const reason = (0, comment_1.goneStateOf)({ product, part: frame.part, state: frame.state });
|
|
14
|
+
const sketch = reason && !product.parts.some((part) => (0, resolve_product_1.partKeyOf)(part) === frame.part) && sketchOnlyOf(product, frame.part);
|
|
15
|
+
if (!sketch)
|
|
16
|
+
return reason;
|
|
17
|
+
const variant = sketch.variants[0];
|
|
18
|
+
const sketched = (0, overlay_1.overlaySketch)({ product, sketch, variant });
|
|
19
|
+
const gone = (0, comment_1.goneStateOf)({ product: sketched, part: frame.part, state: frame.state });
|
|
20
|
+
return gone && `${gone} in sketch variant ${variant}`;
|
|
21
|
+
};
|
|
22
|
+
const problemsOfFlow = (product, flow) => {
|
|
23
|
+
const seen = new Set();
|
|
24
|
+
const doubled = flow.frames.flatMap((frame) => {
|
|
25
|
+
const key = (0, flow_1.flowStateKeyOf)(frame);
|
|
26
|
+
if (seen.has(key))
|
|
27
|
+
return [`shows ${nameOf(frame)} twice - a state is one frame per flow`];
|
|
28
|
+
seen.add(key);
|
|
29
|
+
return [];
|
|
30
|
+
});
|
|
31
|
+
const gone = flow.frames.flatMap((frame) => {
|
|
32
|
+
const reason = goneFrameOf(product, frame);
|
|
33
|
+
return reason ? [`${reason} - fix or drop the frame`] : [];
|
|
34
|
+
});
|
|
35
|
+
const loose = flow.lines.flatMap((line, index) => [line.from, line.to]
|
|
36
|
+
.filter((end) => !seen.has((0, flow_1.flowStateKeyOf)(end)))
|
|
37
|
+
.map((end) => `lines[${index}] names ${nameOf(end)}, which is no frame of the flow - add it to frames`));
|
|
38
|
+
const ids = new Set();
|
|
39
|
+
const twice = flow.notes.flatMap((note) => {
|
|
40
|
+
if (ids.has(note.id))
|
|
41
|
+
return [`has two notes with the id "${note.id}" - give each its own`];
|
|
42
|
+
ids.add(note.id);
|
|
43
|
+
return [];
|
|
44
|
+
});
|
|
45
|
+
return [...doubled, ...gone, ...loose, ...twice];
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* A flow file that cannot be read, a frame whose part or state is gone (a part that exists only as a sketch
|
|
49
|
+
* counts with the states of its first variant), a line between states the flow does not show,
|
|
50
|
+
* and two free notes with one id.
|
|
51
|
+
*/
|
|
52
|
+
const flowProblemsOf = (product) => {
|
|
53
|
+
const { flows, unreadable } = (0, flow_1.listFlows)(product.dir);
|
|
54
|
+
return [
|
|
55
|
+
...unreadable.map(({ file, problem }) => ({ rule: 'FLOW', file, message: problem })),
|
|
56
|
+
...flows.flatMap((flow) => problemsOfFlow(product, flow).map((message) => ({ rule: 'FLOW', file: flow.file, message }))),
|
|
57
|
+
];
|
|
58
|
+
};
|
|
59
|
+
exports.flowProblemsOf = flowProblemsOf;
|
|
60
|
+
//# sourceMappingURL=flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Problem } from '../problem';
|
|
2
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
3
|
+
/**
|
|
4
|
+
* A hex colour or colour function in a declaration value of a part outside foundations, in its
|
|
5
|
+
* CSS or in the markup and inline CSS of its TS. A fallback inside `var()` counts.
|
|
6
|
+
*/
|
|
7
|
+
export declare const hardCodedColoursOf: (product: ResolvedProduct) => Problem[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hardCodedColoursOf = void 0;
|
|
4
|
+
const colour_1 = require("../colour");
|
|
5
|
+
const css_source_1 = require("../css-source");
|
|
6
|
+
const ts_source_1 = require("../ts-source");
|
|
7
|
+
const valueColoursOf = (css) => (0, css_source_1.cssBlocksOf)(css).declarations.flatMap((declaration) => { var _a; return (0, colour_1.coloursIn)((_a = (0, css_source_1.declarationValueOf)(declaration)) !== null && _a !== void 0 ? _a : ''); });
|
|
8
|
+
const textColoursOf = (text) => {
|
|
9
|
+
const whole = (0, colour_1.coloursIn)(text.trim());
|
|
10
|
+
return whole.length === 1 && whole[0] === text.trim() ? whole : valueColoursOf(text);
|
|
11
|
+
};
|
|
12
|
+
const problemsOf = (file, colours) => [...new Set(colours)].map((colour) => ({
|
|
13
|
+
rule: 'HARD-CODED-COLOUR',
|
|
14
|
+
file,
|
|
15
|
+
message: `${colour} outside foundations - use a foundations token`,
|
|
16
|
+
}));
|
|
17
|
+
const partProblemsOf = (part) => [
|
|
18
|
+
...problemsOf(part.file, (0, ts_source_1.textsOf)(part.source).flatMap(textColoursOf)),
|
|
19
|
+
...(part.css && part.cssSource ? problemsOf(part.css, valueColoursOf(part.cssSource)) : []),
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* A hex colour or colour function in a declaration value of a part outside foundations, in its
|
|
23
|
+
* CSS or in the markup and inline CSS of its TS. A fallback inside `var()` counts.
|
|
24
|
+
*/
|
|
25
|
+
const hardCodedColoursOf = (product) => product.parts.filter((part) => part.layer !== 'foundations').flatMap(partProblemsOf);
|
|
26
|
+
exports.hardCodedColoursOf = hardCodedColoursOf;
|
|
27
|
+
//# sourceMappingURL=hard-coded-colour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hard-coded-colour.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/hard-coded-colour.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AACtC,8CAAgE;AAGhE,4CAAuC;AAEvC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CACrC,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,WAAC,OAAA,IAAA,kBAAS,EAAC,MAAA,IAAA,+BAAkB,EAAC,WAAW,CAAC,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AAE3G,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE;IACrC,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAErC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,OAAiB,EAAa,EAAE,CAChE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,EAAE,mBAAmB;IACzB,IAAI;IACJ,OAAO,EAAE,GAAG,MAAM,gDAAgD;CACnE,CAAC,CAAC,CAAC;AAEN,MAAM,cAAc,GAAG,CAAC,IAAkB,EAAE,EAAE,CAAC;IAC7C,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAA,mBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;CAC5F,CAAC;AAEF;;;GAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAa,EAAE,CACxE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AAD1E,QAAA,kBAAkB,sBACwD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unknownInteractionsOf = void 0;
|
|
4
|
+
const force_interactions_1 = require("../../force-interactions");
|
|
5
|
+
const part_definition_1 = require("../sketch/part-definition");
|
|
6
|
+
const isKnown = (name) => force_interactions_1.INTERACTIONS.some((known) => known === name);
|
|
7
|
+
/** A part whose `interactions` name one Studio does not know. */
|
|
8
|
+
const unknownInteractionsOf = (product) => product.parts.flatMap((part) => (0, part_definition_1.interactionNamesOf)(part.source)
|
|
9
|
+
.filter((name) => !isKnown(name))
|
|
10
|
+
.map((name) => ({
|
|
11
|
+
rule: 'INTERACTIONS',
|
|
12
|
+
file: part.file,
|
|
13
|
+
message: `unknown interaction "${name}" - interactions are ${force_interactions_1.INTERACTIONS.join(', ')}; rest is always drawn, and pressed or loading is a state`,
|
|
14
|
+
})));
|
|
15
|
+
exports.unknownInteractionsOf = unknownInteractionsOf;
|
|
16
|
+
//# sourceMappingURL=interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/interactions.ts"],"names":[],"mappings":";;;AAAA,iEAAwD;AAGxD,+DAA+D;AAE/D,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,iCAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAE/E,iEAAiE;AAC1D,MAAM,qBAAqB,GAAG,CAAC,OAAwB,EAAa,EAAE,CAC3E,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7B,IAAA,oCAAkB,EAAC,IAAI,CAAC,MAAM,CAAC;KAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAChC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACd,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,OAAO,EAAE,wBAAwB,IAAI,wBAAwB,iCAAY,CAAC,IAAI,CAAC,IAAI,CAAC,2DAA2D;CAChJ,CAAC,CAAC,CACN,CAAC;AATS,QAAA,qBAAqB,yBAS9B"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Problem } from '../problem';
|
|
2
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
3
|
+
/** A component or foundation that imports the wireframe kit, which only elements and pages may use. */
|
|
4
|
+
export declare const kitOutsidePagesOf: (product: ResolvedProduct) => Problem[];
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kitOutsidePagesOf = void 0;
|
|
4
|
+
const kit_1 = require("../kit");
|
|
5
|
+
/** A component or foundation that imports the wireframe kit, which only elements and pages may use. */
|
|
6
|
+
const kitOutsidePagesOf = (product) => product.parts
|
|
7
|
+
.filter((part) => (part.layer === 'components' || part.layer === 'foundations') && (0, kit_1.importsKit)(part.source))
|
|
8
|
+
.map((part) => ({
|
|
9
|
+
rule: 'WIREFRAME-KIT',
|
|
10
|
+
file: part.file,
|
|
11
|
+
message: `${part.layer} may not use ${kit_1.KIT_SPECIFIER} - only elements and pages draw with the wireframe kit`,
|
|
12
|
+
}));
|
|
13
|
+
exports.kitOutsidePagesOf = kitOutsidePagesOf;
|
|
14
|
+
//# sourceMappingURL=kit-outside-pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kit-outside-pages.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/kit-outside-pages.ts"],"names":[],"mappings":";;;AAAA,gCAAmD;AAInD,uGAAuG;AAChG,MAAM,iBAAiB,GAAG,CAAC,OAAwB,EAAa,EAAE,CACvE,OAAO,CAAC,KAAK;KACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1G,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACd,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,gBAAgB,mBAAa,wDAAwD;CAC5G,CAAC,CAAC,CAAC;AAPK,QAAA,iBAAiB,qBAOtB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Problem } from '../problem';
|
|
2
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
3
|
+
/** A part that drives motion from script frames, which a timeline cannot stop at a given time. */
|
|
4
|
+
export declare const scriptedMotionOf: (product: ResolvedProduct) => Problem[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scriptedMotionOf = void 0;
|
|
4
|
+
const ts_source_1 = require("../ts-source");
|
|
5
|
+
const TIMED = ['requestAnimationFrame', 'setInterval'];
|
|
6
|
+
/** A part that drives motion from script frames, which a timeline cannot stop at a given time. */
|
|
7
|
+
const scriptedMotionOf = (product) => product.parts.flatMap((part) => [...new Set((0, ts_source_1.calledNamesOf)(part.source).filter((name) => TIMED.includes(name)))].map((name) => ({
|
|
8
|
+
rule: 'MOTION',
|
|
9
|
+
file: part.file,
|
|
10
|
+
message: `calls ${name} - motion must be CSS animation, CSS transition or the Web Animations API`,
|
|
11
|
+
})));
|
|
12
|
+
exports.scriptedMotionOf = scriptedMotionOf;
|
|
13
|
+
//# sourceMappingURL=motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/motion.ts"],"names":[],"mappings":";;;AAEA,4CAA6C;AAE7C,MAAM,KAAK,GAAG,CAAC,uBAAuB,EAAE,aAAa,CAAC,CAAC;AAEvD,kGAAkG;AAC3F,MAAM,gBAAgB,GAAG,CAAC,OAAwB,EAAa,EAAE,CACtE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7B,CAAC,GAAG,IAAI,GAAG,CAAC,IAAA,yBAAa,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7F,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,OAAO,EAAE,SAAS,IAAI,2EAA2E;CAClG,CAAC,CAAC,CACJ,CAAC;AAPS,QAAA,gBAAgB,oBAOzB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Problem } from '../problem';
|
|
2
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
3
|
+
/** An open comment whose part, state, size or sketch variant is gone, and a comment file that cannot be read. */
|
|
4
|
+
export declare const staleCommentsOf: (product: ResolvedProduct) => Problem[];
|
|
5
|
+
/** An open comment made on a sketch that was merged, discarded or replaced: it needs a reply or the user's resolve, but blocks nothing. */
|
|
6
|
+
export declare const goneSketchCommentWarningsOf: (product: ResolvedProduct) => string[];
|
|
7
|
+
/** A note whose part, state or size is gone, a pointed note without a size, and a note file that cannot be read. */
|
|
8
|
+
export declare const staleNotesOf: (product: ResolvedProduct) => Problem[];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.staleNotesOf = exports.goneSketchCommentWarningsOf = exports.staleCommentsOf = void 0;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const comment_1 = require("../comments/comment");
|
|
6
|
+
const note_1 = require("../notes/note");
|
|
7
|
+
/** An open comment whose part, state, size or sketch variant is gone, and a comment file that cannot be read. */
|
|
8
|
+
const staleCommentsOf = (product) => {
|
|
9
|
+
const { comments, unreadable } = (0, comment_1.listComments)({ productDir: product.dir, product: product.name });
|
|
10
|
+
return [
|
|
11
|
+
...unreadable.map(({ file, problem }) => ({ rule: 'COMMENT', file, message: problem })),
|
|
12
|
+
...comments.flatMap((comment) => {
|
|
13
|
+
if ((0, comment_1.sketchGoneOf)({ product, comment }))
|
|
14
|
+
return [];
|
|
15
|
+
const reason = (0, comment_1.staleReasonOf)({ product, comment });
|
|
16
|
+
return reason ? [{ rule: 'COMMENT', file: comment.file, message: `${reason} - answer or drop the comment` }] : [];
|
|
17
|
+
}),
|
|
18
|
+
];
|
|
19
|
+
};
|
|
20
|
+
exports.staleCommentsOf = staleCommentsOf;
|
|
21
|
+
/** An open comment made on a sketch that was merged, discarded or replaced: it needs a reply or the user's resolve, but blocks nothing. */
|
|
22
|
+
const goneSketchCommentWarningsOf = (product) => (0, comment_1.listComments)({ productDir: product.dir, product: product.name }).comments.flatMap((comment) => {
|
|
23
|
+
var _a;
|
|
24
|
+
return (0, comment_1.sketchGoneOf)({ product, comment })
|
|
25
|
+
? [
|
|
26
|
+
`COMMENT ${(0, path_1.relative)(product.dir, comment.file)}: the sketch on ${(_a = comment.sketch) === null || _a === void 0 ? void 0 : _a.target} no longer exists - reply with \`comment reply --by\`, or the user resolves the comment in Studio`,
|
|
27
|
+
]
|
|
28
|
+
: [];
|
|
29
|
+
});
|
|
30
|
+
exports.goneSketchCommentWarningsOf = goneSketchCommentWarningsOf;
|
|
31
|
+
/** A note whose part, state or size is gone, a pointed note without a size, and a note file that cannot be read. */
|
|
32
|
+
const staleNotesOf = (product) => {
|
|
33
|
+
const { notes, unreadable } = (0, note_1.listNotes)(product.dir);
|
|
34
|
+
return [
|
|
35
|
+
...unreadable.map(({ file, problem }) => ({ rule: 'NOTE', file, message: problem })),
|
|
36
|
+
...notes.flatMap((note) => {
|
|
37
|
+
const gone = (0, note_1.noteProblemOf)({ product, note });
|
|
38
|
+
if (!gone)
|
|
39
|
+
return [];
|
|
40
|
+
return [
|
|
41
|
+
{
|
|
42
|
+
rule: 'NOTE',
|
|
43
|
+
file: note.file,
|
|
44
|
+
message: gone === note_1.MISSING_NOTE_SIZE ? gone : `${gone} - move or drop the note`,
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
}),
|
|
48
|
+
];
|
|
49
|
+
};
|
|
50
|
+
exports.staleNotesOf = staleNotesOf;
|
|
51
|
+
//# sourceMappingURL=stale-comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-comment.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/stale-comment.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAChC,iDAAgF;AAChF,wCAA4E;AAI5E,iHAAiH;AAC1G,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAa,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAElG,OAAO;QACL,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACvF,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,IAAI,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAC;YAElD,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAEnD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,+BAA+B,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpH,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,eAAe,mBAa1B;AAEF,2IAA2I;AACpI,MAAM,2BAA2B,GAAG,CAAC,OAAwB,EAAY,EAAE,CAChF,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;;IAC5F,OAAA,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QAChC,CAAC,CAAC;YACE,WAAW,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,MAAA,OAAO,CAAC,MAAM,0CAAE,MAAM,mGAAmG;SAC3L;QACH,CAAC,CAAC,EAAE,CAAA;CAAA,CACP,CAAC;AAPS,QAAA,2BAA2B,+BAOpC;AAEJ,oHAAoH;AAC7G,MAAM,YAAY,GAAG,CAAC,OAAwB,EAAa,EAAE;IAClE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAA,gBAAS,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErD,OAAO;QACL,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACpF,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,IAAA,oBAAa,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9C,IAAI,CAAC,IAAI;gBAAE,OAAO,EAAE,CAAC;YAErB,OAAO;gBACL;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI,KAAK,wBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,0BAA0B;iBAC/E;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,YAAY,gBAmBvB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Problem } from '../problem';
|
|
2
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
3
|
+
/** A `.replace` or `.replaceAll` on markup that neither the part nor any part it uses draws, so it changes nothing. */
|
|
4
|
+
export declare const staleReplacesOf: (product: ResolvedProduct) => Problem[];
|
|
@@ -0,0 +1,65 @@
|
|
|
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.staleReplacesOf = 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 REPLACE_METHODS = new Set(['replace', 'replaceAll']);
|
|
11
|
+
const matcherOf = (pattern) => {
|
|
12
|
+
if (typescript_1.default.isStringLiteral(pattern) || typescript_1.default.isNoSubstitutionTemplateLiteral(pattern)) {
|
|
13
|
+
const text = pattern.text;
|
|
14
|
+
return { label: `'${text}'`, matches: (source) => source.includes(text) };
|
|
15
|
+
}
|
|
16
|
+
if (!typescript_1.default.isRegularExpressionLiteral(pattern))
|
|
17
|
+
return null;
|
|
18
|
+
const slash = pattern.text.lastIndexOf('/');
|
|
19
|
+
try {
|
|
20
|
+
const regex = new RegExp(pattern.text.slice(1, slash), pattern.text.slice(slash + 1).replace(/[gy]/g, ''));
|
|
21
|
+
return { label: pattern.text, matches: (source) => regex.test(source) };
|
|
22
|
+
}
|
|
23
|
+
catch (_a) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const replacesOf = (source) => {
|
|
28
|
+
const replaces = [];
|
|
29
|
+
const visit = (node) => {
|
|
30
|
+
if (typescript_1.default.isCallExpression(node) &&
|
|
31
|
+
typescript_1.default.isPropertyAccessExpression(node.expression) &&
|
|
32
|
+
REPLACE_METHODS.has(node.expression.name.text) &&
|
|
33
|
+
node.arguments[0]) {
|
|
34
|
+
const matcher = matcherOf(node.arguments[0]);
|
|
35
|
+
if (matcher && matcher.label.includes('<'))
|
|
36
|
+
replaces.push(Object.assign({ method: node.expression.name.text, start: node.arguments[0].getStart(), end: node.arguments[0].getEnd() }, matcher));
|
|
37
|
+
}
|
|
38
|
+
typescript_1.default.forEachChild(node, visit);
|
|
39
|
+
};
|
|
40
|
+
visit(typescript_1.default.createSourceFile('part.ts', source, typescript_1.default.ScriptTarget.Latest, true));
|
|
41
|
+
return replaces.sort((a, b) => a.start - b.start);
|
|
42
|
+
};
|
|
43
|
+
const modulesOf = (part) => [{ file: part.file, source: part.source }, ...(0, imports_1.folderModulesOf)(part)];
|
|
44
|
+
const withoutPatterns = (source) => replacesOf(source)
|
|
45
|
+
.reverse()
|
|
46
|
+
.reduce((text, { start, end }) => text.slice(0, start) + text.slice(end), source);
|
|
47
|
+
/** A `.replace` or `.replaceAll` on markup that neither the part nor any part it uses draws, so it changes nothing. */
|
|
48
|
+
const staleReplacesOf = (product) => product.parts.flatMap((part) => {
|
|
49
|
+
const own = modulesOf(part);
|
|
50
|
+
const replaces = own.flatMap((module) => replacesOf(module.source).map((replace) => ({ module, replace })));
|
|
51
|
+
if (replaces.length === 0)
|
|
52
|
+
return [];
|
|
53
|
+
const used = (0, imports_1.partsReachedFrom)({ product, from: part });
|
|
54
|
+
const sources = [...own, ...used.flatMap(modulesOf)].map((module) => withoutPatterns(module.source));
|
|
55
|
+
const scope = `${(0, resolve_product_1.partKeyOf)(part)}${used.length > 0 ? ` or the parts it uses (${used.map(resolve_product_1.partKeyOf).join(', ')})` : ''}`;
|
|
56
|
+
return replaces
|
|
57
|
+
.filter(({ replace }) => !sources.some((source) => replace.matches(source)))
|
|
58
|
+
.map(({ module, replace }) => ({
|
|
59
|
+
rule: 'STALE-REPLACE',
|
|
60
|
+
file: module.file,
|
|
61
|
+
message: `${replace.method}(${replace.label}) matches no markup of ${scope}, so it changes nothing`,
|
|
62
|
+
}));
|
|
63
|
+
});
|
|
64
|
+
exports.staleReplacesOf = staleReplacesOf;
|
|
65
|
+
//# sourceMappingURL=stale-replace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stale-replace.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/stale-replace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Problem } from '../problem';
|
|
2
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
3
|
+
/** An SVG in the product's `assets/`, or in a sketch variant's own `assets/` when the product is one, that is not a usable SVG. */
|
|
4
|
+
export declare const badSvgAssetsOf: (product: ResolvedProduct & {
|
|
5
|
+
assetsDir?: string;
|
|
6
|
+
}) => Problem[];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.badSvgAssetsOf = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const assets_1 = require("../assets");
|
|
7
|
+
const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
|
|
8
|
+
const ROOT_SVG = /<svg\b(?:[^>"']|"[^"]*"|'[^']*')*>/u;
|
|
9
|
+
const XMLNS = /\sxmlns\s*=\s*(["'])(.*?)\1/u;
|
|
10
|
+
const problemOf = (source) => {
|
|
11
|
+
var _a;
|
|
12
|
+
const root = ROOT_SVG.exec(source.replace(/<!--[\s\S]*?-->/gu, ''));
|
|
13
|
+
if (!root)
|
|
14
|
+
return 'has no root <svg> element';
|
|
15
|
+
return ((_a = XMLNS.exec(root[0])) === null || _a === void 0 ? void 0 : _a[2]) === SVG_NAMESPACE
|
|
16
|
+
? null
|
|
17
|
+
: `the root <svg> has no xmlns="${SVG_NAMESPACE}" - an image viewer or <img src> does not draw it`;
|
|
18
|
+
};
|
|
19
|
+
/** An SVG in the product's `assets/`, or in a sketch variant's own `assets/` when the product is one, that is not a usable SVG. */
|
|
20
|
+
const badSvgAssetsOf = (product) => {
|
|
21
|
+
var _a;
|
|
22
|
+
return (0, assets_1.filesBelow)((_a = product.assetsDir) !== null && _a !== void 0 ? _a : (0, path_1.resolve)(product.dir, assets_1.ASSETS_FOLDER))
|
|
23
|
+
.filter((file) => file.endsWith('.svg'))
|
|
24
|
+
.flatMap((file) => {
|
|
25
|
+
const message = problemOf((0, fs_1.readFileSync)(file, 'utf8'));
|
|
26
|
+
return message ? [{ rule: 'SVG-ASSET', file, message }] : [];
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.badSvgAssetsOf = badSvgAssetsOf;
|
|
30
|
+
//# sourceMappingURL=svg-asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg-asset.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/svg-asset.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,+BAA+B;AAC/B,sCAAsD;AAItD,MAAM,aAAa,GAAG,4BAA4B,CAAC;AACnD,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AACvD,MAAM,KAAK,GAAG,8BAA8B,CAAC;AAE7C,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE;;IACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpE,IAAI,CAAC,IAAI;QAAE,OAAO,2BAA2B,CAAC;IAE9C,OAAO,CAAA,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0CAAG,CAAC,CAAC,MAAK,aAAa;QAC/C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,gCAAgC,aAAa,mDAAmD,CAAC;AACvG,CAAC,CAAC;AAEF,mIAAmI;AAC5H,MAAM,cAAc,GAAG,CAAC,OAAiD,EAAa,EAAE;;IAC7F,OAAA,IAAA,mBAAU,EAAC,MAAA,OAAO,CAAC,SAAS,mCAAI,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,sBAAa,CAAC,CAAC;SACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACvC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAEtD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAA;CAAA,CAAC;AAPM,QAAA,cAAc,kBAOpB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
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.tokenSelectorsOf = void 0;
|
|
7
|
+
const postcss_1 = __importDefault(require("postcss"));
|
|
8
|
+
const postcss_selector_parser_1 = __importDefault(require("postcss-selector-parser"));
|
|
9
|
+
const resolve_product_1 = require("../resolve-product");
|
|
10
|
+
const sdkNode = (node) => {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
if (node.type === 'class')
|
|
13
|
+
return node.value.startsWith('et-');
|
|
14
|
+
if (node.type === 'attribute')
|
|
15
|
+
return (node.attribute === 'class' &&
|
|
16
|
+
!!((_a = node.value) === null || _a === void 0 ? void 0 : _a.startsWith('et-')) &&
|
|
17
|
+
['=', '~=', '^=', '*='].includes((_b = node.operator) !== null && _b !== void 0 ? _b : ''));
|
|
18
|
+
if (node.type === 'pseudo' && [':is', ':where'].includes(node.value))
|
|
19
|
+
return node.nodes.length > 0 && node.nodes.every((selector) => selector.nodes.some(sdkNode));
|
|
20
|
+
return false;
|
|
21
|
+
};
|
|
22
|
+
const allowedSelector = (selector, parentScoped) => {
|
|
23
|
+
if (selector.nodes.some(sdkNode))
|
|
24
|
+
return true;
|
|
25
|
+
if (parentScoped)
|
|
26
|
+
return true;
|
|
27
|
+
const nodes = selector.nodes.filter((node) => node.type !== 'comment');
|
|
28
|
+
return (nodes.length === 1 &&
|
|
29
|
+
nodes.some((node) => (node.type === 'tag' && ['html', 'body'].includes(node.value)) ||
|
|
30
|
+
(node.type === 'pseudo' && node.value === ':root')));
|
|
31
|
+
};
|
|
32
|
+
const selectorsOf = (rule) => {
|
|
33
|
+
try {
|
|
34
|
+
return (0, postcss_selector_parser_1.default)().astSync(rule.selector).nodes;
|
|
35
|
+
}
|
|
36
|
+
catch (_a) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const parentRuleOf = (rule) => {
|
|
41
|
+
let parent = rule.parent;
|
|
42
|
+
while (parent && parent.type !== 'rule')
|
|
43
|
+
parent = parent.parent;
|
|
44
|
+
return (parent === null || parent === void 0 ? void 0 : parent.type) === 'rule' ? parent : undefined;
|
|
45
|
+
};
|
|
46
|
+
const sdkScoped = (rule) => {
|
|
47
|
+
const selectors = selectorsOf(rule);
|
|
48
|
+
const parentRule = parentRuleOf(rule);
|
|
49
|
+
const parent = parentRule ? sdkScoped(parentRule) : false;
|
|
50
|
+
return selectors.length > 0 && selectors.every((selector) => selector.nodes.some(sdkNode) || parent);
|
|
51
|
+
};
|
|
52
|
+
const tokenSelectorsOf = (product) => {
|
|
53
|
+
const tokens = new Set((0, resolve_product_1.tokenPartsOf)(product.config));
|
|
54
|
+
return product.parts
|
|
55
|
+
.filter((part) => tokens.has((0, resolve_product_1.partKeyOf)(part)) && part.css && part.cssSource !== null)
|
|
56
|
+
.flatMap((part) => {
|
|
57
|
+
var _a;
|
|
58
|
+
let root;
|
|
59
|
+
try {
|
|
60
|
+
root = postcss_1.default.parse((_a = part.cssSource) !== null && _a !== void 0 ? _a : '');
|
|
61
|
+
}
|
|
62
|
+
catch (_b) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const problems = [];
|
|
66
|
+
root.walkRules((rule) => {
|
|
67
|
+
var _a;
|
|
68
|
+
for (let ancestor = rule.parent; ancestor; ancestor = ancestor.parent) {
|
|
69
|
+
if (ancestor.type === 'atrule' && /^(?:-\w+-)?keyframes$/u.test(ancestor.name))
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const parentRule = parentRuleOf(rule);
|
|
73
|
+
const parent = parentRule ? sdkScoped(parentRule) : false;
|
|
74
|
+
for (const selector of selectorsOf(rule)) {
|
|
75
|
+
if (!allowedSelector(selector, parent))
|
|
76
|
+
problems.push({
|
|
77
|
+
rule: 'TOKEN-SELECTOR',
|
|
78
|
+
file: (_a = part.css) !== null && _a !== void 0 ? _a : part.file,
|
|
79
|
+
message: `${selector.toString().trim()} in a globally loaded token stylesheet may affect other parts`,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return problems;
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
exports.tokenSelectorsOf = tokenSelectorsOf;
|
|
87
|
+
//# sourceMappingURL=token-selectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-selectors.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/token-selectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SharedDirs } from '../imports';
|
|
2
|
+
import { Problem } from '../problem';
|
|
3
|
+
import { ResolvedProduct } from '../resolve-product';
|
|
4
|
+
/**
|
|
5
|
+
* Finds undefined tokens in part stylesheets and their reachable relative, shared and system imports.
|
|
6
|
+
* Fallbacks and SDK runtime `--et-*` tokens are permitted.
|
|
7
|
+
*/
|
|
8
|
+
export declare const undefinedTokensOf: (product: ResolvedProduct & SharedDirs) => Problem[];
|
|
@@ -0,0 +1,103 @@
|
|
|
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.undefinedTokensOf = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const postcss_1 = __importDefault(require("postcss"));
|
|
10
|
+
const vite_paths_1 = require("../../vite-paths");
|
|
11
|
+
const css_source_1 = require("../css-source");
|
|
12
|
+
const imports_1 = require("../imports");
|
|
13
|
+
const resolve_product_1 = require("../resolve-product");
|
|
14
|
+
const ts_source_1 = require("../ts-source");
|
|
15
|
+
const RUNTIME_PREFIX = '--et-';
|
|
16
|
+
const stylesTextsOf = (source) => {
|
|
17
|
+
var _a;
|
|
18
|
+
const root = (0, path_1.resolve)((0, path_1.dirname)(source.configFile), '../..');
|
|
19
|
+
return ((_a = source.config.styles) !== null && _a !== void 0 ? _a : [])
|
|
20
|
+
.map((style) => (0, path_1.resolve)(root, style))
|
|
21
|
+
.filter((file) => (0, fs_1.existsSync)(file))
|
|
22
|
+
.map((file) => (0, fs_1.readFileSync)(file, 'utf8'));
|
|
23
|
+
};
|
|
24
|
+
const stylesheetImportsOf = (css) => {
|
|
25
|
+
const imports = [];
|
|
26
|
+
try {
|
|
27
|
+
postcss_1.default.parse(css).walkAtRules('import', (rule) => {
|
|
28
|
+
var _a;
|
|
29
|
+
const match = /^(?:url\(\s*)?(?:['"]([^'"]+)['"]|([^'"\s)]+))/u.exec(rule.params.trim());
|
|
30
|
+
const specifier = (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : match === null || match === void 0 ? void 0 : match[2];
|
|
31
|
+
if (specifier)
|
|
32
|
+
imports.push(specifier);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (_a) {
|
|
36
|
+
return [];
|
|
37
|
+
}
|
|
38
|
+
return imports;
|
|
39
|
+
};
|
|
40
|
+
const reachableFilesOf = (product) => {
|
|
41
|
+
var _a, _b, _c;
|
|
42
|
+
const parts = new Map(product.parts.map((part) => [(0, resolve_product_1.partKeyOf)(part), part]));
|
|
43
|
+
const files = new Map();
|
|
44
|
+
const queue = product.parts.flatMap((part) => [part.file, ...(part.css ? [part.css] : [])]);
|
|
45
|
+
for (let file = queue.shift(); file !== undefined; file = queue.shift()) {
|
|
46
|
+
if (files.has(file) || !(0, fs_1.existsSync)(file))
|
|
47
|
+
continue;
|
|
48
|
+
const source = (0, fs_1.readFileSync)(file, 'utf8');
|
|
49
|
+
files.set(file, source);
|
|
50
|
+
const specifiers = file.endsWith('.css') ? stylesheetImportsOf(source) : (0, ts_source_1.importsOf)(source);
|
|
51
|
+
for (const specifier of specifiers) {
|
|
52
|
+
const imported = (0, imports_1.classifyImport)(specifier);
|
|
53
|
+
let found = null;
|
|
54
|
+
if (imported.kind === 'relative') {
|
|
55
|
+
const path = (0, path_1.resolve)((0, path_1.dirname)(file), (_a = specifier.split('?')[0]) !== null && _a !== void 0 ? _a : specifier);
|
|
56
|
+
found = path.endsWith('.css') ? ((0, fs_1.existsSync)(path) ? path : null) : (0, vite_paths_1.sourceFileOf)(path);
|
|
57
|
+
}
|
|
58
|
+
else if (imported.kind === 'shared') {
|
|
59
|
+
found = (0, imports_1.sharedFileOf)({ dirs: (0, imports_1.sharedDirsOf)(product), path: imported.path });
|
|
60
|
+
}
|
|
61
|
+
else if (imported.kind === 'part') {
|
|
62
|
+
const part = parts.get((0, resolve_product_1.partKeyOf)(imported));
|
|
63
|
+
found = imported.stylesheet ? ((_b = part === null || part === void 0 ? void 0 : part.css) !== null && _b !== void 0 ? _b : null) : ((_c = part === null || part === void 0 ? void 0 : part.file) !== null && _c !== void 0 ? _c : null);
|
|
64
|
+
}
|
|
65
|
+
if (found && !files.has(found))
|
|
66
|
+
queue.push(found);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return files;
|
|
70
|
+
};
|
|
71
|
+
const folderTextsOf = (dir) => (0, fs_1.existsSync)(dir)
|
|
72
|
+
? (0, fs_1.readdirSync)(dir, { recursive: true })
|
|
73
|
+
.filter((path) => /\.(ts|css)$/u.test(path))
|
|
74
|
+
.map((path) => (0, fs_1.readFileSync)((0, path_1.resolve)(dir, path), 'utf8'))
|
|
75
|
+
: [];
|
|
76
|
+
const definedTokensOf = (product, files) => {
|
|
77
|
+
const texts = [
|
|
78
|
+
...product.parts.flatMap((part) => [part.source, ...folderTextsOf((0, path_1.dirname)(part.file))]),
|
|
79
|
+
...files.values(),
|
|
80
|
+
...stylesTextsOf(product),
|
|
81
|
+
...(product.base ? stylesTextsOf(product.base) : []),
|
|
82
|
+
];
|
|
83
|
+
return new Set(texts.flatMap((text) => [...text.matchAll(/(--[\w-]+)['"]?\s*:/g)].map((match) => { var _a; return (_a = match[1]) !== null && _a !== void 0 ? _a : ''; })));
|
|
84
|
+
};
|
|
85
|
+
const usedTokensOf = (css) => (0, css_source_1.cssBlocksOf)(css).declarations.flatMap((declaration) => { var _a; return [...((_a = (0, css_source_1.declarationValueOf)(declaration)) !== null && _a !== void 0 ? _a : '').matchAll(/var\(\s*(--[\w-]+)\s*\)/g)].map((match) => { var _a; return (_a = match[1]) !== null && _a !== void 0 ? _a : ''; }); });
|
|
86
|
+
const stylesheetProblemsOf = (options) => [...new Set(usedTokensOf(options.css))]
|
|
87
|
+
.filter((token) => !options.defined.has(token) && !token.startsWith(RUNTIME_PREFIX))
|
|
88
|
+
.map((token) => ({
|
|
89
|
+
rule: 'UNDEFINED-TOKEN',
|
|
90
|
+
file: options.file,
|
|
91
|
+
message: `var(${token}) has no fallback, and no stylesheet of the product or its base defines ${token}`,
|
|
92
|
+
}));
|
|
93
|
+
/**
|
|
94
|
+
* Finds undefined tokens in part stylesheets and their reachable relative, shared and system imports.
|
|
95
|
+
* Fallbacks and SDK runtime `--et-*` tokens are permitted.
|
|
96
|
+
*/
|
|
97
|
+
const undefinedTokensOf = (product) => {
|
|
98
|
+
const files = reachableFilesOf(product);
|
|
99
|
+
const defined = definedTokensOf(product, files);
|
|
100
|
+
return [...files].flatMap(([file, source]) => file.endsWith('.css') ? stylesheetProblemsOf({ file, css: source, defined }) : []);
|
|
101
|
+
};
|
|
102
|
+
exports.undefinedTokensOf = undefinedTokensOf;
|
|
103
|
+
//# sourceMappingURL=undefined-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undefined-token.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/lib/design/system/rules/undefined-token.ts"],"names":[],"mappings":"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"}
|