@crvouga/mockingbird-service-junction 0.1.1 → 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.
Files changed (79) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +448 -133
  3. package/dist/chunk-4C6VYRJN.js +18 -0
  4. package/dist/chunk-4C6VYRJN.js.map +7 -0
  5. package/dist/chunk-KKNULV7X.js +406 -0
  6. package/dist/chunk-KKNULV7X.js.map +7 -0
  7. package/dist/chunk-MA3HSUVD.js +7771 -0
  8. package/dist/chunk-MA3HSUVD.js.map +7 -0
  9. package/dist/chunk-MD4KYEIM.js +145758 -0
  10. package/dist/chunk-MD4KYEIM.js.map +7 -0
  11. package/dist/cli.js +214 -0
  12. package/dist/cli.js.map +7 -0
  13. package/dist/corpus.d.ts +97 -0
  14. package/dist/corpus.js +8 -0
  15. package/dist/corpus.js.map +7 -0
  16. package/dist/index.d.ts +1131 -21
  17. package/dist/index.js +82 -120
  18. package/dist/index.js.map +7 -1
  19. package/dist/server.d.ts +978 -0
  20. package/dist/server.js +16 -0
  21. package/dist/server.js.map +7 -0
  22. package/package.json +32 -12
  23. package/dist/catalog.d.ts +0 -63
  24. package/dist/catalog.d.ts.map +0 -1
  25. package/dist/catalog.js +0 -736
  26. package/dist/catalog.js.map +0 -1
  27. package/dist/coverage-corpus.d.ts +0 -76
  28. package/dist/coverage-corpus.d.ts.map +0 -1
  29. package/dist/coverage-corpus.js +0 -166
  30. package/dist/coverage-corpus.js.map +0 -1
  31. package/dist/generated/openapi.d.ts +0 -7
  32. package/dist/generated/openapi.d.ts.map +0 -1
  33. package/dist/generated/openapi.js +0 -5
  34. package/dist/generated/openapi.js.map +0 -1
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/lab-accounts.d.ts +0 -38
  37. package/dist/lab-accounts.d.ts.map +0 -1
  38. package/dist/lab-accounts.js +0 -213
  39. package/dist/lab-accounts.js.map +0 -1
  40. package/dist/orders.d.ts +0 -18
  41. package/dist/orders.d.ts.map +0 -1
  42. package/dist/orders.js +0 -1247
  43. package/dist/orders.js.map +0 -1
  44. package/dist/prefetch.d.ts +0 -43
  45. package/dist/prefetch.d.ts.map +0 -1
  46. package/dist/prefetch.js +0 -131
  47. package/dist/prefetch.js.map +0 -1
  48. package/dist/reshape.d.ts +0 -22
  49. package/dist/reshape.d.ts.map +0 -1
  50. package/dist/reshape.js +0 -190
  51. package/dist/reshape.js.map +0 -1
  52. package/dist/results.d.ts +0 -19
  53. package/dist/results.d.ts.map +0 -1
  54. package/dist/results.js +0 -221
  55. package/dist/results.js.map +0 -1
  56. package/dist/scheduling.d.ts +0 -113
  57. package/dist/scheduling.d.ts.map +0 -1
  58. package/dist/scheduling.js +0 -1508
  59. package/dist/scheduling.js.map +0 -1
  60. package/dist/sealed-corpus.d.ts +0 -28
  61. package/dist/sealed-corpus.d.ts.map +0 -1
  62. package/dist/sealed-corpus.js +0 -17
  63. package/dist/sealed-corpus.js.map +0 -1
  64. package/dist/seed-from.d.ts +0 -27
  65. package/dist/seed-from.d.ts.map +0 -1
  66. package/dist/seed-from.js +0 -523
  67. package/dist/seed-from.js.map +0 -1
  68. package/dist/seeds.d.ts +0 -9
  69. package/dist/seeds.d.ts.map +0 -1
  70. package/dist/seeds.js +0 -9
  71. package/dist/seeds.js.map +0 -1
  72. package/dist/state.d.ts +0 -270
  73. package/dist/state.d.ts.map +0 -1
  74. package/dist/state.js +0 -448
  75. package/dist/state.js.map +0 -1
  76. package/dist/users.d.ts +0 -13
  77. package/dist/users.d.ts.map +0 -1
  78. package/dist/users.js +0 -669
  79. 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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"}