Skip to content

Commit 8ce5e9f

Browse files
committed
[tsconfig.json] Enforce that type-only imports must be used with import type.
Thanks to microsoft/TypeScript#9191 (comment) for the tip.
1 parent bdd55b1 commit 8ce5e9f

File tree

7 files changed

+30
-43
lines changed

7 files changed

+30
-43
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# https://github.com/lgarron/Makefile-scripts
33

44
# Note: the first command becomes the default `make` target.
5-
NPM_COMMANDS = build build-esm build-cjs build-bundle-global build-types build-bin build-experimental-splitting-build generate-js generate-js-parsers generate-js-svg dev clean test test-jest test-node-require test-node-import format setup lint prepack parcel-build-for-twizzle-net parcel-build-for-vr-cubing-net parcel-build-for-experiments-cubing-net parcel-build-for-twizzle-diaries
5+
NPM_COMMANDS = build build-esm build-cjs build-bundle-global build-types build-bin build-experimental-splitting-build build-tsc generate-js generate-js-parsers generate-js-svg dev clean test test-jest test-node-require test-node-import format setup lint prepack parcel-build-for-twizzle-net parcel-build-for-vr-cubing-net parcel-build-for-experiments-cubing-net parcel-build-for-twizzle-diaries
66

77
.PHONY: $(NPM_COMMANDS)
88
$(NPM_COMMANDS):

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,13 @@
5353
"build-types": "npx tsc src/cubing/*.ts src/cubing/**/*.ts --declaration --emitDeclarationOnly --outDir dist/types --target es2015 --module es2020 --moduleResolution node --lib esnext,dom --resolveJsonModule --allowJs --allowSyntheticDefaultImports # TODO: unify with tsconfig.json",
5454
"build-bin": "npx esbuild --target=es2015 --bundle --external:three --format=esm --outfile=dist/bin/puzzle-geometry-bin.js src/bin/puzzle-geometry-bin.ts",
5555
"build-experimental-splitting-build": "node src/make/build.js",
56+
"build-tsc": "npx tsc --build ./tsconfig.json",
5657
"generate-js": "npm run generate-js-parsers && npm run generate-js-svg",
5758
"generate-js-parsers": "npx pegjs src/cubing/alg/parser/parser-pegjs.pegjs && npx pegjs src/cubing/kpuzzle/parser/parser-pegjs.pegjs",
5859
"generate-js-svg": "echo \"TODO: Generating JS for SVGs is not implemented yet.\"",
5960
"dev": "npm run clean && npx parcel serve --no-autoinstall src/demo/index.html --port 3333 --open --dist-dir /tmp/cubing-js-parcel # cleaning is a workaround for one set of Parcel bugs, /tmp dir is a workaround dir for other Parcel bugs",
6061
"clean": "rm -rf dist .cache .parcel-cache .rpt2_cache /tmp/cubing-js-parcel",
61-
"test": "npm run test-jest && npm run lint && npm run build-experimental-splitting-build",
62+
"test": "npm run test-jest && npm run lint && npm run build-experimental-splitting-build && npm run build",
6263
"test-jest": "npx jest --collectCoverage",
6364
"test-node-require": "node src/dist-test/require.cjs",
6465
"test-node-import": "node src/dist-test/import.mjs",

src/cubing/puzzle-geometry/PuzzleGeometry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { Move, QuantumMove } from "../alg";
77
import { FaceNameSwizzler } from "./FaceNameSwizzler";
8-
import {
8+
import type {
99
MoveNotation,
1010
PGVendoredKPuzzleDefinition,
1111
Transformation as KTransformation,

src/cubing/twisty/3D/puzzles/TwistyTestBox.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { Twisty3DPuzzle } from "./Twisty3DPuzzle";
1+
import type { Twisty3DPuzzle } from "./Twisty3DPuzzle";
22
import { BoxGeometry, MeshBasicMaterial, Object3D, Mesh } from "three";
3-
import { AlgCursor } from "../../animation/cursor/AlgCursor";
4-
import { PuzzlePosition } from "../../animation/indexer/CursorTypes";
3+
import type { AlgCursor } from "../../animation/cursor/AlgCursor";
4+
import type { PuzzlePosition } from "../../animation/cursor/CursorTypes";
55

66
export class TwistyTestBox extends Object3D implements Twisty3DPuzzle {
77
constructor(cursor: AlgCursor) {

src/cubing/twisty/animation/cursor/CursorTypes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Move } from "../../../alg";
2-
import { Transformation as KPuzzleState } from "../../../kpuzzle";
1+
import type { Move } from "../../../alg";
2+
import type { Transformation as KPuzzleState } from "../../../kpuzzle";
33

44
export type MillisecondTimestamp = number;
55

src/cubing/twisty/animation/stream/timeline-move-calculation-draft.ts

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import { BlockMove } from "../../../alg";
2-
import { experimentalBlockQuantumMoveName } from "../../../alg/traversal";
3-
import { Duration, Timestamp } from "../cursor/CursorTypes";
1+
import { Move, QuantumMove } from "../../../alg";
2+
import type { Duration, Timestamp } from "../cursor/CursorTypes";
43

54
interface Event {
65
timeStamp: Timestamp;
7-
move: BlockMove;
6+
move: Move;
87
}
98

109
export interface TimelineEntry {
@@ -15,7 +14,7 @@ export interface TimelineEntry {
1514

1615
type Timeline = TimelineEntry[];
1716

18-
function isSameAxis(move1: BlockMove, move2: BlockMove): boolean {
17+
function isSameAxis(move1: Move, move2: Move): boolean {
1918
const familyRoots =
2019
move1.family[0].toLowerCase() + move2.family[0].toLowerCase();
2120
// console.log(familyRoots);
@@ -50,10 +49,7 @@ export function toAxes(
5049
end: event.timeStamp + diameterMs / 2,
5150
};
5251
axes.push([lastEntry]);
53-
axisMoveTracker.set(
54-
experimentalBlockQuantumMoveName(lastEntry.event.move),
55-
lastEntry,
56-
);
52+
axisMoveTracker.set(lastEntry.event.move.quantum.toString(), lastEntry);
5753
continue;
5854
}
5955
const newEntry: TimelineEntry = {
@@ -62,21 +58,23 @@ export function toAxes(
6258
end: event.timeStamp + diameterMs / 2,
6359
};
6460
if (isSameAxis(lastEntry.event.move, event.move)) {
65-
const quarterName = experimentalBlockQuantumMoveName(newEntry.event.move);
61+
const quarterName = newEntry.event.move.quantum.toString();
6662
// console.log(quarterName);
6763
const prev = axisMoveTracker.get(quarterName);
6864
// console.log("prev", prev);
6965
if (
7066
prev &&
7167
prev.end > newEntry.start &&
7268
Math.sign(prev.event.move.amount) ===
73-
Math.sign(newEntry.event.move.amount)
69+
Math.sign(newEntry.event.move.effectiveAmount)
7470
) {
75-
prev.event.move = new BlockMove(
76-
prev.event.move.outerLayer,
77-
prev.event.move.innerLayer,
78-
prev.event.move.family,
79-
prev.event.move.amount + newEntry.event.move.amount,
71+
prev.event.move = new Move(
72+
new QuantumMove(
73+
prev.event.move.family,
74+
prev.event.move.innerLayer,
75+
prev.event.move.outerLayer,
76+
),
77+
prev.event.move.amount + newEntry.event.move.effectiveAmount,
8078
);
8179
} else {
8280
axes[axes.length - 1].push(newEntry);
@@ -86,10 +84,7 @@ export function toAxes(
8684
// console.log("--", algPartToStringForTesting(newEntry.event.move));
8785
axes.push([newEntry]);
8886
axisMoveTracker.clear();
89-
axisMoveTracker.set(
90-
experimentalBlockQuantumMoveName(newEntry.event.move),
91-
newEntry,
92-
);
87+
axisMoveTracker.set(newEntry.event.move.quantum.toString(), newEntry);
9388
if (newEntry.start < lastEntry.end) {
9489
const midpoint = (newEntry.start + lastEntry.end) / 2;
9590
newEntry.start = midpoint;

tsconfig.json

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@
22
"compilerOptions": {
33
"alwaysStrict": true,
44
"declaration": true,
5-
"declarationDir": "./dist",
5+
"declarationDir": "./dist/tsc",
66
"declarationMap": true,
77
"downlevelIteration": true,
88
"esModuleInterop": true,
9-
"lib": [
10-
"esnext",
11-
"dom"
12-
],
9+
"lib": ["esnext", "dom"],
1310
"moduleResolution": "node",
1411
"noImplicitAny": true,
1512
"noImplicitReturns": true,
@@ -19,15 +16,9 @@
1916
"strictNullChecks": true,
2017
"target": "es2020",
2118
"module": "esnext",
22-
"resolveJsonModule": true
19+
"resolveJsonModule": true,
20+
"importsNotUsedAsValues": "error"
2321
},
24-
"include": [
25-
"src/**/*",
26-
"*/index.d.ts",
27-
"*/index.js"
28-
],
29-
"exclude": [
30-
"/node_modules",
31-
"/dist"
32-
]
22+
"include": ["src/**/*", "*/index.d.ts", "*/index.js"],
23+
"exclude": ["/node_modules", "/dist", "/src/dist-static"]
3324
}

0 commit comments

Comments
 (0)