@rxova/journey-core 0.6.3 → 0.7.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/README.md +18 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +3 -3
- package/dist/machine-helpers.d.ts +4 -1
- package/dist/machine.d.ts +1 -3
- package/dist/transitions.d.ts +45 -10
- package/dist/types/index.d.ts +1 -1
- package/dist/types/journey.types.d.ts +21 -0
- package/dist/types/transitions.types.d.ts +31 -13
- package/package.json +4 -4
package/dist/transitions.d.ts
CHANGED
|
@@ -1,20 +1,54 @@
|
|
|
1
1
|
import type { JourneyEventPayloadMap } from "./types/journey.types";
|
|
2
|
-
import type { EventBuilder,
|
|
2
|
+
import type { EventBuilder, JourneyTransition, JourneySelectedTransitionArgs, JourneyTransitionTarget, TransitionBranch, TransitionConfig } from "./types/transitions.types";
|
|
3
|
+
type TransitionPayloadMap = Partial<Record<string, unknown>>;
|
|
4
|
+
type SelectedPayloadMap<TEventType extends string, TPayloadMap extends TransitionPayloadMap> = TPayloadMap & JourneyEventPayloadMap<TEventType>;
|
|
3
5
|
/**
|
|
4
6
|
* Fluent helpers for building journey transitions with type-safe branches.
|
|
5
7
|
*/
|
|
6
8
|
export declare const tx: {
|
|
7
|
-
from: <TStepId extends string, TContext = unknown
|
|
8
|
-
on: <TEventType extends string>(event: TEventType) => EventBuilder<TContext, TStepId, TEventType,
|
|
9
|
-
toComplete: (config?: TransitionConfig<TContext, TStepId, "completeJourney",
|
|
10
|
-
|
|
9
|
+
from: <TStepId extends string, TContext = unknown, TPayloadMap extends TransitionPayloadMap = Record<never, never>>(from: TStepId) => {
|
|
10
|
+
on: <TEventType extends string>(event: TEventType) => EventBuilder<TContext, TStepId, TEventType, SelectedPayloadMap<TEventType, TPayloadMap>>;
|
|
11
|
+
toComplete: (config?: TransitionConfig<TContext, TStepId, "completeJourney", SelectedPayloadMap<"completeJourney", TPayloadMap>>) => {
|
|
12
|
+
id?: string;
|
|
13
|
+
from: "*" | TStepId;
|
|
14
|
+
when?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "completeJourney", TPayloadMap & Partial<Record<"goToStepById" | "completeJourney", unknown>>>) => boolean | Promise<boolean>;
|
|
15
|
+
effect?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "completeJourney", TPayloadMap & Partial<Record<"goToStepById" | "completeJourney", unknown>>>) => void | TContext | Promise<void | TContext>;
|
|
16
|
+
} & {
|
|
17
|
+
event: "completeJourney";
|
|
18
|
+
to?: never;
|
|
19
|
+
};
|
|
20
|
+
toTerminate: (config?: TransitionConfig<TContext, TStepId, "terminateJourney", SelectedPayloadMap<"terminateJourney", TPayloadMap>>) => {
|
|
21
|
+
id?: string;
|
|
22
|
+
from: "*" | TStepId;
|
|
23
|
+
when?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "terminateJourney", TPayloadMap & Partial<Record<"goToStepById" | "terminateJourney", unknown>>>) => boolean | Promise<boolean>;
|
|
24
|
+
effect?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "terminateJourney", TPayloadMap & Partial<Record<"goToStepById" | "terminateJourney", unknown>>>) => void | TContext | Promise<void | TContext>;
|
|
25
|
+
} & {
|
|
26
|
+
event: "terminateJourney";
|
|
27
|
+
to?: never;
|
|
28
|
+
};
|
|
11
29
|
};
|
|
12
|
-
any: <TContext = unknown, TStepId extends string = string
|
|
13
|
-
on: <TEventType extends string>(event: TEventType) => EventBuilder<TContext, TStepId, TEventType,
|
|
14
|
-
toComplete: (config?: TransitionConfig<TContext, TStepId, "completeJourney",
|
|
15
|
-
|
|
30
|
+
any: <TContext = unknown, TStepId extends string = string, TPayloadMap extends TransitionPayloadMap = Record<never, never>>() => {
|
|
31
|
+
on: <TEventType extends string>(event: TEventType) => EventBuilder<TContext, TStepId, TEventType, SelectedPayloadMap<TEventType, TPayloadMap>>;
|
|
32
|
+
toComplete: (config?: TransitionConfig<TContext, TStepId, "completeJourney", SelectedPayloadMap<"completeJourney", TPayloadMap>>) => {
|
|
33
|
+
id?: string;
|
|
34
|
+
from: "*" | TStepId;
|
|
35
|
+
when?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "completeJourney", TPayloadMap & Partial<Record<"goToStepById" | "completeJourney", unknown>>>) => boolean | Promise<boolean>;
|
|
36
|
+
effect?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "completeJourney", TPayloadMap & Partial<Record<"goToStepById" | "completeJourney", unknown>>>) => void | TContext | Promise<void | TContext>;
|
|
37
|
+
} & {
|
|
38
|
+
event: "completeJourney";
|
|
39
|
+
to?: never;
|
|
40
|
+
};
|
|
41
|
+
toTerminate: (config?: TransitionConfig<TContext, TStepId, "terminateJourney", SelectedPayloadMap<"terminateJourney", TPayloadMap>>) => {
|
|
42
|
+
id?: string;
|
|
43
|
+
from: "*" | TStepId;
|
|
44
|
+
when?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "terminateJourney", TPayloadMap & Partial<Record<"goToStepById" | "terminateJourney", unknown>>>) => boolean | Promise<boolean>;
|
|
45
|
+
effect?: (args: JourneySelectedTransitionArgs<TContext, TStepId, "terminateJourney", TPayloadMap & Partial<Record<"goToStepById" | "terminateJourney", unknown>>>) => void | TContext | Promise<void | TContext>;
|
|
46
|
+
} & {
|
|
47
|
+
event: "terminateJourney";
|
|
48
|
+
to?: never;
|
|
49
|
+
};
|
|
16
50
|
};
|
|
17
|
-
when: <TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>>(predicate: (args:
|
|
51
|
+
when: <TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>>(predicate: (args: JourneySelectedTransitionArgs<TContext, TStepId, TEventType, TPayloadMap>) => boolean | Promise<boolean>) => {
|
|
18
52
|
to: (to: JourneyTransitionTarget<TStepId>, config?: TransitionConfig<TContext, TStepId, TEventType, TPayloadMap>) => TransitionBranch<TContext, TStepId, TEventType, TPayloadMap>;
|
|
19
53
|
};
|
|
20
54
|
otherwise: <TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>>() => {
|
|
@@ -25,3 +59,4 @@ export declare const tx: {
|
|
|
25
59
|
* Flattens transition items and transition arrays into a single transition list.
|
|
26
60
|
*/
|
|
27
61
|
export declare const createTransitions: <TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>>(...items: Array<JourneyTransition<TContext, TStepId, TEventType, TPayloadMap> | readonly JourneyTransition<TContext, TStepId, TEventType, TPayloadMap>[]>) => JourneyTransition<TContext, TStepId, TEventType, TPayloadMap>[];
|
|
62
|
+
export {};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { JOURNEY_ASYNC_PHASE, JOURNEY_EVENT, JOURNEY_STATUS, JOURNEY_WILDCARD } from "./journey.types";
|
|
2
|
-
export type { JourneyAsyncPhase, JourneyAsyncState, JourneyBaseEvent, JourneyBuiltInEvent, JourneyBuiltInFrom, JourneyDefaultEventType, JourneyDefinition, JourneyEvent, JourneyEventPayloadMap, JourneyGoToEvent, JourneyGoToStepByIdEventType, JourneyMachine, JourneyMachineEventType, JourneyMachinePayloadMap, JourneyMachineOptions, JourneyObservationEvent, JourneyPayloadFor, JourneySendEvent, JourneySendResult, JourneySnapshot, JourneyStatus, JourneyStepAsyncState, JourneyStepDefinition, JourneyTerminal } from "./journey.types";
|
|
2
|
+
export type { JourneyAsyncPhase, JourneyAsyncState, JourneyBaseEvent, JourneyBuiltInEvent, JourneyBuiltInFrom, JourneyDefaultEventType, JourneyDefinition, JourneyEvent, JourneyEventPayloadMap, JourneyGoToEvent, JourneyGoToStepByIdEventType, JourneyMachine, JourneyMachineEventType, JourneyMachinePayloadMap, JourneyMachineOptions, JourneyObservationEvent, JourneySelector, JourneyEqualityFn, JourneyPayloadFor, JourneySendEvent, JourneySendResult, JourneySnapshot, JourneyStatus, JourneyStepAsyncState, JourneyStepDefinition, JourneyTerminal } from "./journey.types";
|
|
3
3
|
export type { JourneyEventTransition, JourneyGoToStepTransition, JourneyTransition, JourneyTransitionArgs, JourneyTransitionTarget } from "./transitions.types";
|
|
4
4
|
export type { JourneyPersistedSnapshot, JourneyPersistedState, JourneyPersistenceOptions, JourneyStorage } from "./persistence.types";
|
|
@@ -106,6 +106,10 @@ export type JourneySnapshot<TContext, TStepId extends string, TStepMeta = unknow
|
|
|
106
106
|
status: JourneyStatus;
|
|
107
107
|
async: JourneyAsyncState<TStepId>;
|
|
108
108
|
};
|
|
109
|
+
/** Selector function that derives a value from a machine snapshot. */
|
|
110
|
+
export type JourneySelector<TContext, TStepId extends string, TStepMeta = unknown, TSelected = unknown> = (snapshot: JourneySnapshot<TContext, TStepId, TStepMeta>) => TSelected;
|
|
111
|
+
/** Equality function used to compare selected values between snapshot updates. */
|
|
112
|
+
export type JourneyEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
|
|
109
113
|
/** Full machine definition used to create a journey machine instance. */
|
|
110
114
|
export type JourneyDefinition<TContext, TStepId extends string = string, TEventType extends string = JourneyDefaultEventType, TPayloadMap extends JourneyEventPayloadMap<TEventType> = Record<never, never>, TStepMeta = unknown, TStepExtra extends object = Record<never, never>> = {
|
|
111
115
|
initial: TStepId;
|
|
@@ -116,15 +120,21 @@ export type JourneyDefinition<TContext, TStepId extends string = string, TEventT
|
|
|
116
120
|
/** Optional machine features (for example, persistence configuration). */
|
|
117
121
|
export type JourneyMachineOptions<TContext, TStepId extends string, TStepMeta = unknown> = {
|
|
118
122
|
persistence?: JourneyPersistenceOptions<TContext, TStepId, TStepMeta>;
|
|
123
|
+
completeOnNoNextStep?: boolean;
|
|
119
124
|
};
|
|
120
125
|
/** Result returned from send/navigation APIs. */
|
|
121
126
|
export type JourneySendResult<TContext, TStepId extends string, TStepMeta = unknown> = {
|
|
122
127
|
transitioned: boolean;
|
|
123
128
|
transitionId?: string;
|
|
129
|
+
error?: unknown;
|
|
124
130
|
snapshot: JourneySnapshot<TContext, TStepId, TStepMeta>;
|
|
125
131
|
};
|
|
126
132
|
/** Observation events emitted by the machine lifecycle/event stream. */
|
|
127
133
|
export type JourneyObservationEvent<TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType> = Record<never, never>, TStepMeta = unknown> = {
|
|
134
|
+
type: "journey.start";
|
|
135
|
+
stepId: TStepId;
|
|
136
|
+
timestamp: number;
|
|
137
|
+
} | {
|
|
128
138
|
type: "transition.start";
|
|
129
139
|
from: TStepId;
|
|
130
140
|
event: JourneySendEvent<TStepId, TEventType, TPayloadMap>;
|
|
@@ -191,7 +201,18 @@ export type JourneyMachine<TContext, TStepId extends string, TEventType extends
|
|
|
191
201
|
updateStepMetadata: (stepId: TStepId, updater: (metadata: TStepMeta) => TStepMeta) => JourneySnapshot<TContext, TStepId, TStepMeta>;
|
|
192
202
|
clearStepError: (stepId?: TStepId) => JourneySnapshot<TContext, TStepId, TStepMeta>;
|
|
193
203
|
resetMachine: () => JourneySnapshot<TContext, TStepId, TStepMeta>;
|
|
204
|
+
dispose: () => void;
|
|
194
205
|
subscribe: (listener: () => void) => () => void;
|
|
206
|
+
subscribeSelector: <TSelected>(selector: JourneySelector<TContext, TStepId, TStepMeta, TSelected>, listener: (next: TSelected, previous: TSelected) => void, equalityFn?: JourneyEqualityFn<TSelected>) => () => void;
|
|
195
207
|
subscribeEvent: (listener: (event: JourneyObservationEvent<TStepId, TEventType, TPayloadMap, TStepMeta>) => void) => () => void;
|
|
208
|
+
subscribeStart: (listener: (event: Extract<JourneyObservationEvent<TStepId, TEventType, TPayloadMap, TStepMeta>, {
|
|
209
|
+
type: "journey.start";
|
|
210
|
+
}>) => void) => () => void;
|
|
211
|
+
subscribeComplete: (listener: (event: Extract<JourneyObservationEvent<TStepId, TEventType, TPayloadMap, TStepMeta>, {
|
|
212
|
+
type: "journey.complete";
|
|
213
|
+
}>) => void) => () => void;
|
|
214
|
+
subscribeTerminate: (listener: (event: Extract<JourneyObservationEvent<TStepId, TEventType, TPayloadMap, TStepMeta>, {
|
|
215
|
+
type: "journey.close";
|
|
216
|
+
}>) => void) => () => void;
|
|
196
217
|
};
|
|
197
218
|
export {};
|
|
@@ -7,24 +7,36 @@ export type JourneyTransitionArgs<TContext, TStepId extends string, TEventType e
|
|
|
7
7
|
index: number;
|
|
8
8
|
event: JourneyEvent<TStepId, TEventType, TPayloadMap>;
|
|
9
9
|
};
|
|
10
|
+
type JourneySelectedTransitionEvent<TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = Extract<JourneyEvent<TStepId, TEventType, TPayloadMap>, {
|
|
11
|
+
type: TEventType;
|
|
12
|
+
}>;
|
|
13
|
+
/** Arguments passed to fluent transition guards and effects for a selected event type. */
|
|
14
|
+
export type JourneySelectedTransitionArgs<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = Omit<JourneyTransitionArgs<TContext, TStepId, TEventType, TPayloadMap>, "event"> & {
|
|
15
|
+
event: JourneySelectedTransitionEvent<TStepId, TEventType, TPayloadMap>;
|
|
16
|
+
};
|
|
17
|
+
type JourneyTransitionPayloadMap<TEventType extends string, TPayloadMap extends Partial<Record<string, unknown>>> = TPayloadMap & JourneyEventPayloadMap<TEventType>;
|
|
10
18
|
/** Transition destination, either another step or a terminal machine state. */
|
|
11
19
|
export type JourneyTransitionTarget<TStepId extends string> = TStepId | JourneyTerminal;
|
|
12
|
-
type JourneyTransitionConfig<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends
|
|
20
|
+
type JourneyTransitionConfig<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends Partial<Record<string, unknown>> = Record<never, never>> = {
|
|
13
21
|
id?: string;
|
|
14
22
|
from: TStepId | JourneyBuiltInFrom;
|
|
15
|
-
when?: (args:
|
|
16
|
-
effect?: (args:
|
|
23
|
+
when?: (args: JourneySelectedTransitionArgs<TContext, TStepId, TEventType, JourneyTransitionPayloadMap<TEventType, TPayloadMap>>) => boolean | Promise<boolean>;
|
|
24
|
+
effect?: (args: JourneySelectedTransitionArgs<TContext, TStepId, TEventType, JourneyTransitionPayloadMap<TEventType, TPayloadMap>>) => TContext | void | Promise<TContext | void>;
|
|
17
25
|
};
|
|
18
26
|
/** Transition declared for a standard event or terminal event. */
|
|
19
|
-
export type JourneyEventTransition<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType> = Record<never, never>> =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
export type JourneyEventTransition<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType> = Record<never, never>> = {
|
|
28
|
+
[TSelectedEvent in Exclude<TEventType, "completeJourney" | "terminateJourney">]: JourneyTransitionConfig<TContext, TStepId, TSelectedEvent, TPayloadMap> & {
|
|
29
|
+
event: TSelectedEvent;
|
|
30
|
+
to: JourneyTransitionTarget<TStepId>;
|
|
31
|
+
};
|
|
32
|
+
}[Exclude<TEventType, "completeJourney" | "terminateJourney">] | {
|
|
33
|
+
[TSelectedEvent in Extract<TEventType, "completeJourney" | "terminateJourney">]: JourneyTransitionConfig<TContext, TStepId, TSelectedEvent, TPayloadMap> & {
|
|
34
|
+
event: TSelectedEvent;
|
|
35
|
+
to?: never;
|
|
36
|
+
};
|
|
37
|
+
}[Extract<TEventType, "completeJourney" | "terminateJourney">];
|
|
26
38
|
/** Direct jump transition triggered by the built-in `goToStepById` event. */
|
|
27
|
-
export type JourneyGoToStepTransition<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType> = Record<never, never>> = JourneyTransitionConfig<TContext, TStepId,
|
|
39
|
+
export type JourneyGoToStepTransition<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType> = Record<never, never>> = JourneyTransitionConfig<TContext, TStepId, JourneyGoToStepByIdEventType, TPayloadMap> & {
|
|
28
40
|
event: JourneyGoToStepByIdEventType;
|
|
29
41
|
to: TStepId;
|
|
30
42
|
};
|
|
@@ -33,17 +45,23 @@ export type JourneyTransition<TContext, TStepId extends string, TEventType exten
|
|
|
33
45
|
/** Optional transition behavior shared by direct and branch transitions. */
|
|
34
46
|
export type TransitionConfig<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = {
|
|
35
47
|
id?: string;
|
|
36
|
-
effect?: (args:
|
|
48
|
+
effect?: (args: JourneySelectedTransitionArgs<TContext, TStepId, TEventType, TPayloadMap>) => TContext | void | Promise<TContext | void>;
|
|
37
49
|
};
|
|
38
50
|
/** Branch definition used by `choose(...)`. */
|
|
39
51
|
export type TransitionBranch<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = TransitionConfig<TContext, TStepId, TEventType, TPayloadMap> & {
|
|
40
52
|
to: JourneyTransitionTarget<TStepId>;
|
|
41
|
-
when?: (args:
|
|
53
|
+
when?: (args: JourneySelectedTransitionArgs<TContext, TStepId, TEventType, TPayloadMap>) => boolean | Promise<boolean>;
|
|
54
|
+
};
|
|
55
|
+
/** Builder returned by fluent `when(...)` / `otherwise()` helpers for a selected event type. */
|
|
56
|
+
export type TransitionBranchBuilder<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = {
|
|
57
|
+
to: (to: JourneyTransitionTarget<TStepId>, config?: TransitionConfig<TContext, TStepId, TEventType, TPayloadMap>) => TransitionBranch<TContext, TStepId, TEventType, TPayloadMap>;
|
|
42
58
|
};
|
|
43
59
|
/** Builder returned by `tx.from(...).on(nonTerminalEvent)` and `tx.any().on(...)`. */
|
|
44
60
|
export type StandardEventBuilder<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = {
|
|
45
61
|
to: (to: JourneyTransitionTarget<TStepId>, config?: TransitionConfig<TContext, TStepId, TEventType, TPayloadMap>) => JourneyTransition<TContext, TStepId, TEventType, TPayloadMap>;
|
|
46
62
|
choose: (...branches: Array<TransitionBranch<TContext, TStepId, TEventType, TPayloadMap>>) => JourneyTransition<TContext, TStepId, TEventType, TPayloadMap>[];
|
|
63
|
+
when: (predicate: (args: JourneySelectedTransitionArgs<TContext, TStepId, TEventType, TPayloadMap>) => boolean | Promise<boolean>) => TransitionBranchBuilder<TContext, TStepId, TEventType, TPayloadMap>;
|
|
64
|
+
otherwise: () => TransitionBranchBuilder<TContext, TStepId, TEventType, TPayloadMap>;
|
|
47
65
|
};
|
|
48
66
|
/** Builder returned by `tx.from(...).on("completeJourney")`. */
|
|
49
67
|
export type CompleteJourneyEventBuilder<TContext, TStepId extends string, TEventType extends string, TPayloadMap extends JourneyEventPayloadMap<TEventType>> = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rxova/journey-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Journey core state machine.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"journey",
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"name": "core/createJourneyMachine",
|
|
53
53
|
"path": "dist/index.js",
|
|
54
54
|
"import": "{ createJourneyMachine }",
|
|
55
|
-
"limit": "
|
|
55
|
+
"limit": "5 kB"
|
|
56
56
|
}
|
|
57
57
|
],
|
|
58
58
|
"scripts": {
|
|
59
|
-
"build": "pnpm run clean && node ./scripts/build.
|
|
60
|
-
"clean": "node ../../scripts/clean-paths.
|
|
59
|
+
"build": "pnpm run clean && node --import tsx ./scripts/build.ts && tsc -p tsconfig.build.json && node --import tsx ../../scripts/copy-types.ts dist",
|
|
60
|
+
"clean": "node --import tsx ../../scripts/clean-paths.ts dist tsconfig.build.tsbuildinfo",
|
|
61
61
|
"coverage": "pnpm --workspace-root vitest run --coverage --coverage.include=packages/core/src/** --coverage.reporter=text-summary",
|
|
62
62
|
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
63
63
|
"publint": "publint",
|