@aneuhold/core-ts-db-lib 3.0.2 → 4.0.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 (116) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/lib/browser.d.ts +19 -16
  3. package/lib/browser.d.ts.map +1 -1
  4. package/lib/browser.js +10 -12
  5. package/lib/browser.js.map +1 -1
  6. package/lib/browser.ts +46 -36
  7. package/lib/documents/BaseDocument.d.ts +22 -9
  8. package/lib/documents/BaseDocument.d.ts.map +1 -1
  9. package/lib/documents/BaseDocument.js +16 -7
  10. package/lib/documents/BaseDocument.js.map +1 -1
  11. package/lib/documents/BaseDocument.ts +27 -7
  12. package/lib/documents/common/ApiKey.d.ts +8 -25
  13. package/lib/documents/common/ApiKey.d.ts.map +1 -1
  14. package/lib/documents/common/ApiKey.js +7 -36
  15. package/lib/documents/common/ApiKey.js.map +1 -1
  16. package/lib/documents/common/ApiKey.ts +11 -41
  17. package/lib/documents/common/User.d.ts +25 -31
  18. package/lib/documents/common/User.d.ts.map +1 -1
  19. package/lib/documents/common/User.js +22 -39
  20. package/lib/documents/common/User.js.map +1 -1
  21. package/lib/documents/common/User.ts +29 -53
  22. package/lib/documents/dashboard/NonogramKatanaItem.d.ts +18 -27
  23. package/lib/documents/dashboard/NonogramKatanaItem.d.ts.map +1 -1
  24. package/lib/documents/dashboard/NonogramKatanaItem.js +17 -31
  25. package/lib/documents/dashboard/NonogramKatanaItem.js.map +1 -1
  26. package/lib/documents/dashboard/NonogramKatanaItem.ts +21 -45
  27. package/lib/documents/dashboard/NonogramKatanaUpgrade.d.ts +16 -41
  28. package/lib/documents/dashboard/NonogramKatanaUpgrade.d.ts.map +1 -1
  29. package/lib/documents/dashboard/NonogramKatanaUpgrade.js +17 -43
  30. package/lib/documents/dashboard/NonogramKatanaUpgrade.js.map +1 -1
  31. package/lib/documents/dashboard/NonogramKatanaUpgrade.ts +21 -55
  32. package/lib/documents/dashboard/Task.d.ts +73 -97
  33. package/lib/documents/dashboard/Task.d.ts.map +1 -1
  34. package/lib/documents/dashboard/Task.js +38 -80
  35. package/lib/documents/dashboard/Task.js.map +1 -1
  36. package/lib/documents/dashboard/Task.ts +71 -111
  37. package/lib/documents/dashboard/UserConfig.d.ts +49 -69
  38. package/lib/documents/dashboard/UserConfig.d.ts.map +1 -1
  39. package/lib/documents/dashboard/UserConfig.js +31 -51
  40. package/lib/documents/dashboard/UserConfig.js.map +1 -1
  41. package/lib/documents/dashboard/UserConfig.ts +41 -87
  42. package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.d.ts +5 -0
  43. package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.d.ts.map +1 -1
  44. package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.js +5 -0
  45. package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.js.map +1 -1
  46. package/lib/embedded-types/dashboard/nonogramKatanaItem/ItemName.ts +7 -0
  47. package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.d.ts +5 -0
  48. package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.d.ts.map +1 -1
  49. package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js +5 -0
  50. package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js.map +1 -1
  51. package/lib/embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.ts +7 -0
  52. package/lib/embedded-types/dashboard/task/FilterSettings.d.ts +69 -41
  53. package/lib/embedded-types/dashboard/task/FilterSettings.d.ts.map +1 -1
  54. package/lib/embedded-types/dashboard/task/FilterSettings.js +29 -36
  55. package/lib/embedded-types/dashboard/task/FilterSettings.js.map +1 -1
  56. package/lib/embedded-types/dashboard/task/FilterSettings.ts +51 -74
  57. package/lib/embedded-types/dashboard/task/RecurrenceInfo.d.ts +74 -52
  58. package/lib/embedded-types/dashboard/task/RecurrenceInfo.d.ts.map +1 -1
  59. package/lib/embedded-types/dashboard/task/RecurrenceInfo.js +66 -28
  60. package/lib/embedded-types/dashboard/task/RecurrenceInfo.js.map +1 -1
  61. package/lib/embedded-types/dashboard/task/RecurrenceInfo.ts +83 -77
  62. package/lib/embedded-types/dashboard/task/SortSettings.d.ts +61 -42
  63. package/lib/embedded-types/dashboard/task/SortSettings.d.ts.map +1 -1
  64. package/lib/embedded-types/dashboard/task/SortSettings.js +34 -31
  65. package/lib/embedded-types/dashboard/task/SortSettings.js.map +1 -1
  66. package/lib/embedded-types/dashboard/task/SortSettings.ts +66 -61
  67. package/lib/embedded-types/dashboard/userConfig/Tags.d.ts +18 -11
  68. package/lib/embedded-types/dashboard/userConfig/Tags.d.ts.map +1 -1
  69. package/lib/embedded-types/dashboard/userConfig/Tags.js +15 -1
  70. package/lib/embedded-types/dashboard/userConfig/Tags.js.map +1 -1
  71. package/lib/embedded-types/dashboard/userConfig/Tags.ts +21 -9
  72. package/lib/schemas/required-refs/RequiredUserId.d.ts +9 -5
  73. package/lib/schemas/required-refs/RequiredUserId.d.ts.map +1 -1
  74. package/lib/schemas/required-refs/RequiredUserId.js +9 -4
  75. package/lib/schemas/required-refs/RequiredUserId.js.map +1 -1
  76. package/lib/schemas/required-refs/RequiredUserId.ts +13 -4
  77. package/lib/services/DocumentService.d.ts +1 -1
  78. package/lib/services/DocumentService.d.ts.map +1 -1
  79. package/lib/services/DocumentService.js +0 -1
  80. package/lib/services/DocumentService.js.map +1 -1
  81. package/lib/services/DocumentService.ts +1 -1
  82. package/lib/services/dashboard/Task/TaskRecurrenceService.d.ts +4 -4
  83. package/lib/services/dashboard/Task/TaskRecurrenceService.d.ts.map +1 -1
  84. package/lib/services/dashboard/Task/TaskRecurrenceService.js +3 -4
  85. package/lib/services/dashboard/Task/TaskRecurrenceService.js.map +1 -1
  86. package/lib/services/dashboard/Task/TaskRecurrenceService.ts +8 -5
  87. package/lib/services/dashboard/Task/TaskService.d.ts +1 -2
  88. package/lib/services/dashboard/Task/TaskService.d.ts.map +1 -1
  89. package/lib/services/dashboard/Task/TaskService.js +0 -1
  90. package/lib/services/dashboard/Task/TaskService.js.map +1 -1
  91. package/lib/services/dashboard/Task/TaskService.ts +1 -2
  92. package/lib/services/dashboard/Task/TaskSortService.d.ts.map +1 -1
  93. package/lib/services/dashboard/Task/TaskSortService.js +0 -1
  94. package/lib/services/dashboard/Task/TaskSortService.js.map +1 -1
  95. package/lib/services/dashboard/Task/TaskSortService.ts +1 -2
  96. package/package.json +10 -10
  97. package/lib/documents/BaseDocumentWithType.d.ts +0 -8
  98. package/lib/documents/BaseDocumentWithType.d.ts.map +0 -1
  99. package/lib/documents/BaseDocumentWithType.js +0 -7
  100. package/lib/documents/BaseDocumentWithType.js.map +0 -1
  101. package/lib/documents/BaseDocumentWithType.ts +0 -8
  102. package/lib/schemas/type-guards/commonTypeGuards.d.ts +0 -36
  103. package/lib/schemas/type-guards/commonTypeGuards.d.ts.map +0 -1
  104. package/lib/schemas/type-guards/commonTypeGuards.js +0 -46
  105. package/lib/schemas/type-guards/commonTypeGuards.js.map +0 -1
  106. package/lib/schemas/type-guards/commonTypeGuards.ts +0 -49
  107. package/lib/schemas/validators/DocumentValidator.d.ts +0 -9
  108. package/lib/schemas/validators/DocumentValidator.d.ts.map +0 -1
  109. package/lib/schemas/validators/DocumentValidator.js +0 -2
  110. package/lib/schemas/validators/DocumentValidator.js.map +0 -1
  111. package/lib/schemas/validators/DocumentValidator.ts +0 -9
  112. package/lib/schemas/validators/ValidateUtil.d.ts +0 -122
  113. package/lib/schemas/validators/ValidateUtil.d.ts.map +0 -1
  114. package/lib/schemas/validators/ValidateUtil.js +0 -216
  115. package/lib/schemas/validators/ValidateUtil.js.map +0 -1
  116. package/lib/schemas/validators/ValidateUtil.ts +0 -240
package/CHANGELOG.md CHANGED
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## 🔖 [4.0.0] (2025-12-07)
9
+
10
+ ### ✅ Added
11
+
12
+ - Added Zod-based schemas for all document, embedded, and type files.
13
+ - Added new and updated tests for all document and service logic using Zod schemas.
14
+
15
+ ### 🏗️ Changed
16
+
17
+ - _Breaking Change:_ Migrated all document, type, and service code from legacy validation and type-guards to Zod schemas.
18
+ - _Breaking Change:_ All type-only imports now use `import type` for clarity and build performance.
19
+ - Refactored all document, embedded, and service files to use new Zod-based validation and schemas.
20
+ - Updated dependencies: now requires `@aneuhold/core-ts-lib@^2.3.13`, `zod@^4.1.13`, and `@aneuhold/local-npm-registry@^0.2.20`.
21
+ - Updated dev dependencies for compatibility: `prettier`, `tsx`, and `vitest`.
22
+ - Improved test coverage for all document and embedded types.
23
+
24
+ ### 🩹 Fixed
25
+
26
+ - Fixed issues with partial updates and field validation in document schemas.
27
+ - Fixed bugs in document creation and migration logic for dashboard-related entities.
28
+
29
+ ### 🔥 Removed
30
+
31
+ - _Breaking Change:_ Removed all legacy validation utilities, type-guards, and helper files in favor of Zod schemas.
32
+ - Removed unused files and legacy test utilities.
33
+
34
+ ## 🔖 [3.0.3] (2025-12-07)
35
+
36
+ ### 🏗️ Changed
37
+
38
+ - Updated dependencies: now requires `@aneuhold/core-ts-lib@^2.3.13` and `@aneuhold/local-npm-registry@^0.2.20`.
39
+
8
40
  ## 🔖 [3.0.2] (2025-12-03)
9
41
 
10
42
  ### 🏗️ Changed
@@ -116,6 +148,8 @@ Updated dependency: now requires `@aneuhold/core-ts-lib@^2.3.11`.
116
148
 
117
149
  <!-- Link References -->
118
150
 
151
+ [4.0.0]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v3.0.3...core-ts-db-lib-v4.0.0
152
+ [3.0.3]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v3.0.2...core-ts-db-lib-v3.0.3
119
153
  [3.0.2]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v3.0.1...core-ts-db-lib-v3.0.2
120
154
  [3.0.1]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v3.0.0...core-ts-db-lib-v3.0.1
121
155
  [3.0.0]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v2.0.90...core-ts-db-lib-v3.0.0
package/lib/browser.d.ts CHANGED
@@ -1,28 +1,31 @@
1
- import BaseDocument from './documents/BaseDocument.js';
2
- import BaseDocumentWithType from './documents/BaseDocumentWithType.js';
3
- import ApiKey, { validateApiKey } from './documents/common/ApiKey.js';
4
- import type { UserCTO } from './documents/common/User.js';
5
- import User, { validateUser } from './documents/common/User.js';
6
- import NonogramKatanaItem, { validateNonogramKatanaItem } from './documents/dashboard/NonogramKatanaItem.js';
7
- import NonogramKatanaUpgrade, { validateNonogramKatanaUpgrade } from './documents/dashboard/NonogramKatanaUpgrade.js';
8
- import type { DashboardTaskMap } from './documents/dashboard/Task.js';
9
- import DashboardTask, { validateDashboardTask } from './documents/dashboard/Task.js';
10
- import DashboardUserConfig, { validateDashboardUserConfig } from './documents/dashboard/UserConfig.js';
1
+ import type { BaseDocument, BaseDocumentWithType } from './documents/BaseDocument.js';
2
+ import { BaseDocumentSchema, BaseDocumentWithTypeSchema } from './documents/BaseDocument.js';
3
+ import type { ApiKey } from './documents/common/ApiKey.js';
4
+ import { ApiKeySchema } from './documents/common/ApiKey.js';
5
+ import type { User, UserCTO } from './documents/common/User.js';
6
+ import { UserCTOSchema, UserSchema } from './documents/common/User.js';
7
+ import type { NonogramKatanaItem } from './documents/dashboard/NonogramKatanaItem.js';
8
+ import { NonogramKatanaItem_docType, NonogramKatanaItemSchema } from './documents/dashboard/NonogramKatanaItem.js';
9
+ import type { NonogramKatanaUpgrade } from './documents/dashboard/NonogramKatanaUpgrade.js';
10
+ import { NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeSchema } from './documents/dashboard/NonogramKatanaUpgrade.js';
11
+ import type { DashboardTask, DashboardTaskMap } from './documents/dashboard/Task.js';
12
+ import { DashboardTask_docType, DashboardTaskSchema } from './documents/dashboard/Task.js';
13
+ import type { DashboardUserConfig } from './documents/dashboard/UserConfig.js';
14
+ import { DashboardUserConfig_docType, DashboardUserConfigSchema } from './documents/dashboard/UserConfig.js';
11
15
  import NonogramKatanaItemName from './embedded-types/dashboard/nonogramKatanaItem/ItemName.js';
12
16
  import NonogramKatanaUpgradeName from './embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js';
13
17
  import type { DashboardTaskFilterSettings, DashboardTaskListFilterSettings, DashboardTaskListGlobalFilterSettings } from './embedded-types/dashboard/task/FilterSettings.js';
14
- import { getDefaultTaskListFilterSettings } from './embedded-types/dashboard/task/FilterSettings.js';
15
18
  import type { ParentRecurringTaskInfo, RecurrenceFrequency, RecurrenceInfo } from './embedded-types/dashboard/task/RecurrenceInfo.js';
16
19
  import { RecurrenceBasis, RecurrenceEffect, RecurrenceFrequencyType } from './embedded-types/dashboard/task/RecurrenceInfo.js';
17
20
  import type { DashboardTaskListGlobalSortSettings, DashboardTaskListSortSettings, DashboardTaskSortSetting, DashboardTaskSortSettings } from './embedded-types/dashboard/task/SortSettings.js';
18
- import { DashboardTaskSortBy, DashboardTaskSortDirection, getDefaultTaskListSortSettings } from './embedded-types/dashboard/task/SortSettings.js';
21
+ import { DashboardTaskSortBy, DashboardTaskSortDirection } from './embedded-types/dashboard/task/SortSettings.js';
19
22
  import type { DashboardTagSetting, DashboardTagSettings } from './embedded-types/dashboard/userConfig/Tags.js';
20
- import RequiredUserId from './schemas/required-refs/RequiredUserId.js';
21
- import type { DocumentValidator } from './schemas/validators/DocumentValidator.js';
23
+ import type { RequiredUserId } from './schemas/required-refs/RequiredUserId.js';
24
+ import { RequiredUserIdSchema } from './schemas/required-refs/RequiredUserId.js';
22
25
  import type { DocumentMap } from './services/DocumentService.js';
23
26
  import DocumentService from './services/DocumentService.js';
24
27
  import type { DashboardTaskFilterAndSortResult } from './services/dashboard/Task/TaskService.js';
25
28
  import DashboardTaskService from './services/dashboard/Task/TaskService.js';
26
- export { ApiKey, BaseDocument, BaseDocumentWithType, DashboardTask, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortDirection, DashboardUserConfig, DocumentService, getDefaultTaskListFilterSettings, getDefaultTaskListSortSettings, NonogramKatanaItem, NonogramKatanaItemName, NonogramKatanaUpgrade, NonogramKatanaUpgradeName, RecurrenceBasis, RecurrenceEffect, RecurrenceFrequencyType, RequiredUserId, User, validateApiKey, validateDashboardTask, validateDashboardUserConfig, validateNonogramKatanaItem, validateNonogramKatanaUpgrade, validateUser };
27
- export type { DashboardTagSetting, DashboardTagSettings, DashboardTaskFilterAndSortResult, DashboardTaskFilterSettings, DashboardTaskListFilterSettings, DashboardTaskListGlobalFilterSettings, DashboardTaskListGlobalSortSettings, DashboardTaskListSortSettings, DashboardTaskMap, DashboardTaskSortSetting, DashboardTaskSortSettings, DocumentMap, DocumentValidator, ParentRecurringTaskInfo, RecurrenceFrequency, RecurrenceInfo, UserCTO };
29
+ export { ApiKeySchema, BaseDocumentSchema, BaseDocumentWithTypeSchema, DashboardTask_docType, DashboardTaskSchema, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortDirection, DashboardUserConfig_docType, DashboardUserConfigSchema, DocumentService, NonogramKatanaItem_docType, NonogramKatanaItemName, NonogramKatanaItemSchema, NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeName, NonogramKatanaUpgradeSchema, RecurrenceBasis, RecurrenceEffect, RecurrenceFrequencyType, RequiredUserIdSchema, UserCTOSchema, UserSchema };
30
+ export type { ApiKey, BaseDocument, BaseDocumentWithType, DashboardTagSetting, DashboardTagSettings, DashboardTask, DashboardTaskFilterAndSortResult, DashboardTaskFilterSettings, DashboardTaskListFilterSettings, DashboardTaskListGlobalFilterSettings, DashboardTaskListGlobalSortSettings, DashboardTaskListSortSettings, DashboardTaskMap, DashboardTaskSortSetting, DashboardTaskSortSettings, DashboardUserConfig, DocumentMap, NonogramKatanaItem, NonogramKatanaUpgrade, ParentRecurringTaskInfo, RecurrenceFrequency, RecurrenceInfo, RequiredUserId, User, UserCTO };
28
31
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AACvE,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,kBAAkB,EAAE,EACzB,0BAA0B,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,qBAAqB,EAAE,EAC5B,6BAA6B,EAC9B,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,aAAa,EAAE,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,mBAAmB,EAAE,EAC1B,2BAA2B,EAC5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,sBAAsB,MAAM,2DAA2D,CAAC;AAC/F,OAAO,yBAAyB,MAAM,iEAAiE,CAAC;AACxG,OAAO,KAAK,EACV,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACtC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAC;AACrG,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACf,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC/B,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,+CAA+C,CAAC;AACvD,OAAO,cAAc,MAAM,2CAA2C,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AACjG,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAG5E,OAAO,EACL,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,IAAI,EACJ,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,YAAY,EACb,CAAC;AAGF,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gCAAgC,EAChC,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,mCAAmC,EACnC,6BAA6B,EAC7B,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,OAAO,EACR,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,sBAAsB,MAAM,2DAA2D,CAAC;AAC/F,OAAO,yBAAyB,MAAM,iEAAiE,CAAC;AACxG,OAAO,KAAK,EACV,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACtC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACf,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EACV,mCAAmC,EACnC,6BAA6B,EAC7B,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AACjG,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAG5E,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,CAAC;AAGF,YAAY,EACV,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,gCAAgC,EAChC,2BAA2B,EAC3B,+BAA+B,EAC/B,qCAAqC,EACrC,mCAAmC,EACnC,6BAA6B,EAC7B,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,OAAO,EACR,CAAC"}
package/lib/browser.js CHANGED
@@ -1,19 +1,17 @@
1
- import BaseDocument from './documents/BaseDocument.js';
2
- import BaseDocumentWithType from './documents/BaseDocumentWithType.js';
3
- import ApiKey, { validateApiKey } from './documents/common/ApiKey.js';
4
- import User, { validateUser } from './documents/common/User.js';
5
- import NonogramKatanaItem, { validateNonogramKatanaItem } from './documents/dashboard/NonogramKatanaItem.js';
6
- import NonogramKatanaUpgrade, { validateNonogramKatanaUpgrade } from './documents/dashboard/NonogramKatanaUpgrade.js';
7
- import DashboardTask, { validateDashboardTask } from './documents/dashboard/Task.js';
8
- import DashboardUserConfig, { validateDashboardUserConfig } from './documents/dashboard/UserConfig.js';
1
+ import { BaseDocumentSchema, BaseDocumentWithTypeSchema } from './documents/BaseDocument.js';
2
+ import { ApiKeySchema } from './documents/common/ApiKey.js';
3
+ import { UserCTOSchema, UserSchema } from './documents/common/User.js';
4
+ import { NonogramKatanaItem_docType, NonogramKatanaItemSchema } from './documents/dashboard/NonogramKatanaItem.js';
5
+ import { NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeSchema } from './documents/dashboard/NonogramKatanaUpgrade.js';
6
+ import { DashboardTask_docType, DashboardTaskSchema } from './documents/dashboard/Task.js';
7
+ import { DashboardUserConfig_docType, DashboardUserConfigSchema } from './documents/dashboard/UserConfig.js';
9
8
  import NonogramKatanaItemName from './embedded-types/dashboard/nonogramKatanaItem/ItemName.js';
10
9
  import NonogramKatanaUpgradeName from './embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js';
11
- import { getDefaultTaskListFilterSettings } from './embedded-types/dashboard/task/FilterSettings.js';
12
10
  import { RecurrenceBasis, RecurrenceEffect, RecurrenceFrequencyType } from './embedded-types/dashboard/task/RecurrenceInfo.js';
13
- import { DashboardTaskSortBy, DashboardTaskSortDirection, getDefaultTaskListSortSettings } from './embedded-types/dashboard/task/SortSettings.js';
14
- import RequiredUserId from './schemas/required-refs/RequiredUserId.js';
11
+ import { DashboardTaskSortBy, DashboardTaskSortDirection } from './embedded-types/dashboard/task/SortSettings.js';
12
+ import { RequiredUserIdSchema } from './schemas/required-refs/RequiredUserId.js';
15
13
  import DocumentService from './services/DocumentService.js';
16
14
  import DashboardTaskService from './services/dashboard/Task/TaskService.js';
17
15
  // Export all browser-safe functions and classes from this library
18
- export { ApiKey, BaseDocument, BaseDocumentWithType, DashboardTask, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortDirection, DashboardUserConfig, DocumentService, getDefaultTaskListFilterSettings, getDefaultTaskListSortSettings, NonogramKatanaItem, NonogramKatanaItemName, NonogramKatanaUpgrade, NonogramKatanaUpgradeName, RecurrenceBasis, RecurrenceEffect, RecurrenceFrequencyType, RequiredUserId, User, validateApiKey, validateDashboardTask, validateDashboardUserConfig, validateNonogramKatanaItem, validateNonogramKatanaUpgrade, validateUser };
16
+ export { ApiKeySchema, BaseDocumentSchema, BaseDocumentWithTypeSchema, DashboardTask_docType, DashboardTaskSchema, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortDirection, DashboardUserConfig_docType, DashboardUserConfigSchema, DocumentService, NonogramKatanaItem_docType, NonogramKatanaItemName, NonogramKatanaItemSchema, NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeName, NonogramKatanaUpgradeSchema, RecurrenceBasis, RecurrenceEffect, RecurrenceFrequencyType, RequiredUserIdSchema, UserCTOSchema, UserSchema };
19
17
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,oBAAoB,MAAM,qCAAqC,CAAC;AACvE,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,kBAAkB,EAAE,EACzB,0BAA0B,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,qBAAqB,EAAE,EAC5B,6BAA6B,EAC9B,MAAM,gDAAgD,CAAC;AAExD,OAAO,aAAa,EAAE,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,mBAAmB,EAAE,EAC1B,2BAA2B,EAC5B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,sBAAsB,MAAM,2DAA2D,CAAC;AAC/F,OAAO,yBAAyB,MAAM,iEAAiE,CAAC;AAMxG,OAAO,EAAE,gCAAgC,EAAE,MAAM,mDAAmD,CAAC;AAMrG,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mDAAmD,CAAC;AAO3D,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC/B,MAAM,iDAAiD,CAAC;AAKzD,OAAO,cAAc,MAAM,2CAA2C,CAAC;AAGvE,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAE5E,kEAAkE;AAClE,OAAO,EACL,MAAM,EACN,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,gCAAgC,EAChC,8BAA8B,EAC9B,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,IAAI,EACJ,cAAc,EACd,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC7B,YAAY,EACb,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,gDAAgD,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE3F,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,sBAAsB,MAAM,2DAA2D,CAAC;AAC/F,OAAO,yBAAyB,MAAM,iEAAiE,CAAC;AAWxG,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,mDAAmD,CAAC;AAO3D,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,iDAAiD,CAAC;AAMzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAE5E,kEAAkE;AAClE,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,EACzB,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACX,CAAC"}
package/lib/browser.ts CHANGED
@@ -1,18 +1,25 @@
1
- import BaseDocument from './documents/BaseDocument.js';
2
- import BaseDocumentWithType from './documents/BaseDocumentWithType.js';
3
- import ApiKey, { validateApiKey } from './documents/common/ApiKey.js';
4
- import type { UserCTO } from './documents/common/User.js';
5
- import User, { validateUser } from './documents/common/User.js';
6
- import NonogramKatanaItem, {
7
- validateNonogramKatanaItem
1
+ import type { BaseDocument, BaseDocumentWithType } from './documents/BaseDocument.js';
2
+ import { BaseDocumentSchema, BaseDocumentWithTypeSchema } from './documents/BaseDocument.js';
3
+ import type { ApiKey } from './documents/common/ApiKey.js';
4
+ import { ApiKeySchema } from './documents/common/ApiKey.js';
5
+ import type { User, UserCTO } from './documents/common/User.js';
6
+ import { UserCTOSchema, UserSchema } from './documents/common/User.js';
7
+ import type { NonogramKatanaItem } from './documents/dashboard/NonogramKatanaItem.js';
8
+ import {
9
+ NonogramKatanaItem_docType,
10
+ NonogramKatanaItemSchema
8
11
  } from './documents/dashboard/NonogramKatanaItem.js';
9
- import NonogramKatanaUpgrade, {
10
- validateNonogramKatanaUpgrade
12
+ import type { NonogramKatanaUpgrade } from './documents/dashboard/NonogramKatanaUpgrade.js';
13
+ import {
14
+ NonogramKatanaUpgrade_docType,
15
+ NonogramKatanaUpgradeSchema
11
16
  } from './documents/dashboard/NonogramKatanaUpgrade.js';
12
- import type { DashboardTaskMap } from './documents/dashboard/Task.js';
13
- import DashboardTask, { validateDashboardTask } from './documents/dashboard/Task.js';
14
- import DashboardUserConfig, {
15
- validateDashboardUserConfig
17
+ import type { DashboardTask, DashboardTaskMap } from './documents/dashboard/Task.js';
18
+ import { DashboardTask_docType, DashboardTaskSchema } from './documents/dashboard/Task.js';
19
+ import type { DashboardUserConfig } from './documents/dashboard/UserConfig.js';
20
+ import {
21
+ DashboardUserConfig_docType,
22
+ DashboardUserConfigSchema
16
23
  } from './documents/dashboard/UserConfig.js';
17
24
  import NonogramKatanaItemName from './embedded-types/dashboard/nonogramKatanaItem/ItemName.js';
18
25
  import NonogramKatanaUpgradeName from './embedded-types/dashboard/nonogramKatanaUpgrade/UpgradeName.js';
@@ -21,7 +28,6 @@ import type {
21
28
  DashboardTaskListFilterSettings,
22
29
  DashboardTaskListGlobalFilterSettings
23
30
  } from './embedded-types/dashboard/task/FilterSettings.js';
24
- import { getDefaultTaskListFilterSettings } from './embedded-types/dashboard/task/FilterSettings.js';
25
31
  import type {
26
32
  ParentRecurringTaskInfo,
27
33
  RecurrenceFrequency,
@@ -40,15 +46,14 @@ import type {
40
46
  } from './embedded-types/dashboard/task/SortSettings.js';
41
47
  import {
42
48
  DashboardTaskSortBy,
43
- DashboardTaskSortDirection,
44
- getDefaultTaskListSortSettings
49
+ DashboardTaskSortDirection
45
50
  } from './embedded-types/dashboard/task/SortSettings.js';
46
51
  import type {
47
52
  DashboardTagSetting,
48
53
  DashboardTagSettings
49
54
  } from './embedded-types/dashboard/userConfig/Tags.js';
50
- import RequiredUserId from './schemas/required-refs/RequiredUserId.js';
51
- import type { DocumentValidator } from './schemas/validators/DocumentValidator.js';
55
+ import type { RequiredUserId } from './schemas/required-refs/RequiredUserId.js';
56
+ import { RequiredUserIdSchema } from './schemas/required-refs/RequiredUserId.js';
52
57
  import type { DocumentMap } from './services/DocumentService.js';
53
58
  import DocumentService from './services/DocumentService.js';
54
59
  import type { DashboardTaskFilterAndSortResult } from './services/dashboard/Task/TaskService.js';
@@ -56,38 +61,39 @@ import DashboardTaskService from './services/dashboard/Task/TaskService.js';
56
61
 
57
62
  // Export all browser-safe functions and classes from this library
58
63
  export {
59
- ApiKey,
60
- BaseDocument,
61
- BaseDocumentWithType,
62
- DashboardTask,
64
+ ApiKeySchema,
65
+ BaseDocumentSchema,
66
+ BaseDocumentWithTypeSchema,
67
+ DashboardTask_docType,
68
+ DashboardTaskSchema,
63
69
  DashboardTaskService,
64
70
  DashboardTaskSortBy,
65
71
  DashboardTaskSortDirection,
66
- DashboardUserConfig,
72
+ DashboardUserConfig_docType,
73
+ DashboardUserConfigSchema,
67
74
  DocumentService,
68
- getDefaultTaskListFilterSettings,
69
- getDefaultTaskListSortSettings,
70
- NonogramKatanaItem,
75
+ NonogramKatanaItem_docType,
71
76
  NonogramKatanaItemName,
72
- NonogramKatanaUpgrade,
77
+ NonogramKatanaItemSchema,
78
+ NonogramKatanaUpgrade_docType,
73
79
  NonogramKatanaUpgradeName,
80
+ NonogramKatanaUpgradeSchema,
74
81
  RecurrenceBasis,
75
82
  RecurrenceEffect,
76
83
  RecurrenceFrequencyType,
77
- RequiredUserId,
78
- User,
79
- validateApiKey,
80
- validateDashboardTask,
81
- validateDashboardUserConfig,
82
- validateNonogramKatanaItem,
83
- validateNonogramKatanaUpgrade,
84
- validateUser
84
+ RequiredUserIdSchema,
85
+ UserCTOSchema,
86
+ UserSchema
85
87
  };
86
88
 
87
89
  // Export TypeScript types where needed
88
90
  export type {
91
+ ApiKey,
92
+ BaseDocument,
93
+ BaseDocumentWithType,
89
94
  DashboardTagSetting,
90
95
  DashboardTagSettings,
96
+ DashboardTask,
91
97
  DashboardTaskFilterAndSortResult,
92
98
  DashboardTaskFilterSettings,
93
99
  DashboardTaskListFilterSettings,
@@ -97,10 +103,14 @@ export type {
97
103
  DashboardTaskMap,
98
104
  DashboardTaskSortSetting,
99
105
  DashboardTaskSortSettings,
106
+ DashboardUserConfig,
100
107
  DocumentMap,
101
- DocumentValidator,
108
+ NonogramKatanaItem,
109
+ NonogramKatanaUpgrade,
102
110
  ParentRecurringTaskInfo,
103
111
  RecurrenceFrequency,
104
112
  RecurrenceInfo,
113
+ RequiredUserId,
114
+ User,
105
115
  UserCTO
106
116
  };
@@ -1,12 +1,25 @@
1
- import type { UUID } from 'crypto';
1
+ import z from 'zod';
2
2
  /**
3
- * Base class for all document types stored in a document database.
4
- *
5
- * Provides the common `_id` field required by MongoDB and other
6
- * document databases. All document types should extend this class.
3
+ * Base schema for all documents. Provides the common `_id` field required by
4
+ * MongoDB and other document databases. All document schemas should extend
5
+ * this schema.
7
6
  */
8
- export default abstract class BaseDocument {
9
- /** The unique identifier for this document */
10
- _id: UUID;
11
- }
7
+ export declare const BaseDocumentSchema: z.ZodObject<{
8
+ _id: z.ZodPipe<z.ZodDefault<z.ZodUUID>, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, string>>;
9
+ }, z.z.core.$strip>;
10
+ /**
11
+ * Base schema for all documents with a `docType` field.
12
+ */
13
+ export declare const BaseDocumentWithTypeSchema: z.ZodObject<{
14
+ _id: z.ZodPipe<z.ZodDefault<z.ZodUUID>, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, string>>;
15
+ docType: z.ZodString;
16
+ }, z.z.core.$strip>;
17
+ /**
18
+ * Base document type for all documents stored in a document database.
19
+ */
20
+ export type BaseDocument = z.infer<typeof BaseDocumentSchema>;
21
+ /**
22
+ * Base document type with a `docType` field.
23
+ */
24
+ export type BaseDocumentWithType = z.infer<typeof BaseDocumentWithTypeSchema>;
12
25
  //# sourceMappingURL=BaseDocument.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseDocument.d.ts","sourceRoot":"","sources":["../../src/documents/BaseDocument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAGnC;;;;;GAKG;AACH,MAAM,CAAC,OAAO,CAAC,QAAQ,OAAO,YAAY;IACxC,8CAA8C;IAC9C,GAAG,EAAE,IAAI,CAAgC;CAC1C"}
1
+ {"version":3,"file":"BaseDocument.d.ts","sourceRoot":"","sources":["../../src/documents/BaseDocument.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;mBAM7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;mBAErC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}
@@ -1,12 +1,21 @@
1
+ import z from 'zod';
1
2
  import DocumentService from '../services/DocumentService.js';
2
3
  /**
3
- * Base class for all document types stored in a document database.
4
- *
5
- * Provides the common `_id` field required by MongoDB and other
6
- * document databases. All document types should extend this class.
4
+ * Base schema for all documents. Provides the common `_id` field required by
5
+ * MongoDB and other document databases. All document schemas should extend
6
+ * this schema.
7
7
  */
8
- export default class BaseDocument {
8
+ export const BaseDocumentSchema = z.object({
9
9
  /** The unique identifier for this document */
10
- _id = DocumentService.generateID();
11
- }
10
+ _id: z
11
+ .uuidv7()
12
+ .default(() => DocumentService.generateID())
13
+ .transform((val) => val)
14
+ });
15
+ /**
16
+ * Base schema for all documents with a `docType` field.
17
+ */
18
+ export const BaseDocumentWithTypeSchema = BaseDocumentSchema.extend({
19
+ docType: z.string()
20
+ });
12
21
  //# sourceMappingURL=BaseDocument.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseDocument.js","sourceRoot":"","sources":["../../src/documents/BaseDocument.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAgB,YAAY;IACxC,8CAA8C;IAC9C,GAAG,GAAS,eAAe,CAAC,UAAU,EAAE,CAAC;CAC1C"}
1
+ {"version":3,"file":"BaseDocument.js","sourceRoot":"","sources":["../../src/documents/BaseDocument.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,8CAA8C;IAC9C,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC;SAC3C,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAW,CAAC;CACnC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -1,13 +1,33 @@
1
1
  import type { UUID } from 'crypto';
2
+ import z from 'zod';
2
3
  import DocumentService from '../services/DocumentService.js';
3
4
 
4
5
  /**
5
- * Base class for all document types stored in a document database.
6
- *
7
- * Provides the common `_id` field required by MongoDB and other
8
- * document databases. All document types should extend this class.
6
+ * Base schema for all documents. Provides the common `_id` field required by
7
+ * MongoDB and other document databases. All document schemas should extend
8
+ * this schema.
9
9
  */
10
- export default abstract class BaseDocument {
10
+ export const BaseDocumentSchema = z.object({
11
11
  /** The unique identifier for this document */
12
- _id: UUID = DocumentService.generateID();
13
- }
12
+ _id: z
13
+ .uuidv7()
14
+ .default(() => DocumentService.generateID())
15
+ .transform((val) => val as UUID)
16
+ });
17
+
18
+ /**
19
+ * Base schema for all documents with a `docType` field.
20
+ */
21
+ export const BaseDocumentWithTypeSchema = BaseDocumentSchema.extend({
22
+ docType: z.string()
23
+ });
24
+
25
+ /**
26
+ * Base document type for all documents stored in a document database.
27
+ */
28
+ export type BaseDocument = z.infer<typeof BaseDocumentSchema>;
29
+
30
+ /**
31
+ * Base document type with a `docType` field.
32
+ */
33
+ export type BaseDocumentWithType = z.infer<typeof BaseDocumentWithTypeSchema>;
@@ -1,32 +1,15 @@
1
- import type { UUID } from 'crypto';
2
- import RequiredUserId from '../../schemas/required-refs/RequiredUserId.js';
3
- import type { DocumentValidator } from '../../schemas/validators/DocumentValidator.js';
4
- import BaseDocument from '../BaseDocument.js';
1
+ import { z } from 'zod';
5
2
  /**
6
- * Validates the provided {@link ApiKey} instance.
7
- *
8
- * @param apiKey - The {@link ApiKey} instance to validate.
9
- * @returns An object containing the updated document and any validation errors.
3
+ * The schema for {@link ApiKey} documents.
10
4
  */
11
- export declare const validateApiKey: DocumentValidator<ApiKey>;
5
+ export declare const ApiKeySchema: z.ZodObject<{
6
+ _id: z.ZodPipe<z.ZodDefault<z.ZodUUID>, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, string>>;
7
+ userId: z.ZodPipe<z.ZodUUID, z.ZodTransform<`${string}-${string}-${string}-${string}-${string}`, string>>;
8
+ key: z.ZodDefault<z.ZodUUID>;
9
+ }, z.core.$strip>;
12
10
  /**
13
11
  * A document containing an API key for a particular user. This is stored
14
12
  * separately from the {@link User} document to enhance security a bit.
15
13
  */
16
- export default class ApiKey extends BaseDocument implements RequiredUserId {
17
- /**
18
- * The API key for the user. This is indexed in the DB.
19
- */
20
- key: UUID;
21
- /**
22
- * The user ID that this key is for. This field is indexed in the database.
23
- */
24
- userId: UUID;
25
- /**
26
- * Constructs a new {@link ApiKey} for the provided user.
27
- *
28
- * @param userId - The ID of the user.
29
- */
30
- constructor(userId: UUID);
31
- }
14
+ export type ApiKey = z.infer<typeof ApiKeySchema>;
32
15
  //# sourceMappingURL=ApiKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKey.d.ts","sourceRoot":"","sources":["../../../src/documents/common/ApiKey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,cAAc,MAAM,+CAA+C,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAGvF,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAAC,MAAM,CAQpD,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAa,YAAW,cAAc;IACxE;;OAEG;IACH,GAAG,EAAE,IAAI,CAAuB;IAEhC;;OAEG;IACH,MAAM,EAAE,IAAI,CAAC;IAEb;;;;OAIG;gBACS,MAAM,EAAE,IAAI;CAIzB"}
1
+ {"version":3,"file":"ApiKey.d.ts","sourceRoot":"","sources":["../../../src/documents/common/ApiKey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,YAAY;;;;iBAKvB,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -1,42 +1,13 @@
1
- import crypto from 'crypto';
2
- import RequiredUserId from '../../schemas/required-refs/RequiredUserId.js';
3
- import Validate from '../../schemas/validators/ValidateUtil.js';
4
- import DocumentService from '../../services/DocumentService.js';
5
- import BaseDocument from '../BaseDocument.js';
1
+ import { randomUUID } from 'crypto';
2
+ import { z } from 'zod';
3
+ import { RequiredUserIdSchema } from '../../schemas/required-refs/RequiredUserId.js';
6
4
  /**
7
- * Validates the provided {@link ApiKey} instance.
8
- *
9
- * @param apiKey - The {@link ApiKey} instance to validate.
10
- * @returns An object containing the updated document and any validation errors.
5
+ * The schema for {@link ApiKey} documents.
11
6
  */
12
- export const validateApiKey = (apiKey) => {
13
- const errors = [];
14
- const exampleApiKey = new ApiKey(DocumentService.generateID());
15
- const validate = new Validate(apiKey, errors);
16
- validate.string('key', exampleApiKey.key);
17
- return { updatedDoc: apiKey, errors };
18
- };
19
- /**
20
- * A document containing an API key for a particular user. This is stored
21
- * separately from the {@link User} document to enhance security a bit.
22
- */
23
- export default class ApiKey extends BaseDocument {
7
+ export const ApiKeySchema = RequiredUserIdSchema.extend({
24
8
  /**
25
9
  * The API key for the user. This is indexed in the DB.
26
10
  */
27
- key = crypto.randomUUID();
28
- /**
29
- * The user ID that this key is for. This field is indexed in the database.
30
- */
31
- userId;
32
- /**
33
- * Constructs a new {@link ApiKey} for the provided user.
34
- *
35
- * @param userId - The ID of the user.
36
- */
37
- constructor(userId) {
38
- super();
39
- this.userId = userId;
40
- }
41
- }
11
+ key: z.uuid().default(() => randomUUID())
12
+ });
42
13
  //# sourceMappingURL=ApiKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKey.js","sourceRoot":"","sources":["../../../src/documents/common/ApiKey.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,cAAc,MAAM,+CAA+C,CAAC;AAE3E,OAAO,QAAQ,MAAM,0CAA0C,CAAC;AAChE,OAAO,eAAe,MAAM,mCAAmC,CAAC;AAChE,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAA8B,CAAC,MAAc,EAAE,EAAE;IAC1E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,YAAY;IAC9C;;OAEG;IACH,GAAG,GAAS,MAAM,CAAC,UAAU,EAAE,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAO;IAEb;;;;OAIG;IACH,YAAY,MAAY;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"ApiKey.js","sourceRoot":"","sources":["../../../src/documents/common/ApiKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAErF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACtD;;OAEG;IACH,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;CAC1C,CAAC,CAAC"}
@@ -1,49 +1,19 @@
1
- import type { UUID } from 'crypto';
2
- import crypto from 'crypto';
3
- import RequiredUserId from '../../schemas/required-refs/RequiredUserId.js';
4
- import type { DocumentValidator } from '../../schemas/validators/DocumentValidator.js';
5
- import Validate from '../../schemas/validators/ValidateUtil.js';
6
- import DocumentService from '../../services/DocumentService.js';
7
- import BaseDocument from '../BaseDocument.js';
1
+ import { randomUUID } from 'crypto';
2
+ import { z } from 'zod';
3
+ import { RequiredUserIdSchema } from '../../schemas/required-refs/RequiredUserId.js';
8
4
 
9
5
  /**
10
- * Validates the provided {@link ApiKey} instance.
11
- *
12
- * @param apiKey - The {@link ApiKey} instance to validate.
13
- * @returns An object containing the updated document and any validation errors.
6
+ * The schema for {@link ApiKey} documents.
14
7
  */
15
- export const validateApiKey: DocumentValidator<ApiKey> = (apiKey: ApiKey) => {
16
- const errors: string[] = [];
17
- const exampleApiKey = new ApiKey(DocumentService.generateID());
18
- const validate = new Validate(apiKey, errors);
19
-
20
- validate.string('key', exampleApiKey.key);
21
-
22
- return { updatedDoc: apiKey, errors };
23
- };
8
+ export const ApiKeySchema = RequiredUserIdSchema.extend({
9
+ /**
10
+ * The API key for the user. This is indexed in the DB.
11
+ */
12
+ key: z.uuid().default(() => randomUUID())
13
+ });
24
14
 
25
15
  /**
26
16
  * A document containing an API key for a particular user. This is stored
27
17
  * separately from the {@link User} document to enhance security a bit.
28
18
  */
29
- export default class ApiKey extends BaseDocument implements RequiredUserId {
30
- /**
31
- * The API key for the user. This is indexed in the DB.
32
- */
33
- key: UUID = crypto.randomUUID();
34
-
35
- /**
36
- * The user ID that this key is for. This field is indexed in the database.
37
- */
38
- userId: UUID;
39
-
40
- /**
41
- * Constructs a new {@link ApiKey} for the provided user.
42
- *
43
- * @param userId - The ID of the user.
44
- */
45
- constructor(userId: UUID) {
46
- super();
47
- this.userId = userId;
48
- }
49
- }
19
+ export type ApiKey = z.infer<typeof ApiKeySchema>;