@centricare/contract 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.
Files changed (42) hide show
  1. package/README.md +99 -2
  2. package/dist/commons/api-response.d.ts +178 -0
  3. package/dist/commons/api-response.d.ts.map +1 -0
  4. package/dist/commons/api-response.js +49 -0
  5. package/dist/commons/api-response.js.map +1 -0
  6. package/dist/commons/coded-concept.d.ts +28 -0
  7. package/dist/commons/coded-concept.d.ts.map +1 -0
  8. package/dist/commons/coded-concept.js +20 -0
  9. package/dist/commons/coded-concept.js.map +1 -0
  10. package/dist/commons/index.d.ts +9 -0
  11. package/dist/commons/index.d.ts.map +1 -0
  12. package/dist/commons/index.js +9 -0
  13. package/dist/commons/index.js.map +1 -0
  14. package/dist/commons/setting-option.d.ts +37 -0
  15. package/dist/commons/setting-option.d.ts.map +1 -0
  16. package/dist/commons/setting-option.js +27 -0
  17. package/dist/commons/setting-option.js.map +1 -0
  18. package/dist/commons/timestamp.d.ts +7 -0
  19. package/dist/commons/timestamp.d.ts.map +1 -0
  20. package/dist/commons/timestamp.js +9 -0
  21. package/dist/commons/timestamp.js.map +1 -0
  22. package/dist/example.test.d.ts +6 -0
  23. package/dist/example.test.d.ts.map +1 -0
  24. package/dist/example.test.js +147 -0
  25. package/dist/example.test.js.map +1 -0
  26. package/dist/index.d.ts +7 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +7 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/models/index.d.ts +6 -0
  31. package/dist/models/index.d.ts.map +1 -0
  32. package/dist/models/index.js +6 -0
  33. package/dist/models/index.js.map +1 -0
  34. package/dist/models/settings.d.ts +189 -0
  35. package/dist/models/settings.d.ts.map +1 -0
  36. package/dist/models/settings.js +34 -0
  37. package/dist/models/settings.js.map +1 -0
  38. package/dist/models/user.d.ts +1110 -0
  39. package/dist/models/user.d.ts.map +1 -0
  40. package/dist/models/user.js +59 -0
  41. package/dist/models/user.js.map +1 -0
  42. package/package.json +47 -4
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Example usage and sanity checks for the standardized schemas.
3
+ * Run with: npx tsx src/example.test.ts (requires tsx)
4
+ */
5
+ import assert from "assert";
6
+ import { userSchema, createUserSchema, } from "./models/user";
7
+ import { settingsSchema } from "./models/settings";
8
+ import { codedConceptSchema } from "./commons/coded-concept";
9
+ // --- CodedConcept schema ---
10
+ const validCodedConcept = codedConceptSchema.parse({
11
+ system: "crn:status:system",
12
+ value: "active",
13
+ display: "Active",
14
+ });
15
+ assert(validCodedConcept.system === "crn:status:system");
16
+ assert(validCodedConcept.value === "active");
17
+ const missingSystem = codedConceptSchema.safeParse({ value: "active" });
18
+ assert(!missingSystem.success);
19
+ // --- User schema ---
20
+ const validUser = userSchema.parse({
21
+ id: "550e8400-e29b-41d4-a716-446655440000",
22
+ full_name: "Dr. Cynthia Veronica Manurung Sp.PD",
23
+ first_name: "Cynthia",
24
+ middle_name: "Veronica",
25
+ last_name: "Manurung",
26
+ salutation: "Dr.",
27
+ title: "Sp.PD",
28
+ email: "cynthiavm@mail.com",
29
+ email_verified: true,
30
+ image: "https://image.url.com",
31
+ statuses: [
32
+ { system: "crn:status:system", value: "active", display: "Active" },
33
+ ],
34
+ identifiers: [{ system: "crn:identifier:nik", value: "23442771929004" }],
35
+ demographic: {
36
+ sex: { system: "crn:sex", value: "f", display: "Female" },
37
+ religion: {
38
+ system: "crn:believes",
39
+ value: "protestantism",
40
+ display: "Protestant",
41
+ },
42
+ ethnicity: "Batak",
43
+ marital_status: {
44
+ system: "crn:status:marital",
45
+ value: "married",
46
+ display: "Married",
47
+ },
48
+ date_of_birth: "21-06-1984",
49
+ place_of_birth: "Jakarta",
50
+ },
51
+ contacts: [{ system: "crn:contact:phone", value: "02188521488" }],
52
+ settings_id: "123",
53
+ created_at: "2026-10-02 21:27:00+07",
54
+ updated_at: "2026-10-02 21:27:00+07",
55
+ });
56
+ assert(validUser.full_name === "Dr. Cynthia Veronica Manurung Sp.PD");
57
+ assert(validUser.email === "cynthiavm@mail.com");
58
+ assert(validUser.statuses[0].system === "crn:status:system");
59
+ // User without optional fields
60
+ const minimalUser = userSchema.parse({
61
+ id: "550e8400-e29b-41d4-a716-446655440001",
62
+ full_name: "John Doe",
63
+ first_name: "John",
64
+ last_name: "Doe",
65
+ email: "john@example.com",
66
+ email_verified: false,
67
+ statuses: [{ system: "crn:status:system", value: "active" }],
68
+ identifiers: [{ system: "crn:identifier:nik", value: "1234567890" }],
69
+ demographic: {
70
+ sex: { system: "crn:sex", value: "m" },
71
+ religion: { system: "crn:believes", value: "islam" },
72
+ marital_status: { system: "crn:status:marital", value: "single" },
73
+ date_of_birth: "01-01-1990",
74
+ },
75
+ settings_id: "settings-1",
76
+ created_at: "2026-10-02 21:27:00+07",
77
+ updated_at: "2026-10-02 21:27:00+07",
78
+ });
79
+ assert(minimalUser.middle_name === undefined);
80
+ assert(minimalUser.contacts === undefined);
81
+ // Create user input (no auto-generated fields)
82
+ const createInput = {
83
+ full_name: "Jane Doe",
84
+ first_name: "Jane",
85
+ last_name: "Doe",
86
+ email: "jane@example.com",
87
+ email_verified: true,
88
+ statuses: [{ system: "crn:status:system", value: "active" }],
89
+ identifiers: [{ system: "crn:identifier:nik", value: "999" }],
90
+ demographic: {
91
+ sex: { system: "crn:sex", value: "f" },
92
+ religion: { system: "crn:believes", value: "buddhism" },
93
+ marital_status: { system: "crn:status:marital", value: "single" },
94
+ date_of_birth: "01-01-1995",
95
+ },
96
+ settings_id: "settings-2",
97
+ };
98
+ const parsedCreate = createUserSchema.parse(createInput);
99
+ assert(parsedCreate.full_name === "Jane Doe");
100
+ // Invalid email
101
+ const invalidUser = { ...validUser, email: "not-an-email" };
102
+ const safeResult = userSchema.safeParse(invalidUser);
103
+ assert(!safeResult.success);
104
+ // --- Settings schema ---
105
+ const validSettings = settingsSchema.parse({
106
+ _id: "123",
107
+ scope: "user",
108
+ options: [
109
+ {
110
+ field: "lock_screen",
111
+ label: "Enable lock screen?",
112
+ type: "boolean",
113
+ default: false,
114
+ value: true,
115
+ },
116
+ {
117
+ field: "lock_screen_pin",
118
+ label: "Lock screen pin",
119
+ type: "string",
120
+ default: null,
121
+ value: "1234",
122
+ },
123
+ {
124
+ field: "theme",
125
+ label: "Theme",
126
+ type: ["light", "dark"],
127
+ default: "light",
128
+ value: "dark",
129
+ },
130
+ {
131
+ field: "status_preference",
132
+ label: "Preferred status",
133
+ type: "crn:status:system",
134
+ default: null,
135
+ value: "active",
136
+ },
137
+ ],
138
+ updated_at: "2026-10-02 21:27:00+07",
139
+ updated_by: "123",
140
+ schema_version: 1,
141
+ });
142
+ assert(validSettings.scope === "user");
143
+ assert(validSettings.options[0].type === "boolean");
144
+ assert(validSettings.options[2].type[0] === "light");
145
+ assert(validSettings.options[3].type === "crn:status:system");
146
+ console.log("All example schema checks passed.");
147
+ //# sourceMappingURL=example.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.test.js","sourceRoot":"","sources":["../src/example.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @centricare/contract
3
+ * Standardized Zod schemas used across CentriCare projects.
4
+ */
5
+ export * from "./commons";
6
+ export * from "./models";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @centricare/contract
3
+ * Standardized Zod schemas used across CentriCare projects.
4
+ */
5
+ export * from "./commons";
6
+ export * from "./models";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Data entity schemas used by CentriCare projects.
3
+ */
4
+ export * from "./user";
5
+ export * from "./settings";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Data entity schemas used by CentriCare projects.
3
+ */
4
+ export * from "./user";
5
+ export * from "./settings";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,189 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Full settings record schema.
4
+ *
5
+ * Based on /Docs/Data/Data+Model/Settings
6
+ * Auto-generated fields: _id, updated_at, updated_by, schema_version
7
+ */
8
+ export declare const settingsSchema: z.ZodObject<{
9
+ _id: z.ZodString;
10
+ scope: z.ZodString;
11
+ options: z.ZodArray<z.ZodObject<{
12
+ field: z.ZodString;
13
+ label: z.ZodOptional<z.ZodString>;
14
+ type: z.ZodUnion<[z.ZodEnum<["string", "number", "boolean", "date"]>, z.ZodArray<z.ZodEnum<["string", "number", "boolean", "date"]>, "many">, z.ZodString]>;
15
+ default: z.ZodNullable<z.ZodString>;
16
+ value: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ value: string | number | boolean | null;
19
+ type: string | ("string" | "number" | "boolean" | "date")[];
20
+ field: string;
21
+ default: string | null;
22
+ label?: string | undefined;
23
+ }, {
24
+ value: string | number | boolean | null;
25
+ type: string | ("string" | "number" | "boolean" | "date")[];
26
+ field: string;
27
+ default: string | null;
28
+ label?: string | undefined;
29
+ }>, "atleastone">;
30
+ updated_at: z.ZodString;
31
+ updated_by: z.ZodString;
32
+ schema_version: z.ZodDefault<z.ZodNumber>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ options: [{
35
+ value: string | number | boolean | null;
36
+ type: string | ("string" | "number" | "boolean" | "date")[];
37
+ field: string;
38
+ default: string | null;
39
+ label?: string | undefined;
40
+ }, ...{
41
+ value: string | number | boolean | null;
42
+ type: string | ("string" | "number" | "boolean" | "date")[];
43
+ field: string;
44
+ default: string | null;
45
+ label?: string | undefined;
46
+ }[]];
47
+ updated_at: string;
48
+ _id: string;
49
+ scope: string;
50
+ updated_by: string;
51
+ schema_version: number;
52
+ }, {
53
+ options: [{
54
+ value: string | number | boolean | null;
55
+ type: string | ("string" | "number" | "boolean" | "date")[];
56
+ field: string;
57
+ default: string | null;
58
+ label?: string | undefined;
59
+ }, ...{
60
+ value: string | number | boolean | null;
61
+ type: string | ("string" | "number" | "boolean" | "date")[];
62
+ field: string;
63
+ default: string | null;
64
+ label?: string | undefined;
65
+ }[]];
66
+ updated_at: string;
67
+ _id: string;
68
+ scope: string;
69
+ updated_by: string;
70
+ schema_version?: number | undefined;
71
+ }>;
72
+ export type Settings = z.infer<typeof settingsSchema>;
73
+ /**
74
+ * Schema for creating new settings (auto-generated fields omitted).
75
+ */
76
+ export declare const createSettingsSchema: z.ZodObject<Omit<{
77
+ _id: z.ZodString;
78
+ scope: z.ZodString;
79
+ options: z.ZodArray<z.ZodObject<{
80
+ field: z.ZodString;
81
+ label: z.ZodOptional<z.ZodString>;
82
+ type: z.ZodUnion<[z.ZodEnum<["string", "number", "boolean", "date"]>, z.ZodArray<z.ZodEnum<["string", "number", "boolean", "date"]>, "many">, z.ZodString]>;
83
+ default: z.ZodNullable<z.ZodString>;
84
+ value: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
85
+ }, "strip", z.ZodTypeAny, {
86
+ value: string | number | boolean | null;
87
+ type: string | ("string" | "number" | "boolean" | "date")[];
88
+ field: string;
89
+ default: string | null;
90
+ label?: string | undefined;
91
+ }, {
92
+ value: string | number | boolean | null;
93
+ type: string | ("string" | "number" | "boolean" | "date")[];
94
+ field: string;
95
+ default: string | null;
96
+ label?: string | undefined;
97
+ }>, "atleastone">;
98
+ updated_at: z.ZodString;
99
+ updated_by: z.ZodString;
100
+ schema_version: z.ZodDefault<z.ZodNumber>;
101
+ }, "updated_at" | "_id" | "updated_by" | "schema_version">, "strip", z.ZodTypeAny, {
102
+ options: [{
103
+ value: string | number | boolean | null;
104
+ type: string | ("string" | "number" | "boolean" | "date")[];
105
+ field: string;
106
+ default: string | null;
107
+ label?: string | undefined;
108
+ }, ...{
109
+ value: string | number | boolean | null;
110
+ type: string | ("string" | "number" | "boolean" | "date")[];
111
+ field: string;
112
+ default: string | null;
113
+ label?: string | undefined;
114
+ }[]];
115
+ scope: string;
116
+ }, {
117
+ options: [{
118
+ value: string | number | boolean | null;
119
+ type: string | ("string" | "number" | "boolean" | "date")[];
120
+ field: string;
121
+ default: string | null;
122
+ label?: string | undefined;
123
+ }, ...{
124
+ value: string | number | boolean | null;
125
+ type: string | ("string" | "number" | "boolean" | "date")[];
126
+ field: string;
127
+ default: string | null;
128
+ label?: string | undefined;
129
+ }[]];
130
+ scope: string;
131
+ }>;
132
+ export type CreateSettingsInput = z.infer<typeof createSettingsSchema>;
133
+ /**
134
+ * Schema for updating existing settings (auto-generated fields omitted, others optional).
135
+ */
136
+ export declare const updateSettingsSchema: z.ZodObject<{
137
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
138
+ field: z.ZodString;
139
+ label: z.ZodOptional<z.ZodString>;
140
+ type: z.ZodUnion<[z.ZodEnum<["string", "number", "boolean", "date"]>, z.ZodArray<z.ZodEnum<["string", "number", "boolean", "date"]>, "many">, z.ZodString]>;
141
+ default: z.ZodNullable<z.ZodString>;
142
+ value: z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodBoolean, z.ZodNumber]>>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ value: string | number | boolean | null;
145
+ type: string | ("string" | "number" | "boolean" | "date")[];
146
+ field: string;
147
+ default: string | null;
148
+ label?: string | undefined;
149
+ }, {
150
+ value: string | number | boolean | null;
151
+ type: string | ("string" | "number" | "boolean" | "date")[];
152
+ field: string;
153
+ default: string | null;
154
+ label?: string | undefined;
155
+ }>, "atleastone">>;
156
+ scope: z.ZodOptional<z.ZodString>;
157
+ }, "strip", z.ZodTypeAny, {
158
+ options?: [{
159
+ value: string | number | boolean | null;
160
+ type: string | ("string" | "number" | "boolean" | "date")[];
161
+ field: string;
162
+ default: string | null;
163
+ label?: string | undefined;
164
+ }, ...{
165
+ value: string | number | boolean | null;
166
+ type: string | ("string" | "number" | "boolean" | "date")[];
167
+ field: string;
168
+ default: string | null;
169
+ label?: string | undefined;
170
+ }[]] | undefined;
171
+ scope?: string | undefined;
172
+ }, {
173
+ options?: [{
174
+ value: string | number | boolean | null;
175
+ type: string | ("string" | "number" | "boolean" | "date")[];
176
+ field: string;
177
+ default: string | null;
178
+ label?: string | undefined;
179
+ }, ...{
180
+ value: string | number | boolean | null;
181
+ type: string | ("string" | "number" | "boolean" | "date")[];
182
+ field: string;
183
+ default: string | null;
184
+ label?: string | undefined;
185
+ }[]] | undefined;
186
+ scope?: string | undefined;
187
+ }>;
188
+ export type UpdateSettingsInput = z.infer<typeof updateSettingsSchema>;
189
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/models/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK/B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErB,CAAC;AAEb,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ import { settingOptionSchema } from "../commons/setting-option";
3
+ /**
4
+ * Full settings record schema.
5
+ *
6
+ * Based on /Docs/Data/Data+Model/Settings
7
+ * Auto-generated fields: _id, updated_at, updated_by, schema_version
8
+ */
9
+ export const settingsSchema = z.object({
10
+ _id: z.string(),
11
+ scope: z.string().min(1, { message: "scope is required" }),
12
+ options: z.array(settingOptionSchema).nonempty({
13
+ message: "options must contain at least one setting option",
14
+ }),
15
+ updated_at: z.string(),
16
+ updated_by: z.string(),
17
+ schema_version: z.number().int().positive().default(1),
18
+ });
19
+ /**
20
+ * Schema for creating new settings (auto-generated fields omitted).
21
+ */
22
+ export const createSettingsSchema = settingsSchema.omit({
23
+ _id: true,
24
+ updated_at: true,
25
+ updated_by: true,
26
+ schema_version: true,
27
+ });
28
+ /**
29
+ * Schema for updating existing settings (auto-generated fields omitted, others optional).
30
+ */
31
+ export const updateSettingsSchema = settingsSchema
32
+ .omit({ _id: true, updated_at: true, updated_by: true, schema_version: true })
33
+ .partial();
34
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/models/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,2BAA2B,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC;QAC7C,OAAO,EAAE,kDAAkD;KAC5D,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACvD,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC,IAAI,CAAC;IACtD,GAAG,EAAE,IAAI;IACT,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,cAAc,EAAE,IAAI;CACrB,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc;KAC/C,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;KAC7E,OAAO,EAAE,CAAC"}