Skip to content

Commit b79ea28

Browse files
committed
merge main
2 parents 1a0d27f + dfa6994 commit b79ea28

3 files changed

Lines changed: 242 additions & 4 deletions

File tree

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
"coverage": "vitest run --coverage",
4646
"storybook": "storybook dev -p 6006",
4747
"build-storybook": "storybook build",
48-
"deploy-storybook": "gh-pages -d storybook-static"
48+
"deploy-storybook": "gh-pages -d storybook-static",
49+
"sync-to-compass": "ts-node scripts/sync-to-compass.ts"
4950
},
5051
"dependencies": {
5152
"@emotion/react": "^11.14.0",
@@ -94,6 +95,7 @@
9495
"jsdom": "20.0.3",
9596
"prettier": "3.6.2",
9697
"storybook": "^9.0.10",
98+
"ts-node": "^10.9.2",
9799
"typescript": "^5.8.3",
98100
"vite": "6.3.5",
99101
"vite-plugin-css-injected-by-js": "^3.5.2",

scripts/sync-to-compass.ts

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#!/usr/bin/env ts-node
2+
3+
/* eslint-disable no-console */
4+
const fs = require('fs');
5+
const path = require('path');
6+
const child_process = require('child_process');
7+
8+
// This script is used to sync the built diagramming package
9+
// to the local Compass to test while developing.
10+
11+
// For why we don't use npm link see:
12+
// https://github.com/mongodb-js/compass/blob/117c32f8ddd5d2bf4f8fceec5b324bf9866de66e/packages/compass-web/scripts/sync-dist-to-mms.js#L47-L52
13+
14+
if (!process.env.COMPASS_HOME) {
15+
throw new Error('Missing required environment variable $COMPASS_HOME.');
16+
}
17+
18+
const packageDir = path.resolve(__dirname, '..');
19+
const srcDir = path.resolve(__dirname, '..', 'src');
20+
const libDir = path.resolve(__dirname, '..', 'dist');
21+
22+
const destDir = path.dirname(
23+
child_process.execFileSync('node', ['-p', "require.resolve('@mongodb-js/diagramming')"], {
24+
cwd: process.env.COMPASS_HOME,
25+
encoding: 'utf-8',
26+
}),
27+
);
28+
29+
console.log({ packageDir, srcDir, libDir, destDir });
30+
31+
function debounce<T extends () => void>(
32+
fn: T,
33+
delay: number,
34+
options: { leading?: boolean; trailing?: boolean } = {},
35+
): () => void {
36+
let timeoutId: NodeJS.Timeout | null = null;
37+
let lastArgs: Parameters<T> | null = null;
38+
39+
return function (this: ThisParameterType<T>, ...args: Parameters<T>) {
40+
lastArgs = args;
41+
42+
const executeCall = () => {
43+
fn.apply(this, lastArgs as Parameters<T>);
44+
timeoutId = null;
45+
};
46+
47+
if (timeoutId === null && options.leading) {
48+
executeCall();
49+
}
50+
51+
if (timeoutId) {
52+
clearTimeout(timeoutId);
53+
}
54+
55+
if (options.trailing !== false) {
56+
timeoutId = setTimeout(executeCall, delay);
57+
}
58+
};
59+
}
60+
61+
const compileAndCopy = debounce(
62+
() => {
63+
try {
64+
child_process.execFileSync('yarn', ['build'], {
65+
cwd: packageDir,
66+
encoding: 'utf-8',
67+
});
68+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
69+
} catch (err: any) {
70+
if (err.code) {
71+
// Spawning child process failed.
72+
console.error(err.code);
73+
} else {
74+
// Child was spawned but exited with non-zero exit code.
75+
// Error contains any stdout and stderr from the child.
76+
const { stdout, stderr } = err;
77+
78+
console.log(stdout);
79+
console.error(stderr);
80+
}
81+
}
82+
fs.cpSync(libDir, destDir, { recursive: true });
83+
console.log('done.');
84+
},
85+
1_000,
86+
{
87+
leading: true,
88+
trailing: true,
89+
},
90+
);
91+
92+
const srcWatcher = fs.watch(srcDir, { recursive: true }, (eventType: string, filename: string) => {
93+
console.log(eventType, filename);
94+
compileAndCopy();
95+
});
96+
97+
function cleanup() {
98+
srcWatcher.close();
99+
}
100+
101+
for (const evt of ['SIGINT', 'SIGTERM']) {
102+
process.on(evt, cleanup);
103+
}
104+
105+
// Run an initial copy on startup.
106+
compileAndCopy();

yarn.lock

Lines changed: 133 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,15 @@ __metadata:
255255
languageName: node
256256
linkType: hard
257257

258+
"@cspotcode/source-map-support@npm:^0.8.0":
259+
version: 0.8.1
260+
resolution: "@cspotcode/source-map-support@npm:0.8.1"
261+
dependencies:
262+
"@jridgewell/trace-mapping": "npm:0.3.9"
263+
checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6
264+
languageName: node
265+
linkType: hard
266+
258267
"@cush/relative@npm:^1.0.0":
259268
version: 1.0.0
260269
resolution: "@cush/relative@npm:1.0.0"
@@ -1072,7 +1081,7 @@ __metadata:
10721081
languageName: node
10731082
linkType: hard
10741083

1075-
"@jridgewell/resolve-uri@npm:^3.1.0":
1084+
"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0":
10761085
version: 3.1.2
10771086
resolution: "@jridgewell/resolve-uri@npm:3.1.2"
10781087
checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e
@@ -1093,6 +1102,16 @@ __metadata:
10931102
languageName: node
10941103
linkType: hard
10951104

1105+
"@jridgewell/trace-mapping@npm:0.3.9":
1106+
version: 0.3.9
1107+
resolution: "@jridgewell/trace-mapping@npm:0.3.9"
1108+
dependencies:
1109+
"@jridgewell/resolve-uri": "npm:^3.0.3"
1110+
"@jridgewell/sourcemap-codec": "npm:^1.4.10"
1111+
checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b
1112+
languageName: node
1113+
linkType: hard
1114+
10961115
"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25":
10971116
version: 0.3.25
10981117
resolution: "@jridgewell/trace-mapping@npm:0.3.25"
@@ -1302,6 +1321,7 @@ __metadata:
13021321
react: "npm:17.0.2"
13031322
react-dom: "npm:17.0.2"
13041323
storybook: "npm:^9.0.10"
1324+
ts-node: "npm:^10.9.2"
13051325
typescript: "npm:^5.8.3"
13061326
vite: "npm:6.3.5"
13071327
vite-plugin-css-injected-by-js: "npm:^3.5.2"
@@ -2105,6 +2125,34 @@ __metadata:
21052125
languageName: node
21062126
linkType: hard
21072127

2128+
"@tsconfig/node10@npm:^1.0.7":
2129+
version: 1.0.11
2130+
resolution: "@tsconfig/node10@npm:1.0.11"
2131+
checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c
2132+
languageName: node
2133+
linkType: hard
2134+
2135+
"@tsconfig/node12@npm:^1.0.7":
2136+
version: 1.0.11
2137+
resolution: "@tsconfig/node12@npm:1.0.11"
2138+
checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9
2139+
languageName: node
2140+
linkType: hard
2141+
2142+
"@tsconfig/node14@npm:^1.0.0":
2143+
version: 1.0.3
2144+
resolution: "@tsconfig/node14@npm:1.0.3"
2145+
checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44
2146+
languageName: node
2147+
linkType: hard
2148+
2149+
"@tsconfig/node16@npm:^1.0.2":
2150+
version: 1.0.4
2151+
resolution: "@tsconfig/node16@npm:1.0.4"
2152+
checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb
2153+
languageName: node
2154+
linkType: hard
2155+
21082156
"@tybys/wasm-util@npm:^0.9.0":
21092157
version: 0.9.0
21102158
resolution: "@tybys/wasm-util@npm:0.9.0"
@@ -3175,7 +3223,7 @@ __metadata:
31753223
languageName: node
31763224
linkType: hard
31773225

3178-
"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.2.0":
3226+
"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.2.0":
31793227
version: 8.3.4
31803228
resolution: "acorn-walk@npm:8.3.4"
31813229
dependencies:
@@ -3193,6 +3241,15 @@ __metadata:
31933241
languageName: node
31943242
linkType: hard
31953243

3244+
"acorn@npm:^8.4.1":
3245+
version: 8.15.0
3246+
resolution: "acorn@npm:8.15.0"
3247+
bin:
3248+
acorn: bin/acorn
3249+
checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec
3250+
languageName: node
3251+
linkType: hard
3252+
31963253
"agent-base@npm:6":
31973254
version: 6.0.2
31983255
resolution: "agent-base@npm:6.0.2"
@@ -3334,6 +3391,13 @@ __metadata:
33343391
languageName: node
33353392
linkType: hard
33363393

3394+
"arg@npm:^4.1.0":
3395+
version: 4.1.3
3396+
resolution: "arg@npm:4.1.3"
3397+
checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a
3398+
languageName: node
3399+
linkType: hard
3400+
33373401
"argparse@npm:^2.0.1":
33383402
version: 2.0.1
33393403
resolution: "argparse@npm:2.0.1"
@@ -4116,7 +4180,7 @@ __metadata:
41164180
languageName: node
41174181
linkType: hard
41184182

4119-
"create-require@npm:^1.1.1":
4183+
"create-require@npm:^1.1.0, create-require@npm:^1.1.1":
41204184
version: 1.1.1
41214185
resolution: "create-require@npm:1.1.1"
41224186
checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91
@@ -4473,6 +4537,13 @@ __metadata:
44734537
languageName: node
44744538
linkType: hard
44754539

4540+
"diff@npm:^4.0.1":
4541+
version: 4.0.2
4542+
resolution: "diff@npm:4.0.2"
4543+
checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1
4544+
languageName: node
4545+
linkType: hard
4546+
44764547
"diffie-hellman@npm:^5.0.3":
44774548
version: 5.0.3
44784549
resolution: "diffie-hellman@npm:5.0.3"
@@ -6965,6 +7036,13 @@ __metadata:
69657036
languageName: node
69667037
linkType: hard
69677038

7039+
"make-error@npm:^1.1.1":
7040+
version: 1.3.6
7041+
resolution: "make-error@npm:1.3.6"
7042+
checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f
7043+
languageName: node
7044+
linkType: hard
7045+
69687046
"make-fetch-happen@npm:^14.0.3":
69697047
version: 14.0.3
69707048
resolution: "make-fetch-happen@npm:14.0.3"
@@ -9290,6 +9368,44 @@ __metadata:
92909368
languageName: node
92919369
linkType: hard
92929370

9371+
"ts-node@npm:^10.9.2":
9372+
version: 10.9.2
9373+
resolution: "ts-node@npm:10.9.2"
9374+
dependencies:
9375+
"@cspotcode/source-map-support": "npm:^0.8.0"
9376+
"@tsconfig/node10": "npm:^1.0.7"
9377+
"@tsconfig/node12": "npm:^1.0.7"
9378+
"@tsconfig/node14": "npm:^1.0.0"
9379+
"@tsconfig/node16": "npm:^1.0.2"
9380+
acorn: "npm:^8.4.1"
9381+
acorn-walk: "npm:^8.1.1"
9382+
arg: "npm:^4.1.0"
9383+
create-require: "npm:^1.1.0"
9384+
diff: "npm:^4.0.1"
9385+
make-error: "npm:^1.1.1"
9386+
v8-compile-cache-lib: "npm:^3.0.1"
9387+
yn: "npm:3.1.1"
9388+
peerDependencies:
9389+
"@swc/core": ">=1.2.50"
9390+
"@swc/wasm": ">=1.2.50"
9391+
"@types/node": "*"
9392+
typescript: ">=2.7"
9393+
peerDependenciesMeta:
9394+
"@swc/core":
9395+
optional: true
9396+
"@swc/wasm":
9397+
optional: true
9398+
bin:
9399+
ts-node: dist/bin.js
9400+
ts-node-cwd: dist/bin-cwd.js
9401+
ts-node-esm: dist/bin-esm.js
9402+
ts-node-script: dist/bin-script.js
9403+
ts-node-transpile-only: dist/bin-transpile.js
9404+
ts-script: dist/bin-script-deprecated.js
9405+
checksum: 10c0/5f29938489f96982a25ba650b64218e83a3357d76f7bede80195c65ab44ad279c8357264639b7abdd5d7e75fc269a83daa0e9c62fd8637a3def67254ecc9ddc2
9406+
languageName: node
9407+
linkType: hard
9408+
92939409
"tsconfig-paths@npm:^3.15.0":
92949410
version: 3.15.0
92959411
resolution: "tsconfig-paths@npm:3.15.0"
@@ -9668,6 +9784,13 @@ __metadata:
96689784
languageName: node
96699785
linkType: hard
96709786

9787+
"v8-compile-cache-lib@npm:^3.0.1":
9788+
version: 3.0.1
9789+
resolution: "v8-compile-cache-lib@npm:3.0.1"
9790+
checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391
9791+
languageName: node
9792+
linkType: hard
9793+
96719794
"vite-node@npm:0.34.6":
96729795
version: 0.34.6
96739796
resolution: "vite-node@npm:0.34.6"
@@ -10202,6 +10325,13 @@ __metadata:
1020210325
languageName: node
1020310326
linkType: hard
1020410327

10328+
"yn@npm:3.1.1":
10329+
version: 3.1.1
10330+
resolution: "yn@npm:3.1.1"
10331+
checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443
10332+
languageName: node
10333+
linkType: hard
10334+
1020510335
"yocto-queue@npm:^0.1.0":
1020610336
version: 0.1.0
1020710337
resolution: "yocto-queue@npm:0.1.0"

0 commit comments

Comments
 (0)