codeforlife 2.10.6 → 2.11.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 (142) hide show
  1. package/README.md +10 -6
  2. package/dist/App-3VkR-ZEZ.js +27 -0
  3. package/dist/App-3VkR-ZEZ.js.map +1 -0
  4. package/dist/App-UfeajXtp.cjs +2 -0
  5. package/dist/App-UfeajXtp.cjs.map +1 -0
  6. package/dist/Countdown-BtUbr1J_.cjs +2 -0
  7. package/dist/{Countdown-CyJ-01oU.cjs.map → Countdown-BtUbr1J_.cjs.map} +1 -1
  8. package/dist/{Countdown-BTyB1rrK.js → Countdown-DhjAmB0u.js} +9 -9
  9. package/dist/{Countdown-BTyB1rrK.js.map → Countdown-DhjAmB0u.js.map} +1 -1
  10. package/dist/{Image-CgYjq-tA.cjs → Image-CgRVUblT.cjs} +2 -2
  11. package/dist/{Image-CgYjq-tA.cjs.map → Image-CgRVUblT.cjs.map} +1 -1
  12. package/dist/{Image-C-f2ChBh.js → Image-DTOu0h-V.js} +2 -2
  13. package/dist/{Image-C-f2ChBh.js.map → Image-DTOu0h-V.js.map} +1 -1
  14. package/dist/{LinkButton-BOPjG7_2.cjs → LinkButton-Kw2brLTK.cjs} +2 -2
  15. package/dist/{LinkButton-BOPjG7_2.cjs.map → LinkButton-Kw2brLTK.cjs.map} +1 -1
  16. package/dist/{LinkButton-Bk50AHHg.js → LinkButton-sQ5jgHnX.js} +3 -3
  17. package/dist/{LinkButton-Bk50AHHg.js.map → LinkButton-sQ5jgHnX.js.map} +1 -1
  18. package/dist/{Navigate-SL_oMjPc.js → Navigate-ClPcw87e.js} +3 -3
  19. package/dist/{Navigate-SL_oMjPc.js.map → Navigate-ClPcw87e.js.map} +1 -1
  20. package/dist/Navigate-CrMwdIBB.cjs +2 -0
  21. package/dist/{Navigate-C_sgy8Xs.cjs.map → Navigate-CrMwdIBB.cjs.map} +1 -1
  22. package/dist/_commonjsHelpers-DKOUU3wS.cjs +2 -0
  23. package/dist/_commonjsHelpers-DKOUU3wS.cjs.map +1 -0
  24. package/dist/_commonjsHelpers-DaMA6jEr.js +9 -0
  25. package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
  26. package/dist/api/endpoints/index.cjs.js +1 -1
  27. package/dist/api/endpoints/index.es.js +2 -2
  28. package/dist/api/index.cjs.js +3 -3
  29. package/dist/api/index.es.js +3 -3
  30. package/dist/api-9cnyvZj7.cjs +2 -0
  31. package/dist/{api-DIgp_6Vr.cjs.map → api-9cnyvZj7.cjs.map} +1 -1
  32. package/dist/{api-BvUiTeR7.js → api-BFYu8ZvQ.js} +2 -2
  33. package/dist/{api-BvUiTeR7.js.map → api-BFYu8ZvQ.js.map} +1 -1
  34. package/dist/{api-CaeeoZaI.cjs → api-CAH3GT1O.cjs} +2 -2
  35. package/dist/{api-CaeeoZaI.cjs.map → api-CAH3GT1O.cjs.map} +1 -1
  36. package/dist/{auth-CQ1InCxP.js → auth-Bb8WkZGN.js} +4 -4
  37. package/dist/{auth-CQ1InCxP.js.map → auth-Bb8WkZGN.js.map} +1 -1
  38. package/dist/auth-BwpsrTko.cjs +2 -0
  39. package/dist/{auth-B7Vdot4N.cjs.map → auth-BwpsrTko.cjs.map} +1 -1
  40. package/dist/client-BK9NlSVR.js +25208 -0
  41. package/dist/client-BK9NlSVR.js.map +1 -0
  42. package/dist/client-CmAMc2Wj.cjs +251 -0
  43. package/dist/client-CmAMc2Wj.cjs.map +1 -0
  44. package/dist/components/form/index.cjs.js +1 -1
  45. package/dist/components/form/index.es.js +1 -1
  46. package/dist/components/index.cjs.js +1 -1
  47. package/dist/components/index.cjs.js.map +1 -1
  48. package/dist/components/index.d.ts +0 -1
  49. package/dist/components/index.es.js +146 -182
  50. package/dist/components/index.es.js.map +1 -1
  51. package/dist/components/page/index.cjs.js +1 -1
  52. package/dist/components/page/index.es.js +1 -1
  53. package/dist/components/router/index.cjs.js +1 -1
  54. package/dist/components/router/index.es.js +2 -2
  55. package/dist/components/table/index.cjs.js +1 -1
  56. package/dist/components/table/index.es.js +1 -1
  57. package/dist/features/index.cjs.js +1 -1
  58. package/dist/features/index.cjs.js.map +1 -1
  59. package/dist/features/index.es.js +10 -11
  60. package/dist/features/index.es.js.map +1 -1
  61. package/dist/general-Bo6JGvKB.cjs +2 -0
  62. package/dist/{general-BPbbmkeX.cjs.map → general-Bo6JGvKB.cjs.map} +1 -1
  63. package/dist/{general-CtTJPCJn.js → general-D7Hqi3gj.js} +3 -3
  64. package/dist/{general-CtTJPCJn.js.map → general-D7Hqi3gj.js.map} +1 -1
  65. package/dist/hooks/index.cjs.js +1 -1
  66. package/dist/hooks/index.es.js +2 -2
  67. package/dist/{index-CBPn0wyX.cjs → index-5C9hpxRF.cjs} +2 -2
  68. package/dist/{index-CBPn0wyX.cjs.map → index-5C9hpxRF.cjs.map} +1 -1
  69. package/dist/{index-Dfo744Sb.js → index-B3e_XaVG.js} +2 -2
  70. package/dist/{index-Dfo744Sb.js.map → index-B3e_XaVG.js.map} +1 -1
  71. package/dist/{index-CXYppxE3.cjs → index-B89FjK7v.cjs} +2 -2
  72. package/dist/{index-CXYppxE3.cjs.map → index-B89FjK7v.cjs.map} +1 -1
  73. package/dist/{index-CI5O_yH6.js → index-BRHFlEjS.js} +37 -39
  74. package/dist/{index-CI5O_yH6.js.map → index-BRHFlEjS.js.map} +1 -1
  75. package/dist/{index-D8Gc0IWi.js → index-CHboZsxD.js} +2 -2
  76. package/dist/{index-D8Gc0IWi.js.map → index-CHboZsxD.js.map} +1 -1
  77. package/dist/index-CwC9mpb3.cjs +2 -0
  78. package/dist/{index-B6aNVvMr.cjs.map → index-CwC9mpb3.cjs.map} +1 -1
  79. package/dist/{index-DCI-3m7f.cjs → index-DuArGzQE.cjs} +3 -3
  80. package/dist/{index-DCI-3m7f.cjs.map → index-DuArGzQE.cjs.map} +1 -1
  81. package/dist/{index-DcmDxIXA.js → index-hdS8RgRc.js} +5 -5
  82. package/dist/{index-DcmDxIXA.js.map → index-hdS8RgRc.js.map} +1 -1
  83. package/dist/index.cjs.js +1 -1
  84. package/dist/index.d.ts +1 -1
  85. package/dist/index.es.js +6 -6
  86. package/dist/{jsx-runtime-Dszzpdy0.cjs → jsx-runtime-B2pbW5Fp.cjs} +3 -3
  87. package/dist/{jsx-runtime-Dszzpdy0.cjs.map → jsx-runtime-B2pbW5Fp.cjs.map} +1 -1
  88. package/dist/{jsx-runtime-C7wFtzyj.js → jsx-runtime-lzYHhGH3.js} +15 -15
  89. package/dist/{jsx-runtime-C7wFtzyj.js.map → jsx-runtime-lzYHhGH3.js.map} +1 -1
  90. package/dist/{schemas-D3tO0rys.js → schemas-BMQZbhti.js} +2 -2
  91. package/dist/{schemas-D3tO0rys.js.map → schemas-BMQZbhti.js.map} +1 -1
  92. package/dist/{schemas-CpAWhNsP.cjs → schemas-DXX4rh8i.cjs} +2 -2
  93. package/dist/{schemas-CpAWhNsP.cjs.map → schemas-DXX4rh8i.cjs.map} +1 -1
  94. package/dist/server/App.d.ts +15 -0
  95. package/dist/server/entry.cjs.js +209 -0
  96. package/dist/server/entry.cjs.js.map +1 -0
  97. package/dist/server/entry.d.ts +14 -0
  98. package/dist/server/entry.es.js +21885 -0
  99. package/dist/server/entry.es.js.map +1 -0
  100. package/dist/server/index.cjs.js +6 -0
  101. package/dist/server/index.cjs.js.map +1 -0
  102. package/dist/server/index.d.ts +6 -0
  103. package/dist/{server.es.js → server/index.es.js} +19 -17
  104. package/dist/server/index.es.js.map +1 -0
  105. package/dist/settings/index.cjs.js +1 -1
  106. package/dist/settings/index.cjs.js.map +1 -1
  107. package/dist/settings/index.d.ts +1 -2
  108. package/dist/settings/index.es.js +5 -5
  109. package/dist/settings/index.es.js.map +1 -1
  110. package/dist/theme/components/index.cjs.js +1 -1
  111. package/dist/theme/components/index.es.js +1 -1
  112. package/dist/theme/index.cjs.js +1 -1
  113. package/dist/theme/index.cjs.js.map +1 -1
  114. package/dist/theme/index.d.ts +1 -2
  115. package/dist/theme/index.es.js +5 -5
  116. package/dist/theme/index.es.js.map +1 -1
  117. package/dist/{urls-RtSTEZfW.cjs → urls-CGZI0f1w.cjs} +2 -2
  118. package/dist/{urls-RtSTEZfW.cjs.map → urls-CGZI0f1w.cjs.map} +1 -1
  119. package/dist/{urls-5m9PgoEX.js → urls-DP4a8kxP.js} +2 -2
  120. package/dist/{urls-5m9PgoEX.js.map → urls-DP4a8kxP.js.map} +1 -1
  121. package/dist/utils/api.cjs.js +1 -1
  122. package/dist/utils/api.es.js +2 -2
  123. package/dist/utils/router.cjs.js +1 -1
  124. package/dist/utils/router.es.js +2 -2
  125. package/dist/utils/test.cjs.js +1 -250
  126. package/dist/utils/test.cjs.js.map +1 -1
  127. package/dist/utils/test.es.js +20 -25223
  128. package/dist/utils/test.es.js.map +1 -1
  129. package/dist/utils/theme.cjs.js +1 -1
  130. package/dist/utils/theme.es.js +2 -2
  131. package/package.json +16 -9
  132. package/dist/Countdown-CyJ-01oU.cjs +0 -2
  133. package/dist/Navigate-C_sgy8Xs.cjs +0 -2
  134. package/dist/api-DIgp_6Vr.cjs +0 -2
  135. package/dist/auth-B7Vdot4N.cjs +0 -2
  136. package/dist/components/App.d.ts +0 -18
  137. package/dist/general-BPbbmkeX.cjs +0 -2
  138. package/dist/index-B6aNVvMr.cjs +0 -2
  139. package/dist/server.cjs.js +0 -6
  140. package/dist/server.cjs.js.map +0 -1
  141. package/dist/server.es.js.map +0 -1
  142. /package/dist/{server.d.ts → server/server.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"schemas-CpAWhNsP.cjs","sources":["../src/api/schemas.ts"],"sourcesContent":["import * as yup from \"yup\"\n\nimport type {\n AdminSchoolTeacher,\n AdminSchoolTeacherUser,\n AuthFactor,\n Class,\n IndependentUser,\n NonAdminSchoolTeacher,\n NonAdminSchoolTeacherUser,\n NonSchoolTeacher,\n NonSchoolTeacherUser,\n OtpBypassToken,\n School,\n SchoolTeacher,\n SchoolTeacherUser,\n Student,\n StudentUser,\n Teacher,\n TeacherUser,\n User,\n} from \"./models\"\nimport { COUNTRY_ISO_CODES, UK_COUNTIES } from \"../utils/general\"\nimport {\n lowercaseAsciiAlphanumericString,\n numericId,\n unicodeAlphanumericString,\n uppercaseAsciiAlphanumericString,\n} from \"../utils/schema\"\nimport { type Schemas } from \"../utils/api\"\n\n// NOTE: do not use .required() here.\nconst id = {\n user: numericId(),\n teacher: numericId(),\n student: numericId(),\n school: numericId(),\n klass: uppercaseAsciiAlphanumericString().length(5),\n authFactor: numericId(),\n otpBypassToken: numericId(),\n}\n\n// -----------------------------------------------------------------------------\n// User Schemas\n// -----------------------------------------------------------------------------\n\nconst _userTeacher: Omit<Schemas<Teacher>, \"user\"> = {\n id: id.teacher.required(),\n school: id.school,\n is_admin: yup.bool().required(),\n}\n\nconst _userStudent: Omit<Schemas<Student>, \"user\"> = {\n id: id.student.required(),\n school: id.school.required(),\n klass: id.klass.required(),\n auto_gen_password: yup.string().required(),\n}\n\nexport const user: Schemas<User> = {\n id: id.user.required(),\n requesting_to_join_class: id.klass,\n first_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n })\n .required()\n .max(150),\n last_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n }).max(150),\n last_login: yup.date(),\n email: yup.string().email(),\n password: yup.string().required(),\n is_staff: yup.bool().required(),\n is_active: yup.bool().required(),\n date_joined: yup.date().required(),\n teacher: yup.object(_userTeacher).optional(),\n student: yup.object(_userStudent).optional(),\n}\n\nexport const teacherUser: Schemas<TeacherUser> = {\n ...user,\n password: user.password\n .min(10, \"must be at least 10 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\")\n .matches(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n \"must contain at least one special character\",\n ),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: user.teacher.required(),\n student: yup.string().oneOf([undefined]),\n}\n\nconst _userSchoolTeacher: Omit<Schemas<SchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: _userTeacher.school.required(),\n}\n\nexport const schoolTeacherUser: Schemas<SchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userSchoolTeacher),\n}\n\nconst _userAdminSchoolTeacher: Omit<Schemas<AdminSchoolTeacher>, \"user\"> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isTrue(),\n}\n\nexport const adminSchoolTeacherUser: Schemas<AdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userAdminSchoolTeacher),\n}\n\nconst _userNonAdminSchoolTeacher: Omit<\n Schemas<NonAdminSchoolTeacher>,\n \"user\"\n> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isFalse(),\n}\n\nexport const nonAdminSchoolTeacherUser: Schemas<NonAdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userNonAdminSchoolTeacher),\n}\n\nconst _userNonSchoolTeacher: Omit<Schemas<NonSchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: yup.string().oneOf([undefined]),\n is_admin: _userTeacher.is_admin.isFalse(),\n}\n\nexport const nonSchoolTeacherUser: Schemas<NonSchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userNonSchoolTeacher),\n}\n\nexport const studentUser: Schemas<StudentUser> = {\n ...user,\n password: user.password.min(6, \"must be at least 6 characters long\"),\n email: user.email.oneOf([undefined]),\n last_name: user.last_name.oneOf([undefined]),\n teacher: yup.string().oneOf([undefined]),\n student: user.student.required(),\n}\n\nexport const indyUser: Schemas<IndependentUser> = {\n ...user,\n password: user.password\n .min(8, \"must be at least 8 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\"),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: yup.string().oneOf([undefined]),\n student: yup.string().oneOf([undefined]),\n}\n\n// -----------------------------------------------------------------------------\n// Teacher Schemas\n// -----------------------------------------------------------------------------\n\nexport const teacher: Schemas<Teacher> = {\n ..._userTeacher,\n user: id.user.required(),\n}\n\nexport const schoolTeacher: Schemas<SchoolTeacher> = {\n ..._userSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const adminSchoolTeacher: Schemas<AdminSchoolTeacher> = {\n ..._userAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonAdminSchoolTeacher: Schemas<NonAdminSchoolTeacher> = {\n ..._userNonAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonSchoolTeacher: Schemas<NonSchoolTeacher> = {\n ..._userNonSchoolTeacher,\n user: id.user.required(),\n}\n\n// -----------------------------------------------------------------------------\n// Other Schemas\n// -----------------------------------------------------------------------------\n\nexport const student: Schemas<Student> = {\n ..._userStudent,\n user: id.user.required(),\n}\n\nexport const school: Schemas<School> = {\n id: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"'.\",\n })\n .required()\n .max(200),\n country: yup.string().oneOf(COUNTRY_ISO_CODES),\n uk_county: yup.string().oneOf(UK_COUNTIES),\n}\n\nexport const klass: Schemas<Class> = {\n id: id.klass.required(),\n teacher: id.teacher.required(),\n school: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-_\",\n })\n .required()\n .max(200),\n read_classmates_data: yup.bool().required(),\n receive_requests_until: yup.date(),\n}\n\nexport const authFactor: Schemas<AuthFactor> = {\n id: id.authFactor.required(),\n user: id.user.required(),\n type: yup\n .string()\n .oneOf([\"otp\"] as const)\n .required(),\n}\n\nexport const otpBypassToken: Schemas<OtpBypassToken> = {\n id: id.otpBypassToken.required(),\n user: id.user.required(),\n token: lowercaseAsciiAlphanumericString().required().length(8),\n}\n"],"names":["id","numericId","uppercaseAsciiAlphanumericString","_userTeacher","yup","_userStudent","user","unicodeAlphanumericString","teacherUser","_userSchoolTeacher","schoolTeacherUser","_userAdminSchoolTeacher","adminSchoolTeacherUser","_userNonAdminSchoolTeacher","nonAdminSchoolTeacherUser","_userNonSchoolTeacher","nonSchoolTeacherUser","studentUser","indyUser","teacher","schoolTeacher","adminSchoolTeacher","nonAdminSchoolTeacher","nonSchoolTeacher","student","school","COUNTRY_ISO_CODES","UK_COUNTIES","klass","authFactor","otpBypassToken","lowercaseAsciiAlphanumericString"],"mappings":"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"}
1
+ {"version":3,"file":"schemas-DXX4rh8i.cjs","sources":["../src/api/schemas.ts"],"sourcesContent":["import * as yup from \"yup\"\n\nimport type {\n AdminSchoolTeacher,\n AdminSchoolTeacherUser,\n AuthFactor,\n Class,\n IndependentUser,\n NonAdminSchoolTeacher,\n NonAdminSchoolTeacherUser,\n NonSchoolTeacher,\n NonSchoolTeacherUser,\n OtpBypassToken,\n School,\n SchoolTeacher,\n SchoolTeacherUser,\n Student,\n StudentUser,\n Teacher,\n TeacherUser,\n User,\n} from \"./models\"\nimport { COUNTRY_ISO_CODES, UK_COUNTIES } from \"../utils/general\"\nimport {\n lowercaseAsciiAlphanumericString,\n numericId,\n unicodeAlphanumericString,\n uppercaseAsciiAlphanumericString,\n} from \"../utils/schema\"\nimport { type Schemas } from \"../utils/api\"\n\n// NOTE: do not use .required() here.\nconst id = {\n user: numericId(),\n teacher: numericId(),\n student: numericId(),\n school: numericId(),\n klass: uppercaseAsciiAlphanumericString().length(5),\n authFactor: numericId(),\n otpBypassToken: numericId(),\n}\n\n// -----------------------------------------------------------------------------\n// User Schemas\n// -----------------------------------------------------------------------------\n\nconst _userTeacher: Omit<Schemas<Teacher>, \"user\"> = {\n id: id.teacher.required(),\n school: id.school,\n is_admin: yup.bool().required(),\n}\n\nconst _userStudent: Omit<Schemas<Student>, \"user\"> = {\n id: id.student.required(),\n school: id.school.required(),\n klass: id.klass.required(),\n auto_gen_password: yup.string().required(),\n}\n\nexport const user: Schemas<User> = {\n id: id.user.required(),\n requesting_to_join_class: id.klass,\n first_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n })\n .required()\n .max(150),\n last_name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-'\",\n }).max(150),\n last_login: yup.date(),\n email: yup.string().email(),\n password: yup.string().required(),\n is_staff: yup.bool().required(),\n is_active: yup.bool().required(),\n date_joined: yup.date().required(),\n teacher: yup.object(_userTeacher).optional(),\n student: yup.object(_userStudent).optional(),\n}\n\nexport const teacherUser: Schemas<TeacherUser> = {\n ...user,\n password: user.password\n .min(10, \"must be at least 10 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\")\n .matches(\n /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/,\n \"must contain at least one special character\",\n ),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: user.teacher.required(),\n student: yup.string().oneOf([undefined]),\n}\n\nconst _userSchoolTeacher: Omit<Schemas<SchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: _userTeacher.school.required(),\n}\n\nexport const schoolTeacherUser: Schemas<SchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userSchoolTeacher),\n}\n\nconst _userAdminSchoolTeacher: Omit<Schemas<AdminSchoolTeacher>, \"user\"> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isTrue(),\n}\n\nexport const adminSchoolTeacherUser: Schemas<AdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userAdminSchoolTeacher),\n}\n\nconst _userNonAdminSchoolTeacher: Omit<\n Schemas<NonAdminSchoolTeacher>,\n \"user\"\n> = {\n ..._userSchoolTeacher,\n is_admin: _userSchoolTeacher.is_admin.isFalse(),\n}\n\nexport const nonAdminSchoolTeacherUser: Schemas<NonAdminSchoolTeacherUser> = {\n ...schoolTeacherUser,\n teacher: yup.object(_userNonAdminSchoolTeacher),\n}\n\nconst _userNonSchoolTeacher: Omit<Schemas<NonSchoolTeacher>, \"user\"> = {\n ..._userTeacher,\n school: yup.string().oneOf([undefined]),\n is_admin: _userTeacher.is_admin.isFalse(),\n}\n\nexport const nonSchoolTeacherUser: Schemas<NonSchoolTeacherUser> = {\n ...teacherUser,\n teacher: yup.object(_userNonSchoolTeacher),\n}\n\nexport const studentUser: Schemas<StudentUser> = {\n ...user,\n password: user.password.min(6, \"must be at least 6 characters long\"),\n email: user.email.oneOf([undefined]),\n last_name: user.last_name.oneOf([undefined]),\n teacher: yup.string().oneOf([undefined]),\n student: user.student.required(),\n}\n\nexport const indyUser: Schemas<IndependentUser> = {\n ...user,\n password: user.password\n .min(8, \"must be at least 8 characters long\")\n .matches(/[A-Z]/, \"must contain at least one uppercase letter\")\n .matches(/[a-z]/, \"must contain at least one lowercase letter\")\n .matches(/[0-9]/, \"must contain at least one digit\"),\n email: user.email.required(),\n last_name: user.last_name.required(),\n teacher: yup.string().oneOf([undefined]),\n student: yup.string().oneOf([undefined]),\n}\n\n// -----------------------------------------------------------------------------\n// Teacher Schemas\n// -----------------------------------------------------------------------------\n\nexport const teacher: Schemas<Teacher> = {\n ..._userTeacher,\n user: id.user.required(),\n}\n\nexport const schoolTeacher: Schemas<SchoolTeacher> = {\n ..._userSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const adminSchoolTeacher: Schemas<AdminSchoolTeacher> = {\n ..._userAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonAdminSchoolTeacher: Schemas<NonAdminSchoolTeacher> = {\n ..._userNonAdminSchoolTeacher,\n user: id.user.required(),\n}\n\nexport const nonSchoolTeacher: Schemas<NonSchoolTeacher> = {\n ..._userNonSchoolTeacher,\n user: id.user.required(),\n}\n\n// -----------------------------------------------------------------------------\n// Other Schemas\n// -----------------------------------------------------------------------------\n\nexport const student: Schemas<Student> = {\n ..._userStudent,\n user: id.user.required(),\n}\n\nexport const school: Schemas<School> = {\n id: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"'.\",\n })\n .required()\n .max(200),\n country: yup.string().oneOf(COUNTRY_ISO_CODES),\n uk_county: yup.string().oneOf(UK_COUNTIES),\n}\n\nexport const klass: Schemas<Class> = {\n id: id.klass.required(),\n teacher: id.teacher.required(),\n school: id.school.required(),\n name: unicodeAlphanumericString({\n spaces: true,\n specialChars: \"-_\",\n })\n .required()\n .max(200),\n read_classmates_data: yup.bool().required(),\n receive_requests_until: yup.date(),\n}\n\nexport const authFactor: Schemas<AuthFactor> = {\n id: id.authFactor.required(),\n user: id.user.required(),\n type: yup\n .string()\n .oneOf([\"otp\"] as const)\n .required(),\n}\n\nexport const otpBypassToken: Schemas<OtpBypassToken> = {\n id: id.otpBypassToken.required(),\n user: id.user.required(),\n token: lowercaseAsciiAlphanumericString().required().length(8),\n}\n"],"names":["id","numericId","uppercaseAsciiAlphanumericString","_userTeacher","yup","_userStudent","user","unicodeAlphanumericString","teacherUser","_userSchoolTeacher","schoolTeacherUser","_userAdminSchoolTeacher","adminSchoolTeacherUser","_userNonAdminSchoolTeacher","nonAdminSchoolTeacherUser","_userNonSchoolTeacher","nonSchoolTeacherUser","studentUser","indyUser","teacher","schoolTeacher","adminSchoolTeacher","nonAdminSchoolTeacher","nonSchoolTeacher","student","school","COUNTRY_ISO_CODES","UK_COUNTIES","klass","authFactor","otpBypassToken","lowercaseAsciiAlphanumericString"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { EmotionCache } from '@emotion/react';
2
+ import { JSX, ReactNode } from 'react';
3
+ import { ProviderProps as StoreProviderProps } from 'react-redux';
4
+ import { Action } from 'redux';
5
+ import { ThemeProviderProps } from '@mui/material';
6
+ export interface AppProps<A extends Action = Action, S = unknown> {
7
+ children: ReactNode;
8
+ emotionCache: EmotionCache;
9
+ theme: ThemeProviderProps["theme"];
10
+ store: StoreProviderProps<A, S>["store"];
11
+ maxIdleSeconds?: number;
12
+ maxTotalSeconds?: number;
13
+ }
14
+ declare const App: <A extends Action = Action, S = unknown>({ children, emotionCache, theme, store, maxIdleSeconds, maxTotalSeconds, }: AppProps<A, S>) => JSX.Element;
15
+ export default App;