@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
package/dist/validate.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { ZodError } from "zod";
|
|
2
|
+
import { parseFrontmatterDocument } from "./frontmatter.js";
|
|
3
|
+
function formatPath(path) {
|
|
4
|
+
if (path.length === 0) {
|
|
5
|
+
return "$";
|
|
6
|
+
}
|
|
7
|
+
return path.reduce((current, segment) => {
|
|
8
|
+
if (typeof segment === "number") {
|
|
9
|
+
return `${current}[${segment}]`;
|
|
10
|
+
}
|
|
11
|
+
return `${current}.${String(segment)}`;
|
|
12
|
+
}, "$");
|
|
13
|
+
}
|
|
14
|
+
function flattenError(error) {
|
|
15
|
+
const messages = [];
|
|
16
|
+
for (const issue of error.issues) {
|
|
17
|
+
if (issue.code === "invalid_union") {
|
|
18
|
+
for (const branch of issue.errors) {
|
|
19
|
+
messages.push(...flattenError(new ZodError(branch)));
|
|
20
|
+
}
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
messages.push(`${formatPath(issue.path)}: ${issue.message}`);
|
|
24
|
+
}
|
|
25
|
+
return messages;
|
|
26
|
+
}
|
|
27
|
+
export function formatContractIssues(error) {
|
|
28
|
+
return flattenError(error);
|
|
29
|
+
}
|
|
30
|
+
export function safeParseContract(schema, value) {
|
|
31
|
+
const result = schema.safeParse(value);
|
|
32
|
+
if (result.success) {
|
|
33
|
+
return {
|
|
34
|
+
success: true,
|
|
35
|
+
data: result.data,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
errors: formatContractIssues(result.error),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function assertContract(schema, value, label = "value") {
|
|
44
|
+
const result = safeParseContract(schema, value);
|
|
45
|
+
if (!result.success) {
|
|
46
|
+
throw new TypeError(`${label} failed validation:\n${result.errors.join("\n")}`);
|
|
47
|
+
}
|
|
48
|
+
return result.data;
|
|
49
|
+
}
|
|
50
|
+
class FrontmatterMarkdownParseError extends TypeError {
|
|
51
|
+
problem;
|
|
52
|
+
constructor(problem) {
|
|
53
|
+
super(problem.message);
|
|
54
|
+
this.problem = problem;
|
|
55
|
+
this.name = "FrontmatterMarkdownParseError";
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function projectLegacyFrontmatterAttributes(rawFrontmatter) {
|
|
59
|
+
const lines = rawFrontmatter.split("\n");
|
|
60
|
+
const result = {};
|
|
61
|
+
let index = 0;
|
|
62
|
+
while (index < lines.length) {
|
|
63
|
+
const line = lines[index] ?? "";
|
|
64
|
+
if (!line.trim()) {
|
|
65
|
+
index += 1;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const keyMatch = /^([A-Za-z0-9]+):(?:\s(.*))?$/u.exec(line);
|
|
69
|
+
if (!keyMatch) {
|
|
70
|
+
throw new TypeError(`Unsupported frontmatter line: ${line}`);
|
|
71
|
+
}
|
|
72
|
+
const [, key, rawValue = ""] = keyMatch;
|
|
73
|
+
if (rawValue !== "") {
|
|
74
|
+
result[key] = rawValue;
|
|
75
|
+
index += 1;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const objectEntries = {};
|
|
79
|
+
const values = [];
|
|
80
|
+
index += 1;
|
|
81
|
+
while (index < lines.length && /^ - /u.test(lines[index] ?? "")) {
|
|
82
|
+
values.push((lines[index] ?? "").slice(4));
|
|
83
|
+
index += 1;
|
|
84
|
+
}
|
|
85
|
+
if (values.length > 0) {
|
|
86
|
+
result[key] = values;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
while (index < lines.length) {
|
|
90
|
+
const objectLine = lines[index] ?? "";
|
|
91
|
+
const objectMatch = /^ ([A-Za-z0-9]+):\s(.*)$/u.exec(objectLine);
|
|
92
|
+
if (!objectMatch) {
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
const [, objectKey, objectValue] = objectMatch;
|
|
96
|
+
objectEntries[objectKey] = objectValue;
|
|
97
|
+
index += 1;
|
|
98
|
+
}
|
|
99
|
+
result[key] = Object.keys(objectEntries).length > 0 ? objectEntries : values;
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
export function parseFrontmatterMarkdown(markdown) {
|
|
104
|
+
const normalizedMarkdown = String(markdown ?? "").replace(/\r\n/g, "\n");
|
|
105
|
+
const lines = normalizedMarkdown.split("\n");
|
|
106
|
+
if (lines[0] !== "---") {
|
|
107
|
+
throw new TypeError("Frontmatter must start with ---");
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
const parsed = parseFrontmatterDocument(normalizedMarkdown, {
|
|
111
|
+
mode: "strict",
|
|
112
|
+
parseScalar: (value) => value,
|
|
113
|
+
createError: (problem) => new FrontmatterMarkdownParseError(problem),
|
|
114
|
+
});
|
|
115
|
+
return projectLegacyFrontmatterAttributes(parsed.rawFrontmatter ?? "");
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (error instanceof FrontmatterMarkdownParseError) {
|
|
119
|
+
if (error.problem.code === "missing_closing_delimiter") {
|
|
120
|
+
throw new TypeError("Frontmatter terminator --- not found");
|
|
121
|
+
}
|
|
122
|
+
if (error.problem.line) {
|
|
123
|
+
throw new TypeError(`Unsupported frontmatter line: ${error.problem.line}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|