document-drive 1.19.0 → 1.20.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 (252) hide show
  1. package/README.md +4 -0
  2. package/dist/index.d.ts +28 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +18 -0
  5. package/dist/src/cache/memory.d.ts +10 -0
  6. package/dist/src/cache/memory.d.ts.map +1 -0
  7. package/dist/src/cache/memory.js +26 -0
  8. package/dist/src/cache/redis.d.ts +14 -0
  9. package/dist/src/cache/redis.d.ts.map +1 -0
  10. package/dist/src/cache/redis.js +40 -0
  11. package/dist/src/cache/types.d.ts +7 -0
  12. package/dist/src/cache/types.d.ts.map +1 -0
  13. package/dist/src/cache/types.js +1 -0
  14. package/dist/src/drive-document-model/constants.d.ts +2 -0
  15. package/dist/src/drive-document-model/constants.d.ts.map +1 -0
  16. package/dist/src/drive-document-model/constants.js +1 -0
  17. package/dist/src/drive-document-model/gen/actions.d.ts +7 -0
  18. package/dist/src/drive-document-model/gen/actions.d.ts.map +1 -0
  19. package/dist/src/drive-document-model/gen/actions.js +2 -0
  20. package/dist/src/drive-document-model/gen/constants.d.ts +7 -0
  21. package/dist/src/drive-document-model/gen/constants.d.ts.map +1 -0
  22. package/dist/src/drive-document-model/gen/constants.js +16 -0
  23. package/dist/src/drive-document-model/gen/creators.d.ts +3 -0
  24. package/dist/src/drive-document-model/gen/creators.d.ts.map +1 -0
  25. package/dist/src/drive-document-model/gen/creators.js +2 -0
  26. package/dist/src/drive-document-model/gen/document-model.d.ts +3 -0
  27. package/dist/src/drive-document-model/gen/document-model.d.ts.map +1 -0
  28. package/dist/src/drive-document-model/gen/document-model.js +210 -0
  29. package/dist/src/drive-document-model/gen/drive/actions.d.ts +12 -0
  30. package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -0
  31. package/dist/src/drive-document-model/gen/drive/actions.js +1 -0
  32. package/dist/src/drive-document-model/gen/drive/creators.d.ts +11 -0
  33. package/dist/src/drive-document-model/gen/drive/creators.d.ts.map +1 -0
  34. package/dist/src/drive-document-model/gen/drive/creators.js +10 -0
  35. package/dist/src/drive-document-model/gen/drive/error.d.ts +2 -0
  36. package/dist/src/drive-document-model/gen/drive/error.d.ts.map +1 -0
  37. package/dist/src/drive-document-model/gen/drive/error.js +1 -0
  38. package/dist/src/drive-document-model/gen/drive/object.d.ts +14 -0
  39. package/dist/src/drive-document-model/gen/drive/object.d.ts.map +1 -0
  40. package/dist/src/drive-document-model/gen/drive/object.js +28 -0
  41. package/dist/src/drive-document-model/gen/drive/operations.d.ts +14 -0
  42. package/dist/src/drive-document-model/gen/drive/operations.d.ts.map +1 -0
  43. package/dist/src/drive-document-model/gen/drive/operations.js +1 -0
  44. package/dist/src/drive-document-model/gen/node/actions.d.ts +11 -0
  45. package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -0
  46. package/dist/src/drive-document-model/gen/node/actions.js +1 -0
  47. package/dist/src/drive-document-model/gen/node/creators.d.ts +10 -0
  48. package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -0
  49. package/dist/src/drive-document-model/gen/node/creators.js +9 -0
  50. package/dist/src/drive-document-model/gen/node/error.d.ts +2 -0
  51. package/dist/src/drive-document-model/gen/node/error.d.ts.map +1 -0
  52. package/dist/src/drive-document-model/gen/node/error.js +1 -0
  53. package/dist/src/drive-document-model/gen/node/object.d.ts +13 -0
  54. package/dist/src/drive-document-model/gen/node/object.d.ts.map +1 -0
  55. package/dist/src/drive-document-model/gen/node/object.js +25 -0
  56. package/dist/src/drive-document-model/gen/node/operations.d.ts +13 -0
  57. package/dist/src/drive-document-model/gen/node/operations.d.ts.map +1 -0
  58. package/dist/src/drive-document-model/gen/node/operations.js +1 -0
  59. package/dist/src/drive-document-model/gen/object.d.ts +21 -0
  60. package/dist/src/drive-document-model/gen/object.d.ts.map +1 -0
  61. package/dist/src/drive-document-model/gen/object.js +28 -0
  62. package/dist/src/drive-document-model/gen/reducer.d.ts +4 -0
  63. package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -0
  64. package/dist/src/drive-document-model/gen/reducer.js +74 -0
  65. package/dist/src/drive-document-model/gen/schema/types.d.ts +176 -0
  66. package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -0
  67. package/dist/src/drive-document-model/gen/schema/types.js +1 -0
  68. package/dist/src/drive-document-model/gen/schema/zod.d.ts +87 -0
  69. package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -0
  70. package/dist/src/drive-document-model/gen/schema/zod.js +203 -0
  71. package/dist/src/drive-document-model/gen/types.d.ts +9 -0
  72. package/dist/src/drive-document-model/gen/types.d.ts.map +1 -0
  73. package/dist/src/drive-document-model/gen/types.js +1 -0
  74. package/dist/src/drive-document-model/gen/utils.d.ts +10 -0
  75. package/dist/src/drive-document-model/gen/utils.d.ts.map +1 -0
  76. package/dist/src/drive-document-model/gen/utils.js +27 -0
  77. package/dist/src/drive-document-model/index.d.ts +2 -0
  78. package/dist/src/drive-document-model/index.d.ts.map +1 -0
  79. package/dist/src/drive-document-model/index.js +1 -0
  80. package/dist/src/drive-document-model/module.d.ts +3 -0
  81. package/dist/src/drive-document-model/module.d.ts.map +1 -0
  82. package/dist/src/drive-document-model/module.js +12 -0
  83. package/dist/src/drive-document-model/src/reducers/drive.d.ts +8 -0
  84. package/dist/src/drive-document-model/src/reducers/drive.d.ts.map +1 -0
  85. package/dist/src/drive-document-model/src/reducers/drive.js +37 -0
  86. package/dist/src/drive-document-model/src/reducers/node.d.ts +8 -0
  87. package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -0
  88. package/dist/src/drive-document-model/src/reducers/node.js +185 -0
  89. package/dist/src/drive-document-model/src/utils.d.ts +34 -0
  90. package/dist/src/drive-document-model/src/utils.d.ts.map +1 -0
  91. package/dist/src/drive-document-model/src/utils.js +146 -0
  92. package/dist/src/queue/base.d.ts +43 -0
  93. package/dist/src/queue/base.d.ts.map +1 -0
  94. package/dist/src/queue/base.js +241 -0
  95. package/dist/src/queue/redis.d.ts +28 -0
  96. package/dist/src/queue/redis.d.ts.map +1 -0
  97. package/dist/src/queue/redis.js +110 -0
  98. package/dist/src/queue/types.d.ts +55 -0
  99. package/dist/src/queue/types.d.ts.map +1 -0
  100. package/dist/src/queue/types.js +6 -0
  101. package/dist/src/read-mode/errors.d.ts +12 -0
  102. package/dist/src/read-mode/errors.d.ts.map +1 -0
  103. package/dist/src/read-mode/errors.js +17 -0
  104. package/dist/src/read-mode/server.d.ts +4 -0
  105. package/dist/src/read-mode/server.d.ts.map +1 -0
  106. package/dist/src/read-mode/server.js +78 -0
  107. package/dist/src/read-mode/service.d.ts +18 -0
  108. package/dist/src/read-mode/service.d.ts.map +1 -0
  109. package/dist/src/read-mode/service.js +112 -0
  110. package/dist/src/read-mode/types.d.ts +35 -0
  111. package/dist/src/read-mode/types.d.ts.map +1 -0
  112. package/dist/src/read-mode/types.js +1 -0
  113. package/dist/src/server/base-server.d.ts +112 -0
  114. package/dist/src/server/base-server.d.ts.map +1 -0
  115. package/dist/src/server/base-server.js +1280 -0
  116. package/dist/src/server/builder.d.ts +30 -0
  117. package/dist/src/server/builder.d.ts.map +1 -0
  118. package/dist/src/server/builder.js +89 -0
  119. package/dist/src/server/constants.d.ts +2 -0
  120. package/dist/src/server/constants.d.ts.map +1 -0
  121. package/dist/src/server/constants.js +1 -0
  122. package/dist/src/server/error.d.ts +30 -0
  123. package/dist/src/server/error.d.ts.map +1 -0
  124. package/dist/src/server/error.js +47 -0
  125. package/dist/src/server/event-emitter.d.ts +8 -0
  126. package/dist/src/server/event-emitter.d.ts.map +1 -0
  127. package/dist/src/server/event-emitter.js +10 -0
  128. package/dist/src/server/listener/index.d.ts +2 -0
  129. package/dist/src/server/listener/index.d.ts.map +1 -0
  130. package/dist/src/server/listener/index.js +1 -0
  131. package/dist/src/server/listener/listener-manager.d.ts +27 -0
  132. package/dist/src/server/listener/listener-manager.d.ts.map +1 -0
  133. package/dist/src/server/listener/listener-manager.js +401 -0
  134. package/dist/src/server/listener/transmitter/factory.d.ts +8 -0
  135. package/dist/src/server/listener/transmitter/factory.d.ts.map +1 -0
  136. package/dist/src/server/listener/transmitter/factory.js +25 -0
  137. package/dist/src/server/listener/transmitter/internal.d.ts +34 -0
  138. package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -0
  139. package/dist/src/server/listener/transmitter/internal.js +87 -0
  140. package/dist/src/server/listener/transmitter/pull-responder.d.ts +38 -0
  141. package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -0
  142. package/dist/src/server/listener/transmitter/pull-responder.js +256 -0
  143. package/dist/src/server/listener/transmitter/switchboard-push.d.ts +9 -0
  144. package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -0
  145. package/dist/src/server/listener/transmitter/switchboard-push.js +77 -0
  146. package/dist/src/server/listener/transmitter/types.d.ts +20 -0
  147. package/dist/src/server/listener/transmitter/types.d.ts.map +1 -0
  148. package/dist/src/server/listener/transmitter/types.js +1 -0
  149. package/dist/src/server/listener/util.d.ts +2 -0
  150. package/dist/src/server/listener/util.d.ts.map +1 -0
  151. package/dist/src/server/listener/util.js +22 -0
  152. package/dist/src/server/sync-manager.d.ts +30 -0
  153. package/dist/src/server/sync-manager.d.ts.map +1 -0
  154. package/dist/src/server/sync-manager.js +287 -0
  155. package/dist/src/server/types.d.ts +308 -0
  156. package/dist/src/server/types.d.ts.map +1 -0
  157. package/dist/src/server/types.js +12 -0
  158. package/dist/src/server/utils.d.ts +8 -0
  159. package/dist/src/server/utils.d.ts.map +1 -0
  160. package/dist/src/server/utils.js +47 -0
  161. package/dist/src/storage/base.d.ts +36 -0
  162. package/dist/src/storage/base.d.ts.map +1 -0
  163. package/dist/src/storage/base.js +4 -0
  164. package/dist/src/storage/browser.d.ts +36 -0
  165. package/dist/src/storage/browser.d.ts.map +1 -0
  166. package/dist/src/storage/browser.js +155 -0
  167. package/dist/src/storage/filesystem.d.ts +33 -0
  168. package/dist/src/storage/filesystem.d.ts.map +1 -0
  169. package/dist/src/storage/filesystem.js +197 -0
  170. package/dist/src/storage/memory.d.ts +33 -0
  171. package/dist/src/storage/memory.d.ts.map +1 -0
  172. package/dist/src/storage/memory.js +139 -0
  173. package/dist/src/storage/prisma.d.ts +67 -0
  174. package/dist/src/storage/prisma.d.ts.map +1 -0
  175. package/dist/src/storage/prisma.js +445 -0
  176. package/dist/src/storage/sequelize.d.ts +32 -0
  177. package/dist/src/storage/sequelize.d.ts.map +1 -0
  178. package/dist/src/storage/sequelize.js +373 -0
  179. package/dist/src/storage/types.d.ts +43 -0
  180. package/dist/src/storage/types.d.ts.map +1 -0
  181. package/dist/src/storage/types.js +1 -0
  182. package/dist/src/utils/default-drives-manager.d.ts +29 -0
  183. package/dist/src/utils/default-drives-manager.d.ts.map +1 -0
  184. package/dist/src/utils/default-drives-manager.js +208 -0
  185. package/dist/src/utils/graphql.d.ts +34 -0
  186. package/dist/src/utils/graphql.d.ts.map +1 -0
  187. package/dist/src/utils/graphql.js +183 -0
  188. package/dist/src/utils/logger.d.ts +27 -0
  189. package/dist/src/utils/logger.d.ts.map +1 -0
  190. package/dist/src/utils/logger.js +105 -0
  191. package/dist/src/utils/migrations.d.ts +4 -0
  192. package/dist/src/utils/migrations.d.ts.map +1 -0
  193. package/dist/src/utils/migrations.js +41 -0
  194. package/dist/src/utils/misc.d.ts +11 -0
  195. package/dist/src/utils/misc.d.ts.map +1 -0
  196. package/dist/src/utils/misc.js +43 -0
  197. package/dist/src/utils/run-asap.d.ts +12 -0
  198. package/dist/src/utils/run-asap.d.ts.map +1 -0
  199. package/dist/src/utils/run-asap.js +131 -0
  200. package/dist/test/document-helpers/utils.d.ts +8 -0
  201. package/dist/test/document-helpers/utils.d.ts.map +1 -0
  202. package/dist/test/document-helpers/utils.js +21 -0
  203. package/dist/test/utils.d.ts +48 -0
  204. package/dist/test/utils.d.ts.map +1 -0
  205. package/dist/test/utils.js +132 -0
  206. package/dist/test/vitest-setup.d.ts +2 -0
  207. package/dist/test/vitest-setup.d.ts.map +1 -0
  208. package/dist/test/vitest-setup.js +4 -0
  209. package/dist/tsconfig.tsbuildinfo +1 -0
  210. package/dist/vitest.config.d.ts +3 -0
  211. package/dist/vitest.config.d.ts.map +1 -0
  212. package/dist/vitest.config.js +20 -0
  213. package/package.json +20 -38
  214. package/src/cache/index.ts +0 -2
  215. package/src/cache/memory.ts +0 -33
  216. package/src/cache/redis.ts +0 -56
  217. package/src/cache/types.ts +0 -9
  218. package/src/index.ts +0 -4
  219. package/src/queue/base.ts +0 -320
  220. package/src/queue/index.ts +0 -2
  221. package/src/queue/redis.ts +0 -144
  222. package/src/queue/types.ts +0 -79
  223. package/src/read-mode/errors.ts +0 -19
  224. package/src/read-mode/index.ts +0 -125
  225. package/src/read-mode/service.ts +0 -207
  226. package/src/read-mode/types.ts +0 -108
  227. package/src/server/error.ts +0 -70
  228. package/src/server/index.ts +0 -2444
  229. package/src/server/listener/index.ts +0 -2
  230. package/src/server/listener/manager.ts +0 -652
  231. package/src/server/listener/transmitter/index.ts +0 -4
  232. package/src/server/listener/transmitter/internal.ts +0 -143
  233. package/src/server/listener/transmitter/pull-responder.ts +0 -462
  234. package/src/server/listener/transmitter/switchboard-push.ts +0 -125
  235. package/src/server/listener/transmitter/types.ts +0 -27
  236. package/src/server/types.ts +0 -596
  237. package/src/server/utils.ts +0 -82
  238. package/src/storage/base.ts +0 -81
  239. package/src/storage/browser.ts +0 -238
  240. package/src/storage/filesystem.ts +0 -297
  241. package/src/storage/index.ts +0 -2
  242. package/src/storage/memory.ts +0 -211
  243. package/src/storage/prisma.ts +0 -653
  244. package/src/storage/sequelize.ts +0 -498
  245. package/src/storage/types.ts +0 -97
  246. package/src/utils/default-drives-manager.ts +0 -341
  247. package/src/utils/document-helpers.ts +0 -21
  248. package/src/utils/graphql.ts +0 -301
  249. package/src/utils/index.ts +0 -90
  250. package/src/utils/logger.ts +0 -38
  251. package/src/utils/migrations.ts +0 -58
  252. package/src/utils/run-asap.ts +0 -156
@@ -0,0 +1,203 @@
1
+ import { z } from "zod";
2
+ export const isDefinedNonNullAny = (v) => v !== undefined && v !== null;
3
+ export const definedNonNullAnySchema = z
4
+ .any()
5
+ .refine((v) => isDefinedNonNullAny(v));
6
+ export const TransmitterTypeSchema = z.enum([
7
+ "Internal",
8
+ "MatrixConnect",
9
+ "PullResponder",
10
+ "RESTWebhook",
11
+ "SecureConnect",
12
+ "SwitchboardPush",
13
+ ]);
14
+ export const TriggerTypeSchema = z.enum(["PullResponder"]);
15
+ export function AddFileInputSchema() {
16
+ return z.object({
17
+ document: z.unknown().nullish(),
18
+ documentType: z.string(),
19
+ id: z.string(),
20
+ name: z.string(),
21
+ parentFolder: z.string().nullish(),
22
+ synchronizationUnits: z.array(SynchronizationUnitSchema()),
23
+ });
24
+ }
25
+ export function AddFolderInputSchema() {
26
+ return z.object({
27
+ id: z.string(),
28
+ name: z.string(),
29
+ parentFolder: z.string().nullish(),
30
+ });
31
+ }
32
+ export function AddListenerInputSchema() {
33
+ return z.object({
34
+ listener: ListenerSchema(),
35
+ });
36
+ }
37
+ export function AddTriggerInputSchema() {
38
+ return z.object({
39
+ trigger: TriggerSchema(),
40
+ });
41
+ }
42
+ export function CopyNodeInputSchema() {
43
+ return z.object({
44
+ srcId: z.string(),
45
+ synchronizationUnits: z.array(SynchronizationUnitSchema()).nullish(),
46
+ targetId: z.string(),
47
+ targetName: z.string().nullish(),
48
+ targetParentFolder: z.string().nullish(),
49
+ });
50
+ }
51
+ export function DeleteNodeInputSchema() {
52
+ return z.object({
53
+ id: z.string(),
54
+ });
55
+ }
56
+ export function DocumentDriveLocalStateSchema() {
57
+ return z.object({
58
+ __typename: z.literal("DocumentDriveLocalState").optional(),
59
+ availableOffline: z.boolean(),
60
+ listeners: z.array(ListenerSchema()),
61
+ sharingType: z.string().nullable(),
62
+ triggers: z.array(TriggerSchema()),
63
+ });
64
+ }
65
+ export function DocumentDriveStateSchema() {
66
+ return z.object({
67
+ __typename: z.literal("DocumentDriveState").optional(),
68
+ icon: z.string().nullable(),
69
+ id: z.string(),
70
+ name: z.string(),
71
+ nodes: z.array(NodeSchema()),
72
+ slug: z.string().nullable(),
73
+ });
74
+ }
75
+ export function FileNodeSchema() {
76
+ return z.object({
77
+ __typename: z.literal("FileNode").optional(),
78
+ documentType: z.string(),
79
+ id: z.string(),
80
+ kind: z.string(),
81
+ name: z.string(),
82
+ parentFolder: z.string().nullable(),
83
+ synchronizationUnits: z.array(SynchronizationUnitSchema()),
84
+ });
85
+ }
86
+ export function FolderNodeSchema() {
87
+ return z.object({
88
+ __typename: z.literal("FolderNode").optional(),
89
+ id: z.string(),
90
+ kind: z.string(),
91
+ name: z.string(),
92
+ parentFolder: z.string().nullable(),
93
+ });
94
+ }
95
+ export function ListenerSchema() {
96
+ return z.object({
97
+ __typename: z.literal("Listener").optional(),
98
+ block: z.boolean(),
99
+ callInfo: ListenerCallInfoSchema().nullable(),
100
+ filter: ListenerFilterSchema(),
101
+ label: z.string().nullable(),
102
+ listenerId: z.string(),
103
+ system: z.boolean(),
104
+ });
105
+ }
106
+ export function ListenerCallInfoSchema() {
107
+ return z.object({
108
+ __typename: z.literal("ListenerCallInfo").optional(),
109
+ data: z.string().nullable(),
110
+ name: z.string().nullable(),
111
+ transmitterType: TransmitterTypeSchema.nullable(),
112
+ });
113
+ }
114
+ export function ListenerFilterSchema() {
115
+ return z.object({
116
+ __typename: z.literal("ListenerFilter").optional(),
117
+ branch: z.array(z.string()).nullable(),
118
+ documentId: z.array(z.string()).nullable(),
119
+ documentType: z.array(z.string()),
120
+ scope: z.array(z.string()).nullable(),
121
+ });
122
+ }
123
+ export function MoveNodeInputSchema() {
124
+ return z.object({
125
+ srcFolder: z.string(),
126
+ targetParentFolder: z.string().nullish(),
127
+ });
128
+ }
129
+ export function NodeSchema() {
130
+ return z.union([FileNodeSchema(), FolderNodeSchema()]);
131
+ }
132
+ export function PullResponderTriggerDataSchema() {
133
+ return z.object({
134
+ __typename: z.literal("PullResponderTriggerData").optional(),
135
+ interval: z.string(),
136
+ listenerId: z.string(),
137
+ url: z.string(),
138
+ });
139
+ }
140
+ export function RemoveListenerInputSchema() {
141
+ return z.object({
142
+ listenerId: z.string(),
143
+ });
144
+ }
145
+ export function RemoveTriggerInputSchema() {
146
+ return z.object({
147
+ triggerId: z.string(),
148
+ });
149
+ }
150
+ export function SetAvailableOfflineInputSchema() {
151
+ return z.object({
152
+ availableOffline: z.boolean(),
153
+ });
154
+ }
155
+ export function SetDriveIconInputSchema() {
156
+ return z.object({
157
+ icon: z.string(),
158
+ });
159
+ }
160
+ export function SetDriveNameInputSchema() {
161
+ return z.object({
162
+ name: z.string(),
163
+ });
164
+ }
165
+ export function SetSharingTypeInputSchema() {
166
+ return z.object({
167
+ type: z.string(),
168
+ });
169
+ }
170
+ export function SynchronizationUnitSchema() {
171
+ return z.object({
172
+ __typename: z.literal("SynchronizationUnit").optional(),
173
+ branch: z.string(),
174
+ scope: z.string(),
175
+ syncId: z.string(),
176
+ });
177
+ }
178
+ export function TriggerSchema() {
179
+ return z.object({
180
+ __typename: z.literal("Trigger").optional(),
181
+ data: TriggerDataSchema().nullable(),
182
+ id: z.string(),
183
+ type: TriggerTypeSchema,
184
+ });
185
+ }
186
+ export function TriggerDataSchema() {
187
+ return PullResponderTriggerDataSchema();
188
+ }
189
+ export function UpdateFileInputSchema() {
190
+ return z.object({
191
+ documentType: z.string().nullish(),
192
+ id: z.string(),
193
+ name: z.string().nullish(),
194
+ parentFolder: z.string().nullish(),
195
+ });
196
+ }
197
+ export function UpdateNodeInputSchema() {
198
+ return z.object({
199
+ id: z.string(),
200
+ name: z.string().nullish(),
201
+ parentFolder: z.string().nullish(),
202
+ });
203
+ }
@@ -0,0 +1,9 @@
1
+ import type { DocumentModelModule, ExtendedState, PHDocument } from "document-model";
2
+ import type { DocumentDriveAction } from "./actions.js";
3
+ import type { DocumentDriveLocalState, DocumentDriveState } from "./schema/types.js";
4
+ export type * from "./schema/types.js";
5
+ export { DocumentDriveAction, DocumentDriveLocalState, DocumentDriveState };
6
+ export type ExtendedDocumentDriveState = ExtendedState<DocumentDriveState, DocumentDriveLocalState>;
7
+ export type DocumentDriveDocument = PHDocument<DocumentDriveState, DocumentDriveLocalState, DocumentDriveAction>;
8
+ export type DriveDocumentModelModule = DocumentModelModule<DocumentDriveDocument>;
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/drive-document-model/gen/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,UAAU,EACX,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,mBAAmB,mBAAmB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC;AAC5E,MAAM,MAAM,0BAA0B,GAAG,aAAa,CACpD,kBAAkB,EAClB,uBAAuB,CACxB,CAAC;AACF,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAC5C,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAClC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import { CreateDocument, CreateExtendedState, CreateState, LoadFromFile, LoadFromInput, SaveToFile, SaveToFileHandle } from "document-model";
2
+ import { DocumentDriveDocument } from "./types.js";
3
+ export declare const createState: CreateState<DocumentDriveDocument>;
4
+ export declare const createExtendedState: CreateExtendedState<DocumentDriveDocument>;
5
+ export declare const createDocument: CreateDocument<DocumentDriveDocument>;
6
+ export declare const saveToFile: SaveToFile;
7
+ export declare const saveToFileHandle: SaveToFileHandle;
8
+ export declare const loadFromFile: LoadFromFile<DocumentDriveDocument>;
9
+ export declare const loadFromInput: LoadFromInput<DocumentDriveDocument>;
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/drive-document-model/gen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,gBAAgB,EAOjB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAEL,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,qBAAqB,CAK1D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,CAAC,qBAAqB,CAO1E,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAAc,CAAC,qBAAqB,CAEhE,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAExB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,gBAE9B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,qBAAqB,CAE5D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,qBAAqB,CAE9D,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { baseCreateDocument, baseCreateExtendedState, baseLoadFromFile, baseLoadFromInput, baseSaveToFile, baseSaveToFileHandle, } from "document-model";
2
+ import { documentType, fileExtension, initialGlobalState, initialLocalState, } from "./constants.js";
3
+ import { reducer } from "./reducer.js";
4
+ export const createState = (state) => {
5
+ return {
6
+ global: { ...initialGlobalState, ...state?.global },
7
+ local: { ...initialLocalState, ...state?.local },
8
+ };
9
+ };
10
+ export const createExtendedState = (extendedState) => {
11
+ return baseCreateExtendedState({ ...extendedState, documentType }, createState);
12
+ };
13
+ export const createDocument = (state) => {
14
+ return baseCreateDocument(createExtendedState(state), createState);
15
+ };
16
+ export const saveToFile = (document, path, name) => {
17
+ return baseSaveToFile(document, path, fileExtension, name);
18
+ };
19
+ export const saveToFileHandle = (document, input) => {
20
+ return baseSaveToFileHandle(document, input);
21
+ };
22
+ export const loadFromFile = (path) => {
23
+ return baseLoadFromFile(path, reducer);
24
+ };
25
+ export const loadFromInput = (input) => {
26
+ return baseLoadFromInput(input, reducer);
27
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drive-document-model/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { DriveDocumentModelModule } from "./gen/types.js";
2
+ export declare const driveDocumentModelModule: DriveDocumentModelModule;
3
+ //# sourceMappingURL=module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/drive-document-model/module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAI1D,eAAO,MAAM,wBAAwB,EAAE,wBAKtC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import * as actions from "./gen/actions.js";
2
+ import * as creators from "./gen/creators.js";
3
+ import { documentModelState } from "./gen/document-model.js";
4
+ import { reducer } from "./gen/reducer.js";
5
+ import * as documentModelUtils from "./gen/utils.js";
6
+ import * as customUtils from "./src/utils.js";
7
+ export const driveDocumentModelModule = {
8
+ reducer,
9
+ documentModel: documentModelState,
10
+ actions: { ...creators, ...actions },
11
+ utils: { ...documentModelUtils, ...customUtils },
12
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This is a scaffold file meant for customization:
3
+ * - modify it by implementing the reducer functions
4
+ * - delete the file and run the code generator again to have it reset
5
+ */
6
+ import { DocumentDriveDriveOperations } from "../../gen/drive/operations.js";
7
+ export declare const reducer: DocumentDriveDriveOperations;
8
+ //# sourceMappingURL=drive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../../../../src/drive-document-model/src/reducers/drive.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAE7E,eAAO,MAAM,OAAO,EAAE,4BA6CrB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * This is a scaffold file meant for customization:
3
+ * - modify it by implementing the reducer functions
4
+ * - delete the file and run the code generator again to have it reset
5
+ */
6
+ export const reducer = {
7
+ setDriveNameOperation(state, action, dispatch) {
8
+ state.name = action.input.name;
9
+ },
10
+ setDriveIconOperation(state, action, dispatch) {
11
+ state.icon = action.input.icon;
12
+ },
13
+ setSharingTypeOperation(state, action, dispatch) {
14
+ state.sharingType = action.input.type;
15
+ },
16
+ setAvailableOfflineOperation(state, action, dispatch) {
17
+ state.availableOffline = action.input.availableOffline;
18
+ },
19
+ addListenerOperation(state, action, dispatch) {
20
+ if (state.listeners.find((listener) => listener.listenerId === action.input.listener.listenerId)) {
21
+ throw new Error(`A listener with Id: ${action.input.listener.listenerId} already exists`);
22
+ }
23
+ state.listeners.push(action.input.listener);
24
+ },
25
+ removeListenerOperation(state, action, dispatch) {
26
+ state.listeners = state.listeners.filter((listener) => listener.listenerId !== action.input.listenerId);
27
+ },
28
+ addTriggerOperation(state, action, dispatch) {
29
+ if (state.triggers.find((trigger) => trigger.id === action.input.trigger.id)) {
30
+ throw new Error(`A trigger with Id: ${action.input.trigger.id} already exists`);
31
+ }
32
+ state.triggers.push(action.input.trigger);
33
+ },
34
+ removeTriggerOperation(state, action, dispatch) {
35
+ state.triggers = state.triggers.filter((trigger) => trigger.id !== action.input.triggerId);
36
+ },
37
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * This is a scaffold file meant for customization:
3
+ * - modify it by implementing the reducer functions
4
+ * - delete the file and run the code generator again to have it reset
5
+ */
6
+ import { DocumentDriveNodeOperations } from "../../gen/node/operations.js";
7
+ export declare const reducer: DocumentDriveNodeOperations;
8
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../src/drive-document-model/src/reducers/node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAS3E,eAAO,MAAM,OAAO,EAAE,2BAqPrB,CAAC"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * This is a scaffold file meant for customization:
3
+ * - modify it by implementing the reducer functions
4
+ * - delete the file and run the code generator again to have it reset
5
+ */
6
+ import { getDescendants, handleTargetNameCollisions, isFileNode, isFolderNode, } from "../utils.js";
7
+ export const reducer = {
8
+ addFileOperation(state, action, dispatch) {
9
+ if (state.nodes.find((node) => node.id === action.input.id)) {
10
+ throw new Error(`Node with id ${action.input.id} already exists!`);
11
+ }
12
+ const name = handleTargetNameCollisions({
13
+ nodes: state.nodes,
14
+ srcName: action.input.name,
15
+ targetParentFolder: action.input.parentFolder || null,
16
+ });
17
+ const synchronizationUnits = action.input
18
+ .synchronizationUnits;
19
+ const invalidSyncUnit = synchronizationUnits.find((unit) => !!state.nodes.find((node) => isFileNode(node) &&
20
+ node.synchronizationUnits.find((fileUnit) => fileUnit.syncId === unit.syncId)));
21
+ if (invalidSyncUnit) {
22
+ throw new Error(`A synchronization unit with Id ${invalidSyncUnit.syncId} already exists`);
23
+ }
24
+ const fileNode = {
25
+ id: action.input.id,
26
+ name,
27
+ kind: "file",
28
+ parentFolder: action.input.parentFolder ?? null,
29
+ synchronizationUnits,
30
+ documentType: action.input.documentType,
31
+ };
32
+ state.nodes.push(fileNode);
33
+ dispatch?.({
34
+ type: "CREATE_CHILD_DOCUMENT",
35
+ input: {
36
+ id: action.input.id,
37
+ documentType: action.input.documentType,
38
+ synchronizationUnits,
39
+ document: action.input.document,
40
+ },
41
+ });
42
+ },
43
+ addFolderOperation(state, action) {
44
+ if (state.nodes.find((node) => node.id === action.input.id)) {
45
+ throw new Error(`Node with id ${action.input.id} already exists!`);
46
+ }
47
+ const name = handleTargetNameCollisions({
48
+ nodes: state.nodes,
49
+ srcName: action.input.name,
50
+ targetParentFolder: action.input.parentFolder || null,
51
+ });
52
+ state.nodes.push({
53
+ ...action.input,
54
+ name,
55
+ kind: "folder",
56
+ parentFolder: action.input.parentFolder ?? null,
57
+ });
58
+ },
59
+ deleteNodeOperation(state, action, dispatch) {
60
+ const node = state.nodes.find((node) => node.id === action.input.id);
61
+ if (!node) {
62
+ throw new Error(`Node with id ${action.input.id} not found`);
63
+ }
64
+ const descendants = getDescendants(node, state.nodes);
65
+ state.nodes = state.nodes.filter((node) => node.id !== action.input.id &&
66
+ !descendants.find((descendant) => descendant.id === node.id));
67
+ [node, ...descendants]
68
+ .filter((node) => isFileNode(node))
69
+ .forEach((node) => {
70
+ dispatch?.({
71
+ type: "DELETE_CHILD_DOCUMENT",
72
+ input: {
73
+ id: node.id,
74
+ },
75
+ });
76
+ });
77
+ },
78
+ updateFileOperation(state, action) {
79
+ state.nodes = state.nodes.map((node) => node.id === action.input.id
80
+ ? {
81
+ ...node,
82
+ ...{
83
+ name: handleTargetNameCollisions({
84
+ nodes: state.nodes,
85
+ srcName: action.input.name ?? node.name,
86
+ targetParentFolder: action.input.parentFolder || null,
87
+ }),
88
+ documentType: action.input.documentType ?? node.documentType,
89
+ },
90
+ }
91
+ : node);
92
+ },
93
+ updateNodeOperation(state, action) {
94
+ state.nodes = state.nodes.map((node) => node.id === action.input.id
95
+ ? {
96
+ ...node,
97
+ ...{
98
+ name: handleTargetNameCollisions({
99
+ nodes: state.nodes,
100
+ srcName: action.input.name ?? node.name,
101
+ targetParentFolder: action.input.parentFolder || null,
102
+ }),
103
+ parentFolder: action.input.parentFolder === null ? null : node.parentFolder,
104
+ },
105
+ }
106
+ : node);
107
+ },
108
+ copyNodeOperation(state, action, dispatch) {
109
+ const node = state.nodes.find((node) => node.id === action.input.srcId);
110
+ if (!node) {
111
+ throw new Error(`Node with id ${action.input.srcId} not found`);
112
+ }
113
+ const duplicatedNode = state.nodes.find((node) => node.id === action.input.targetId);
114
+ if (duplicatedNode) {
115
+ throw new Error(`Node with id ${action.input.targetId} already exists`);
116
+ }
117
+ const name = handleTargetNameCollisions({
118
+ nodes: state.nodes,
119
+ srcName: action.input.targetName || node.name,
120
+ targetParentFolder: action.input.targetParentFolder || null,
121
+ });
122
+ const newNode = {
123
+ ...node,
124
+ name,
125
+ id: action.input.targetId,
126
+ parentFolder: action.input.targetParentFolder || null,
127
+ };
128
+ const isFile = isFileNode(newNode);
129
+ if (isFile) {
130
+ const synchronizationUnits = action.input
131
+ .synchronizationUnits;
132
+ if (!action.input.synchronizationUnits) {
133
+ throw new Error("Synchronization units were not provided");
134
+ }
135
+ const invalidSyncUnit = synchronizationUnits.find((unit) => !!state.nodes.find((node) => isFileNode(node) &&
136
+ node.synchronizationUnits.find((fileUnit) => fileUnit.syncId === unit.syncId)));
137
+ if (invalidSyncUnit) {
138
+ throw new Error(`A synchronization unit with Id ${invalidSyncUnit.syncId} already exists`);
139
+ }
140
+ newNode.synchronizationUnits = synchronizationUnits;
141
+ }
142
+ state.nodes.push(newNode);
143
+ if (isFile) {
144
+ dispatch?.({
145
+ type: "COPY_CHILD_DOCUMENT",
146
+ input: {
147
+ id: action.input.srcId,
148
+ newId: action.input.targetId,
149
+ synchronizationUnits: newNode.synchronizationUnits,
150
+ },
151
+ });
152
+ }
153
+ },
154
+ moveNodeOperation(state, action) {
155
+ if (action.input.srcFolder === action.input.targetParentFolder) {
156
+ throw new Error("Circular Reference Error: Attempting to move a node to its current parent folder");
157
+ }
158
+ const node = state.nodes.find((node) => node.id === action.input.srcFolder);
159
+ if (!node) {
160
+ throw new Error(`Node with id ${action.input.srcFolder} not found`);
161
+ }
162
+ const name = handleTargetNameCollisions({
163
+ nodes: state.nodes,
164
+ srcName: node.name,
165
+ targetParentFolder: action.input.targetParentFolder || null,
166
+ });
167
+ if (isFolderNode(node)) {
168
+ const descendants = getDescendants(node, state.nodes);
169
+ // throw error if moving a folder to one of its descendants
170
+ if (descendants.find((descendant) => descendant.id === action.input.targetParentFolder)) {
171
+ throw new Error("Circular Reference Error: Cannot move a folder to one of its descendants");
172
+ }
173
+ }
174
+ state.nodes = state.nodes.map((node) => {
175
+ if (node.id === action.input.srcFolder) {
176
+ return {
177
+ ...node,
178
+ name,
179
+ parentFolder: action.input.targetParentFolder || null,
180
+ };
181
+ }
182
+ return node;
183
+ });
184
+ },
185
+ };
@@ -0,0 +1,34 @@
1
+ import { OperationScope } from "document-model";
2
+ import { AddFileAction, CopyNodeAction } from "../gen/node/actions.js";
3
+ import { AddFileInput, CopyNodeInput, DocumentDriveState, FileNode, FolderNode, Node, SynchronizationUnit } from "../gen/types.js";
4
+ export declare function isFileNode(node: Node): node is FileNode;
5
+ export declare function isFolderNode(node: Node): node is FolderNode;
6
+ export declare function getAncestors(node: Node, allNodes: Node[]): Node[];
7
+ export declare function getDescendants(node: Node, allNodes: Node[]): Node[];
8
+ export type GenerateNodesCopySrc = {
9
+ srcId: Node["id"];
10
+ targetName?: Node["name"];
11
+ targetParentFolder?: Node["parentFolder"];
12
+ };
13
+ export type GenerateNodesCopyIdGenerator = (prevId: Node["id"]) => Node["id"];
14
+ /**
15
+ * Generates a copy of nodes based on the provided source and target information.
16
+ * @param src - The source information for generating the copy.
17
+ * @param idGenerator - The function used to generate new IDs for the copied nodes.
18
+ * @param nodes - The array of nodes to copy from.
19
+ * @returns An array of copied nodes with updated IDs and parent folders.
20
+ * @throws Error if the root node with the specified ID is not found.
21
+ */
22
+ export declare function generateNodesCopy(src: GenerateNodesCopySrc, idGenerator: GenerateNodesCopyIdGenerator, nodes: Node[]): CopyNodeInput[];
23
+ export declare function generateSynchronizationUnitId(nodes: DocumentDriveState["nodes"]): string;
24
+ export declare function generateSynchronizationUnits(state: DocumentDriveState, scopes: OperationScope[], branch?: string): SynchronizationUnit[];
25
+ export declare function generateAddNodeAction(state: DocumentDriveState, action: Omit<AddFileInput, "synchronizationUnits">, scopes: OperationScope[]): AddFileAction;
26
+ export declare function generateCopyNodeAction(state: DocumentDriveState, action: Omit<CopyNodeInput, "synchronizationUnits">): CopyNodeAction;
27
+ export declare function getNextCopyNumber(files: string[], baseFilename: string): number;
28
+ export declare function escapeRegExp(string: string): string;
29
+ export declare function handleTargetNameCollisions(params: {
30
+ nodes: Node[];
31
+ targetParentFolder: string | null;
32
+ srcName: string;
33
+ }): string;
34
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/drive-document-model/src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,QAAQ,CAEvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,UAAU,CAE3D;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAUjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAInE;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,kBAAkB,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,oBAAoB,EACzB,WAAW,EAAE,4BAA4B,EACzC,KAAK,EAAE,IAAI,EAAE,GACZ,aAAa,EAAE,CAmDjB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GACjC,MAAM,CAaR;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,cAAc,EAAE,EACxB,MAAM,SAAS,GACd,mBAAmB,EAAE,CAMvB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,EAClD,MAAM,EAAE,cAAc,EAAE,GACvB,aAAa,CAKf;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAAC,GAClD,cAAc,CAqBhB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,YAAY,EAAE,MAAM,GACnB,MAAM,CAmBR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,UAE1C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IACjD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB,UAkBA"}