@hewliyang/headless-spreadjs 0.0.7 → 0.0.9
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/README.md +118 -0
- package/dist/cli/client.d.ts +2 -2
- package/dist/cli/client.d.ts.map +1 -1
- package/dist/cli/client.js +7 -7
- package/dist/cli/client.js.map +1 -1
- package/dist/cli/commands/clear.d.ts.map +1 -1
- package/dist/cli/commands/clear.js +8 -1
- package/dist/cli/commands/clear.js.map +1 -1
- package/dist/cli/commands/copy.d.ts.map +1 -1
- package/dist/cli/commands/copy.js +10 -1
- package/dist/cli/commands/copy.js.map +1 -1
- package/dist/cli/commands/diff.d.ts.map +1 -1
- package/dist/cli/commands/diff.js +61 -0
- package/dist/cli/commands/diff.js.map +1 -1
- package/dist/cli/commands/eval.d.ts.map +1 -1
- package/dist/cli/commands/eval.js +148 -6
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +5 -2
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/set.d.ts +1 -0
- package/dist/cli/commands/set.d.ts.map +1 -1
- package/dist/cli/commands/set.js +123 -13
- package/dist/cli/commands/set.js.map +1 -1
- package/dist/cli/commands/watch.d.ts +24 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +223 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/context.d.ts +2 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +72 -23
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +232 -67
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/dispatch.d.ts +1 -1
- package/dist/cli/dispatch.d.ts.map +1 -1
- package/dist/cli/dispatch.js +32 -7
- package/dist/cli/dispatch.js.map +1 -1
- package/dist/cli/file-cache.d.ts +11 -0
- package/dist/cli/file-cache.d.ts.map +1 -1
- package/dist/cli/file-cache.js +22 -1
- package/dist/cli/file-cache.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +78 -8
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/sheet-size.d.ts +14 -0
- package/dist/cli/sheet-size.d.ts.map +1 -0
- package/dist/cli/sheet-size.js +20 -0
- package/dist/cli/sheet-size.js.map +1 -0
- package/dist/cli/styles.d.ts +11 -0
- package/dist/cli/styles.d.ts.map +1 -1
- package/dist/cli/styles.js +75 -0
- package/dist/cli/styles.js.map +1 -1
- package/dist/cli/watch-server.d.ts +34 -0
- package/dist/cli/watch-server.d.ts.map +1 -0
- package/dist/cli/watch-server.js +792 -0
- package/dist/cli/watch-server.js.map +1 -0
- package/dist/excel-file.d.ts.map +1 -1
- package/dist/excel-file.js +0 -21
- package/dist/excel-file.js.map +1 -1
- package/dist/hooks.d.ts +159 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +300 -0
- package/dist/hooks.js.map +1 -0
- package/package.json +9 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-server.js","sourceRoot":"","sources":["../../src/cli/watch-server.ts"],"names":[],"mappings":"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"}
|
package/dist/excel-file.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-file.d.ts","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"excel-file.d.ts","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAsJ9D,wBAAgB,KAAK,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAElD;AAED,qBAAa,SAAS;IACpB,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,4DAA4D;IACrD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE1B,QAAQ,CAAC,EAAE,cAAc;IAMrC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;IACxB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgCpC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,MAAM,IAAI,MAAM;IAIhB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;WAIf,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;WAS1C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CAKhE"}
|
package/dist/excel-file.js
CHANGED
|
@@ -110,26 +110,6 @@ function importWorkbook(bytes, gc) {
|
|
|
110
110
|
}, (err) => reject(err), { fileType: gc.Spread.Sheets.FileType.excel });
|
|
111
111
|
});
|
|
112
112
|
}
|
|
113
|
-
/**
|
|
114
|
-
* SpreadJS defaults to 200 rows × 20 columns and **silently drops**
|
|
115
|
-
* any writes outside that range. Expand every sheet in the workbook
|
|
116
|
-
* to the Excel-maximum so callers never hit this.
|
|
117
|
-
*
|
|
118
|
-
* Cost: ~16 MB heap + ~180 ms per workbook (one-time).
|
|
119
|
-
* File size is unaffected — SpreadJS only serializes populated cells.
|
|
120
|
-
*/
|
|
121
|
-
const EXCEL_MAX_ROWS = 1_048_576;
|
|
122
|
-
const EXCEL_MAX_COLS = 16_384;
|
|
123
|
-
function expandSheetDefaults(spread) {
|
|
124
|
-
const n = spread.getSheetCount();
|
|
125
|
-
for (let i = 0; i < n; i++) {
|
|
126
|
-
const s = spread.getSheet(i);
|
|
127
|
-
if (s.getRowCount() < EXCEL_MAX_ROWS)
|
|
128
|
-
s.setRowCount(EXCEL_MAX_ROWS);
|
|
129
|
-
if (s.getColumnCount() < EXCEL_MAX_COLS)
|
|
130
|
-
s.setColumnCount(EXCEL_MAX_COLS);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
113
|
export function setGC(gc) {
|
|
134
114
|
gcRef = gc;
|
|
135
115
|
}
|
|
@@ -140,7 +120,6 @@ export class ExcelFile {
|
|
|
140
120
|
constructor(workbook) {
|
|
141
121
|
const gc = getGC();
|
|
142
122
|
this.workbook = workbook ?? new gc.Spread.Sheets.Workbook();
|
|
143
|
-
expandSheetDefaults(this.workbook);
|
|
144
123
|
this.workbook.options.allowDynamicArray = true;
|
|
145
124
|
}
|
|
146
125
|
batch(fn) {
|
package/dist/excel-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"excel-file.js","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"excel-file.js","sourceRoot":"","sources":["../src/excel-file.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extension hook system for headless-spreadjs.
|
|
3
|
+
*
|
|
4
|
+
* Hooks allow users to run custom code at specific points in the CLI workflow.
|
|
5
|
+
* Common use cases include:
|
|
6
|
+
* - Applying formatting conventions (e.g., financial modeling colors)
|
|
7
|
+
* - Setting workbook defaults (e.g., hiding gridlines)
|
|
8
|
+
* - Validation and linting before/after save
|
|
9
|
+
* - Logging and auditing tool invocations
|
|
10
|
+
*
|
|
11
|
+
* Discovery:
|
|
12
|
+
* Hooks are auto-discovered from these locations (TypeScript via jiti):
|
|
13
|
+
* 1. ./.headless-spreadjs/hooks/*.{ts,js,mjs} (project-local, takes precedence)
|
|
14
|
+
* 2. ~/.headless-spreadjs/hooks/*.{ts,js,mjs} (global fallback)
|
|
15
|
+
*
|
|
16
|
+
* Discovery can be disabled with HSX_NO_HOOKS=1.
|
|
17
|
+
*
|
|
18
|
+
* Hook Points:
|
|
19
|
+
* - onOpen: Called after a workbook is opened/created, before the command runs
|
|
20
|
+
* - preSave: Called before each save() operation
|
|
21
|
+
* - postSave: Called after each save() operation
|
|
22
|
+
* - preCommand: Called before each CLI command (no workbook context)
|
|
23
|
+
* - postCommand: Called after each CLI command (no workbook context)
|
|
24
|
+
*
|
|
25
|
+
* Every workbook hook receives a HookContext with both command info and workbook access:
|
|
26
|
+
* ctx.command — "get", "set", "eval", etc.
|
|
27
|
+
* ctx.args — remaining CLI args after the command
|
|
28
|
+
* ctx.filePath — resolved path to the workbook file
|
|
29
|
+
* ctx.file — ExcelFile instance
|
|
30
|
+
* ctx.workbook — SpreadJS Workbook instance
|
|
31
|
+
* ctx.GC — GC.Spread.Sheets namespace
|
|
32
|
+
*
|
|
33
|
+
* Hook files export a default function that receives a HookAPI instance:
|
|
34
|
+
*
|
|
35
|
+
* // .headless-spreadjs/hooks/defaults.ts
|
|
36
|
+
* import type { HookAPI, HookContext } from "@hewliyang/headless-spreadjs/hooks";
|
|
37
|
+
*
|
|
38
|
+
* export default function (hsx: HookAPI) {
|
|
39
|
+
* hsx.on("onOpen", (ctx: HookContext) => {
|
|
40
|
+
* for (let i = 0; i < ctx.workbook.getSheetCount(); i++) {
|
|
41
|
+
* const sheet = ctx.workbook.getSheet(i);
|
|
42
|
+
* sheet.options.gridline = {
|
|
43
|
+
* showVerticalGridline: false,
|
|
44
|
+
* showHorizontalGridline: false,
|
|
45
|
+
* };
|
|
46
|
+
* }
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* hsx.on("preSave", (ctx: HookContext) => {
|
|
50
|
+
* const sheet = ctx.workbook.getActiveSheet();
|
|
51
|
+
* const rowCount = sheet.getUsedRange().rowCount;
|
|
52
|
+
* for (let r = 0; r < rowCount; r++) {
|
|
53
|
+
* const val = sheet.getValue(r, 0);
|
|
54
|
+
* if (typeof val === "number" && val < 0) {
|
|
55
|
+
* sheet.getCell(r, 0).foreColor("red");
|
|
56
|
+
* }
|
|
57
|
+
* }
|
|
58
|
+
* console.log(`Formatted ${ctx.filePath} (command: ${ctx.command})`);
|
|
59
|
+
* });
|
|
60
|
+
* }
|
|
61
|
+
*
|
|
62
|
+
* Output Configuration:
|
|
63
|
+
* Hook output is captured and prefixed. By default, output goes to stderr.
|
|
64
|
+
*
|
|
65
|
+
* hsx.on("preSave", { output: "stdout" }, (ctx) => { ... });
|
|
66
|
+
* hsx.on("preSave", { output: "none" }, (ctx) => { ... });
|
|
67
|
+
*/
|
|
68
|
+
import type { ExcelFile } from "./excel-file.js";
|
|
69
|
+
import type { GCNamespace, SpreadWorkbook } from "./types.js";
|
|
70
|
+
export interface MutatedRange {
|
|
71
|
+
/** Sheet name (undefined = active sheet at time of mutation) */
|
|
72
|
+
sheet?: string;
|
|
73
|
+
startRow: number;
|
|
74
|
+
startCol: number;
|
|
75
|
+
endRow: number;
|
|
76
|
+
endCol: number;
|
|
77
|
+
}
|
|
78
|
+
export interface HookContext {
|
|
79
|
+
/** CLI command name (e.g. "get", "set", "eval", "create") */
|
|
80
|
+
command: string;
|
|
81
|
+
/** CLI args after the command */
|
|
82
|
+
args: string[];
|
|
83
|
+
/** Resolved file path */
|
|
84
|
+
filePath: string;
|
|
85
|
+
/** ExcelFile wrapper */
|
|
86
|
+
file: ExcelFile;
|
|
87
|
+
/** SpreadJS Workbook instance — full API for reading/writing cells, styles, etc. */
|
|
88
|
+
workbook: SpreadWorkbook;
|
|
89
|
+
/** GC.Spread.Sheets namespace */
|
|
90
|
+
GC: GCNamespace;
|
|
91
|
+
/** Ranges mutated by the current command (empty for read-only commands or eval) */
|
|
92
|
+
mutatedRanges: MutatedRange[];
|
|
93
|
+
}
|
|
94
|
+
export type HookOutput = "stderr" | "stdout" | "none";
|
|
95
|
+
export interface PreCommandContext {
|
|
96
|
+
/** CLI command name (e.g. "get", "set", "eval", "create") */
|
|
97
|
+
command: string;
|
|
98
|
+
/** CLI args after the command */
|
|
99
|
+
args: string[];
|
|
100
|
+
}
|
|
101
|
+
export interface PostCommandContext extends PreCommandContext {
|
|
102
|
+
/** Error thrown during command execution, if any */
|
|
103
|
+
error?: Error;
|
|
104
|
+
}
|
|
105
|
+
export type PreCommandFn = (ctx: PreCommandContext) => void | Promise<void>;
|
|
106
|
+
export type PostCommandFn = (ctx: PostCommandContext) => void | Promise<void>;
|
|
107
|
+
export type OnOpenFn = (ctx: HookContext) => void | Promise<void>;
|
|
108
|
+
export type PreSaveFn = (ctx: HookContext) => void | Promise<void>;
|
|
109
|
+
export type PostSaveFn = (ctx: HookContext) => void | Promise<void>;
|
|
110
|
+
export interface HookEntry<T> {
|
|
111
|
+
fn: T;
|
|
112
|
+
output: HookOutput;
|
|
113
|
+
}
|
|
114
|
+
interface HookOptions {
|
|
115
|
+
output?: HookOutput;
|
|
116
|
+
}
|
|
117
|
+
interface HookEventMap {
|
|
118
|
+
preCommand: PreCommandFn;
|
|
119
|
+
postCommand: PostCommandFn;
|
|
120
|
+
onOpen: OnOpenFn;
|
|
121
|
+
preSave: PreSaveFn;
|
|
122
|
+
postSave: PostSaveFn;
|
|
123
|
+
}
|
|
124
|
+
type HookEvent = keyof HookEventMap;
|
|
125
|
+
export interface HookRegistry {
|
|
126
|
+
preCommand: HookEntry<PreCommandFn>[];
|
|
127
|
+
postCommand: HookEntry<PostCommandFn>[];
|
|
128
|
+
onOpen: HookEntry<OnOpenFn>[];
|
|
129
|
+
preSave: HookEntry<PreSaveFn>[];
|
|
130
|
+
postSave: HookEntry<PostSaveFn>[];
|
|
131
|
+
_discovered: boolean;
|
|
132
|
+
_discoveryErrors: string[];
|
|
133
|
+
}
|
|
134
|
+
export interface HookAPI {
|
|
135
|
+
on<E extends HookEvent>(event: E, fn: HookEventMap[E]): void;
|
|
136
|
+
on<E extends HookEvent>(event: E, opts: HookOptions, fn: HookEventMap[E]): void;
|
|
137
|
+
}
|
|
138
|
+
/** Create a HookAPI instance for programmatic hook registration. */
|
|
139
|
+
export declare function createHookAPI(): HookAPI;
|
|
140
|
+
type WriteFn = (data: string) => void;
|
|
141
|
+
export declare function setHookWriters(stdout: WriteFn, stderr: WriteFn): void;
|
|
142
|
+
export declare function runWithHooksDisabled<T>(disabled: boolean, fn: () => T | Promise<T>): T | Promise<T>;
|
|
143
|
+
interface CommandInfo {
|
|
144
|
+
command: string;
|
|
145
|
+
args: string[];
|
|
146
|
+
}
|
|
147
|
+
export declare function setCurrentCommand(info: CommandInfo | null): void;
|
|
148
|
+
export declare function getCurrentCommand(): CommandInfo;
|
|
149
|
+
export declare function discoverHooks(): Promise<void>;
|
|
150
|
+
export declare function getRegistry(): Promise<HookRegistry>;
|
|
151
|
+
export declare function runPreCommandHooks(ctx: PreCommandContext): Promise<void>;
|
|
152
|
+
export declare function runPostCommandHooks(ctx: PostCommandContext): Promise<void>;
|
|
153
|
+
export declare function runOnOpenHooks(ctx: HookContext): Promise<boolean>;
|
|
154
|
+
export declare function runPreSaveHooks(ctx: HookContext): Promise<void>;
|
|
155
|
+
export declare function runPostSaveHooks(ctx: HookContext): Promise<void>;
|
|
156
|
+
export declare function clearHooks(): void;
|
|
157
|
+
export declare function getDiscoveryErrors(): string[];
|
|
158
|
+
export {};
|
|
159
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks.js
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extension hook system for headless-spreadjs.
|
|
3
|
+
*
|
|
4
|
+
* Hooks allow users to run custom code at specific points in the CLI workflow.
|
|
5
|
+
* Common use cases include:
|
|
6
|
+
* - Applying formatting conventions (e.g., financial modeling colors)
|
|
7
|
+
* - Setting workbook defaults (e.g., hiding gridlines)
|
|
8
|
+
* - Validation and linting before/after save
|
|
9
|
+
* - Logging and auditing tool invocations
|
|
10
|
+
*
|
|
11
|
+
* Discovery:
|
|
12
|
+
* Hooks are auto-discovered from these locations (TypeScript via jiti):
|
|
13
|
+
* 1. ./.headless-spreadjs/hooks/*.{ts,js,mjs} (project-local, takes precedence)
|
|
14
|
+
* 2. ~/.headless-spreadjs/hooks/*.{ts,js,mjs} (global fallback)
|
|
15
|
+
*
|
|
16
|
+
* Discovery can be disabled with HSX_NO_HOOKS=1.
|
|
17
|
+
*
|
|
18
|
+
* Hook Points:
|
|
19
|
+
* - onOpen: Called after a workbook is opened/created, before the command runs
|
|
20
|
+
* - preSave: Called before each save() operation
|
|
21
|
+
* - postSave: Called after each save() operation
|
|
22
|
+
* - preCommand: Called before each CLI command (no workbook context)
|
|
23
|
+
* - postCommand: Called after each CLI command (no workbook context)
|
|
24
|
+
*
|
|
25
|
+
* Every workbook hook receives a HookContext with both command info and workbook access:
|
|
26
|
+
* ctx.command — "get", "set", "eval", etc.
|
|
27
|
+
* ctx.args — remaining CLI args after the command
|
|
28
|
+
* ctx.filePath — resolved path to the workbook file
|
|
29
|
+
* ctx.file — ExcelFile instance
|
|
30
|
+
* ctx.workbook — SpreadJS Workbook instance
|
|
31
|
+
* ctx.GC — GC.Spread.Sheets namespace
|
|
32
|
+
*
|
|
33
|
+
* Hook files export a default function that receives a HookAPI instance:
|
|
34
|
+
*
|
|
35
|
+
* // .headless-spreadjs/hooks/defaults.ts
|
|
36
|
+
* import type { HookAPI, HookContext } from "@hewliyang/headless-spreadjs/hooks";
|
|
37
|
+
*
|
|
38
|
+
* export default function (hsx: HookAPI) {
|
|
39
|
+
* hsx.on("onOpen", (ctx: HookContext) => {
|
|
40
|
+
* for (let i = 0; i < ctx.workbook.getSheetCount(); i++) {
|
|
41
|
+
* const sheet = ctx.workbook.getSheet(i);
|
|
42
|
+
* sheet.options.gridline = {
|
|
43
|
+
* showVerticalGridline: false,
|
|
44
|
+
* showHorizontalGridline: false,
|
|
45
|
+
* };
|
|
46
|
+
* }
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* hsx.on("preSave", (ctx: HookContext) => {
|
|
50
|
+
* const sheet = ctx.workbook.getActiveSheet();
|
|
51
|
+
* const rowCount = sheet.getUsedRange().rowCount;
|
|
52
|
+
* for (let r = 0; r < rowCount; r++) {
|
|
53
|
+
* const val = sheet.getValue(r, 0);
|
|
54
|
+
* if (typeof val === "number" && val < 0) {
|
|
55
|
+
* sheet.getCell(r, 0).foreColor("red");
|
|
56
|
+
* }
|
|
57
|
+
* }
|
|
58
|
+
* console.log(`Formatted ${ctx.filePath} (command: ${ctx.command})`);
|
|
59
|
+
* });
|
|
60
|
+
* }
|
|
61
|
+
*
|
|
62
|
+
* Output Configuration:
|
|
63
|
+
* Hook output is captured and prefixed. By default, output goes to stderr.
|
|
64
|
+
*
|
|
65
|
+
* hsx.on("preSave", { output: "stdout" }, (ctx) => { ... });
|
|
66
|
+
* hsx.on("preSave", { output: "none" }, (ctx) => { ... });
|
|
67
|
+
*/
|
|
68
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
69
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
70
|
+
import { homedir } from "node:os";
|
|
71
|
+
import { dirname, join, resolve } from "node:path";
|
|
72
|
+
import { fileURLToPath } from "node:url";
|
|
73
|
+
import { createJiti } from "jiti";
|
|
74
|
+
const _registry = {
|
|
75
|
+
preCommand: [],
|
|
76
|
+
postCommand: [],
|
|
77
|
+
onOpen: [],
|
|
78
|
+
preSave: [],
|
|
79
|
+
postSave: [],
|
|
80
|
+
_discovered: false,
|
|
81
|
+
_discoveryErrors: [],
|
|
82
|
+
};
|
|
83
|
+
const EMPTY_REGISTRY = {
|
|
84
|
+
preCommand: [],
|
|
85
|
+
postCommand: [],
|
|
86
|
+
onOpen: [],
|
|
87
|
+
preSave: [],
|
|
88
|
+
postSave: [],
|
|
89
|
+
_discovered: true,
|
|
90
|
+
_discoveryErrors: [],
|
|
91
|
+
};
|
|
92
|
+
function _createHookAPI(registry) {
|
|
93
|
+
return {
|
|
94
|
+
on(event, fnOrOpts, maybeFn) {
|
|
95
|
+
const list = registry[event];
|
|
96
|
+
if (typeof fnOrOpts === "function") {
|
|
97
|
+
list.push({ fn: fnOrOpts, output: "stderr" });
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const opts = fnOrOpts;
|
|
101
|
+
if (!maybeFn || typeof maybeFn !== "function") {
|
|
102
|
+
throw new Error("hooks.on() requires a function argument.");
|
|
103
|
+
}
|
|
104
|
+
list.push({ fn: maybeFn, output: opts.output ?? "stderr" });
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** Create a HookAPI instance for programmatic hook registration. */
|
|
110
|
+
export function createHookAPI() {
|
|
111
|
+
return _createHookAPI(_registry);
|
|
112
|
+
}
|
|
113
|
+
let _writeStdout = (data) => process.stdout.write(data);
|
|
114
|
+
let _writeStderr = (data) => process.stderr.write(data);
|
|
115
|
+
export function setHookWriters(stdout, stderr) {
|
|
116
|
+
_writeStdout = stdout;
|
|
117
|
+
_writeStderr = stderr;
|
|
118
|
+
}
|
|
119
|
+
const hookStateStore = new AsyncLocalStorage();
|
|
120
|
+
function hooksDisabled() {
|
|
121
|
+
return hookStateStore.getStore()?.disabled === true;
|
|
122
|
+
}
|
|
123
|
+
function hookDiscoveryDisabled() {
|
|
124
|
+
return process.env.HSX_NO_HOOKS === "1" || hooksDisabled();
|
|
125
|
+
}
|
|
126
|
+
export function runWithHooksDisabled(disabled, fn) {
|
|
127
|
+
return hookStateStore.run({ disabled }, fn);
|
|
128
|
+
}
|
|
129
|
+
let _currentCommand = null;
|
|
130
|
+
export function setCurrentCommand(info) {
|
|
131
|
+
_currentCommand = info;
|
|
132
|
+
}
|
|
133
|
+
export function getCurrentCommand() {
|
|
134
|
+
return _currentCommand ?? { command: "", args: [] };
|
|
135
|
+
}
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Discovery
|
|
138
|
+
// ============================================================================
|
|
139
|
+
const HOOK_EXTENSIONS = new Set([".ts", ".js", ".mjs"]);
|
|
140
|
+
function isHookFile(name) {
|
|
141
|
+
if (name.startsWith("_"))
|
|
142
|
+
return false;
|
|
143
|
+
for (const ext of HOOK_EXTENSIONS) {
|
|
144
|
+
if (name.endsWith(ext))
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
function getAliases() {
|
|
150
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
151
|
+
const distDir = __dirname;
|
|
152
|
+
return {
|
|
153
|
+
"@hewliyang/headless-spreadjs/hooks": join(distDir, "hooks.js"),
|
|
154
|
+
"@hewliyang/headless-spreadjs": join(distDir, "index.js"),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
async function loadHookFile(filePath) {
|
|
158
|
+
try {
|
|
159
|
+
const jiti = createJiti(import.meta.url, {
|
|
160
|
+
moduleCache: false,
|
|
161
|
+
alias: getAliases(),
|
|
162
|
+
});
|
|
163
|
+
const mod = await jiti.import(filePath, { default: true });
|
|
164
|
+
// Hook files export a default function that receives a HookAPI instance
|
|
165
|
+
const factory = typeof mod === "function"
|
|
166
|
+
? mod
|
|
167
|
+
: mod && typeof mod.default === "function"
|
|
168
|
+
? mod.default
|
|
169
|
+
: null;
|
|
170
|
+
if (factory) {
|
|
171
|
+
const api = _createHookAPI(_registry);
|
|
172
|
+
factory(api);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
const msg = `${filePath}: ${err instanceof Error ? err.message : String(err)}`;
|
|
177
|
+
_registry._discoveryErrors.push(msg);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async function loadHooksFromDir(dir) {
|
|
181
|
+
if (!existsSync(dir))
|
|
182
|
+
return;
|
|
183
|
+
let entries;
|
|
184
|
+
try {
|
|
185
|
+
entries = readdirSync(dir).sort();
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
for (const entry of entries) {
|
|
191
|
+
if (isHookFile(entry)) {
|
|
192
|
+
await loadHookFile(join(dir, entry));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export async function discoverHooks() {
|
|
197
|
+
if (_registry._discovered)
|
|
198
|
+
return;
|
|
199
|
+
_registry._discovered = true;
|
|
200
|
+
if (hookDiscoveryDisabled()) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const localDir = resolve(".headless-spreadjs/hooks");
|
|
204
|
+
if (existsSync(localDir)) {
|
|
205
|
+
await loadHooksFromDir(localDir);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const globalDir = join(homedir(), ".headless-spreadjs", "hooks");
|
|
209
|
+
if (existsSync(globalDir)) {
|
|
210
|
+
await loadHooksFromDir(globalDir);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// Hook Runners
|
|
215
|
+
// ============================================================================
|
|
216
|
+
function getHookName(fn) {
|
|
217
|
+
if (typeof fn === "function" && fn.name)
|
|
218
|
+
return fn.name;
|
|
219
|
+
return "(anonymous)";
|
|
220
|
+
}
|
|
221
|
+
async function runHookWithPrefix(fn, runFn, hookType, output) {
|
|
222
|
+
const hookName = getHookName(fn);
|
|
223
|
+
const prefix = `[${hookType}:${hookName}]`;
|
|
224
|
+
const origLog = console.log;
|
|
225
|
+
const origWarn = console.warn;
|
|
226
|
+
const origError = console.error;
|
|
227
|
+
const captured = [];
|
|
228
|
+
console.log = (...args) => captured.push(args.map(String).join(" "));
|
|
229
|
+
console.warn = (...args) => captured.push(`[warn] ${args.map(String).join(" ")}`);
|
|
230
|
+
console.error = (...args) => captured.push(`[error] ${args.map(String).join(" ")}`);
|
|
231
|
+
try {
|
|
232
|
+
await runFn();
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
console.log = origLog;
|
|
236
|
+
console.warn = origWarn;
|
|
237
|
+
console.error = origError;
|
|
238
|
+
}
|
|
239
|
+
if (output === "none" || captured.length === 0)
|
|
240
|
+
return;
|
|
241
|
+
const write = output === "stdout" ? _writeStdout : _writeStderr;
|
|
242
|
+
for (const line of captured) {
|
|
243
|
+
write(`${prefix} ${line}\n`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
export async function getRegistry() {
|
|
247
|
+
if (hooksDisabled()) {
|
|
248
|
+
return EMPTY_REGISTRY;
|
|
249
|
+
}
|
|
250
|
+
await discoverHooks();
|
|
251
|
+
return _registry;
|
|
252
|
+
}
|
|
253
|
+
export async function runPreCommandHooks(ctx) {
|
|
254
|
+
const registry = await getRegistry();
|
|
255
|
+
for (const entry of registry.preCommand) {
|
|
256
|
+
await runHookWithPrefix(entry.fn, () => entry.fn(ctx), "pre-command", entry.output);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
export async function runPostCommandHooks(ctx) {
|
|
260
|
+
const registry = await getRegistry();
|
|
261
|
+
for (const entry of registry.postCommand) {
|
|
262
|
+
await runHookWithPrefix(entry.fn, () => entry.fn(ctx), "post-command", entry.output);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
export async function runOnOpenHooks(ctx) {
|
|
266
|
+
const registry = await getRegistry();
|
|
267
|
+
for (const entry of registry.onOpen) {
|
|
268
|
+
await runHookWithPrefix(entry.fn, () => entry.fn(ctx), "on-open", entry.output);
|
|
269
|
+
}
|
|
270
|
+
return registry.onOpen.length > 0;
|
|
271
|
+
}
|
|
272
|
+
export async function runPreSaveHooks(ctx) {
|
|
273
|
+
const registry = await getRegistry();
|
|
274
|
+
for (const entry of registry.preSave) {
|
|
275
|
+
await runHookWithPrefix(entry.fn, () => entry.fn(ctx), "pre-save", entry.output);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
export async function runPostSaveHooks(ctx) {
|
|
279
|
+
const registry = await getRegistry();
|
|
280
|
+
for (const entry of registry.postSave) {
|
|
281
|
+
await runHookWithPrefix(entry.fn, () => entry.fn(ctx), "post-save", entry.output);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// ============================================================================
|
|
285
|
+
// Utilities
|
|
286
|
+
// ============================================================================
|
|
287
|
+
export function clearHooks() {
|
|
288
|
+
_registry.preCommand.length = 0;
|
|
289
|
+
_registry.postCommand.length = 0;
|
|
290
|
+
_registry.onOpen.length = 0;
|
|
291
|
+
_registry.preSave.length = 0;
|
|
292
|
+
_registry.postSave.length = 0;
|
|
293
|
+
_registry._discovered = false;
|
|
294
|
+
_registry._discoveryErrors.length = 0;
|
|
295
|
+
_currentCommand = null;
|
|
296
|
+
}
|
|
297
|
+
export function getDiscoveryErrors() {
|
|
298
|
+
return [..._registry._discoveryErrors];
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hewliyang/headless-spreadjs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "Headless Excel workbook engine for Node.js — powered by SpreadJS with DOM shims. No browser, no Excel, any platform.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
11
|
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./hooks": {
|
|
14
|
+
"types": "./dist/hooks.d.ts",
|
|
15
|
+
"default": "./dist/hooks.js"
|
|
12
16
|
}
|
|
13
17
|
},
|
|
14
18
|
"bin": {
|
|
@@ -23,8 +27,8 @@
|
|
|
23
27
|
"dev": "tsc --watch",
|
|
24
28
|
"lint": "biome check",
|
|
25
29
|
"fmt": "biome check --write",
|
|
26
|
-
"test": "vitest run --maxWorkers=1",
|
|
27
|
-
"test:watch": "vitest --maxWorkers=1",
|
|
30
|
+
"test": "tsc && HSX_NO_HOOKS=1 vitest run --maxWorkers=1",
|
|
31
|
+
"test:watch": "HSX_NO_HOOKS=1 vitest --maxWorkers=1",
|
|
28
32
|
"prepublishOnly": "pnpm build"
|
|
29
33
|
},
|
|
30
34
|
"keywords": [
|
|
@@ -59,7 +63,8 @@
|
|
|
59
63
|
"@mescius/spread-sheets-slicers": ">=18.0.0",
|
|
60
64
|
"canvas": "^3.1.0",
|
|
61
65
|
"fflate": "^0.8.2",
|
|
62
|
-
"happy-dom": "^16.0.0"
|
|
66
|
+
"happy-dom": "^16.0.0",
|
|
67
|
+
"jiti": "^2.6.1"
|
|
63
68
|
},
|
|
64
69
|
"devDependencies": {
|
|
65
70
|
"@biomejs/biome": "^2.3.15",
|