@byline/core 0.9.3

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 (283) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +17 -0
  3. package/dist/@types/admin-types.d.ts +275 -0
  4. package/dist/@types/admin-types.d.ts.map +1 -0
  5. package/dist/@types/admin-types.js +18 -0
  6. package/dist/@types/admin-types.js.map +1 -0
  7. package/dist/@types/collection-types.d.ts +816 -0
  8. package/dist/@types/collection-types.d.ts.map +1 -0
  9. package/dist/@types/collection-types.js +217 -0
  10. package/dist/@types/collection-types.js.map +1 -0
  11. package/dist/@types/db-types.d.ts +463 -0
  12. package/dist/@types/db-types.d.ts.map +1 -0
  13. package/dist/@types/db-types.js +2 -0
  14. package/dist/@types/db-types.js.map +1 -0
  15. package/dist/@types/field-data-types.d.ts +147 -0
  16. package/dist/@types/field-data-types.d.ts.map +1 -0
  17. package/dist/@types/field-data-types.js +38 -0
  18. package/dist/@types/field-data-types.js.map +1 -0
  19. package/dist/@types/field-types.d.ts +579 -0
  20. package/dist/@types/field-types.d.ts.map +1 -0
  21. package/dist/@types/field-types.js +32 -0
  22. package/dist/@types/field-types.js.map +1 -0
  23. package/dist/@types/index.d.ts +18 -0
  24. package/dist/@types/index.d.ts.map +1 -0
  25. package/dist/@types/index.js +18 -0
  26. package/dist/@types/index.js.map +1 -0
  27. package/dist/@types/populate-types.d.ts +54 -0
  28. package/dist/@types/populate-types.d.ts.map +1 -0
  29. package/dist/@types/populate-types.js +9 -0
  30. package/dist/@types/populate-types.js.map +1 -0
  31. package/dist/@types/query-predicate.d.ts +74 -0
  32. package/dist/@types/query-predicate.d.ts.map +1 -0
  33. package/dist/@types/query-predicate.js +9 -0
  34. package/dist/@types/query-predicate.js.map +1 -0
  35. package/dist/@types/site-config.d.ts +212 -0
  36. package/dist/@types/site-config.d.ts.map +1 -0
  37. package/dist/@types/site-config.js +9 -0
  38. package/dist/@types/site-config.js.map +1 -0
  39. package/dist/@types/storage-types.d.ts +86 -0
  40. package/dist/@types/storage-types.d.ts.map +1 -0
  41. package/dist/@types/storage-types.js +9 -0
  42. package/dist/@types/storage-types.js.map +1 -0
  43. package/dist/@types/store-types.d.ts +134 -0
  44. package/dist/@types/store-types.d.ts.map +1 -0
  45. package/dist/@types/store-types.js +24 -0
  46. package/dist/@types/store-types.js.map +1 -0
  47. package/dist/@types/type-utils.d.ts +17 -0
  48. package/dist/@types/type-utils.d.ts.map +1 -0
  49. package/dist/@types/type-utils.js +9 -0
  50. package/dist/@types/type-utils.js.map +1 -0
  51. package/dist/auth/apply-before-read.d.ts +36 -0
  52. package/dist/auth/apply-before-read.d.ts.map +1 -0
  53. package/dist/auth/apply-before-read.js +68 -0
  54. package/dist/auth/apply-before-read.js.map +1 -0
  55. package/dist/auth/apply-before-read.test.node.d.ts +9 -0
  56. package/dist/auth/apply-before-read.test.node.d.ts.map +1 -0
  57. package/dist/auth/apply-before-read.test.node.js +144 -0
  58. package/dist/auth/apply-before-read.test.node.js.map +1 -0
  59. package/dist/auth/assert-actor-can-perform.d.ts +39 -0
  60. package/dist/auth/assert-actor-can-perform.d.ts.map +1 -0
  61. package/dist/auth/assert-actor-can-perform.js +64 -0
  62. package/dist/auth/assert-actor-can-perform.js.map +1 -0
  63. package/dist/auth/assert-actor-can-perform.test.node.d.ts +9 -0
  64. package/dist/auth/assert-actor-can-perform.test.node.d.ts.map +1 -0
  65. package/dist/auth/assert-actor-can-perform.test.node.js +119 -0
  66. package/dist/auth/assert-actor-can-perform.test.node.js.map +1 -0
  67. package/dist/auth/index.d.ts +11 -0
  68. package/dist/auth/index.d.ts.map +1 -0
  69. package/dist/auth/index.js +11 -0
  70. package/dist/auth/index.js.map +1 -0
  71. package/dist/auth/register-collection-abilities.d.ts +40 -0
  72. package/dist/auth/register-collection-abilities.d.ts.map +1 -0
  73. package/dist/auth/register-collection-abilities.js +87 -0
  74. package/dist/auth/register-collection-abilities.js.map +1 -0
  75. package/dist/auth/register-collection-abilities.test.node.d.ts +9 -0
  76. package/dist/auth/register-collection-abilities.test.node.d.ts.map +1 -0
  77. package/dist/auth/register-collection-abilities.test.node.js +124 -0
  78. package/dist/auth/register-collection-abilities.test.node.js.map +1 -0
  79. package/dist/config/config.d.ts +10 -0
  80. package/dist/config/config.d.ts.map +1 -0
  81. package/dist/config/config.js +108 -0
  82. package/dist/config/config.js.map +1 -0
  83. package/dist/config/routes.d.ts +16 -0
  84. package/dist/config/routes.d.ts.map +1 -0
  85. package/dist/config/routes.js +26 -0
  86. package/dist/config/routes.js.map +1 -0
  87. package/dist/config/validate-admin-configs.d.ts +33 -0
  88. package/dist/config/validate-admin-configs.d.ts.map +1 -0
  89. package/dist/config/validate-admin-configs.js +250 -0
  90. package/dist/config/validate-admin-configs.js.map +1 -0
  91. package/dist/config/validate-admin-configs.test.node.d.ts +9 -0
  92. package/dist/config/validate-admin-configs.test.node.d.ts.map +1 -0
  93. package/dist/config/validate-admin-configs.test.node.js +224 -0
  94. package/dist/config/validate-admin-configs.test.node.js.map +1 -0
  95. package/dist/config/validate-collections.d.ts +33 -0
  96. package/dist/config/validate-collections.d.ts.map +1 -0
  97. package/dist/config/validate-collections.js +70 -0
  98. package/dist/config/validate-collections.js.map +1 -0
  99. package/dist/config/validate-collections.test.node.d.ts +9 -0
  100. package/dist/config/validate-collections.test.node.d.ts.map +1 -0
  101. package/dist/config/validate-collections.test.node.js +149 -0
  102. package/dist/config/validate-collections.test.node.js.map +1 -0
  103. package/dist/core.d.ts +89 -0
  104. package/dist/core.d.ts.map +1 -0
  105. package/dist/core.js +99 -0
  106. package/dist/core.js.map +1 -0
  107. package/dist/defaults/default-values.d.ts +13 -0
  108. package/dist/defaults/default-values.d.ts.map +1 -0
  109. package/dist/defaults/default-values.js +60 -0
  110. package/dist/defaults/default-values.js.map +1 -0
  111. package/dist/index.d.ts +20 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +36 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/lib/errors.d.ts +98 -0
  116. package/dist/lib/errors.d.ts.map +1 -0
  117. package/dist/lib/errors.js +134 -0
  118. package/dist/lib/errors.js.map +1 -0
  119. package/dist/lib/logger.d.ts +62 -0
  120. package/dist/lib/logger.d.ts.map +1 -0
  121. package/dist/lib/logger.js +120 -0
  122. package/dist/lib/logger.js.map +1 -0
  123. package/dist/lib/registry.d.ts +65 -0
  124. package/dist/lib/registry.d.ts.map +1 -0
  125. package/dist/lib/registry.js +133 -0
  126. package/dist/lib/registry.js.map +1 -0
  127. package/dist/logger/index.d.ts +3 -0
  128. package/dist/logger/index.d.ts.map +1 -0
  129. package/dist/logger/index.js +3 -0
  130. package/dist/logger/index.js.map +1 -0
  131. package/dist/patches/apply-patches.d.ts +21 -0
  132. package/dist/patches/apply-patches.d.ts.map +1 -0
  133. package/dist/patches/apply-patches.js +357 -0
  134. package/dist/patches/apply-patches.js.map +1 -0
  135. package/dist/patches/index.d.ts +3 -0
  136. package/dist/patches/index.d.ts.map +1 -0
  137. package/dist/patches/index.js +4 -0
  138. package/dist/patches/index.js.map +1 -0
  139. package/dist/patches/patch-types.d.ts +82 -0
  140. package/dist/patches/patch-types.d.ts.map +1 -0
  141. package/dist/patches/patch-types.js +3 -0
  142. package/dist/patches/patch-types.js.map +1 -0
  143. package/dist/patches/patch.test.node.d.ts +2 -0
  144. package/dist/patches/patch.test.node.d.ts.map +1 -0
  145. package/dist/patches/patch.test.node.js +193 -0
  146. package/dist/patches/patch.test.node.js.map +1 -0
  147. package/dist/query/parse-where.d.ts +100 -0
  148. package/dist/query/parse-where.d.ts.map +1 -0
  149. package/dist/query/parse-where.js +352 -0
  150. package/dist/query/parse-where.js.map +1 -0
  151. package/dist/query/parse-where.test.node.d.ts +9 -0
  152. package/dist/query/parse-where.test.node.d.ts.map +1 -0
  153. package/dist/query/parse-where.test.node.js +581 -0
  154. package/dist/query/parse-where.test.node.js.map +1 -0
  155. package/dist/schemas/zod/builder.d.ts +466 -0
  156. package/dist/schemas/zod/builder.d.ts.map +1 -0
  157. package/dist/schemas/zod/builder.js +276 -0
  158. package/dist/schemas/zod/builder.js.map +1 -0
  159. package/dist/schemas/zod/cache.d.ts +14 -0
  160. package/dist/schemas/zod/cache.d.ts.map +1 -0
  161. package/dist/schemas/zod/cache.js +40 -0
  162. package/dist/schemas/zod/cache.js.map +1 -0
  163. package/dist/schemas/zod/index.d.ts +4 -0
  164. package/dist/schemas/zod/index.d.ts.map +1 -0
  165. package/dist/schemas/zod/index.js +4 -0
  166. package/dist/schemas/zod/index.js.map +1 -0
  167. package/dist/schemas/zod/types.d.ts +13 -0
  168. package/dist/schemas/zod/types.d.ts.map +1 -0
  169. package/dist/schemas/zod/types.js +2 -0
  170. package/dist/schemas/zod/types.js.map +1 -0
  171. package/dist/services/collection-bootstrap.d.ts +46 -0
  172. package/dist/services/collection-bootstrap.d.ts.map +1 -0
  173. package/dist/services/collection-bootstrap.js +108 -0
  174. package/dist/services/collection-bootstrap.js.map +1 -0
  175. package/dist/services/collection-bootstrap.test.node.d.ts +9 -0
  176. package/dist/services/collection-bootstrap.test.node.d.ts.map +1 -0
  177. package/dist/services/collection-bootstrap.test.node.js +208 -0
  178. package/dist/services/collection-bootstrap.test.node.js.map +1 -0
  179. package/dist/services/document-lifecycle.d.ts +245 -0
  180. package/dist/services/document-lifecycle.d.ts.map +1 -0
  181. package/dist/services/document-lifecycle.js +481 -0
  182. package/dist/services/document-lifecycle.js.map +1 -0
  183. package/dist/services/document-lifecycle.test.node.d.ts +9 -0
  184. package/dist/services/document-lifecycle.test.node.d.ts.map +1 -0
  185. package/dist/services/document-lifecycle.test.node.js +781 -0
  186. package/dist/services/document-lifecycle.test.node.js.map +1 -0
  187. package/dist/services/document-read.d.ts +26 -0
  188. package/dist/services/document-read.d.ts.map +1 -0
  189. package/dist/services/document-read.js +60 -0
  190. package/dist/services/document-read.js.map +1 -0
  191. package/dist/services/field-upload.d.ts +100 -0
  192. package/dist/services/field-upload.d.ts.map +1 -0
  193. package/dist/services/field-upload.js +328 -0
  194. package/dist/services/field-upload.js.map +1 -0
  195. package/dist/services/field-upload.test.node.d.ts +9 -0
  196. package/dist/services/field-upload.test.node.d.ts.map +1 -0
  197. package/dist/services/field-upload.test.node.js +337 -0
  198. package/dist/services/field-upload.test.node.js.map +1 -0
  199. package/dist/services/index.d.ts +10 -0
  200. package/dist/services/index.d.ts.map +1 -0
  201. package/dist/services/index.js +11 -0
  202. package/dist/services/index.js.map +1 -0
  203. package/dist/services/populate.d.ts +299 -0
  204. package/dist/services/populate.d.ts.map +1 -0
  205. package/dist/services/populate.js +484 -0
  206. package/dist/services/populate.js.map +1 -0
  207. package/dist/services/populate.test.node.d.ts +9 -0
  208. package/dist/services/populate.test.node.d.ts.map +1 -0
  209. package/dist/services/populate.test.node.js +910 -0
  210. package/dist/services/populate.test.node.js.map +1 -0
  211. package/dist/services/relation-projection.d.ts +52 -0
  212. package/dist/services/relation-projection.d.ts.map +1 -0
  213. package/dist/services/relation-projection.js +81 -0
  214. package/dist/services/relation-projection.js.map +1 -0
  215. package/dist/services/richtext-populate.d.ts +87 -0
  216. package/dist/services/richtext-populate.d.ts.map +1 -0
  217. package/dist/services/richtext-populate.js +189 -0
  218. package/dist/services/richtext-populate.js.map +1 -0
  219. package/dist/services/richtext-populate.test.node.d.ts +9 -0
  220. package/dist/services/richtext-populate.test.node.d.ts.map +1 -0
  221. package/dist/services/richtext-populate.test.node.js +197 -0
  222. package/dist/services/richtext-populate.test.node.js.map +1 -0
  223. package/dist/storage/collection-fingerprint.d.ts +21 -0
  224. package/dist/storage/collection-fingerprint.d.ts.map +1 -0
  225. package/dist/storage/collection-fingerprint.js +172 -0
  226. package/dist/storage/collection-fingerprint.js.map +1 -0
  227. package/dist/storage/collection-fingerprint.test.node.d.ts +9 -0
  228. package/dist/storage/collection-fingerprint.test.node.d.ts.map +1 -0
  229. package/dist/storage/collection-fingerprint.test.node.js +256 -0
  230. package/dist/storage/collection-fingerprint.test.node.js.map +1 -0
  231. package/dist/storage/field-store-map.d.ts +59 -0
  232. package/dist/storage/field-store-map.d.ts.map +1 -0
  233. package/dist/storage/field-store-map.js +75 -0
  234. package/dist/storage/field-store-map.js.map +1 -0
  235. package/dist/storage/field-store-map.test.node.d.ts +9 -0
  236. package/dist/storage/field-store-map.test.node.d.ts.map +1 -0
  237. package/dist/storage/field-store-map.test.node.js +117 -0
  238. package/dist/storage/field-store-map.test.node.js.map +1 -0
  239. package/dist/storage/index.d.ts +10 -0
  240. package/dist/storage/index.d.ts.map +1 -0
  241. package/dist/storage/index.js +10 -0
  242. package/dist/storage/index.js.map +1 -0
  243. package/dist/utils/normalise-dates.d.ts +15 -0
  244. package/dist/utils/normalise-dates.d.ts.map +1 -0
  245. package/dist/utils/normalise-dates.js +22 -0
  246. package/dist/utils/normalise-dates.js.map +1 -0
  247. package/dist/utils/slugify.d.ts +56 -0
  248. package/dist/utils/slugify.d.ts.map +1 -0
  249. package/dist/utils/slugify.js +91 -0
  250. package/dist/utils/slugify.js.map +1 -0
  251. package/dist/utils/slugify.test.node.d.ts +9 -0
  252. package/dist/utils/slugify.test.node.d.ts.map +1 -0
  253. package/dist/utils/slugify.test.node.js +86 -0
  254. package/dist/utils/slugify.test.node.js.map +1 -0
  255. package/dist/utils/storage-utils.d.ts +36 -0
  256. package/dist/utils/storage-utils.d.ts.map +1 -0
  257. package/dist/utils/storage-utils.js +38 -0
  258. package/dist/utils/storage-utils.js.map +1 -0
  259. package/dist/utils/utils.general.d.ts +64 -0
  260. package/dist/utils/utils.general.d.ts.map +1 -0
  261. package/dist/utils/utils.general.js +219 -0
  262. package/dist/utils/utils.general.js.map +1 -0
  263. package/dist/validation/index.d.ts +9 -0
  264. package/dist/validation/index.d.ts.map +1 -0
  265. package/dist/validation/index.js +9 -0
  266. package/dist/validation/index.js.map +1 -0
  267. package/dist/validation/shared.d.ts +36 -0
  268. package/dist/validation/shared.d.ts.map +1 -0
  269. package/dist/validation/shared.js +42 -0
  270. package/dist/validation/shared.js.map +1 -0
  271. package/dist/workflow/index.d.ts +2 -0
  272. package/dist/workflow/index.d.ts.map +1 -0
  273. package/dist/workflow/index.js +3 -0
  274. package/dist/workflow/index.js.map +1 -0
  275. package/dist/workflow/workflow.d.ts +40 -0
  276. package/dist/workflow/workflow.d.ts.map +1 -0
  277. package/dist/workflow/workflow.js +96 -0
  278. package/dist/workflow/workflow.js.map +1 -0
  279. package/dist/workflow/workflow.test.node.d.ts +2 -0
  280. package/dist/workflow/workflow.test.node.d.ts.map +1 -0
  281. package/dist/workflow/workflow.test.node.js +198 -0
  282. package/dist/workflow/workflow.test.node.js.map +1 -0
  283. package/package.json +88 -0
@@ -0,0 +1,133 @@
1
+ /**
2
+ * This Source Code is subject to the terms of the Mozilla Public
3
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
4
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5
+ *
6
+ * Copyright (c) Infonomic Company Limited
7
+ *
8
+ * Typed dependency injection registry. Ported from the Modulus project
9
+ * (https://github.com/infonomic/modulus) with permission.
10
+ *
11
+ * Provides compile-time validation of dependency graphs via TypeScript
12
+ * conditional types. Services declare their dependencies via constructor
13
+ * or factory signatures; the registry validates that all requirements
14
+ * are satisfied before composition.
15
+ */
16
+ export class Registry {
17
+ providers = [];
18
+ addClass(name, value) {
19
+ this.providers.push({
20
+ type: 'class',
21
+ name,
22
+ value,
23
+ });
24
+ return this;
25
+ }
26
+ addFactory(name, value) {
27
+ this.providers.push({
28
+ type: 'factory',
29
+ name,
30
+ value,
31
+ });
32
+ return this;
33
+ }
34
+ addValue(name, value) {
35
+ this.providers.push({
36
+ type: 'value',
37
+ name,
38
+ value,
39
+ });
40
+ return this;
41
+ }
42
+ addNested(name, nested) {
43
+ this.providers.push({ type: 'nested', name, value: nested });
44
+ return this;
45
+ }
46
+ compose(requirements) {
47
+ const result = {};
48
+ const context = { ...requirements };
49
+ for (const { type, name, value } of this.providers) {
50
+ if (type === 'value') {
51
+ context[name] = result[name] = value;
52
+ }
53
+ else if (type === 'class') {
54
+ context[name] = result[name] = new value(context);
55
+ }
56
+ else if (type === 'factory') {
57
+ context[name] = result[name] = value(context);
58
+ }
59
+ else if (type === 'nested') {
60
+ const nestedResult = value.compose(context);
61
+ context[name] = result[name] = nestedResult;
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+ }
67
+ export class AsyncRegistry {
68
+ providers = [];
69
+ addClass(name, value) {
70
+ this.providers.push({
71
+ type: 'class',
72
+ name,
73
+ value,
74
+ });
75
+ return this;
76
+ }
77
+ addAsyncClass(name, value) {
78
+ this.providers.push({
79
+ type: 'async-class',
80
+ name,
81
+ value,
82
+ });
83
+ return this;
84
+ }
85
+ addFactory(name, value) {
86
+ this.providers.push({
87
+ type: 'factory',
88
+ name,
89
+ value,
90
+ });
91
+ return this;
92
+ }
93
+ addValue(name, value) {
94
+ this.providers.push({
95
+ type: 'value',
96
+ name,
97
+ value,
98
+ });
99
+ return this;
100
+ }
101
+ addNested(name, nested) {
102
+ this.providers.push({ type: 'nested', name, value: nested });
103
+ return this;
104
+ }
105
+ addNestedAsync(name, nested) {
106
+ this.providers.push({ type: 'nested', name, value: nested });
107
+ return this;
108
+ }
109
+ async compose(requirements) {
110
+ const result = {};
111
+ const context = { ...requirements };
112
+ for (const { type, name, value } of this.providers) {
113
+ if (type === 'value') {
114
+ context[name] = result[name] = await value;
115
+ }
116
+ else if (type === 'class') {
117
+ context[name] = result[name] = new value(context);
118
+ }
119
+ else if (type === 'async-class') {
120
+ context[name] = result[name] = await value.create(context);
121
+ }
122
+ else if (type === 'factory') {
123
+ context[name] = result[name] = await value(context);
124
+ }
125
+ else if (type === 'nested') {
126
+ const nestedResult = await value.compose(context);
127
+ context[name] = result[name] = nestedResult;
128
+ }
129
+ }
130
+ return result;
131
+ }
132
+ }
133
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { createBylineLogger, defineLogger, getLogContext, getLogger, withLogContext, } from '../lib/logger.js';
2
+ export type { BylineLogger, LogContext, LogData, LogLevel, LogLevelWithSilent, } from '../lib/logger.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,YAAY,EACZ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,kBAAkB,GACnB,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ // packages/core/src/logger/index.ts
2
+ export { createBylineLogger, defineLogger, getLogContext, getLogger, withLogContext, } from '../lib/logger.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { CollectionDefinition } from '../@types/collection-types.js';
2
+ import type { Field } from '../@types/field-types.js';
3
+ import type { ApplyPatchesResult, DocumentPatch, PatchPath } from './patch-types.js';
4
+ interface PathSegmentField {
5
+ kind: 'field';
6
+ key: string;
7
+ }
8
+ interface PathSegmentIndex {
9
+ kind: 'index';
10
+ index: number;
11
+ }
12
+ interface PathSegmentId {
13
+ kind: 'id';
14
+ id: string;
15
+ }
16
+ type PathSegment = PathSegmentField | PathSegmentIndex | PathSegmentId;
17
+ export declare function parsePatchPath(path: PatchPath): PathSegment[];
18
+ export declare function resolveFieldForPath(definition: CollectionDefinition | null | undefined, path: PatchPath): Field | null;
19
+ export declare function applyPatches(definition: CollectionDefinition, doc: Record<string, any>, patches: DocumentPatch[]): ApplyPatchesResult;
20
+ export {};
21
+ //# sourceMappingURL=apply-patches.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-patches.d.ts","sourceRoot":"","sources":["../../src/patches/apply-patches.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,KAAK,EAAe,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,KAAK,EACV,kBAAkB,EAGlB,aAAa,EAGb,SAAS,EACV,MAAM,kBAAkB,CAAA;AAEzB,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;CACX;AAED,KAAK,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,CAAA;AAOtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,EAAE,CAgC7D;AAKD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EACnD,IAAI,EAAE,SAAS,GACd,KAAK,GAAG,IAAI,CAkDd;AAmOD,wBAAgB,YAAY,CAC1B,UAAU,EAAE,oBAAoB,EAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,OAAO,EAAE,aAAa,EAAE,GACvB,kBAAkB,CAsDpB"}
@@ -0,0 +1,357 @@
1
+ // Core implementation of the patch engine
2
+ import { isBlocksField, isStructureField } from '../@types/field-types.js';
3
+ // Very small path grammar:
4
+ // - "foo.bar" -> [{field: 'foo'}, {field: 'bar'}]
5
+ // - "reviews[0].rating" -> [{field: 'reviews'}, {index: 0}, {field: 'rating'}]
6
+ // - "reviews[id=abc].rating" -> [{field: 'reviews'}, {id: 'abc'}, {field: 'rating'}]
7
+ // - "content[id=xyz]" -> [{field: 'content'}, {id: 'xyz'}]
8
+ export function parsePatchPath(path) {
9
+ if (!path)
10
+ return [];
11
+ const segments = [];
12
+ const parts = String(path).split('.');
13
+ for (const part of parts) {
14
+ const fieldMatch = part.match(/^([^[]+)/);
15
+ if (!fieldMatch) {
16
+ continue;
17
+ }
18
+ const field = fieldMatch[1];
19
+ segments.push({ kind: 'field', key: field });
20
+ const bracketRegex = /\[([^\]]+)\]/g;
21
+ let match;
22
+ // Biome: avoid assignment in the while condition
23
+ // eslint-disable-next-line no-constant-condition
24
+ while (true) {
25
+ match = bracketRegex.exec(part);
26
+ if (match === null)
27
+ break;
28
+ const token = match[1];
29
+ if (/^\d+$/.test(token)) {
30
+ segments.push({ kind: 'index', index: Number.parseInt(token, 10) });
31
+ }
32
+ else if (token.startsWith('id=')) {
33
+ segments.push({ kind: 'id', id: token.slice(3) });
34
+ }
35
+ }
36
+ }
37
+ return segments;
38
+ }
39
+ // Very small, best-effort resolver that walks the CollectionDefinition to find
40
+ // the field targeted by a patch path. This is intentionally conservative and
41
+ // currently only understands top-level fields and simple nested paths.
42
+ export function resolveFieldForPath(definition, path) {
43
+ if (!definition || !path)
44
+ return null;
45
+ const segments = parsePatchPath(path);
46
+ if (segments.length === 0)
47
+ return null;
48
+ const [first, ...rest] = segments;
49
+ if (!first || first.kind !== 'field')
50
+ return null;
51
+ let current = definition.fields.find((f) => f.name === first.key);
52
+ if (!current)
53
+ return null;
54
+ for (const segment of rest) {
55
+ if (!current)
56
+ return null;
57
+ if (segment.kind === 'index') {
58
+ // Index segments step into array/block children
59
+ if (isStructureField(current)) {
60
+ // For array/blocks fields, stay at the container level
61
+ // so the next field segment can find a child field.
62
+ continue;
63
+ }
64
+ return null;
65
+ }
66
+ else if (segment.kind === 'field') {
67
+ if (isBlocksField(current)) {
68
+ // BlocksField: search across all blocks' child fields by name.
69
+ // The segment may match a field in any of the block variants.
70
+ const blocksField = current;
71
+ let found;
72
+ for (const block of blocksField.blocks ?? []) {
73
+ found = block.fields.find((f) => f.name === segment.key);
74
+ if (found)
75
+ break;
76
+ }
77
+ current = found;
78
+ }
79
+ else if (isStructureField(current) && current.fields) {
80
+ // Search child fields — handles array and group
81
+ current = current.fields.find((f) => f.name === segment.key);
82
+ }
83
+ else {
84
+ return null;
85
+ }
86
+ }
87
+ else if (segment.kind === 'id') {
88
+ // ID-addressed arrays/blocks — stay at current level
89
+ if (isStructureField(current)) {
90
+ continue;
91
+ }
92
+ return null;
93
+ }
94
+ }
95
+ return current ?? null;
96
+ }
97
+ function getBySegments(root, segments) {
98
+ let current = root;
99
+ let parent = null;
100
+ let key = null;
101
+ for (const segment of segments) {
102
+ parent = current;
103
+ if (parent == null) {
104
+ break;
105
+ }
106
+ if (segment.kind === 'field') {
107
+ key = segment.key;
108
+ current = parent[key];
109
+ }
110
+ else if (segment.kind === 'index') {
111
+ if (!Array.isArray(parent)) {
112
+ throw new Error(`Expected array when resolving index segment in path`);
113
+ }
114
+ key = segment.index;
115
+ current = parent[segment.index];
116
+ }
117
+ else if (segment.kind === 'id') {
118
+ if (!Array.isArray(parent)) {
119
+ throw new Error(`Expected array when resolving id segment in path`);
120
+ }
121
+ const foundIndex = parent.findIndex((item) => item && item._id === segment.id);
122
+ if (foundIndex === -1) {
123
+ throw new Error(`Item with id=${segment.id} not found in array`);
124
+ }
125
+ key = foundIndex;
126
+ current = parent[foundIndex];
127
+ }
128
+ }
129
+ return { parent, key };
130
+ }
131
+ function ensurePath(root, segments) {
132
+ if (segments.length === 0) {
133
+ return { parent: root, key: null };
134
+ }
135
+ let current = root;
136
+ let parent = null;
137
+ let key = null;
138
+ for (let i = 0; i < segments.length; i++) {
139
+ const segment = segments[i];
140
+ const next = segments[i + 1];
141
+ parent = current;
142
+ if (segment.kind === 'field') {
143
+ key = segment.key;
144
+ if (parent == null) {
145
+ throw new Error('ensurePath encountered null/undefined parent before field segment');
146
+ }
147
+ // If this field is followed by an index/id segment, it represents
148
+ // an array-like field (e.g. "content[0]", "reviews[id=...]"),
149
+ // so initialise it as [] when missing. Otherwise initialise as {}.
150
+ const isArrayLikeNext = next && (next.kind === 'index' || next.kind === 'id');
151
+ if (parent[key] === undefined || parent[key] === null) {
152
+ parent[key] = isArrayLikeNext ? [] : {};
153
+ }
154
+ current = parent[key];
155
+ }
156
+ else if (segment.kind === 'index') {
157
+ if (parent == null) {
158
+ throw new Error('ensurePath encountered null/undefined parent before index segment');
159
+ }
160
+ if (!Array.isArray(parent)) {
161
+ throw new Error('ensurePath expected array parent for index segment');
162
+ }
163
+ key = segment.index;
164
+ if (parent[key] === undefined || parent[key] === null) {
165
+ parent[key] = {};
166
+ }
167
+ current = parent[key];
168
+ }
169
+ else if (segment.kind === 'id') {
170
+ if (parent == null) {
171
+ throw new Error('ensurePath encountered null/undefined parent before id segment');
172
+ }
173
+ if (!Array.isArray(parent)) {
174
+ throw new Error('ensurePath expected array parent for id segment');
175
+ }
176
+ let idx = parent.findIndex((item) => item && item._id === segment.id);
177
+ if (idx === -1) {
178
+ idx = parent.length;
179
+ parent.push({ _id: segment.id });
180
+ }
181
+ key = idx;
182
+ current = parent[idx];
183
+ }
184
+ }
185
+ return { parent, key };
186
+ }
187
+ function applyFieldPatch(doc, patch) {
188
+ const segments = parsePatchPath(patch.path);
189
+ if (segments.length === 0) {
190
+ throw new Error('Empty path for field patch');
191
+ }
192
+ if (patch.kind === 'field.set') {
193
+ const { parent, key } = ensurePath(doc, segments);
194
+ if (key === null)
195
+ throw new Error('Invalid target for field.set');
196
+ parent[key] = patch.value;
197
+ }
198
+ else if (patch.kind === 'field.clear') {
199
+ const { parent, key } = getBySegments(doc, segments);
200
+ if (parent && key !== null && Object.hasOwn(parent, key)) {
201
+ if (Array.isArray(parent) && typeof key === 'number') {
202
+ parent.splice(key, 1);
203
+ }
204
+ else {
205
+ delete parent[key];
206
+ }
207
+ }
208
+ }
209
+ }
210
+ function resolveArrayAtPath(doc, path) {
211
+ const segments = parsePatchPath(path);
212
+ const { parent, key } = ensurePath(doc, segments);
213
+ if (key === null) {
214
+ throw new Error('Array path must point to an array field');
215
+ }
216
+ if (!Array.isArray(parent[key])) {
217
+ parent[key] = [];
218
+ }
219
+ return parent[key];
220
+ }
221
+ function applyArrayPatch(doc, patch, definition) {
222
+ const array = resolveArrayAtPath(doc, patch.path);
223
+ if (patch.kind === 'array.insert') {
224
+ const index = patch.index ?? array.length;
225
+ array.splice(index, 0, patch.item);
226
+ }
227
+ else if (patch.kind === 'array.move') {
228
+ const currentIndex = array.findIndex((item) => item && item._id === patch.itemId);
229
+ // Fallback for arrays without stable ids: treat itemId as an index
230
+ const index = currentIndex === -1 ? Number.parseInt(patch.itemId, 10) : currentIndex;
231
+ if (!Number.isFinite(index) || index < 0 || index >= array.length) {
232
+ throw new Error(`array.move: item with idOrIndex=${patch.itemId} not found`);
233
+ }
234
+ const [moved] = array.splice(index, 1);
235
+ const toIndex = patch.toIndex ?? array.length;
236
+ array.splice(toIndex, 0, moved);
237
+ }
238
+ else if (patch.kind === 'array.remove') {
239
+ const index = array.findIndex((item) => item && item._id === patch.itemId);
240
+ if (index === -1) {
241
+ return;
242
+ }
243
+ array.splice(index, 1);
244
+ }
245
+ else if (patch.kind === 'array.updateItem') {
246
+ const index = array.findIndex((item) => item && item._id === patch.itemId);
247
+ if (index === -1) {
248
+ throw new Error(`array.updateItem: item with id=${patch.itemId} not found`);
249
+ }
250
+ const current = array[index];
251
+ const { doc: updated, errors } = applyPatches(definition, current, patch.patches);
252
+ if (errors.length > 0) {
253
+ throw new Error(`array.updateItem produced nested errors: ${errors.map((e) => e.message).join('; ')}`);
254
+ }
255
+ array[index] = updated;
256
+ }
257
+ }
258
+ function applyBlockPatch(doc, patch, definition) {
259
+ // Blocks are just arrays of objects with stable ids under the hood.
260
+ const array = resolveArrayAtPath(doc, patch.path);
261
+ if (patch.kind === 'block.add') {
262
+ const _id = crypto.randomUUID();
263
+ const base = { _id, _type: patch.blockType };
264
+ if (patch.initialValue && typeof patch.initialValue === 'object') {
265
+ Object.assign(base, patch.initialValue);
266
+ }
267
+ const index = patch.index ?? array.length;
268
+ array.splice(index, 0, base);
269
+ }
270
+ else if (patch.kind === 'block.move') {
271
+ const index = array.findIndex((item) => item && item._id === patch.blockId);
272
+ if (index === -1) {
273
+ throw new Error(`block.move: block with id=${patch.blockId} not found`);
274
+ }
275
+ const [item] = array.splice(index, 1);
276
+ const toIndex = Math.max(0, Math.min(patch.toIndex, array.length));
277
+ array.splice(toIndex, 0, item);
278
+ }
279
+ else if (patch.kind === 'block.remove') {
280
+ const index = array.findIndex((item) => item && item._id === patch.blockId);
281
+ if (index === -1) {
282
+ return;
283
+ }
284
+ array.splice(index, 1);
285
+ }
286
+ else if (patch.kind === 'block.updateField') {
287
+ const index = array.findIndex((item) => item && item._id === patch.blockId);
288
+ if (index === -1) {
289
+ throw new Error(`block.updateField: block with id=${patch.blockId} not found`);
290
+ }
291
+ const block = array[index];
292
+ const fieldPatch = {
293
+ kind: 'field.set',
294
+ path: patch.fieldPath,
295
+ value: patch.value,
296
+ };
297
+ const { doc: updated, errors } = applyPatches(definition, block, [fieldPatch]);
298
+ if (errors.length > 0) {
299
+ throw new Error(`block.updateField produced nested errors: ${errors.map((e) => e.message).join('; ')}`);
300
+ }
301
+ array[index] = updated;
302
+ }
303
+ }
304
+ // Main entry point: apply all patches against a cloned document.
305
+ export function applyPatches(definition, doc, patches) {
306
+ const working = structuredClone(doc);
307
+ const errors = [];
308
+ const warnings = [];
309
+ patches.forEach((patch, index) => {
310
+ try {
311
+ // Best-effort schema-aware validation: warn (but don't reject) patches
312
+ // whose paths do not resolve against the collection definition. This is
313
+ // intentionally conservative — the resolver only understands a subset of
314
+ // the path grammar, so a null result does not necessarily mean the path
315
+ // is invalid.
316
+ const resolvedField = resolveFieldForPath(definition, patch.path);
317
+ if (!resolvedField) {
318
+ warnings.push({
319
+ index,
320
+ message: `Patch path could not be resolved against schema: ${String(patch.path ?? '')}`,
321
+ patch,
322
+ });
323
+ }
324
+ if (patch.kind === 'field.set' || patch.kind === 'field.clear') {
325
+ applyFieldPatch(working, patch);
326
+ }
327
+ else if (patch.kind === 'array.insert' ||
328
+ patch.kind === 'array.move' ||
329
+ patch.kind === 'array.remove' ||
330
+ patch.kind === 'array.updateItem') {
331
+ applyArrayPatch(working, patch, definition);
332
+ }
333
+ else if (patch.kind === 'block.add' ||
334
+ patch.kind === 'block.move' ||
335
+ patch.kind === 'block.remove' ||
336
+ patch.kind === 'block.updateField') {
337
+ applyBlockPatch(working, patch, definition);
338
+ }
339
+ else {
340
+ errors.push({
341
+ index,
342
+ message: `Unsupported patch kind: ${patch.kind}`,
343
+ patch,
344
+ });
345
+ }
346
+ }
347
+ catch (err) {
348
+ errors.push({
349
+ index,
350
+ message: err instanceof Error ? err.message : 'Unknown patch error',
351
+ patch,
352
+ });
353
+ }
354
+ });
355
+ return { doc: working, errors, warnings };
356
+ }
357
+ //# sourceMappingURL=apply-patches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-patches.js","sourceRoot":"","sources":["../../src/patches/apply-patches.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './apply-patches.js';
2
+ export * from './patch-types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patches/index.ts"],"names":[],"mappings":"AAEA,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,4 @@
1
+ // packages/byline/src/patches/index.ts
2
+ export * from './apply-patches.js';
3
+ export * from './patch-types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patches/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,82 @@
1
+ import type { CollectionDefinition } from '../@types/collection-types.js';
2
+ /** Dot-notation path addressing a field within a document. */
3
+ export type PatchPath = string;
4
+ export interface BasePatch {
5
+ opId?: string;
6
+ timestamp?: string;
7
+ }
8
+ export interface FieldSetPatch extends BasePatch {
9
+ kind: 'field.set';
10
+ path: PatchPath;
11
+ value: unknown;
12
+ }
13
+ export interface FieldClearPatch extends BasePatch {
14
+ kind: 'field.clear';
15
+ path: PatchPath;
16
+ }
17
+ export type FieldPatch = FieldSetPatch | FieldClearPatch;
18
+ export interface ArrayInsertPatch extends BasePatch {
19
+ kind: 'array.insert';
20
+ path: PatchPath;
21
+ index?: number;
22
+ item: unknown;
23
+ }
24
+ export interface ArrayMovePatch extends BasePatch {
25
+ kind: 'array.move';
26
+ path: PatchPath;
27
+ itemId: string;
28
+ toIndex: number;
29
+ }
30
+ export interface ArrayRemovePatch extends BasePatch {
31
+ kind: 'array.remove';
32
+ path: PatchPath;
33
+ itemId: string;
34
+ }
35
+ export interface ArrayUpdateItemPatch extends BasePatch {
36
+ kind: 'array.updateItem';
37
+ path: PatchPath;
38
+ itemId: string;
39
+ patches: DocumentPatch[];
40
+ }
41
+ export type ArrayPatch = ArrayInsertPatch | ArrayMovePatch | ArrayRemovePatch | ArrayUpdateItemPatch;
42
+ export interface BlockAddPatch extends BasePatch {
43
+ kind: 'block.add';
44
+ path: PatchPath;
45
+ index?: number;
46
+ blockType: string;
47
+ initialValue?: unknown;
48
+ }
49
+ export interface BlockMovePatch extends BasePatch {
50
+ kind: 'block.move';
51
+ path: PatchPath;
52
+ blockId: string;
53
+ toIndex: number;
54
+ }
55
+ export interface BlockRemovePatch extends BasePatch {
56
+ kind: 'block.remove';
57
+ path: PatchPath;
58
+ blockId: string;
59
+ }
60
+ export interface BlockUpdateFieldPatch extends BasePatch {
61
+ kind: 'block.updateField';
62
+ path: PatchPath;
63
+ blockId: string;
64
+ fieldPath: PatchPath;
65
+ value: unknown;
66
+ }
67
+ export type BlockPatch = BlockAddPatch | BlockMovePatch | BlockRemovePatch | BlockUpdateFieldPatch;
68
+ export type DocumentPatch = FieldPatch | ArrayPatch | BlockPatch;
69
+ export interface PatchError {
70
+ index: number;
71
+ message: string;
72
+ patch: DocumentPatch;
73
+ }
74
+ export interface ApplyPatchesResult {
75
+ doc: unknown;
76
+ errors: PatchError[];
77
+ warnings: PatchError[];
78
+ }
79
+ export interface PatchContext {
80
+ definition: CollectionDefinition;
81
+ }
82
+ //# sourceMappingURL=patch-types.d.ts.map