@typokit/core 0.1.4 → 0.2.0
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/hooks.d.ts +5 -4
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -1
- package/dist/hooks.js.map +1 -1
- package/dist/plugin.d.ts +5 -1
- package/dist/plugin.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/hooks.test.ts +2 -1
- package/src/hooks.ts +6 -2
- package/src/plugin.ts +6 -0
package/dist/hooks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildContext, BuildResult, CompiledRouteTable, GeneratedOutput, SchemaTypeMap } from "@typokit/types";
|
|
1
|
+
import type { BuildContext, BuildResult, CompiledRouteTable, CompileContext, GeneratedOutput, SchemaTypeMap } from "@typokit/types";
|
|
2
2
|
/** A tap registration entry */
|
|
3
3
|
export interface TapEntry<T extends unknown[]> {
|
|
4
4
|
name: string;
|
|
@@ -15,7 +15,7 @@ export declare class AsyncSeriesHookImpl<T extends unknown[]> {
|
|
|
15
15
|
/** Execute all taps in series, in registration order */
|
|
16
16
|
call(...args: T): Promise<void>;
|
|
17
17
|
}
|
|
18
|
-
/** Concrete build pipeline with all
|
|
18
|
+
/** Concrete build pipeline with all 7 hook phases */
|
|
19
19
|
export interface BuildPipelineInstance {
|
|
20
20
|
hooks: {
|
|
21
21
|
beforeTransform: AsyncSeriesHookImpl<[BuildContext]>;
|
|
@@ -23,16 +23,17 @@ export interface BuildPipelineInstance {
|
|
|
23
23
|
afterValidators: AsyncSeriesHookImpl<[GeneratedOutput[], BuildContext]>;
|
|
24
24
|
afterRouteTable: AsyncSeriesHookImpl<[CompiledRouteTable, BuildContext]>;
|
|
25
25
|
emit: AsyncSeriesHookImpl<[GeneratedOutput[], BuildContext]>;
|
|
26
|
+
compile: AsyncSeriesHookImpl<[CompileContext, BuildContext]>;
|
|
26
27
|
done: AsyncSeriesHookImpl<[BuildResult]>;
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
|
-
* Create a new build pipeline with empty hooks for all
|
|
31
|
+
* Create a new build pipeline with empty hooks for all 7 phases.
|
|
31
32
|
* Plugins call `onBuild(pipeline)` to tap into specific phases.
|
|
32
33
|
*/
|
|
33
34
|
export declare function createBuildPipeline(): BuildPipelineInstance;
|
|
34
35
|
/** Hook phase names in execution order */
|
|
35
|
-
export declare const BUILD_HOOK_PHASES: readonly ["beforeTransform", "afterTypeParse", "afterValidators", "afterRouteTable", "emit", "done"];
|
|
36
|
+
export declare const BUILD_HOOK_PHASES: readonly ["beforeTransform", "afterTypeParse", "afterValidators", "afterRouteTable", "emit", "compile", "done"];
|
|
36
37
|
export type BuildHookPhase = (typeof BUILD_HOOK_PHASES)[number];
|
|
37
38
|
/** Metadata about a registered tap for introspection */
|
|
38
39
|
export interface TapInfo {
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AAIxB,+BAA+B;AAC/B,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE;IAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAM;IAElC,2BAA2B;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIjE,wDAAwD;IAClD,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAKtC;AAID,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,eAAe,EAAE,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,cAAc,EAAE,mBAAmB,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QACnE,eAAe,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACxE,eAAe,EAAE,mBAAmB,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;QACzE,IAAI,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7D,IAAI,EAAE,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KAC1C,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,qBAAqB,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACd,MAAM,gBAAgB,CAAC;AAIxB,+BAA+B;AAC/B,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE;IAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAM;IAElC,2BAA2B;IAC3B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAIjE,wDAAwD;IAClD,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAKtC;AAID,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE;QACL,eAAe,EAAE,mBAAmB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,cAAc,EAAE,mBAAmB,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QACnE,eAAe,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACxE,eAAe,EAAE,mBAAmB,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;QACzE,IAAI,EAAE,mBAAmB,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,mBAAmB,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7D,IAAI,EAAE,mBAAmB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KAC1C,CAAC;CACH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,qBAAqB,CAgB3D;AAED,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,iHAQpB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,wDAAwD;AACxD,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,qBAAqB,GAAG,OAAO,EAAE,CAiB1E"}
|
package/dist/hooks.js
CHANGED
|
@@ -17,7 +17,7 @@ export class AsyncSeriesHookImpl {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* Create a new build pipeline with empty hooks for all
|
|
20
|
+
* Create a new build pipeline with empty hooks for all 7 phases.
|
|
21
21
|
* Plugins call `onBuild(pipeline)` to tap into specific phases.
|
|
22
22
|
*/
|
|
23
23
|
export function createBuildPipeline() {
|
|
@@ -28,6 +28,7 @@ export function createBuildPipeline() {
|
|
|
28
28
|
afterValidators: new AsyncSeriesHookImpl(),
|
|
29
29
|
afterRouteTable: new AsyncSeriesHookImpl(),
|
|
30
30
|
emit: new AsyncSeriesHookImpl(),
|
|
31
|
+
compile: new AsyncSeriesHookImpl(),
|
|
31
32
|
done: new AsyncSeriesHookImpl(),
|
|
32
33
|
},
|
|
33
34
|
};
|
|
@@ -39,6 +40,7 @@ export const BUILD_HOOK_PHASES = [
|
|
|
39
40
|
"afterValidators",
|
|
40
41
|
"afterRouteTable",
|
|
41
42
|
"emit",
|
|
43
|
+
"compile",
|
|
42
44
|
"done",
|
|
43
45
|
];
|
|
44
46
|
/**
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,qDAAqD;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAmBrD;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAkB,EAAE,CAAC;IAElC,2BAA2B;IAC3B,GAAG,CAAC,IAAY,EAAE,EAAwC;QACxD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAO;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAiBD;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,EAAE;YACL,eAAe,EAAE,IAAI,mBAAmB,EAAkB;YAC1D,cAAc,EAAE,IAAI,mBAAmB,EAAiC;YACxE,eAAe,EAAE,IAAI,mBAAmB,EAErC;YACH,eAAe,EAAE,IAAI,mBAAmB,EAErC;YACH,IAAI,EAAE,IAAI,mBAAmB,EAAqC;YAClE,OAAO,EAAE,IAAI,mBAAmB,EAAkC;YAClE,IAAI,EAAE,IAAI,mBAAmB,EAAiB;SAC/C;KACF,CAAC;AACJ,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,MAAM;IACN,SAAS;IACT,MAAM;CACE,CAAC;AAWX;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAA+B;IAC7D,MAAM,IAAI,GAAc,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnC,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,IAAsC,CAAC;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC;gBACR,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9B,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/plugin.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BuildContext, BuildResult, CompiledRouteTable, GeneratedOutput, RequestContext, SchemaChange, SchemaTypeMap } from "@typokit/types";
|
|
1
|
+
import type { BuildContext, BuildResult, CompiledRouteTable, CompileContext, GeneratedOutput, RequestContext, SchemaChange, SchemaTypeMap } from "@typokit/types";
|
|
2
2
|
import type { AppError } from "@typokit/errors";
|
|
3
3
|
/** Tapable-style async series hook — plugins tap in, calls run in series */
|
|
4
4
|
export interface AsyncSeriesHook<T extends unknown[]> {
|
|
@@ -18,6 +18,10 @@ export interface BuildPipeline {
|
|
|
18
18
|
afterRouteTable: AsyncSeriesHook<[CompiledRouteTable, BuildContext]>;
|
|
19
19
|
/** Runs after all generation — plugins emit their own artifacts */
|
|
20
20
|
emit: AsyncSeriesHook<[GeneratedOutput[], BuildContext]>;
|
|
21
|
+
/** Runs before the default compiler step — plugins can handle compilation
|
|
22
|
+
* themselves (e.g., run cargo build instead of tsc).
|
|
23
|
+
* If a plugin sets compileCtx.handled = true, the default compiler is skipped. */
|
|
24
|
+
compile: AsyncSeriesHook<[CompileContext, BuildContext]>;
|
|
21
25
|
/** Runs after build completes — cleanup, reporting */
|
|
22
26
|
done: AsyncSeriesHook<[BuildResult]>;
|
|
23
27
|
};
|
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,4EAA4E;AAC5E,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE;IAClD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAID,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,gFAAgF;QAChF,eAAe,EAAE,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAEjD,4EAA4E;QAC5E,cAAc,EAAE,eAAe,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;QAE/D,8EAA8E;QAC9E,eAAe,EAAE,eAAe,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAEpE,6CAA6C;QAC7C,eAAe,EAAE,eAAe,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;QAErE,mEAAmE;QACnE,IAAI,EAAE,eAAe,CAAC,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QAEzD;;2FAEmF;QACnF,OAAO,EAAE,eAAe,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;QAEzD,sDAAsD;QACtD,IAAI,EAAE,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;KACtC,CAAC;CACH;AAID,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3E,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B;AAID,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAID,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IAEb,oEAAoE;IACpE,OAAO,CAAC,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAExC,0EAA0E;IAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;qEACiE;IACjE,OAAO,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;iFAC6E;IAC7E,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;IAErD,qEAAqE;IACrE,MAAM,CAAC,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzC;sEACkE;IAClE,cAAc,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE/C,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;IAE1B,2DAA2D;IAC3D,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;CAC/B"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"types": "./dist/index.d.ts"
|
|
7
7
|
}
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.2.0",
|
|
10
10
|
"type": "module",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"main": "./dist/index.js",
|
|
16
16
|
"types": "./dist/index.d.ts",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@typokit/errors": "0.
|
|
19
|
-
"@typokit/types": "0.
|
|
18
|
+
"@typokit/errors": "0.2.0",
|
|
19
|
+
"@typokit/types": "0.2.0"
|
|
20
20
|
},
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
package/src/hooks.test.ts
CHANGED
|
@@ -399,13 +399,14 @@ describe("getPipelineTaps", () => {
|
|
|
399
399
|
// ─── BUILD_HOOK_PHASES Tests ────────────────────────────────
|
|
400
400
|
|
|
401
401
|
describe("BUILD_HOOK_PHASES", () => {
|
|
402
|
-
it("should list all
|
|
402
|
+
it("should list all 7 phases in execution order", () => {
|
|
403
403
|
expect(BUILD_HOOK_PHASES).toEqual([
|
|
404
404
|
"beforeTransform",
|
|
405
405
|
"afterTypeParse",
|
|
406
406
|
"afterValidators",
|
|
407
407
|
"afterRouteTable",
|
|
408
408
|
"emit",
|
|
409
|
+
"compile",
|
|
409
410
|
"done",
|
|
410
411
|
]);
|
|
411
412
|
});
|
package/src/hooks.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
BuildContext,
|
|
5
5
|
BuildResult,
|
|
6
6
|
CompiledRouteTable,
|
|
7
|
+
CompileContext,
|
|
7
8
|
GeneratedOutput,
|
|
8
9
|
SchemaTypeMap,
|
|
9
10
|
} from "@typokit/types";
|
|
@@ -38,7 +39,7 @@ export class AsyncSeriesHookImpl<T extends unknown[]> {
|
|
|
38
39
|
|
|
39
40
|
// ─── Build Pipeline Implementation ──────────────────────────
|
|
40
41
|
|
|
41
|
-
/** Concrete build pipeline with all
|
|
42
|
+
/** Concrete build pipeline with all 7 hook phases */
|
|
42
43
|
export interface BuildPipelineInstance {
|
|
43
44
|
hooks: {
|
|
44
45
|
beforeTransform: AsyncSeriesHookImpl<[BuildContext]>;
|
|
@@ -46,12 +47,13 @@ export interface BuildPipelineInstance {
|
|
|
46
47
|
afterValidators: AsyncSeriesHookImpl<[GeneratedOutput[], BuildContext]>;
|
|
47
48
|
afterRouteTable: AsyncSeriesHookImpl<[CompiledRouteTable, BuildContext]>;
|
|
48
49
|
emit: AsyncSeriesHookImpl<[GeneratedOutput[], BuildContext]>;
|
|
50
|
+
compile: AsyncSeriesHookImpl<[CompileContext, BuildContext]>;
|
|
49
51
|
done: AsyncSeriesHookImpl<[BuildResult]>;
|
|
50
52
|
};
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
/**
|
|
54
|
-
* Create a new build pipeline with empty hooks for all
|
|
56
|
+
* Create a new build pipeline with empty hooks for all 7 phases.
|
|
55
57
|
* Plugins call `onBuild(pipeline)` to tap into specific phases.
|
|
56
58
|
*/
|
|
57
59
|
export function createBuildPipeline(): BuildPipelineInstance {
|
|
@@ -66,6 +68,7 @@ export function createBuildPipeline(): BuildPipelineInstance {
|
|
|
66
68
|
[CompiledRouteTable, BuildContext]
|
|
67
69
|
>(),
|
|
68
70
|
emit: new AsyncSeriesHookImpl<[GeneratedOutput[], BuildContext]>(),
|
|
71
|
+
compile: new AsyncSeriesHookImpl<[CompileContext, BuildContext]>(),
|
|
69
72
|
done: new AsyncSeriesHookImpl<[BuildResult]>(),
|
|
70
73
|
},
|
|
71
74
|
};
|
|
@@ -78,6 +81,7 @@ export const BUILD_HOOK_PHASES = [
|
|
|
78
81
|
"afterValidators",
|
|
79
82
|
"afterRouteTable",
|
|
80
83
|
"emit",
|
|
84
|
+
"compile",
|
|
81
85
|
"done",
|
|
82
86
|
] as const;
|
|
83
87
|
|
package/src/plugin.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
BuildContext,
|
|
5
5
|
BuildResult,
|
|
6
6
|
CompiledRouteTable,
|
|
7
|
+
CompileContext,
|
|
7
8
|
GeneratedOutput,
|
|
8
9
|
RequestContext,
|
|
9
10
|
SchemaChange,
|
|
@@ -39,6 +40,11 @@ export interface BuildPipeline {
|
|
|
39
40
|
/** Runs after all generation — plugins emit their own artifacts */
|
|
40
41
|
emit: AsyncSeriesHook<[GeneratedOutput[], BuildContext]>;
|
|
41
42
|
|
|
43
|
+
/** Runs before the default compiler step — plugins can handle compilation
|
|
44
|
+
* themselves (e.g., run cargo build instead of tsc).
|
|
45
|
+
* If a plugin sets compileCtx.handled = true, the default compiler is skipped. */
|
|
46
|
+
compile: AsyncSeriesHook<[CompileContext, BuildContext]>;
|
|
47
|
+
|
|
42
48
|
/** Runs after build completes — cleanup, reporting */
|
|
43
49
|
done: AsyncSeriesHook<[BuildResult]>;
|
|
44
50
|
};
|