@crvouga/mockingbird-service-junction 0.1.0 → 0.1.2

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.
Files changed (62) hide show
  1. package/README.md +23 -11
  2. package/dist/index.d.ts +492 -21
  3. package/dist/index.js +6086 -107
  4. package/dist/index.js.map +7 -1
  5. package/package.json +11 -10
  6. package/dist/catalog.d.ts +0 -63
  7. package/dist/catalog.d.ts.map +0 -1
  8. package/dist/catalog.js +0 -736
  9. package/dist/catalog.js.map +0 -1
  10. package/dist/coverage-corpus.d.ts +0 -76
  11. package/dist/coverage-corpus.d.ts.map +0 -1
  12. package/dist/coverage-corpus.js +0 -166
  13. package/dist/coverage-corpus.js.map +0 -1
  14. package/dist/generated/openapi.d.ts +0 -7
  15. package/dist/generated/openapi.d.ts.map +0 -1
  16. package/dist/generated/openapi.js +0 -5
  17. package/dist/generated/openapi.js.map +0 -1
  18. package/dist/index.d.ts.map +0 -1
  19. package/dist/lab-accounts.d.ts +0 -38
  20. package/dist/lab-accounts.d.ts.map +0 -1
  21. package/dist/lab-accounts.js +0 -213
  22. package/dist/lab-accounts.js.map +0 -1
  23. package/dist/orders.d.ts +0 -18
  24. package/dist/orders.d.ts.map +0 -1
  25. package/dist/orders.js +0 -1247
  26. package/dist/orders.js.map +0 -1
  27. package/dist/prefetch.d.ts +0 -43
  28. package/dist/prefetch.d.ts.map +0 -1
  29. package/dist/prefetch.js +0 -131
  30. package/dist/prefetch.js.map +0 -1
  31. package/dist/reshape.d.ts +0 -22
  32. package/dist/reshape.d.ts.map +0 -1
  33. package/dist/reshape.js +0 -190
  34. package/dist/reshape.js.map +0 -1
  35. package/dist/results.d.ts +0 -19
  36. package/dist/results.d.ts.map +0 -1
  37. package/dist/results.js +0 -221
  38. package/dist/results.js.map +0 -1
  39. package/dist/scheduling.d.ts +0 -113
  40. package/dist/scheduling.d.ts.map +0 -1
  41. package/dist/scheduling.js +0 -1508
  42. package/dist/scheduling.js.map +0 -1
  43. package/dist/sealed-corpus.d.ts +0 -28
  44. package/dist/sealed-corpus.d.ts.map +0 -1
  45. package/dist/sealed-corpus.js +0 -17
  46. package/dist/sealed-corpus.js.map +0 -1
  47. package/dist/seed-from.d.ts +0 -27
  48. package/dist/seed-from.d.ts.map +0 -1
  49. package/dist/seed-from.js +0 -523
  50. package/dist/seed-from.js.map +0 -1
  51. package/dist/seeds.d.ts +0 -9
  52. package/dist/seeds.d.ts.map +0 -1
  53. package/dist/seeds.js +0 -9
  54. package/dist/seeds.js.map +0 -1
  55. package/dist/state.d.ts +0 -270
  56. package/dist/state.d.ts.map +0 -1
  57. package/dist/state.js +0 -448
  58. package/dist/state.js.map +0 -1
  59. package/dist/users.d.ts +0 -13
  60. package/dist/users.d.ts.map +0 -1
  61. package/dist/users.js +0 -669
  62. package/dist/users.js.map +0 -1
package/dist/state.d.ts DELETED
@@ -1,270 +0,0 @@
1
- import { Collection, IdSequence } from "@crvouga/mockingbird-service";
2
- import type { SqliteClient } from "@crvouga/mockingbird-sqlite";
3
- import { type ExpectedResult, type LabTestRecord } from "./catalog.js";
4
- export type { CatalogMarker, ExpectedResult, LabTestRecord } from "./catalog.js";
5
- export { expectedResultsFor, LAB_TEST_CATALOG, labTestById, TEAM_LABS } from "./catalog.js";
6
- export type GetCacheEntry = {
7
- status: number;
8
- headers: Record<string, string>;
9
- body: unknown;
10
- };
11
- export declare const observationCacheKey: (url: URL | string, method?: string, body?: unknown) => string;
12
- export type UserInfoRecord = Record<string, unknown>;
13
- export type AppointmentModality = "phlebotomy" | "patient_service_center";
14
- export type AppointmentProviderName = "getlabs" | "phlebfinders" | "quest";
15
- export type AppointmentStatus = "confirmed" | "pending" | "reserved" | "in_progress" | "completed" | "cancelled";
16
- export type AppointmentEventStatus = "pending" | "reserved" | "scheduled" | "completed" | "cancelled" | "in_progress";
17
- export type AppointmentEventRecord = {
18
- created_at: string;
19
- status: AppointmentEventStatus;
20
- data: Record<string, unknown> | null;
21
- };
22
- export type AppointmentRecord = {
23
- id: string;
24
- order_id: string;
25
- user_id: string;
26
- provider_id: string;
27
- external_id: string | null;
28
- type: AppointmentModality;
29
- provider: AppointmentProviderName;
30
- status: AppointmentStatus;
31
- event_status: AppointmentEventStatus;
32
- start_at: string | null;
33
- end_at: string | null;
34
- iana_timezone: string | null;
35
- address: Record<string, unknown>;
36
- location: {
37
- lng: number;
38
- lat: number;
39
- };
40
- can_reschedule: boolean;
41
- booking_key: string | null;
42
- site_code: string | null;
43
- appointment_notes: string | null;
44
- order_transaction_id: string | null;
45
- event_data: Record<string, unknown> | null;
46
- events: AppointmentEventRecord[];
47
- created_at: string;
48
- updated_at: string;
49
- };
50
- export type BookingKeyRecord = {
51
- key: string;
52
- start: string;
53
- end: string;
54
- expires_at: string | null;
55
- price: number;
56
- is_priority: boolean;
57
- num_appointments_available: number;
58
- modality: AppointmentModality;
59
- provider: AppointmentProviderName;
60
- site_code: string | null;
61
- zip_code: string;
62
- address: Record<string, unknown>;
63
- location: {
64
- lng: number;
65
- lat: number;
66
- };
67
- consumed_by_order_id: string | null;
68
- created_at: string;
69
- };
70
- export type PendingSimulateTransition = {
71
- order_id: string;
72
- due_at: number;
73
- final_status: string;
74
- flags: Record<string, unknown> | null;
75
- };
76
- export type JunctionWebhookEvent = {
77
- event_type: "labtest.order.created" | "labtest.order.updated" | "labtest.appointment.updated";
78
- data: Record<string, unknown>;
79
- team_id: string;
80
- user_id: string;
81
- client_user_id: string;
82
- };
83
- export type WebhookEventRecord = {
84
- sequence: number;
85
- event: JunctionWebhookEvent;
86
- };
87
- export type WebhookDeliveryAttempt = {
88
- message_id: string;
89
- event: JunctionWebhookEvent;
90
- attempt: number;
91
- scheduled_at: string;
92
- timeout_ms: number;
93
- acknowledged: boolean;
94
- };
95
- export declare const WEBHOOK_RETRY_DELAYS_MS: readonly [0, 5000, 300000, 1800000, 7200000, 18000000, 36000000, 36000000];
96
- export type UserRecord = {
97
- user_id: string;
98
- team_id: string;
99
- client_user_id: string;
100
- created_on: string;
101
- connected_sources: unknown[];
102
- fallback_time_zone: {
103
- id: string;
104
- source_slug: string;
105
- updated_at: string;
106
- } | null;
107
- fallback_birth_date: {
108
- value: string;
109
- source_slug: string;
110
- updated_at: string;
111
- } | null;
112
- ingestion_start: string | null;
113
- ingestion_end: string | null;
114
- };
115
- /** Fixed mock team id — volatile on the real side, stable in the mock. */
116
- export declare const MOCK_TEAM_ID = "11111111-1111-4111-8111-111111111111";
117
- /** Deterministic UUID derived from a salt + sequence (version/variant bits fixed). */
118
- export declare const deterministicUuid: (input: string) => string;
119
- export type OrderEventRecord = {
120
- id: number;
121
- created_at: string;
122
- status: string;
123
- status_detail: null;
124
- };
125
- export type OrderTransactionEmbed = {
126
- id: string;
127
- status: "active" | "completed" | "cancelled";
128
- orders: Array<{
129
- id: string;
130
- low_level_status: string;
131
- low_level_status_created_at: string;
132
- origin: string;
133
- parent_id: null;
134
- created_at: string;
135
- updated_at: string;
136
- }>;
137
- };
138
- export type OrderRecord = {
139
- id: string;
140
- user_id: string;
141
- team_id: string;
142
- patient_details: Record<string, unknown>;
143
- patient_address: Record<string, unknown>;
144
- lab_test: LabTestRecord;
145
- details: Record<string, unknown>;
146
- sample_id: string | null;
147
- notes: null;
148
- clinical_notes: string | null;
149
- passthrough: string | null;
150
- /** Echoed from the request's opaque provider account id; absent when the order had none. */
151
- lab_account_id?: string;
152
- created_at: string;
153
- updated_at: string;
154
- events: OrderEventRecord[];
155
- status: string;
156
- last_event: OrderEventRecord;
157
- physician: {
158
- first_name: string;
159
- last_name: string;
160
- npi: string;
161
- };
162
- health_insurance_id: null;
163
- requisition_form_url: string | null;
164
- shipping_details: null;
165
- has_abn: boolean;
166
- billing_type: string;
167
- priority: boolean;
168
- activate_by: null;
169
- icd_codes: string[] | null;
170
- interpretation: string | null;
171
- has_missing_results: boolean | null;
172
- result_types: string[] | null;
173
- expected_result_by_date: string | null;
174
- worst_case_result_by_date: string | null;
175
- origin: string;
176
- order_transaction: OrderTransactionEmbed;
177
- };
178
- export type WebhookPublisher = (event: JunctionWebhookEvent) => void;
179
- export type JunctionWebhookOptions = {
180
- seed?: number;
181
- jitterRatio?: number;
182
- timeoutMs?: number;
183
- };
184
- export declare class JunctionState {
185
- private readonly publishEvent;
186
- private readonly webhookRandom;
187
- private readonly webhookJitterRatio;
188
- private readonly webhookTimeoutMs;
189
- readonly users: Collection<UserRecord>;
190
- readonly ids: IdSequence;
191
- readonly byClientId: Collection<{
192
- user_id: string;
193
- }>;
194
- readonly deletedUsers: Collection<{
195
- user_id: string;
196
- }>;
197
- readonly userInfo: Collection<UserInfoRecord>;
198
- readonly orders: Collection<OrderRecord>;
199
- readonly orderIdempotency: Collection<{
200
- order_id: string;
201
- response: unknown;
202
- fingerprint: string;
203
- }>;
204
- readonly cancelIdempotency: Collection<{
205
- order_id: string;
206
- response: unknown;
207
- }>;
208
- readonly appointments: Collection<AppointmentRecord>;
209
- readonly appointmentsByOrder: Collection<{
210
- appointment_id: string;
211
- }>;
212
- readonly bookingKeys: Collection<BookingKeyRecord>;
213
- readonly pendingSimulateTransitions: Collection<PendingSimulateTransition>;
214
- readonly orderByTransaction: Collection<{
215
- order_id: string;
216
- }>;
217
- readonly webhookEvents: Collection<WebhookEventRecord>;
218
- readonly webhookDeliveryAttempts: Collection<WebhookDeliveryAttempt>;
219
- readonly labTests: Collection<LabTestRecord>;
220
- readonly labs: Collection<Record<string, unknown>>;
221
- readonly labAccounts: Collection<Record<string, unknown>>;
222
- readonly expectedResults: Collection<ExpectedResult[]>;
223
- readonly getCache: Collection<GetCacheEntry>;
224
- constructor(sqlite: SqliteClient, namespace: string, publisher?: WebhookPublisher, webhookOptions?: JunctionWebhookOptions);
225
- seedDefaultCatalog(): void;
226
- private clearCollection;
227
- labKeyOf(lab: Record<string, unknown>): string;
228
- labAccountKeyOf(account: Record<string, unknown>): string;
229
- labTestById(id: string): LabTestRecord | undefined;
230
- upsertLabTest(test: LabTestRecord, expectedResults?: readonly ExpectedResult[]): void;
231
- listLabTests(): LabTestRecord[];
232
- listLabs(): Record<string, unknown>[];
233
- listLabAccounts(): Record<string, unknown>[];
234
- expectedResultsFor(labTestId: string): ExpectedResult[];
235
- replaceCatalog(input: {
236
- labTests: readonly LabTestRecord[];
237
- labs: readonly Record<string, unknown>[];
238
- expectedResults: Readonly<Record<string, readonly ExpectedResult[]>>;
239
- }): void;
240
- replaceLabAccounts(entries: readonly Record<string, unknown>[]): void;
241
- putGetCache(key: string, entry: GetCacheEntry): void;
242
- getGetCache(key: string): GetCacheEntry | undefined;
243
- installGetCache(entries: Iterable<[string, GetCacheEntry]>): void;
244
- /**
245
- * Materialize booking_key records from a cached availability payload so subsequent
246
- * book/reschedule calls succeed against observation-seeded mocks.
247
- */
248
- hydrateBookingKeysFromAvailability(body: unknown, nowMs: number, zipCode?: string, modalityHint?: AppointmentModality): void;
249
- cacheKeyForRequest(method: string, pathname: string, searchParams?: URLSearchParams | string | Record<string, string> | null, body?: unknown): string;
250
- insertUser(user: UserRecord): void;
251
- insertOrder(order: OrderRecord): void;
252
- insertAppointment(appointment: AppointmentRecord): void;
253
- nextUserId(): string;
254
- nextOrderId(): string;
255
- nextAppointmentId(): string;
256
- bookingKeyFor(input: string): string;
257
- appointmentProviderIdFor(input: string): string;
258
- transactionIdFor(orderId: string): string;
259
- testkitIdFor(orderId: string): string;
260
- publishWebhook(event: JunctionWebhookEvent, now?: number): void;
261
- webhookEventsInOrder(): JunctionWebhookEvent[];
262
- webhookDeliveryAttemptsInOrder(): WebhookDeliveryAttempt[];
263
- publishOrderWebhook(order: OrderRecord, eventType: JunctionWebhookEvent["event_type"], now?: number): void;
264
- publishAppointmentWebhook(appointment: AppointmentRecord, teamId: string, now?: number): void;
265
- queueSimulateTransition(transition: PendingSimulateTransition): void;
266
- /** Apply any simulate transitions whose delay has elapsed; called lazily on reads. */
267
- applyDueSimulateTransitions(nowMs: number, apply: (order: OrderRecord, finalStatus: string, flags: Record<string, unknown> | null) => void): void;
268
- isoNow(now: () => number): string;
269
- }
270
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}