@floomhq/floom 1.0.41 → 1.0.43
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/dist/sync-manifest.js +63 -1
- package/package.json +1 -1
package/dist/sync-manifest.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { constants } from "node:fs";
|
|
1
|
+
import { constants, rmSync } from "node:fs";
|
|
2
2
|
import { lstat, mkdir, open, rename, rm, stat } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { basename, dirname, join, relative, resolve, sep } from "node:path";
|
|
@@ -9,45 +9,87 @@ const LOCK_STALE_MS = 5 * 60_000;
|
|
|
9
9
|
const SLUG_RE = /^[A-Za-z0-9_-]{1,128}$/;
|
|
10
10
|
const FD_PATH_ROOT = "/proc/self/fd";
|
|
11
11
|
const SUPPORT_DIRS = new Set([
|
|
12
|
+
".github",
|
|
12
13
|
"agents",
|
|
13
14
|
"assets",
|
|
15
|
+
"bin",
|
|
14
16
|
"canvas-fonts",
|
|
15
17
|
"checks",
|
|
18
|
+
"claude",
|
|
16
19
|
"codex",
|
|
20
|
+
"contrib",
|
|
17
21
|
"core",
|
|
18
22
|
"cursor",
|
|
23
|
+
"design",
|
|
24
|
+
"docs",
|
|
19
25
|
"evidence",
|
|
20
26
|
"examples",
|
|
27
|
+
"extension",
|
|
21
28
|
"helpers",
|
|
29
|
+
"hosts",
|
|
22
30
|
"kimi",
|
|
31
|
+
"lib",
|
|
32
|
+
"migrations",
|
|
33
|
+
"model-overlays",
|
|
34
|
+
"openclaw",
|
|
23
35
|
"opencode",
|
|
24
36
|
"reference",
|
|
25
37
|
"references",
|
|
38
|
+
"remotion-starter",
|
|
26
39
|
"scripts",
|
|
27
40
|
"sdk",
|
|
28
41
|
"schemas",
|
|
42
|
+
"src",
|
|
43
|
+
"specialists",
|
|
44
|
+
"supabase",
|
|
29
45
|
"templates",
|
|
46
|
+
"test",
|
|
30
47
|
"tests",
|
|
31
48
|
"themes",
|
|
49
|
+
"vendor",
|
|
32
50
|
]);
|
|
33
51
|
const ROOT_SUPPORT_FILES = new Set([
|
|
34
52
|
".env.example",
|
|
35
53
|
"ACKNOWLEDGEMENTS.md",
|
|
54
|
+
"AGENTS.md",
|
|
55
|
+
"ARCHITECTURE.md",
|
|
56
|
+
"BROWSER.md",
|
|
36
57
|
"CHANGELOG.md",
|
|
58
|
+
"CLAUDE.md",
|
|
59
|
+
"CONTRIBUTING.md",
|
|
60
|
+
"DESIGN.md",
|
|
61
|
+
"ETHOS.md",
|
|
37
62
|
"LICENSE",
|
|
38
63
|
"LICENSE.md",
|
|
39
64
|
"LICENSE.txt",
|
|
65
|
+
"PLAN-snapshot-dropdown-interactive.md",
|
|
40
66
|
"README.md",
|
|
67
|
+
"REMOTION_PROTOCOL.md",
|
|
41
68
|
"SKILL.md.tmpl",
|
|
69
|
+
"TODOS.md",
|
|
70
|
+
"TODOS-format.md",
|
|
71
|
+
"USING_GBRAIN_WITH_GSTACK.md",
|
|
72
|
+
"VERSION",
|
|
73
|
+
".gitlab-ci.yml",
|
|
74
|
+
"actionlint.yaml",
|
|
75
|
+
"bun.lock",
|
|
76
|
+
"checklist.md",
|
|
77
|
+
"conductor.json",
|
|
78
|
+
"design-checklist.md",
|
|
79
|
+
"dx-hall-of-fame.md",
|
|
42
80
|
"editing.md",
|
|
43
81
|
"forms.md",
|
|
82
|
+
"greptile-triage.md",
|
|
44
83
|
"instructions.md",
|
|
45
84
|
"nanobanana.py",
|
|
85
|
+
"package.json",
|
|
46
86
|
"plan.md",
|
|
47
87
|
"pptxgenjs.md",
|
|
48
88
|
"reference.md",
|
|
49
89
|
"requirements.txt",
|
|
90
|
+
"setup",
|
|
50
91
|
"skill.md",
|
|
92
|
+
"slop-scan.config.json",
|
|
51
93
|
"style_guidelines.md",
|
|
52
94
|
"theme-showcase.pdf",
|
|
53
95
|
]);
|
|
@@ -218,10 +260,30 @@ export async function withSyncLock(fn) {
|
|
|
218
260
|
await new Promise((resolveDelay) => setTimeout(resolveDelay, 50));
|
|
219
261
|
}
|
|
220
262
|
}
|
|
263
|
+
const signalHandlers = new Map();
|
|
264
|
+
const cleanupSync = () => {
|
|
265
|
+
try {
|
|
266
|
+
rmSync(lockPath, { recursive: true, force: true });
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// Best-effort signal cleanup. The normal finally path reports real errors.
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
for (const signal of ["SIGINT", "SIGTERM"]) {
|
|
273
|
+
const handler = () => {
|
|
274
|
+
cleanupSync();
|
|
275
|
+
process.exit(signal === "SIGINT" ? 130 : 143);
|
|
276
|
+
};
|
|
277
|
+
signalHandlers.set(signal, handler);
|
|
278
|
+
process.once(signal, handler);
|
|
279
|
+
}
|
|
221
280
|
try {
|
|
222
281
|
return await fn();
|
|
223
282
|
}
|
|
224
283
|
finally {
|
|
284
|
+
for (const [signal, handler] of signalHandlers) {
|
|
285
|
+
process.off(signal, handler);
|
|
286
|
+
}
|
|
225
287
|
await rm(lockPath, { recursive: true, force: true }).catch(() => { });
|
|
226
288
|
}
|
|
227
289
|
}
|