@junejuly-lockstep/model 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +37 -2
- package/dist/api.d.ts +7902 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +436 -0
- package/dist/api.js.map +1 -0
- package/dist/card.d.ts +1321 -0
- package/dist/card.d.ts.map +1 -0
- package/dist/card.js +122 -0
- package/dist/card.js.map +1 -0
- package/dist/config.d.ts +82 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +40 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/journey.d.ts +705 -0
- package/dist/journey.d.ts.map +1 -0
- package/dist/journey.js +113 -0
- package/dist/journey.js.map +1 -0
- package/dist/run.d.ts +1485 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +126 -0
- package/dist/run.js.map +1 -0
- package/dist/verdict.d.ts +35 -0
- package/dist/verdict.d.ts.map +1 -0
- package/dist/verdict.js +30 -0
- package/dist/verdict.js.map +1 -0
- package/package.json +53 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/dist/run.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { JourneyModel, Scenario } from './journey.js';
|
|
3
|
+
export const RunKind = z.enum(['deploy', 'pr']);
|
|
4
|
+
export const RunStatus = z.enum(['received', 'reconciled', 'failed']);
|
|
5
|
+
export const Env = z.enum(['staging', 'prod', 'preview']);
|
|
6
|
+
/** One navigation the extractor found in source. */
|
|
7
|
+
export const ExtractedNavigation = z.object({
|
|
8
|
+
/** Route the navigation originates from, or null when not statically known. */
|
|
9
|
+
fromRoute: z.string().nullable(),
|
|
10
|
+
/** Route targeted, or null when dynamic and unresolved. */
|
|
11
|
+
toRoute: z.string().nullable(),
|
|
12
|
+
kind: z.enum(['link', 'router.push', 'router.replace', 'redirect', 'other']),
|
|
13
|
+
file: z.string(),
|
|
14
|
+
line: z.number().int().nonnegative(),
|
|
15
|
+
/** Enclosing handler name, e.g. onSubmit. */
|
|
16
|
+
handler: z.string().nullable(),
|
|
17
|
+
/** Visible text of the trigger element when resolvable. */
|
|
18
|
+
triggerText: z.string().nullable(),
|
|
19
|
+
/** data-testid on the trigger element when present. */
|
|
20
|
+
triggerTestId: z.string().nullable(),
|
|
21
|
+
/** Lifted guard predicate source text when the nav sits under a condition. */
|
|
22
|
+
guard: z.string().nullable(),
|
|
23
|
+
unresolved: z.boolean().default(false),
|
|
24
|
+
});
|
|
25
|
+
export const ExtractedRoute = z.object({
|
|
26
|
+
route: z.string(),
|
|
27
|
+
file: z.string(),
|
|
28
|
+
/** data-testids found on elements in this route's component tree. */
|
|
29
|
+
testIds: z.array(z.string()).default([]),
|
|
30
|
+
});
|
|
31
|
+
export const ExtractedGraph = z.object({
|
|
32
|
+
routes: z.array(ExtractedRoute),
|
|
33
|
+
navigations: z.array(ExtractedNavigation),
|
|
34
|
+
unresolvedCount: z.number().int().nonnegative().default(0),
|
|
35
|
+
});
|
|
36
|
+
/** GraphQL contract snapshot: SDL hash plus per-operation response shape hashes. */
|
|
37
|
+
export const ContractSnapshot = z.object({
|
|
38
|
+
sdlHash: z.string().min(1),
|
|
39
|
+
operations: z.record(z.string(), z.string()),
|
|
40
|
+
lockfileHash: z.string().min(1),
|
|
41
|
+
});
|
|
42
|
+
export const WalkStepStatus = z.enum(['pass', 'fail', 'skipped']);
|
|
43
|
+
export const WalkStep = z.object({
|
|
44
|
+
/** State the step lands in. */
|
|
45
|
+
stateKey: z.string(),
|
|
46
|
+
/** Transition taken to arrive here; null for the initial state. */
|
|
47
|
+
transition: z.object({ from: z.string(), event: z.string(), to: z.string() }).nullable(),
|
|
48
|
+
status: WalkStepStatus,
|
|
49
|
+
attempts: z.number().int().min(0).max(2).default(1),
|
|
50
|
+
error: z.string().nullable().default(null),
|
|
51
|
+
/** S3 key under runs/{runId}/ for the full-page PNG. */
|
|
52
|
+
screenshotKey: z.string().nullable(),
|
|
53
|
+
traceKey: z.string().nullable().default(null),
|
|
54
|
+
/** GraphQL operations exercised while performing this step. */
|
|
55
|
+
operations: z.array(z.string()).default([]),
|
|
56
|
+
routeObserved: z.string().nullable().default(null),
|
|
57
|
+
});
|
|
58
|
+
export const WalkPath = z.object({
|
|
59
|
+
journeyKey: z.string(),
|
|
60
|
+
scenario: z.string(),
|
|
61
|
+
steps: z.array(WalkStep),
|
|
62
|
+
});
|
|
63
|
+
export const WalkResult = z.object({
|
|
64
|
+
viewport: z.object({ width: z.number().int(), height: z.number().int() }).default({
|
|
65
|
+
width: 1280,
|
|
66
|
+
height: 800,
|
|
67
|
+
}),
|
|
68
|
+
frozenEpochMs: z.number().int(),
|
|
69
|
+
paths: z.array(WalkPath),
|
|
70
|
+
});
|
|
71
|
+
/** One screenshot compared against its baseline. */
|
|
72
|
+
export const VisualComparison = z.object({
|
|
73
|
+
journeyKey: z.string(),
|
|
74
|
+
stateKey: z.string(),
|
|
75
|
+
scenario: z.string(),
|
|
76
|
+
screenshotKey: z.string(),
|
|
77
|
+
/** Baseline S3 key the comparison used; null means no baseline existed. */
|
|
78
|
+
baselineKey: z.string().nullable(),
|
|
79
|
+
diffKey: z.string().nullable(),
|
|
80
|
+
/** Fraction of differing pixels, 0..1. */
|
|
81
|
+
score: z.number().min(0).max(1),
|
|
82
|
+
width: z.number().int(),
|
|
83
|
+
height: z.number().int(),
|
|
84
|
+
/** Why the score is what it is when pixelmatch could not run (e.g. a size mismatch scores 1). */
|
|
85
|
+
detail: z.string().nullable().optional(),
|
|
86
|
+
});
|
|
87
|
+
/** The complete payload a reconciler posts to POST /api/ingest/runs. */
|
|
88
|
+
export const RunPayload = z.object({
|
|
89
|
+
schemaVersion: z.literal(1),
|
|
90
|
+
projectKey: z.string(),
|
|
91
|
+
kind: RunKind,
|
|
92
|
+
/** Commit SHA for deploy runs, PR number as string for PR runs. */
|
|
93
|
+
ref: z.string(),
|
|
94
|
+
commitSha: z.string().regex(/^[0-9a-f]{7,40}$/),
|
|
95
|
+
prNumber: z.number().int().positive().nullable().default(null),
|
|
96
|
+
deployLabel: z.string().nullable().default(null),
|
|
97
|
+
env: Env,
|
|
98
|
+
reconcilerVersion: z.string(),
|
|
99
|
+
startedAt: z.string().datetime(),
|
|
100
|
+
finishedAt: z.string().datetime(),
|
|
101
|
+
/** Journey models as they exist at this commit in the repo. */
|
|
102
|
+
journeys: z.array(JourneyModel),
|
|
103
|
+
scenarios: z.array(Scenario),
|
|
104
|
+
extractedGraph: ExtractedGraph,
|
|
105
|
+
contract: ContractSnapshot,
|
|
106
|
+
walk: WalkResult,
|
|
107
|
+
visual: z.array(VisualComparison),
|
|
108
|
+
/** Seams the author declared were touched, if any (backend changes). */
|
|
109
|
+
declaredSeams: z.array(z.string()).default([]),
|
|
110
|
+
/** Run id the reconciler reserved via presign; API uses it as the artifacts prefix. */
|
|
111
|
+
runId: z.string().uuid(),
|
|
112
|
+
});
|
|
113
|
+
/** Baseline manifest the API hands the reconciler before the walk. */
|
|
114
|
+
export const BaselineManifestEntry = z.object({
|
|
115
|
+
journeyKey: z.string(),
|
|
116
|
+
stateKey: z.string(),
|
|
117
|
+
scenario: z.string(),
|
|
118
|
+
s3Key: z.string(),
|
|
119
|
+
/** Presigned GET URL valid for the duration of the run. */
|
|
120
|
+
url: z.string().url(),
|
|
121
|
+
});
|
|
122
|
+
export const BaselineManifest = z.object({
|
|
123
|
+
projectKey: z.string(),
|
|
124
|
+
entries: z.array(BaselineManifestEntry),
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAGhD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGtE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAG1D,oDAAoD;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,+EAA+E;IAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,2DAA2D;IAC3D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACpC,6CAA6C;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,2DAA2D;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,uDAAuD;IACvD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,8EAA8E;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACvC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,qEAAqE;IACrE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACzC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3D,CAAC,CAAC;AAGH,oFAAoF;AACpF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAChC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAGlE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,mEAAmE;IACnE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxF,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,wDAAwD;IACxD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7C,+DAA+D;IAC/D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC;QAChF,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,GAAG;KACZ,CAAC;IACF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;CACzB,CAAC,CAAC;AAGH,oDAAoD;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,2EAA2E;IAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,0CAA0C;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,iGAAiG;IACjG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAGH,wEAAwE;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,OAAO;IACb,mEAAmE;IACnE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,GAAG,EAAE,GAAG;IACR,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5B,cAAc,EAAE,cAAc;IAC9B,QAAQ,EAAE,gBAAgB;IAC1B,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACjC,wEAAwE;IACxE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,uFAAuF;IACvF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;CACzB,CAAC,CAAC;AAGH,sEAAsE;AACtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,2DAA2D;IAC3D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CACtB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;CACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const VerdictValue: z.ZodEnum<["matched", "missing", "undeclared", "changed", "held", "planned"]>;
|
|
3
|
+
export type VerdictValue = z.infer<typeof VerdictValue>;
|
|
4
|
+
export declare const VerdictFamily: z.ZodEnum<["structural", "executable", "visual", "contract"]>;
|
|
5
|
+
export type VerdictFamily = z.infer<typeof VerdictFamily>;
|
|
6
|
+
export declare const ElementKind: z.ZodEnum<["state", "transition", "screenshot", "operation"]>;
|
|
7
|
+
export type ElementKind = z.infer<typeof ElementKind>;
|
|
8
|
+
export declare const Verdict: z.ZodObject<{
|
|
9
|
+
journeyKey: z.ZodNullable<z.ZodString>;
|
|
10
|
+
elementKind: z.ZodEnum<["state", "transition", "screenshot", "operation"]>;
|
|
11
|
+
/** state key, transition key (`a--EVT-->b`), `state/scenario`, or operation name. */
|
|
12
|
+
elementKey: z.ZodString;
|
|
13
|
+
family: z.ZodEnum<["structural", "executable", "visual", "contract"]>;
|
|
14
|
+
value: z.ZodEnum<["matched", "missing", "undeclared", "changed", "held", "planned"]>;
|
|
15
|
+
detail: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
value: "planned" | "matched" | "missing" | "undeclared" | "changed" | "held";
|
|
18
|
+
journeyKey: string | null;
|
|
19
|
+
family: "structural" | "visual" | "contract" | "executable";
|
|
20
|
+
elementKind: "state" | "transition" | "screenshot" | "operation";
|
|
21
|
+
elementKey: string;
|
|
22
|
+
detail: Record<string, unknown>;
|
|
23
|
+
}, {
|
|
24
|
+
value: "planned" | "matched" | "missing" | "undeclared" | "changed" | "held";
|
|
25
|
+
journeyKey: string | null;
|
|
26
|
+
family: "structural" | "visual" | "contract" | "executable";
|
|
27
|
+
elementKind: "state" | "transition" | "screenshot" | "operation";
|
|
28
|
+
elementKey: string;
|
|
29
|
+
detail?: Record<string, unknown> | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
export type Verdict = z.infer<typeof Verdict>;
|
|
32
|
+
/** Verdict values that require a human to look. */
|
|
33
|
+
export declare const JUDGMENT_VALUES: ReadonlySet<VerdictValue>;
|
|
34
|
+
export declare function requiresJudgment(v: Pick<Verdict, 'value'>): boolean;
|
|
35
|
+
//# sourceMappingURL=verdict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdict.d.ts","sourceRoot":"","sources":["../src/verdict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY,+EAOvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,aAAa,+DAA6D,CAAC;AACxF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,WAAW,+DAA6D,CAAC;AACtF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,OAAO;;;IAGlB,qFAAqF;;;;;;;;;;;;;;;;;;;EAKrF,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C,mDAAmD;AACnD,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,YAAY,CAIpD,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,OAAO,CAEnE"}
|
package/dist/verdict.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const VerdictValue = z.enum([
|
|
3
|
+
'matched',
|
|
4
|
+
'missing',
|
|
5
|
+
'undeclared',
|
|
6
|
+
'changed',
|
|
7
|
+
'held',
|
|
8
|
+
'planned',
|
|
9
|
+
]);
|
|
10
|
+
export const VerdictFamily = z.enum(['structural', 'executable', 'visual', 'contract']);
|
|
11
|
+
export const ElementKind = z.enum(['state', 'transition', 'screenshot', 'operation']);
|
|
12
|
+
export const Verdict = z.object({
|
|
13
|
+
journeyKey: z.string().nullable(),
|
|
14
|
+
elementKind: ElementKind,
|
|
15
|
+
/** state key, transition key (`a--EVT-->b`), `state/scenario`, or operation name. */
|
|
16
|
+
elementKey: z.string(),
|
|
17
|
+
family: VerdictFamily,
|
|
18
|
+
value: VerdictValue,
|
|
19
|
+
detail: z.record(z.string(), z.unknown()).default({}),
|
|
20
|
+
});
|
|
21
|
+
/** Verdict values that require a human to look. */
|
|
22
|
+
export const JUDGMENT_VALUES = new Set([
|
|
23
|
+
'missing',
|
|
24
|
+
'undeclared',
|
|
25
|
+
'changed',
|
|
26
|
+
]);
|
|
27
|
+
export function requiresJudgment(v) {
|
|
28
|
+
return JUDGMENT_VALUES.has(v.value);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=verdict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verdict.js","sourceRoot":"","sources":["../src/verdict.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,SAAS;IACT,SAAS;IACT,YAAY;IACZ,SAAS;IACT,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAGxF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;AAGtF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,WAAW,EAAE,WAAW;IACxB,qFAAqF;IACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtD,CAAC,CAAC;AAGH,mDAAmD;AACnD,MAAM,CAAC,MAAM,eAAe,GAA8B,IAAI,GAAG,CAAe;IAC9E,SAAS;IACT,YAAY;IACZ,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,CAAyB;IACxD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@junejuly-lockstep/model",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Shared zod schemas and types for Lockstep: journey model, run payload, verdicts, cards, API request and response shapes.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/JuneJulyHealth/lockstep.git",
|
|
9
|
+
"directory": "packages/model"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/JuneJulyHealth/lockstep/tree/main/packages/model#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/JuneJulyHealth/lockstep/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"lockstep",
|
|
17
|
+
"zod",
|
|
18
|
+
"schema",
|
|
19
|
+
"journey",
|
|
20
|
+
"xstate",
|
|
21
|
+
"types"
|
|
22
|
+
],
|
|
23
|
+
"type": "module",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"main": "./dist/index.js",
|
|
26
|
+
"types": "./dist/index.d.ts",
|
|
27
|
+
"exports": {
|
|
28
|
+
".": {
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"import": "./dist/index.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public",
|
|
38
|
+
"provenance": false
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=20.18"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"zod": "^3.24.1"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"typescript": "^5.7.2",
|
|
48
|
+
"vitest": "^2.1.8"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc -p tsconfig.json",
|
|
52
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
53
|
+
"lint": "eslint src",
|
|
54
|
+
"test": "vitest run"
|
|
55
|
+
}
|
|
6
56
|
}
|