@aibrains/shared-types 0.1.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 (158) hide show
  1. package/README.md +170 -0
  2. package/dist/index.d.ts +48 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +74 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/mappers/edfi/calendar.mapper.d.ts +158 -0
  7. package/dist/mappers/edfi/calendar.mapper.d.ts.map +1 -0
  8. package/dist/mappers/edfi/calendar.mapper.js +235 -0
  9. package/dist/mappers/edfi/calendar.mapper.js.map +1 -0
  10. package/dist/mappers/edfi/credential.mapper.d.ts +50 -0
  11. package/dist/mappers/edfi/credential.mapper.d.ts.map +1 -0
  12. package/dist/mappers/edfi/credential.mapper.js +123 -0
  13. package/dist/mappers/edfi/credential.mapper.js.map +1 -0
  14. package/dist/mappers/edfi/index.d.ts +10 -0
  15. package/dist/mappers/edfi/index.d.ts.map +1 -0
  16. package/dist/mappers/edfi/index.js +26 -0
  17. package/dist/mappers/edfi/index.js.map +1 -0
  18. package/dist/mappers/edfi/staff.mapper.d.ts +96 -0
  19. package/dist/mappers/edfi/staff.mapper.d.ts.map +1 -0
  20. package/dist/mappers/edfi/staff.mapper.js +138 -0
  21. package/dist/mappers/edfi/staff.mapper.js.map +1 -0
  22. package/dist/mappers/index.d.ts +7 -0
  23. package/dist/mappers/index.d.ts.map +1 -0
  24. package/dist/mappers/index.js +23 -0
  25. package/dist/mappers/index.js.map +1 -0
  26. package/dist/schemas/academics/assignment.schema.d.ts +1463 -0
  27. package/dist/schemas/academics/assignment.schema.d.ts.map +1 -0
  28. package/dist/schemas/academics/assignment.schema.js +195 -0
  29. package/dist/schemas/academics/assignment.schema.js.map +1 -0
  30. package/dist/schemas/academics/attendance.schema.d.ts +762 -0
  31. package/dist/schemas/academics/attendance.schema.d.ts.map +1 -0
  32. package/dist/schemas/academics/attendance.schema.js +250 -0
  33. package/dist/schemas/academics/attendance.schema.js.map +1 -0
  34. package/dist/schemas/academics/classroom.schema.d.ts +742 -0
  35. package/dist/schemas/academics/classroom.schema.d.ts.map +1 -0
  36. package/dist/schemas/academics/classroom.schema.js +164 -0
  37. package/dist/schemas/academics/classroom.schema.js.map +1 -0
  38. package/dist/schemas/academics/course-section.schema.d.ts +388 -0
  39. package/dist/schemas/academics/course-section.schema.d.ts.map +1 -0
  40. package/dist/schemas/academics/course-section.schema.js +128 -0
  41. package/dist/schemas/academics/course-section.schema.js.map +1 -0
  42. package/dist/schemas/academics/course.schema.d.ts +778 -0
  43. package/dist/schemas/academics/course.schema.d.ts.map +1 -0
  44. package/dist/schemas/academics/course.schema.js +207 -0
  45. package/dist/schemas/academics/course.schema.js.map +1 -0
  46. package/dist/schemas/academics/grade.schema.d.ts +848 -0
  47. package/dist/schemas/academics/grade.schema.d.ts.map +1 -0
  48. package/dist/schemas/academics/grade.schema.js +251 -0
  49. package/dist/schemas/academics/grade.schema.js.map +1 -0
  50. package/dist/schemas/academics/index.d.ts +13 -0
  51. package/dist/schemas/academics/index.d.ts.map +1 -0
  52. package/dist/schemas/academics/index.js +29 -0
  53. package/dist/schemas/academics/index.js.map +1 -0
  54. package/dist/schemas/academics/student.schema.d.ts +2891 -0
  55. package/dist/schemas/academics/student.schema.d.ts.map +1 -0
  56. package/dist/schemas/academics/student.schema.js +249 -0
  57. package/dist/schemas/academics/student.schema.js.map +1 -0
  58. package/dist/schemas/common.d.ts +183 -0
  59. package/dist/schemas/common.d.ts.map +1 -0
  60. package/dist/schemas/common.js +126 -0
  61. package/dist/schemas/common.js.map +1 -0
  62. package/dist/schemas/enrollment/enrollment.schema.d.ts +2799 -0
  63. package/dist/schemas/enrollment/enrollment.schema.d.ts.map +1 -0
  64. package/dist/schemas/enrollment/enrollment.schema.js +435 -0
  65. package/dist/schemas/enrollment/enrollment.schema.js.map +1 -0
  66. package/dist/schemas/enrollment/index.d.ts +7 -0
  67. package/dist/schemas/enrollment/index.d.ts.map +1 -0
  68. package/dist/schemas/enrollment/index.js +23 -0
  69. package/dist/schemas/enrollment/index.js.map +1 -0
  70. package/dist/schemas/identity/academic-year.schema.d.ts +546 -0
  71. package/dist/schemas/identity/academic-year.schema.d.ts.map +1 -0
  72. package/dist/schemas/identity/academic-year.schema.js +137 -0
  73. package/dist/schemas/identity/academic-year.schema.js.map +1 -0
  74. package/dist/schemas/identity/auth.schema.d.ts +670 -0
  75. package/dist/schemas/identity/auth.schema.d.ts.map +1 -0
  76. package/dist/schemas/identity/auth.schema.js +126 -0
  77. package/dist/schemas/identity/auth.schema.js.map +1 -0
  78. package/dist/schemas/identity/bell-schedule.schema.d.ts +630 -0
  79. package/dist/schemas/identity/bell-schedule.schema.d.ts.map +1 -0
  80. package/dist/schemas/identity/bell-schedule.schema.js +143 -0
  81. package/dist/schemas/identity/bell-schedule.schema.js.map +1 -0
  82. package/dist/schemas/identity/calendar-date.schema.d.ts +830 -0
  83. package/dist/schemas/identity/calendar-date.schema.d.ts.map +1 -0
  84. package/dist/schemas/identity/calendar-date.schema.js +208 -0
  85. package/dist/schemas/identity/calendar-date.schema.js.map +1 -0
  86. package/dist/schemas/identity/credential.schema.d.ts +472 -0
  87. package/dist/schemas/identity/credential.schema.d.ts.map +1 -0
  88. package/dist/schemas/identity/credential.schema.js +200 -0
  89. package/dist/schemas/identity/credential.schema.js.map +1 -0
  90. package/dist/schemas/identity/department.schema.d.ts +567 -0
  91. package/dist/schemas/identity/department.schema.d.ts.map +1 -0
  92. package/dist/schemas/identity/department.schema.js +113 -0
  93. package/dist/schemas/identity/department.schema.js.map +1 -0
  94. package/dist/schemas/identity/index.d.ts +21 -0
  95. package/dist/schemas/identity/index.d.ts.map +1 -0
  96. package/dist/schemas/identity/index.js +39 -0
  97. package/dist/schemas/identity/index.js.map +1 -0
  98. package/dist/schemas/identity/leave.schema.d.ts +725 -0
  99. package/dist/schemas/identity/leave.schema.d.ts.map +1 -0
  100. package/dist/schemas/identity/leave.schema.js +204 -0
  101. package/dist/schemas/identity/leave.schema.js.map +1 -0
  102. package/dist/schemas/identity/role.schema.d.ts +356 -0
  103. package/dist/schemas/identity/role.schema.d.ts.map +1 -0
  104. package/dist/schemas/identity/role.schema.js +124 -0
  105. package/dist/schemas/identity/role.schema.js.map +1 -0
  106. package/dist/schemas/identity/school-year.schema.d.ts +303 -0
  107. package/dist/schemas/identity/school-year.schema.d.ts.map +1 -0
  108. package/dist/schemas/identity/school-year.schema.js +59 -0
  109. package/dist/schemas/identity/school-year.schema.js.map +1 -0
  110. package/dist/schemas/identity/school.schema.d.ts +844 -0
  111. package/dist/schemas/identity/school.schema.d.ts.map +1 -0
  112. package/dist/schemas/identity/school.schema.js +139 -0
  113. package/dist/schemas/identity/school.schema.js.map +1 -0
  114. package/dist/schemas/identity/security.schema.d.ts +422 -0
  115. package/dist/schemas/identity/security.schema.d.ts.map +1 -0
  116. package/dist/schemas/identity/security.schema.js +151 -0
  117. package/dist/schemas/identity/security.schema.js.map +1 -0
  118. package/dist/schemas/identity/session.schema.d.ts +193 -0
  119. package/dist/schemas/identity/session.schema.d.ts.map +1 -0
  120. package/dist/schemas/identity/session.schema.js +59 -0
  121. package/dist/schemas/identity/session.schema.js.map +1 -0
  122. package/dist/schemas/identity/staff.schema.d.ts +1037 -0
  123. package/dist/schemas/identity/staff.schema.d.ts.map +1 -0
  124. package/dist/schemas/identity/staff.schema.js +251 -0
  125. package/dist/schemas/identity/staff.schema.js.map +1 -0
  126. package/dist/schemas/identity/tenant.schema.d.ts +313 -0
  127. package/dist/schemas/identity/tenant.schema.d.ts.map +1 -0
  128. package/dist/schemas/identity/tenant.schema.js +81 -0
  129. package/dist/schemas/identity/tenant.schema.js.map +1 -0
  130. package/dist/schemas/identity/user.schema.d.ts +921 -0
  131. package/dist/schemas/identity/user.schema.d.ts.map +1 -0
  132. package/dist/schemas/identity/user.schema.js +201 -0
  133. package/dist/schemas/identity/user.schema.js.map +1 -0
  134. package/dist/schemas/index.d.ts +10 -0
  135. package/dist/schemas/index.d.ts.map +1 -0
  136. package/dist/schemas/index.js +26 -0
  137. package/dist/schemas/index.js.map +1 -0
  138. package/dist/validators/academic-year.d.ts +90 -0
  139. package/dist/validators/academic-year.d.ts.map +1 -0
  140. package/dist/validators/academic-year.js +190 -0
  141. package/dist/validators/academic-year.js.map +1 -0
  142. package/dist/validators/date-range.d.ts +142 -0
  143. package/dist/validators/date-range.d.ts.map +1 -0
  144. package/dist/validators/date-range.js +170 -0
  145. package/dist/validators/date-range.js.map +1 -0
  146. package/dist/validators/grade-level.d.ts +80 -0
  147. package/dist/validators/grade-level.d.ts.map +1 -0
  148. package/dist/validators/grade-level.js +157 -0
  149. package/dist/validators/grade-level.js.map +1 -0
  150. package/dist/validators/index.d.ts +10 -0
  151. package/dist/validators/index.d.ts.map +1 -0
  152. package/dist/validators/index.js +26 -0
  153. package/dist/validators/index.js.map +1 -0
  154. package/dist/validators/password.d.ts +60 -0
  155. package/dist/validators/password.d.ts.map +1 -0
  156. package/dist/validators/password.js +81 -0
  157. package/dist/validators/password.js.map +1 -0
  158. package/package.json +50 -0
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Password Validation - Aligned with AWS Cognito Password Policy
3
+ *
4
+ * This is the single source of truth for password validation in EdForge.
5
+ * The validation rules here MUST match the Cognito User Pool password policy
6
+ * defined in server/lib/tenant-template/identity-provider.ts:
7
+ *
8
+ * passwordPolicy: {
9
+ * minLength: 8,
10
+ * requireLowercase: true,
11
+ * requireUppercase: true,
12
+ * requireDigits: true,
13
+ * requireSymbols: true
14
+ * }
15
+ *
16
+ * Cognito's default special characters when requireSymbols=true:
17
+ * ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` + = -
18
+ *
19
+ * @see https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-policies.html
20
+ */
21
+ import { z } from 'zod';
22
+ /**
23
+ * Cognito password requirements configuration
24
+ * Use this for displaying requirements to users
25
+ */
26
+ export declare const COGNITO_PASSWORD_REQUIREMENTS: {
27
+ readonly minLength: 8;
28
+ readonly maxLength: 128;
29
+ readonly requireLowercase: true;
30
+ readonly requireUppercase: true;
31
+ readonly requireDigits: true;
32
+ readonly requireSymbols: true;
33
+ readonly allowedSymbols: "^ $ * . [ ] { } ( ) ? \" ! @ # % & / \\ , > < ' : ; | _ ~ ` + = -";
34
+ };
35
+ /**
36
+ * Password schema that validates against Cognito's password policy
37
+ *
38
+ * Use this schema for:
39
+ * - New password validation in registration
40
+ * - Password change validation
41
+ * - Password reset validation
42
+ */
43
+ export declare const passwordSchema: z.ZodString;
44
+ /**
45
+ * Validate a password string against Cognito requirements
46
+ * Returns true if valid, false otherwise
47
+ */
48
+ export declare function isValidPassword(password: string): boolean;
49
+ /**
50
+ * Validate a password and return detailed error messages
51
+ */
52
+ export declare function validatePassword(password: string): {
53
+ valid: boolean;
54
+ errors: string[];
55
+ };
56
+ /**
57
+ * Type for a valid password (branded type)
58
+ */
59
+ export type ValidPassword = z.infer<typeof passwordSchema>;
60
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/validators/password.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;CAQhC,CAAC;AAQX;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,aAgBxB,CAAC;AAEJ;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CASA;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * Password Validation - Aligned with AWS Cognito Password Policy
4
+ *
5
+ * This is the single source of truth for password validation in EdForge.
6
+ * The validation rules here MUST match the Cognito User Pool password policy
7
+ * defined in server/lib/tenant-template/identity-provider.ts:
8
+ *
9
+ * passwordPolicy: {
10
+ * minLength: 8,
11
+ * requireLowercase: true,
12
+ * requireUppercase: true,
13
+ * requireDigits: true,
14
+ * requireSymbols: true
15
+ * }
16
+ *
17
+ * Cognito's default special characters when requireSymbols=true:
18
+ * ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` + = -
19
+ *
20
+ * @see https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-policies.html
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.passwordSchema = exports.COGNITO_PASSWORD_REQUIREMENTS = void 0;
24
+ exports.isValidPassword = isValidPassword;
25
+ exports.validatePassword = validatePassword;
26
+ const zod_1 = require("zod");
27
+ /**
28
+ * Cognito password requirements configuration
29
+ * Use this for displaying requirements to users
30
+ */
31
+ exports.COGNITO_PASSWORD_REQUIREMENTS = {
32
+ minLength: 8,
33
+ maxLength: 128,
34
+ requireLowercase: true,
35
+ requireUppercase: true,
36
+ requireDigits: true,
37
+ requireSymbols: true,
38
+ allowedSymbols: `^ $ * . [ ] { } ( ) ? " ! @ # % & / \\ , > < ' : ; | _ ~ \` + = -`,
39
+ };
40
+ /**
41
+ * Regex pattern for Cognito's allowed special characters
42
+ * Characters: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~ ` + = -
43
+ */
44
+ const COGNITO_SPECIAL_CHARS_REGEX = /[\^$*.\[\]{}()?"!@#%&/\\,><':;|_~`+=\-]/;
45
+ /**
46
+ * Password schema that validates against Cognito's password policy
47
+ *
48
+ * Use this schema for:
49
+ * - New password validation in registration
50
+ * - Password change validation
51
+ * - Password reset validation
52
+ */
53
+ exports.passwordSchema = zod_1.z
54
+ .string()
55
+ .min(exports.COGNITO_PASSWORD_REQUIREMENTS.minLength, `Password must be at least ${exports.COGNITO_PASSWORD_REQUIREMENTS.minLength} characters`)
56
+ .max(exports.COGNITO_PASSWORD_REQUIREMENTS.maxLength, `Password must be at most ${exports.COGNITO_PASSWORD_REQUIREMENTS.maxLength} characters`)
57
+ .regex(/[a-z]/, 'Password must contain at least one lowercase letter')
58
+ .regex(/[A-Z]/, 'Password must contain at least one uppercase letter')
59
+ .regex(/[0-9]/, 'Password must contain at least one digit')
60
+ .regex(COGNITO_SPECIAL_CHARS_REGEX, `Password must contain at least one special character (${exports.COGNITO_PASSWORD_REQUIREMENTS.allowedSymbols})`);
61
+ /**
62
+ * Validate a password string against Cognito requirements
63
+ * Returns true if valid, false otherwise
64
+ */
65
+ function isValidPassword(password) {
66
+ return exports.passwordSchema.safeParse(password).success;
67
+ }
68
+ /**
69
+ * Validate a password and return detailed error messages
70
+ */
71
+ function validatePassword(password) {
72
+ const result = exports.passwordSchema.safeParse(password);
73
+ if (result.success) {
74
+ return { valid: true, errors: [] };
75
+ }
76
+ return {
77
+ valid: false,
78
+ errors: result.error.errors.map((e) => e.message),
79
+ };
80
+ }
81
+ //# sourceMappingURL=password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.js","sourceRoot":"","sources":["../../src/validators/password.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAsDH,0CAEC;AAKD,4CAYC;AAvED,6BAAwB;AAExB;;;GAGG;AACU,QAAA,6BAA6B,GAAG;IAC3C,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,GAAG;IACd,gBAAgB,EAAE,IAAI;IACtB,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,mEAAmE;CAC3E,CAAC;AAEX;;;GAGG;AACH,MAAM,2BAA2B,GAAG,yCAAyC,CAAC;AAE9E;;;;;;;GAOG;AACU,QAAA,cAAc,GAAG,OAAC;KAC5B,MAAM,EAAE;KACR,GAAG,CACF,qCAA6B,CAAC,SAAS,EACvC,6BAA6B,qCAA6B,CAAC,SAAS,aAAa,CAClF;KACA,GAAG,CACF,qCAA6B,CAAC,SAAS,EACvC,4BAA4B,qCAA6B,CAAC,SAAS,aAAa,CACjF;KACA,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC;KACrE,KAAK,CAAC,OAAO,EAAE,qDAAqD,CAAC;KACrE,KAAK,CAAC,OAAO,EAAE,0CAA0C,CAAC;KAC1D,KAAK,CACJ,2BAA2B,EAC3B,yDAAyD,qCAA6B,CAAC,cAAc,GAAG,CACzG,CAAC;AAEJ;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,OAAO,sBAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAI/C,MAAM,MAAM,GAAG,sBAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAClD,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@aibrains/shared-types",
3
+ "version": "0.1.0",
4
+ "description": "Shared Zod schemas, TypeScript types, and validators for Education data models.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js"
11
+ },
12
+ "./schemas/*": {
13
+ "types": "./dist/schemas/*.d.ts",
14
+ "require": "./dist/schemas/*.js"
15
+ },
16
+ "./validators": {
17
+ "types": "./dist/validators/index.d.ts",
18
+ "require": "./dist/validators/index.js"
19
+ },
20
+ "./mappers": {
21
+ "types": "./dist/mappers/index.d.ts",
22
+ "require": "./dist/mappers/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "README.md"
28
+ ],
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "watch": "tsc --watch",
32
+ "clean": "rimraf dist",
33
+ "typecheck": "tsc --noEmit",
34
+ "prepublishOnly": "npm run clean && npm run build"
35
+ },
36
+ "dependencies": {
37
+ "zod": "^3.23.8"
38
+ },
39
+ "peerDependencies": {
40
+ "zod": ">=3.22.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^20.0.0",
44
+ "rimraf": "^5.0.5",
45
+ "typescript": "^5.0.0"
46
+ },
47
+ "publishConfig": {
48
+ "access": "public"
49
+ }
50
+ }