@murphai/contracts 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 +674 -0
- package/README.md +24 -0
- package/dist/bank-entities.d.ts +35 -0
- package/dist/bank-entities.d.ts.map +1 -0
- package/dist/bank-entities.js +164 -0
- package/dist/bank-entities.js.map +1 -0
- package/dist/command-capabilities.d.ts +50 -0
- package/dist/command-capabilities.d.ts.map +1 -0
- package/dist/command-capabilities.js +149 -0
- package/dist/command-capabilities.js.map +1 -0
- package/dist/constants.d.ts +149 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +232 -0
- package/dist/constants.js.map +1 -0
- package/dist/examples.d.ts +31 -0
- package/dist/examples.d.ts.map +1 -0
- package/dist/examples.js +943 -0
- package/dist/examples.js.map +1 -0
- package/dist/frontmatter.d.ts +28 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +272 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/health-entities.d.ts +87 -0
- package/dist/health-entities.d.ts.map +1 -0
- package/dist/health-entities.js +349 -0
- package/dist/health-entities.js.map +1 -0
- package/dist/ids.d.ts +10 -0
- package/dist/ids.d.ts.map +1 -0
- package/dist/ids.js +27 -0
- package/dist/ids.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/registry-helpers.d.ts +31 -0
- package/dist/registry-helpers.d.ts.map +1 -0
- package/dist/registry-helpers.js +53 -0
- package/dist/registry-helpers.js.map +1 -0
- package/dist/schemas.d.ts +47 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +50 -0
- package/dist/schemas.js.map +1 -0
- package/dist/scripts/generate-json-schema.js +13 -0
- package/dist/scripts/generate-json-schema.js.map +1 -0
- package/dist/scripts/verify.js +230 -0
- package/dist/scripts/verify.js.map +1 -0
- package/dist/shares.d.ts +715 -0
- package/dist/shares.d.ts.map +1 -0
- package/dist/shares.js +469 -0
- package/dist/shares.js.map +1 -0
- package/dist/time.d.ts +25 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +241 -0
- package/dist/time.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +18 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +129 -0
- package/dist/validate.js.map +1 -0
- package/dist/zod.d.ts +1626 -0
- package/dist/zod.d.ts.map +1 -0
- package/dist/zod.js +834 -0
- package/dist/zod.js.map +1 -0
- package/generated/assessment-response.schema.json +101 -0
- package/generated/audit-record.schema.json +141 -0
- package/generated/event-record.schema.json +2708 -0
- package/generated/frontmatter-allergy.schema.json +82 -0
- package/generated/frontmatter-condition.schema.json +101 -0
- package/generated/frontmatter-core.schema.json +51 -0
- package/generated/frontmatter-experiment.schema.json +70 -0
- package/generated/frontmatter-family-member.schema.json +68 -0
- package/generated/frontmatter-food.schema.json +128 -0
- package/generated/frontmatter-genetic-variant.schema.json +81 -0
- package/generated/frontmatter-goal.schema.json +116 -0
- package/generated/frontmatter-journal-day.schema.json +52 -0
- package/generated/frontmatter-profile-current.schema.json +55 -0
- package/generated/frontmatter-protocol.schema.json +153 -0
- package/generated/frontmatter-provider.schema.json +81 -0
- package/generated/frontmatter-recipe.schema.json +124 -0
- package/generated/frontmatter-workout-format.schema.json +163 -0
- package/generated/inbox-capture-record.schema.json +332 -0
- package/generated/profile-snapshot.schema.json +131 -0
- package/generated/sample-record.schema.json +726 -0
- package/generated/vault-metadata.schema.json +324 -0
- package/package.json +69 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import { HEALTH_HISTORY_EVENT_KINDS, ID_PREFIXES } from "./constants.js";
|
|
2
|
+
import { applyRegistryMetadataDefaults, extractRegistryLinks, extractRegistryRelatedIds, } from "./registry-helpers.js";
|
|
3
|
+
import { allergyUpsertPatchPayloadSchema, allergyUpsertPayloadSchema, conditionUpsertPatchPayloadSchema, conditionUpsertPayloadSchema, familyMemberUpsertPatchPayloadSchema, familyMemberUpsertPayloadSchema, geneticVariantUpsertPatchPayloadSchema, geneticVariantUpsertPayloadSchema, goalUpsertPatchPayloadSchema, goalUpsertPayloadSchema, protocolUpsertPayloadSchema, } from "./shares.js";
|
|
4
|
+
import { allergyFrontmatterSchema, conditionFrontmatterSchema, familyMemberFrontmatterSchema, geneticVariantFrontmatterSchema, goalFrontmatterSchema, protocolFrontmatterSchema, } from "./zod.js";
|
|
5
|
+
export function defineRegistryEntity(input) {
|
|
6
|
+
const registry = applyRegistryMetadataDefaults(input.registry);
|
|
7
|
+
return {
|
|
8
|
+
...input,
|
|
9
|
+
registry,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
const RELATED_IDS_COMPATIBILITY_RELATION = {
|
|
13
|
+
type: "related_to",
|
|
14
|
+
keys: ["relatedIds"],
|
|
15
|
+
cardinality: "many",
|
|
16
|
+
};
|
|
17
|
+
const checkedHealthEntityDefinitions = [
|
|
18
|
+
{
|
|
19
|
+
kind: "assessment",
|
|
20
|
+
listKinds: ["assessment"],
|
|
21
|
+
noun: "assessment",
|
|
22
|
+
plural: "assessments",
|
|
23
|
+
prefixes: [`${ID_PREFIXES.assessment}_`],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
kind: "profile",
|
|
27
|
+
listKinds: ["profile"],
|
|
28
|
+
lookupAliases: ["current"],
|
|
29
|
+
noun: "profile",
|
|
30
|
+
plural: "profiles",
|
|
31
|
+
prefixes: [`${ID_PREFIXES.profileSnapshot}_`],
|
|
32
|
+
scaffoldTemplate: {
|
|
33
|
+
source: "manual",
|
|
34
|
+
profile: {
|
|
35
|
+
domains: [],
|
|
36
|
+
topGoalIds: [],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
defineRegistryEntity({
|
|
41
|
+
kind: "goal",
|
|
42
|
+
listKinds: ["goal"],
|
|
43
|
+
noun: "goal",
|
|
44
|
+
plural: "goals",
|
|
45
|
+
prefixes: [`${ID_PREFIXES.goal}_`],
|
|
46
|
+
scaffoldTemplate: {
|
|
47
|
+
title: "Improve sleep quality and duration",
|
|
48
|
+
status: "active",
|
|
49
|
+
horizon: "long_term",
|
|
50
|
+
priority: 1,
|
|
51
|
+
window: {
|
|
52
|
+
startAt: "2026-03-12",
|
|
53
|
+
targetAt: "2026-06-01",
|
|
54
|
+
},
|
|
55
|
+
domains: ["sleep"],
|
|
56
|
+
},
|
|
57
|
+
registry: {
|
|
58
|
+
frontmatterSchema: goalFrontmatterSchema,
|
|
59
|
+
directory: "bank/goals",
|
|
60
|
+
idField: "goalId",
|
|
61
|
+
patchPayloadSchema: goalUpsertPatchPayloadSchema,
|
|
62
|
+
upsertPayloadSchema: goalUpsertPayloadSchema,
|
|
63
|
+
relationKeys: [
|
|
64
|
+
RELATED_IDS_COMPATIBILITY_RELATION,
|
|
65
|
+
{
|
|
66
|
+
type: "parent_goal",
|
|
67
|
+
keys: ["parentGoalId"],
|
|
68
|
+
cardinality: "one",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: "related_goal",
|
|
72
|
+
keys: ["relatedGoalIds"],
|
|
73
|
+
cardinality: "many",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: "related_experiment",
|
|
77
|
+
keys: ["relatedExperimentIds"],
|
|
78
|
+
cardinality: "many",
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
titleKeys: ["title"],
|
|
82
|
+
statusKeys: ["status"],
|
|
83
|
+
},
|
|
84
|
+
}),
|
|
85
|
+
defineRegistryEntity({
|
|
86
|
+
kind: "condition",
|
|
87
|
+
listKinds: ["condition"],
|
|
88
|
+
noun: "condition",
|
|
89
|
+
plural: "conditions",
|
|
90
|
+
prefixes: [`${ID_PREFIXES.condition}_`],
|
|
91
|
+
scaffoldTemplate: {
|
|
92
|
+
title: "Insomnia symptoms",
|
|
93
|
+
clinicalStatus: "active",
|
|
94
|
+
verificationStatus: "provisional",
|
|
95
|
+
assertedOn: "2026-03-12",
|
|
96
|
+
},
|
|
97
|
+
registry: {
|
|
98
|
+
frontmatterSchema: conditionFrontmatterSchema,
|
|
99
|
+
directory: "bank/conditions",
|
|
100
|
+
idField: "conditionId",
|
|
101
|
+
patchPayloadSchema: conditionUpsertPatchPayloadSchema,
|
|
102
|
+
upsertPayloadSchema: conditionUpsertPayloadSchema,
|
|
103
|
+
relationKeys: [
|
|
104
|
+
RELATED_IDS_COMPATIBILITY_RELATION,
|
|
105
|
+
{
|
|
106
|
+
type: "related_goal",
|
|
107
|
+
keys: ["relatedGoalIds"],
|
|
108
|
+
cardinality: "many",
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: "related_protocol",
|
|
112
|
+
keys: ["relatedProtocolIds"],
|
|
113
|
+
cardinality: "many",
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
titleKeys: ["title"],
|
|
117
|
+
statusKeys: ["clinicalStatus"],
|
|
118
|
+
},
|
|
119
|
+
}),
|
|
120
|
+
defineRegistryEntity({
|
|
121
|
+
kind: "allergy",
|
|
122
|
+
listKinds: ["allergy"],
|
|
123
|
+
noun: "allergy",
|
|
124
|
+
plural: "allergies",
|
|
125
|
+
prefixes: [`${ID_PREFIXES.allergy}_`],
|
|
126
|
+
scaffoldTemplate: {
|
|
127
|
+
title: "Penicillin intolerance",
|
|
128
|
+
substance: "Penicillin",
|
|
129
|
+
status: "active",
|
|
130
|
+
},
|
|
131
|
+
registry: {
|
|
132
|
+
frontmatterSchema: allergyFrontmatterSchema,
|
|
133
|
+
directory: "bank/allergies",
|
|
134
|
+
idField: "allergyId",
|
|
135
|
+
patchPayloadSchema: allergyUpsertPatchPayloadSchema,
|
|
136
|
+
upsertPayloadSchema: allergyUpsertPayloadSchema,
|
|
137
|
+
relationKeys: [
|
|
138
|
+
RELATED_IDS_COMPATIBILITY_RELATION,
|
|
139
|
+
{
|
|
140
|
+
type: "related_condition",
|
|
141
|
+
keys: ["relatedConditionIds"],
|
|
142
|
+
cardinality: "many",
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
titleKeys: ["title"],
|
|
146
|
+
statusKeys: ["status"],
|
|
147
|
+
},
|
|
148
|
+
}),
|
|
149
|
+
defineRegistryEntity({
|
|
150
|
+
kind: "protocol",
|
|
151
|
+
listKinds: ["protocol"],
|
|
152
|
+
noun: "protocol",
|
|
153
|
+
plural: "protocols",
|
|
154
|
+
prefixes: [`${ID_PREFIXES.protocol}_`],
|
|
155
|
+
scaffoldTemplate: {
|
|
156
|
+
title: "Magnesium glycinate",
|
|
157
|
+
kind: "supplement",
|
|
158
|
+
status: "active",
|
|
159
|
+
startedOn: "2026-03-12",
|
|
160
|
+
group: "sleep",
|
|
161
|
+
},
|
|
162
|
+
registry: {
|
|
163
|
+
frontmatterSchema: protocolFrontmatterSchema,
|
|
164
|
+
directory: "bank/protocols",
|
|
165
|
+
idField: "protocolId",
|
|
166
|
+
upsertPayloadSchema: protocolUpsertPayloadSchema,
|
|
167
|
+
relationKeys: [
|
|
168
|
+
RELATED_IDS_COMPATIBILITY_RELATION,
|
|
169
|
+
{
|
|
170
|
+
type: "supports_goal",
|
|
171
|
+
keys: ["goalIds", "relatedGoalIds"],
|
|
172
|
+
cardinality: "many",
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
type: "supports_goal",
|
|
176
|
+
keys: ["goalId"],
|
|
177
|
+
cardinality: "one",
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
type: "addresses_condition",
|
|
181
|
+
keys: ["conditionIds", "relatedConditionIds"],
|
|
182
|
+
cardinality: "many",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
type: "addresses_condition",
|
|
186
|
+
keys: ["conditionId"],
|
|
187
|
+
cardinality: "one",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
type: "related_protocol",
|
|
191
|
+
keys: ["protocolIds", "relatedProtocolIds"],
|
|
192
|
+
cardinality: "many",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
type: "related_protocol",
|
|
196
|
+
keys: ["protocolId"],
|
|
197
|
+
cardinality: "one",
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
titleKeys: ["title"],
|
|
201
|
+
statusKeys: ["status"],
|
|
202
|
+
},
|
|
203
|
+
}),
|
|
204
|
+
{
|
|
205
|
+
kind: "history",
|
|
206
|
+
listKinds: HEALTH_HISTORY_EVENT_KINDS,
|
|
207
|
+
noun: "history",
|
|
208
|
+
plural: "history",
|
|
209
|
+
scaffoldTemplate: {
|
|
210
|
+
kind: "encounter",
|
|
211
|
+
occurredAt: "2026-03-12T09:00:00.000Z",
|
|
212
|
+
title: "Primary care visit",
|
|
213
|
+
encounterType: "office_visit",
|
|
214
|
+
location: "Primary care clinic",
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
kind: "blood_test",
|
|
219
|
+
listKinds: ["blood_test"],
|
|
220
|
+
noun: "blood test",
|
|
221
|
+
plural: "blood tests",
|
|
222
|
+
scaffoldTemplate: {
|
|
223
|
+
occurredAt: "2026-03-12T11:15:00.000Z",
|
|
224
|
+
title: "Functional health panel",
|
|
225
|
+
testName: "functional_health_panel",
|
|
226
|
+
labName: "Function Health",
|
|
227
|
+
specimenType: "blood",
|
|
228
|
+
fastingStatus: "fasting",
|
|
229
|
+
results: [
|
|
230
|
+
{
|
|
231
|
+
analyte: "Apolipoprotein B",
|
|
232
|
+
value: 87,
|
|
233
|
+
unit: "mg/dL",
|
|
234
|
+
referenceRange: {
|
|
235
|
+
text: "<90",
|
|
236
|
+
},
|
|
237
|
+
flag: "normal",
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
defineRegistryEntity({
|
|
243
|
+
kind: "family",
|
|
244
|
+
listKinds: ["family"],
|
|
245
|
+
noun: "family member",
|
|
246
|
+
plural: "family members",
|
|
247
|
+
prefixes: [`${ID_PREFIXES.family}_`],
|
|
248
|
+
scaffoldTemplate: {
|
|
249
|
+
title: "Mother",
|
|
250
|
+
relationship: "mother",
|
|
251
|
+
conditions: ["hypertension"],
|
|
252
|
+
},
|
|
253
|
+
registry: {
|
|
254
|
+
frontmatterSchema: familyMemberFrontmatterSchema,
|
|
255
|
+
directory: "bank/family",
|
|
256
|
+
idField: "familyMemberId",
|
|
257
|
+
patchPayloadSchema: familyMemberUpsertPatchPayloadSchema,
|
|
258
|
+
upsertPayloadSchema: familyMemberUpsertPayloadSchema,
|
|
259
|
+
relationKeys: [
|
|
260
|
+
RELATED_IDS_COMPATIBILITY_RELATION,
|
|
261
|
+
{
|
|
262
|
+
type: "related_variant",
|
|
263
|
+
keys: ["relatedVariantIds"],
|
|
264
|
+
cardinality: "many",
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
titleKeys: ["title"],
|
|
268
|
+
statusKeys: [],
|
|
269
|
+
},
|
|
270
|
+
}),
|
|
271
|
+
defineRegistryEntity({
|
|
272
|
+
kind: "genetics",
|
|
273
|
+
listKinds: ["genetics"],
|
|
274
|
+
noun: "genetic variant",
|
|
275
|
+
plural: "genetic variants",
|
|
276
|
+
prefixes: [`${ID_PREFIXES.variant}_`],
|
|
277
|
+
scaffoldTemplate: {
|
|
278
|
+
title: "MTHFR C677T",
|
|
279
|
+
gene: "MTHFR",
|
|
280
|
+
significance: "risk_factor",
|
|
281
|
+
},
|
|
282
|
+
registry: {
|
|
283
|
+
frontmatterSchema: geneticVariantFrontmatterSchema,
|
|
284
|
+
directory: "bank/genetics",
|
|
285
|
+
idField: "variantId",
|
|
286
|
+
patchPayloadSchema: geneticVariantUpsertPatchPayloadSchema,
|
|
287
|
+
upsertPayloadSchema: geneticVariantUpsertPayloadSchema,
|
|
288
|
+
relationKeys: [
|
|
289
|
+
RELATED_IDS_COMPATIBILITY_RELATION,
|
|
290
|
+
{
|
|
291
|
+
type: "source_family_member",
|
|
292
|
+
keys: ["sourceFamilyMemberIds"],
|
|
293
|
+
cardinality: "many",
|
|
294
|
+
},
|
|
295
|
+
],
|
|
296
|
+
titleKeys: ["title"],
|
|
297
|
+
statusKeys: ["significance"],
|
|
298
|
+
},
|
|
299
|
+
}),
|
|
300
|
+
];
|
|
301
|
+
export const healthEntityDefinitions = checkedHealthEntityDefinitions;
|
|
302
|
+
export const healthEntityDefinitionByKind = new Map(healthEntityDefinitions.map((definition) => [definition.kind, definition]));
|
|
303
|
+
export function hasHealthEntityRegistry(definition) {
|
|
304
|
+
return Boolean(definition.registry);
|
|
305
|
+
}
|
|
306
|
+
export function requireHealthEntityRegistryDefinition(kind) {
|
|
307
|
+
const definition = healthEntityDefinitionByKind.get(kind);
|
|
308
|
+
if (!definition || !hasHealthEntityRegistry(definition)) {
|
|
309
|
+
throw new Error(`Health entity "${kind}" does not define a registry projection.`);
|
|
310
|
+
}
|
|
311
|
+
return definition;
|
|
312
|
+
}
|
|
313
|
+
export function extractHealthEntityRegistryLinks(kind, attributes) {
|
|
314
|
+
const definition = requireHealthEntityRegistryDefinition(kind);
|
|
315
|
+
const relationKeys = definition.registry.relationKeys ?? [];
|
|
316
|
+
return extractRegistryLinks(attributes, relationKeys);
|
|
317
|
+
}
|
|
318
|
+
export function extractHealthEntityRegistryRelatedIds(kind, attributes) {
|
|
319
|
+
return extractRegistryRelatedIds(extractHealthEntityRegistryLinks(kind, attributes));
|
|
320
|
+
}
|
|
321
|
+
export function deriveProtocolGroupFromRelativePath(relativePath, rootDirectory = "bank/protocols") {
|
|
322
|
+
const normalizedRelativePath = normalizeHealthEntityRelativePath(relativePath);
|
|
323
|
+
const normalizedRootDirectory = normalizeHealthEntityRelativePath(rootDirectory);
|
|
324
|
+
const rootPrefix = `${normalizedRootDirectory}/`;
|
|
325
|
+
if (!normalizedRelativePath.startsWith(rootPrefix)) {
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
const relativeToRoot = normalizedRelativePath.slice(rootPrefix.length);
|
|
329
|
+
const lastSeparatorIndex = relativeToRoot.lastIndexOf("/");
|
|
330
|
+
if (lastSeparatorIndex <= 0) {
|
|
331
|
+
return null;
|
|
332
|
+
}
|
|
333
|
+
const group = relativeToRoot.slice(0, lastSeparatorIndex).replace(/^\/+|\/+$/gu, "");
|
|
334
|
+
return group.length > 0 ? group : null;
|
|
335
|
+
}
|
|
336
|
+
function normalizeHealthEntityRelativePath(value) {
|
|
337
|
+
return value
|
|
338
|
+
.replace(/\\/gu, "/")
|
|
339
|
+
.replace(/\/+/gu, "/")
|
|
340
|
+
.replace(/^\.\//u, "")
|
|
341
|
+
.replace(/^\/+|\/+$/gu, "");
|
|
342
|
+
}
|
|
343
|
+
export const goalRegistryEntityDefinition = requireHealthEntityRegistryDefinition("goal");
|
|
344
|
+
export const conditionRegistryEntityDefinition = requireHealthEntityRegistryDefinition("condition");
|
|
345
|
+
export const allergyRegistryEntityDefinition = requireHealthEntityRegistryDefinition("allergy");
|
|
346
|
+
export const protocolRegistryEntityDefinition = requireHealthEntityRegistryDefinition("protocol");
|
|
347
|
+
export const familyRegistryEntityDefinition = requireHealthEntityRegistryDefinition("family");
|
|
348
|
+
export const geneticsRegistryEntityDefinition = requireHealthEntityRegistryDefinition("genetics");
|
|
349
|
+
//# sourceMappingURL=health-entities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health-entities.js","sourceRoot":"","sources":["../src/health-entities.ts"],"names":[],"mappings":"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"}
|
package/dist/ids.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const ULID_BODY_LENGTH: 26;
|
|
2
|
+
export declare const ULID_BODY_PATTERN: "[0-9A-HJKMNP-TV-Z]{26}";
|
|
3
|
+
export declare const ULID_BODY_REGEX: RegExp;
|
|
4
|
+
export declare const GENERIC_CONTRACT_ID_PATTERN: string;
|
|
5
|
+
export declare const GENERIC_CONTRACT_ID_REGEX: RegExp;
|
|
6
|
+
export declare function idPattern(prefix: string): string;
|
|
7
|
+
export declare function contractIdMaxLength(prefix: string): number;
|
|
8
|
+
export declare function isContractId(value: unknown, prefix?: string): boolean;
|
|
9
|
+
export declare function assertContractId(value: unknown, prefix?: string, fieldName?: string): string;
|
|
10
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,EAAG,EAAW,CAAC;AAC5C,eAAO,MAAM,iBAAiB,EAAG,wBAAiC,CAAC;AACnE,eAAO,MAAM,eAAe,QAAuC,CAAC;AACpE,eAAO,MAAM,2BAA2B,QAAuE,CAAC;AAChH,eAAO,MAAM,yBAAyB,QAA0C,CAAC;AAEjF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,MAAM,CAO1F"}
|
package/dist/ids.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CONTRACT_ID_FORMAT, ID_PREFIXES } from "./constants.js";
|
|
2
|
+
export const ULID_BODY_LENGTH = 26;
|
|
3
|
+
export const ULID_BODY_PATTERN = "[0-9A-HJKMNP-TV-Z]{26}";
|
|
4
|
+
export const ULID_BODY_REGEX = new RegExp(`^${ULID_BODY_PATTERN}$`);
|
|
5
|
+
export const GENERIC_CONTRACT_ID_PATTERN = `^(?:${Object.values(ID_PREFIXES).join("|")})_${ULID_BODY_PATTERN}$`;
|
|
6
|
+
export const GENERIC_CONTRACT_ID_REGEX = new RegExp(GENERIC_CONTRACT_ID_PATTERN);
|
|
7
|
+
export function idPattern(prefix) {
|
|
8
|
+
return `^${prefix}_${ULID_BODY_PATTERN}$`;
|
|
9
|
+
}
|
|
10
|
+
export function contractIdMaxLength(prefix) {
|
|
11
|
+
return prefix.length + 1 + ULID_BODY_LENGTH;
|
|
12
|
+
}
|
|
13
|
+
export function isContractId(value, prefix) {
|
|
14
|
+
if (typeof value !== "string") {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const pattern = prefix ? idPattern(prefix) : GENERIC_CONTRACT_ID_PATTERN;
|
|
18
|
+
return new RegExp(pattern).test(value);
|
|
19
|
+
}
|
|
20
|
+
export function assertContractId(value, prefix, fieldName = "id") {
|
|
21
|
+
if (!isContractId(value, prefix)) {
|
|
22
|
+
const detail = prefix ? `${prefix}_<ULID>` : `${CONTRACT_ID_FORMAT}`;
|
|
23
|
+
throw new TypeError(`${fieldName} must match ${detail}`);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ids.js.map
|
package/dist/ids.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../src/ids.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAW,CAAC;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,wBAAiC,CAAC;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,MAAM,CAAC,IAAI,iBAAiB,GAAG,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,2BAA2B,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,GAAG,CAAC;AAChH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,MAAM,CAAC,2BAA2B,CAAC,CAAC;AAEjF,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,OAAO,IAAI,MAAM,IAAI,iBAAiB,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,MAAe;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC;IACzE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,MAAe,EAAE,SAAS,GAAG,IAAI;IAChF,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,kBAAkB,EAAE,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,GAAG,SAAS,eAAe,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,KAAe,CAAC;AACzB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./bank-entities.ts";
|
|
2
|
+
export * from "./command-capabilities.ts";
|
|
3
|
+
export * from "./constants.ts";
|
|
4
|
+
export * from "./examples.ts";
|
|
5
|
+
export * from "./frontmatter.ts";
|
|
6
|
+
export * from "./health-entities.ts";
|
|
7
|
+
export * from "./ids.ts";
|
|
8
|
+
export * from "./shares.ts";
|
|
9
|
+
export * from "./time.ts";
|
|
10
|
+
export * from "./types.ts";
|
|
11
|
+
export * from "./validate.ts";
|
|
12
|
+
export * from "./zod.ts";
|
|
13
|
+
export { parseFrontmatterDocument, parseFrontmatterScalar, } from "./frontmatter.ts";
|
|
14
|
+
export { bankEntityDefinitionByKind } from "./bank-entities.ts";
|
|
15
|
+
export { hasHealthEntityRegistry, healthEntityDefinitionByKind, } from "./health-entities.ts";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from "./bank-entities.js";
|
|
2
|
+
export * from "./command-capabilities.js";
|
|
3
|
+
export * from "./constants.js";
|
|
4
|
+
export * from "./examples.js";
|
|
5
|
+
export * from "./frontmatter.js";
|
|
6
|
+
export * from "./health-entities.js";
|
|
7
|
+
export * from "./ids.js";
|
|
8
|
+
export * from "./shares.js";
|
|
9
|
+
export * from "./time.js";
|
|
10
|
+
export * from "./types.js";
|
|
11
|
+
export * from "./validate.js";
|
|
12
|
+
export * from "./zod.js";
|
|
13
|
+
export { parseFrontmatterDocument, parseFrontmatterScalar, } from "./frontmatter.js";
|
|
14
|
+
export { bankEntityDefinitionByKind } from "./bank-entities.js";
|
|
15
|
+
export { hasHealthEntityRegistry, healthEntityDefinitionByKind, } from "./health-entities.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AAEzB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
type RegistryMetadataDefaultsInput = {
|
|
2
|
+
idField?: string;
|
|
3
|
+
idKeys?: readonly string[];
|
|
4
|
+
slugKeys?: readonly string[];
|
|
5
|
+
};
|
|
6
|
+
type RegistryMetadataWithDefaults<TRegistry extends RegistryMetadataDefaultsInput> = Omit<TRegistry, "idField" | "idKeys" | "slugKeys"> & {
|
|
7
|
+
idField: string;
|
|
8
|
+
idKeys: readonly string[];
|
|
9
|
+
slugKeys: readonly string[];
|
|
10
|
+
};
|
|
11
|
+
interface RegistryRelationDefinition {
|
|
12
|
+
type: string;
|
|
13
|
+
cardinality: "one" | "many";
|
|
14
|
+
keys: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
interface RegistryLink {
|
|
17
|
+
type: string;
|
|
18
|
+
targetId: string;
|
|
19
|
+
sourceKeys: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
export declare function applyRegistryMetadataDefaults<TRegistry extends RegistryMetadataDefaultsInput>(registry: TRegistry & {
|
|
22
|
+
idField: string;
|
|
23
|
+
}): RegistryMetadataWithDefaults<TRegistry>;
|
|
24
|
+
export declare function normalizeRegistryString(value: unknown): string | null;
|
|
25
|
+
export declare function extractRegistryRelationTargets(source: Record<string, unknown>, relation: RegistryRelationDefinition): string[];
|
|
26
|
+
export declare function extractRegistryLinks(source: Record<string, unknown>, relations: readonly RegistryRelationDefinition[]): RegistryLink[];
|
|
27
|
+
export declare function extractRegistryRelatedIds<TLink extends {
|
|
28
|
+
targetId: string;
|
|
29
|
+
}>(links: readonly TLink[]): string[];
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=registry-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-helpers.d.ts","sourceRoot":"","sources":["../src/registry-helpers.ts"],"names":[],"mappings":"AAAA,KAAK,6BAA6B,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,KAAK,4BAA4B,CAAC,SAAS,SAAS,6BAA6B,IAAI,IAAI,CACvF,SAAS,EACT,SAAS,GAAG,QAAQ,GAAG,UAAU,CAClC,GAAG;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,SAAS,6BAA6B,EAC/C,QAAQ,EAAE,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAOpF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAOrE;AAoCD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,0BAA0B,GACnC,MAAM,EAAE,CAMV;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,SAAS,EAAE,SAAS,0BAA0B,EAAE,GAC/C,YAAY,EAAE,CAQhB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC1E,KAAK,EAAE,SAAS,KAAK,EAAE,GACtB,MAAM,EAAE,CAEV"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export function applyRegistryMetadataDefaults(registry) {
|
|
2
|
+
return {
|
|
3
|
+
...registry,
|
|
4
|
+
idField: registry.idField,
|
|
5
|
+
idKeys: registry.idKeys ?? [registry.idField],
|
|
6
|
+
slugKeys: registry.slugKeys ?? ["slug"],
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export function normalizeRegistryString(value) {
|
|
10
|
+
if (typeof value !== "string") {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const normalized = value.trim();
|
|
14
|
+
return normalized.length > 0 ? normalized : null;
|
|
15
|
+
}
|
|
16
|
+
function readFirstRegistryString(source, keys) {
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
const value = normalizeRegistryString(source[key]);
|
|
19
|
+
if (value) {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
function readMergedRegistryStringArray(source, keys) {
|
|
26
|
+
return [
|
|
27
|
+
...new Set(keys.flatMap((key) => {
|
|
28
|
+
const value = source[key];
|
|
29
|
+
if (!Array.isArray(value)) {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
return value
|
|
33
|
+
.map((entry) => normalizeRegistryString(entry))
|
|
34
|
+
.filter((entry) => Boolean(entry));
|
|
35
|
+
})),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
export function extractRegistryRelationTargets(source, relation) {
|
|
39
|
+
return relation.cardinality === "one"
|
|
40
|
+
? [readFirstRegistryString(source, relation.keys)].filter((entry) => Boolean(entry))
|
|
41
|
+
: readMergedRegistryStringArray(source, relation.keys);
|
|
42
|
+
}
|
|
43
|
+
export function extractRegistryLinks(source, relations) {
|
|
44
|
+
return relations.flatMap((relation) => extractRegistryRelationTargets(source, relation).map((targetId) => ({
|
|
45
|
+
type: relation.type,
|
|
46
|
+
targetId,
|
|
47
|
+
sourceKeys: relation.keys,
|
|
48
|
+
})));
|
|
49
|
+
}
|
|
50
|
+
export function extractRegistryRelatedIds(links) {
|
|
51
|
+
return [...new Set(links.map((link) => link.targetId))];
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=registry-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-helpers.js","sourceRoot":"","sources":["../src/registry-helpers.ts"],"names":[],"mappings":"AA2BA,MAAM,UAAU,6BAA6B,CAE3C,QAAyC;IACzC,OAAO;QACL,GAAG,QAAQ;QACX,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC;KACG,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,uBAAuB,CAC9B,MAA+B,EAC/B,IAAuB;IAEvB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,uBAAuB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,6BAA6B,CACpC,MAA+B,EAC/B,IAAuB;IAEvB,OAAO;QACL,GAAG,IAAI,GAAG,CACR,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,OAAO,KAAK;iBACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;iBAC9C,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CACH;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,MAA+B,EAC/B,QAAoC;IAEpC,OAAO,QAAQ,CAAC,WAAW,KAAK,KAAK;QACnC,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CACrD,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3C;QACH,CAAC,CAAC,6BAA6B,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAC/B,SAAgD;IAEhD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ;QACR,UAAU,EAAE,QAAQ,CAAC,IAAI;KAC1B,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,KAAuB;IAEvB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { JsonSchema } from "./types.ts";
|
|
2
|
+
export type { JsonSchema } from "./types.ts";
|
|
3
|
+
export declare const vaultMetadataSchema: JsonSchema;
|
|
4
|
+
export declare const eventRecordSchema: JsonSchema;
|
|
5
|
+
export declare const sampleRecordSchema: JsonSchema;
|
|
6
|
+
export declare const auditRecordSchema: JsonSchema;
|
|
7
|
+
export declare const inboxCaptureRecordSchema: JsonSchema;
|
|
8
|
+
export declare const coreFrontmatterSchema: JsonSchema;
|
|
9
|
+
export declare const journalDayFrontmatterSchema: JsonSchema;
|
|
10
|
+
export declare const experimentFrontmatterSchema: JsonSchema;
|
|
11
|
+
export declare const foodFrontmatterSchema: JsonSchema;
|
|
12
|
+
export declare const assessmentResponseSchema: JsonSchema;
|
|
13
|
+
export declare const profileSnapshotSchema: JsonSchema;
|
|
14
|
+
export declare const profileCurrentFrontmatterSchema: JsonSchema;
|
|
15
|
+
export declare const providerFrontmatterSchema: JsonSchema;
|
|
16
|
+
export declare const recipeFrontmatterSchema: JsonSchema;
|
|
17
|
+
export declare const workoutFormatFrontmatterSchema: JsonSchema;
|
|
18
|
+
export declare const goalFrontmatterSchema: JsonSchema;
|
|
19
|
+
export declare const conditionFrontmatterSchema: JsonSchema;
|
|
20
|
+
export declare const allergyFrontmatterSchema: JsonSchema;
|
|
21
|
+
export declare const protocolFrontmatterSchema: JsonSchema;
|
|
22
|
+
export declare const familyMemberFrontmatterSchema: JsonSchema;
|
|
23
|
+
export declare const geneticVariantFrontmatterSchema: JsonSchema;
|
|
24
|
+
export declare const schemaCatalog: Readonly<{
|
|
25
|
+
"assessment-response": JsonSchema;
|
|
26
|
+
"audit-record": JsonSchema;
|
|
27
|
+
"event-record": JsonSchema;
|
|
28
|
+
"inbox-capture-record": JsonSchema;
|
|
29
|
+
"frontmatter-allergy": JsonSchema;
|
|
30
|
+
"frontmatter-condition": JsonSchema;
|
|
31
|
+
"frontmatter-core": JsonSchema;
|
|
32
|
+
"frontmatter-experiment": JsonSchema;
|
|
33
|
+
"frontmatter-family-member": JsonSchema;
|
|
34
|
+
"frontmatter-food": JsonSchema;
|
|
35
|
+
"frontmatter-genetic-variant": JsonSchema;
|
|
36
|
+
"frontmatter-goal": JsonSchema;
|
|
37
|
+
"frontmatter-journal-day": JsonSchema;
|
|
38
|
+
"frontmatter-profile-current": JsonSchema;
|
|
39
|
+
"frontmatter-provider": JsonSchema;
|
|
40
|
+
"frontmatter-recipe": JsonSchema;
|
|
41
|
+
"frontmatter-protocol": JsonSchema;
|
|
42
|
+
"frontmatter-workout-format": JsonSchema;
|
|
43
|
+
"profile-snapshot": JsonSchema;
|
|
44
|
+
"sample-record": JsonSchema;
|
|
45
|
+
"vault-metadata": JsonSchema;
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,eAAO,MAAM,mBAAmB,YAAsC,CAAC;AACvE,eAAO,MAAM,iBAAiB,YAAoC,CAAC;AACnE,eAAO,MAAM,kBAAkB,YAAqC,CAAC;AACrE,eAAO,MAAM,iBAAiB,YAAoC,CAAC;AACnE,eAAO,MAAM,wBAAwB,YAA2C,CAAC;AACjF,eAAO,MAAM,qBAAqB,YAAwC,CAAC;AAC3E,eAAO,MAAM,2BAA2B,YAA8C,CAAC;AACvF,eAAO,MAAM,2BAA2B,YAA8C,CAAC;AACvF,eAAO,MAAM,qBAAqB,YAAwC,CAAC;AAC3E,eAAO,MAAM,wBAAwB,YAA2C,CAAC;AACjF,eAAO,MAAM,qBAAqB,YAAwC,CAAC;AAC3E,eAAO,MAAM,+BAA+B,YAAkD,CAAC;AAC/F,eAAO,MAAM,yBAAyB,YAA4C,CAAC;AACnF,eAAO,MAAM,uBAAuB,YAA0C,CAAC;AAC/E,eAAO,MAAM,8BAA8B,YAAiD,CAAC;AAC7F,eAAO,MAAM,qBAAqB,YAAwC,CAAC;AAC3E,eAAO,MAAM,0BAA0B,YAA6C,CAAC;AACrF,eAAO,MAAM,wBAAwB,YAA2C,CAAC;AACjF,eAAO,MAAM,yBAAyB,YAA4C,CAAC;AACnF,eAAO,MAAM,6BAA6B,YAAgD,CAAC;AAC3F,eAAO,MAAM,+BAA+B,YAAkD,CAAC;AAE/F,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;EAsBxB,CAAC"}
|