@nascentdigital/funnel-core 4.4.4

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 (368) hide show
  1. package/dist/app/AppConfig.d.ts +41 -0
  2. package/dist/app/AppConfig.js +93 -0
  3. package/dist/app/BrandConfig.d.ts +13 -0
  4. package/dist/app/BrandConfig.js +2 -0
  5. package/dist/app/FeaturesConfig.d.ts +6 -0
  6. package/dist/app/FeaturesConfig.js +2 -0
  7. package/dist/app/RegionsConfig.d.ts +43 -0
  8. package/dist/app/RegionsConfig.js +113 -0
  9. package/dist/app/UIConfig.d.ts +4 -0
  10. package/dist/app/UIConfig.js +2 -0
  11. package/dist/app/index.d.ts +5 -0
  12. package/dist/app/index.js +21 -0
  13. package/dist/consent/ConsentCategory.d.ts +12 -0
  14. package/dist/consent/ConsentCategory.js +28 -0
  15. package/dist/consent/ConsentService.d.ts +15 -0
  16. package/dist/consent/ConsentService.js +37 -0
  17. package/dist/consent/index.d.ts +2 -0
  18. package/dist/consent/index.js +18 -0
  19. package/dist/errors/IsometricError.d.ts +19 -0
  20. package/dist/errors/IsometricError.js +30 -0
  21. package/dist/errors/IsometricErrorModule.d.ts +11 -0
  22. package/dist/errors/IsometricErrorModule.js +2 -0
  23. package/dist/errors/IsometricErrorUtils.d.ts +9 -0
  24. package/dist/errors/IsometricErrorUtils.js +85 -0
  25. package/dist/errors/SerializedIsometricError.d.ts +10 -0
  26. package/dist/errors/SerializedIsometricError.js +15 -0
  27. package/dist/errors/api/ApiError.d.ts +15 -0
  28. package/dist/errors/api/ApiError.js +23 -0
  29. package/dist/errors/api/ApiErrors.d.ts +7 -0
  30. package/dist/errors/api/ApiErrors.js +67 -0
  31. package/dist/errors/api/ArgumentError.d.ts +7 -0
  32. package/dist/errors/api/ArgumentError.js +18 -0
  33. package/dist/errors/api/ConcurrencyError.d.ts +4 -0
  34. package/dist/errors/api/ConcurrencyError.js +11 -0
  35. package/dist/errors/api/ConflictError.d.ts +4 -0
  36. package/dist/errors/api/ConflictError.js +11 -0
  37. package/dist/errors/api/DependencyError.d.ts +4 -0
  38. package/dist/errors/api/DependencyError.js +11 -0
  39. package/dist/errors/api/IllegalStateError.d.ts +4 -0
  40. package/dist/errors/api/IllegalStateError.js +11 -0
  41. package/dist/errors/api/InvalidOperationError.d.ts +4 -0
  42. package/dist/errors/api/InvalidOperationError.js +11 -0
  43. package/dist/errors/api/NotAuthenticatedError.d.ts +4 -0
  44. package/dist/errors/api/NotAuthenticatedError.js +11 -0
  45. package/dist/errors/api/NotAuthorizedError.d.ts +4 -0
  46. package/dist/errors/api/NotAuthorizedError.js +11 -0
  47. package/dist/errors/api/NotAvailableError.d.ts +4 -0
  48. package/dist/errors/api/NotAvailableError.js +11 -0
  49. package/dist/errors/api/NotFoundError.d.ts +4 -0
  50. package/dist/errors/api/NotFoundError.js +11 -0
  51. package/dist/errors/api/NotImplementedError.d.ts +4 -0
  52. package/dist/errors/api/NotImplementedError.js +11 -0
  53. package/dist/errors/api/OfflineError.d.ts +4 -0
  54. package/dist/errors/api/OfflineError.js +11 -0
  55. package/dist/errors/api/RangeError.d.ts +4 -0
  56. package/dist/errors/api/RangeError.js +11 -0
  57. package/dist/errors/api/ServerError.d.ts +4 -0
  58. package/dist/errors/api/ServerError.js +11 -0
  59. package/dist/errors/api/TimeoutError.d.ts +4 -0
  60. package/dist/errors/api/TimeoutError.js +11 -0
  61. package/dist/errors/api/index.d.ts +16 -0
  62. package/dist/errors/api/index.js +32 -0
  63. package/dist/errors/index.d.ts +5 -0
  64. package/dist/errors/index.js +26 -0
  65. package/dist/forms/FormModel.d.ts +47 -0
  66. package/dist/forms/FormModel.js +149 -0
  67. package/dist/forms/Forms.d.ts +15 -0
  68. package/dist/forms/Forms.js +35 -0
  69. package/dist/forms/IFormService.d.ts +6 -0
  70. package/dist/forms/IFormService.js +2 -0
  71. package/dist/forms/TranslateSchema.d.ts +8 -0
  72. package/dist/forms/TranslateSchema.js +2 -0
  73. package/dist/forms/index.d.ts +4 -0
  74. package/dist/forms/index.js +20 -0
  75. package/dist/index.d.ts +10 -0
  76. package/dist/index.js +49 -0
  77. package/dist/regionalization/Country.d.ts +266 -0
  78. package/dist/regionalization/Country.js +338 -0
  79. package/dist/regionalization/Language.d.ts +199 -0
  80. package/dist/regionalization/Language.js +237 -0
  81. package/dist/regionalization/Locale.d.ts +28 -0
  82. package/dist/regionalization/Locale.js +49 -0
  83. package/dist/regionalization/Localized.d.ts +10 -0
  84. package/dist/regionalization/Localized.js +36 -0
  85. package/dist/regionalization/LocalizedCopy.d.ts +9 -0
  86. package/dist/regionalization/LocalizedCopy.js +26 -0
  87. package/dist/regionalization/Regionalization.d.ts +50 -0
  88. package/dist/regionalization/Regionalization.js +260 -0
  89. package/dist/regionalization/Regions.d.ts +2 -0
  90. package/dist/regionalization/Regions.js +2 -0
  91. package/dist/regionalization/index.d.ts +7 -0
  92. package/dist/regionalization/index.js +23 -0
  93. package/dist/schema/Asset.d.ts +23 -0
  94. package/dist/schema/Asset.js +36 -0
  95. package/dist/schema/AssetScope.d.ts +75 -0
  96. package/dist/schema/AssetScope.js +146 -0
  97. package/dist/schema/Block.d.ts +105 -0
  98. package/dist/schema/Block.js +122 -0
  99. package/dist/schema/ChangeSet.d.ts +108 -0
  100. package/dist/schema/ChangeSet.js +187 -0
  101. package/dist/schema/Collection.d.ts +197 -0
  102. package/dist/schema/Collection.js +165 -0
  103. package/dist/schema/CollectionModel.d.ts +30 -0
  104. package/dist/schema/CollectionModel.js +383 -0
  105. package/dist/schema/CollectionSnapshot.d.ts +11 -0
  106. package/dist/schema/CollectionSnapshot.js +12 -0
  107. package/dist/schema/Fields.d.ts +31 -0
  108. package/dist/schema/Fields.js +21 -0
  109. package/dist/schema/Form.d.ts +31 -0
  110. package/dist/schema/Form.js +23 -0
  111. package/dist/schema/LinkedCollectionModel.d.ts +9 -0
  112. package/dist/schema/LinkedCollectionModel.js +19 -0
  113. package/dist/schema/LinkedData.d.ts +44 -0
  114. package/dist/schema/LinkedData.js +288 -0
  115. package/dist/schema/LinkedPageModel.d.ts +11 -0
  116. package/dist/schema/LinkedPageModel.js +26 -0
  117. package/dist/schema/Optional.d.ts +23 -0
  118. package/dist/schema/Optional.js +34 -0
  119. package/dist/schema/Page.d.ts +299 -0
  120. package/dist/schema/Page.js +244 -0
  121. package/dist/schema/PageModel.d.ts +58 -0
  122. package/dist/schema/PageModel.js +881 -0
  123. package/dist/schema/PageQuery.d.ts +60 -0
  124. package/dist/schema/PageQuery.js +116 -0
  125. package/dist/schema/PageRoute.d.ts +7 -0
  126. package/dist/schema/PageRoute.js +48 -0
  127. package/dist/schema/PageSnapshot.d.ts +11 -0
  128. package/dist/schema/PageSnapshot.js +12 -0
  129. package/dist/schema/Section.d.ts +71 -0
  130. package/dist/schema/Section.js +35 -0
  131. package/dist/schema/Seo.d.ts +13 -0
  132. package/dist/schema/Seo.js +25 -0
  133. package/dist/schema/Site.d.ts +40 -0
  134. package/dist/schema/Site.js +87 -0
  135. package/dist/schema/SiteModel.d.ts +5 -0
  136. package/dist/schema/SiteModel.js +10 -0
  137. package/dist/schema/Tag.d.ts +28 -0
  138. package/dist/schema/Tag.js +59 -0
  139. package/dist/schema/TagGroup.d.ts +26 -0
  140. package/dist/schema/TagGroup.js +64 -0
  141. package/dist/schema/field/Field.d.ts +179 -0
  142. package/dist/schema/field/Field.js +309 -0
  143. package/dist/schema/field/base/AssetField.d.ts +148 -0
  144. package/dist/schema/field/base/AssetField.js +206 -0
  145. package/dist/schema/field/base/BooleanField.d.ts +21 -0
  146. package/dist/schema/field/base/BooleanField.js +38 -0
  147. package/dist/schema/field/base/CollectionField.d.ts +34 -0
  148. package/dist/schema/field/base/CollectionField.js +85 -0
  149. package/dist/schema/field/base/DateField.d.ts +21 -0
  150. package/dist/schema/field/base/DateField.js +37 -0
  151. package/dist/schema/field/base/DynamicPagesField.d.ts +36 -0
  152. package/dist/schema/field/base/DynamicPagesField.js +50 -0
  153. package/dist/schema/field/base/EmbeddedVideoField.d.ts +45 -0
  154. package/dist/schema/field/base/EmbeddedVideoField.js +176 -0
  155. package/dist/schema/field/base/EnumField.d.ts +40 -0
  156. package/dist/schema/field/base/EnumField.js +131 -0
  157. package/dist/schema/field/base/FormField.d.ts +25 -0
  158. package/dist/schema/field/base/FormField.js +48 -0
  159. package/dist/schema/field/base/LinkField.d.ts +103 -0
  160. package/dist/schema/field/base/LinkField.js +201 -0
  161. package/dist/schema/field/base/PageField.d.ts +46 -0
  162. package/dist/schema/field/base/PageField.js +83 -0
  163. package/dist/schema/field/base/RichTextField.d.ts +71 -0
  164. package/dist/schema/field/base/RichTextField.js +196 -0
  165. package/dist/schema/field/base/TextField.d.ts +33 -0
  166. package/dist/schema/field/base/TextField.js +86 -0
  167. package/dist/schema/field/base/TimestampField.d.ts +25 -0
  168. package/dist/schema/field/base/TimestampField.js +41 -0
  169. package/dist/schema/field/base/index.d.ts +13 -0
  170. package/dist/schema/field/base/index.js +29 -0
  171. package/dist/schema/field/composite/ListField.d.ts +47 -0
  172. package/dist/schema/field/composite/ListField.js +107 -0
  173. package/dist/schema/field/composite/ObjectField.d.ts +56 -0
  174. package/dist/schema/field/composite/ObjectField.js +19 -0
  175. package/dist/schema/field/composite/index.d.ts +2 -0
  176. package/dist/schema/field/composite/index.js +18 -0
  177. package/dist/schema/field/index.d.ts +3 -0
  178. package/dist/schema/field/index.js +19 -0
  179. package/dist/schema/index.d.ts +25 -0
  180. package/dist/schema/index.js +41 -0
  181. package/dist/services/EventBus.d.ts +17 -0
  182. package/dist/services/EventBus.js +37 -0
  183. package/dist/services/humanVerification/IHumanVerification.d.ts +8 -0
  184. package/dist/services/humanVerification/IHumanVerification.js +2 -0
  185. package/dist/services/humanVerification/index.d.ts +1 -0
  186. package/dist/services/humanVerification/index.js +17 -0
  187. package/dist/services/index.d.ts +3 -0
  188. package/dist/services/index.js +19 -0
  189. package/dist/services/leadGen/Contact.d.ts +40 -0
  190. package/dist/services/leadGen/Contact.js +38 -0
  191. package/dist/services/leadGen/ILeadGen.d.ts +16 -0
  192. package/dist/services/leadGen/ILeadGen.js +2 -0
  193. package/dist/services/leadGen/index.d.ts +2 -0
  194. package/dist/services/leadGen/index.js +18 -0
  195. package/dist/types/BoxedValue.d.ts +3 -0
  196. package/dist/types/BoxedValue.js +2 -0
  197. package/dist/types/Callback.d.ts +9 -0
  198. package/dist/types/Callback.js +2 -0
  199. package/dist/types/DateString.d.ts +35 -0
  200. package/dist/types/DateString.js +172 -0
  201. package/dist/types/FilterConditionally.d.ts +3 -0
  202. package/dist/types/FilterConditionally.js +2 -0
  203. package/dist/types/MaybeConditionalValue.d.ts +8 -0
  204. package/dist/types/MaybeConditionalValue.js +12 -0
  205. package/dist/types/Ordinal.d.ts +17 -0
  206. package/dist/types/Ordinal.js +38 -0
  207. package/dist/types/OverridableStringUnion.d.ts +2 -0
  208. package/dist/types/OverridableStringUnion.js +2 -0
  209. package/dist/types/PartialBy.d.ts +1 -0
  210. package/dist/types/PartialBy.js +2 -0
  211. package/dist/types/PickData.d.ts +6 -0
  212. package/dist/types/PickData.js +2 -0
  213. package/dist/types/Provider.d.ts +4 -0
  214. package/dist/types/Provider.js +2 -0
  215. package/dist/types/RequiredBy.d.ts +1 -0
  216. package/dist/types/RequiredBy.js +2 -0
  217. package/dist/types/Result.d.ts +16 -0
  218. package/dist/types/Result.js +2 -0
  219. package/dist/types/Timestamp.d.ts +17 -0
  220. package/dist/types/Timestamp.js +57 -0
  221. package/dist/types/Transform.d.ts +4 -0
  222. package/dist/types/Transform.js +2 -0
  223. package/dist/types/index.d.ts +14 -0
  224. package/dist/types/index.js +30 -0
  225. package/dist/ui/Accessible.d.ts +5 -0
  226. package/dist/ui/Accessible.js +15 -0
  227. package/dist/ui/BlockThemes.d.ts +19 -0
  228. package/dist/ui/BlockThemes.js +29 -0
  229. package/dist/ui/ColorMode.d.ts +12 -0
  230. package/dist/ui/ColorMode.js +49 -0
  231. package/dist/ui/File.d.ts +43 -0
  232. package/dist/ui/File.js +55 -0
  233. package/dist/ui/FileType.d.ts +8 -0
  234. package/dist/ui/FileType.js +48 -0
  235. package/dist/ui/ImageSource.d.ts +12 -0
  236. package/dist/ui/ImageSource.js +48 -0
  237. package/dist/ui/MimeType.d.ts +28 -0
  238. package/dist/ui/MimeType.js +110 -0
  239. package/dist/ui/Placement.d.ts +21 -0
  240. package/dist/ui/Placement.js +135 -0
  241. package/dist/ui/Position.d.ts +6 -0
  242. package/dist/ui/Position.js +42 -0
  243. package/dist/ui/Selector.d.ts +6 -0
  244. package/dist/ui/Selector.js +23 -0
  245. package/dist/ui/SemanticColor.d.ts +8 -0
  246. package/dist/ui/SemanticColor.js +237 -0
  247. package/dist/ui/Visual.d.ts +24 -0
  248. package/dist/ui/Visual.js +66 -0
  249. package/dist/ui/block-layout/BlockLayout.d.ts +99 -0
  250. package/dist/ui/block-layout/BlockLayout.js +286 -0
  251. package/dist/ui/block-layout/index.d.ts +1 -0
  252. package/dist/ui/block-layout/index.js +17 -0
  253. package/dist/ui/browser/BlurHasher.d.ts +13 -0
  254. package/dist/ui/browser/BlurHasher.js +76 -0
  255. package/dist/ui/browser/Browser.d.ts +107 -0
  256. package/dist/ui/browser/Browser.js +313 -0
  257. package/dist/ui/browser/ImageProxy.d.ts +30 -0
  258. package/dist/ui/browser/ImageProxy.js +132 -0
  259. package/dist/ui/browser/InputEvent.d.ts +13 -0
  260. package/dist/ui/browser/InputEvent.js +2 -0
  261. package/dist/ui/browser/SVGProxy.d.ts +9 -0
  262. package/dist/ui/browser/SVGProxy.js +59 -0
  263. package/dist/ui/browser/VideoProxy.d.ts +42 -0
  264. package/dist/ui/browser/VideoProxy.js +235 -0
  265. package/dist/ui/browser/index.d.ts +6 -0
  266. package/dist/ui/browser/index.js +22 -0
  267. package/dist/ui/fields/Field.d.ts +80 -0
  268. package/dist/ui/fields/Field.js +298 -0
  269. package/dist/ui/fields/FieldList.d.ts +80 -0
  270. package/dist/ui/fields/FieldList.js +421 -0
  271. package/dist/ui/fields/FieldListValidator.d.ts +9 -0
  272. package/dist/ui/fields/FieldListValidator.js +37 -0
  273. package/dist/ui/fields/FieldModel.d.ts +15 -0
  274. package/dist/ui/fields/FieldModel.js +28 -0
  275. package/dist/ui/fields/FieldSerializer.d.ts +13 -0
  276. package/dist/ui/fields/FieldSerializer.js +71 -0
  277. package/dist/ui/fields/FieldValidator.d.ts +19 -0
  278. package/dist/ui/fields/FieldValidator.js +98 -0
  279. package/dist/ui/fields/ObjectField.d.ts +75 -0
  280. package/dist/ui/fields/ObjectField.js +288 -0
  281. package/dist/ui/fields/errors.json +44 -0
  282. package/dist/ui/fields/index.d.ts +7 -0
  283. package/dist/ui/fields/index.js +23 -0
  284. package/dist/ui/fields/validators/AssetValidator.d.ts +9 -0
  285. package/dist/ui/fields/validators/AssetValidator.js +25 -0
  286. package/dist/ui/fields/validators/DateValidator.d.ts +9 -0
  287. package/dist/ui/fields/validators/DateValidator.js +41 -0
  288. package/dist/ui/fields/validators/EnumValidator.d.ts +10 -0
  289. package/dist/ui/fields/validators/EnumValidator.js +77 -0
  290. package/dist/ui/fields/validators/GenericValidator.d.ts +6 -0
  291. package/dist/ui/fields/validators/GenericValidator.js +22 -0
  292. package/dist/ui/fields/validators/LinkValidator.d.ts +9 -0
  293. package/dist/ui/fields/validators/LinkValidator.js +146 -0
  294. package/dist/ui/fields/validators/RichTextValidator.d.ts +6 -0
  295. package/dist/ui/fields/validators/RichTextValidator.js +35 -0
  296. package/dist/ui/fields/validators/TextValidator.d.ts +10 -0
  297. package/dist/ui/fields/validators/TextValidator.js +138 -0
  298. package/dist/ui/fields/validators/TimestampValidator.d.ts +9 -0
  299. package/dist/ui/fields/validators/TimestampValidator.js +41 -0
  300. package/dist/ui/fields/validators/ValidatorHelper.d.ts +23 -0
  301. package/dist/ui/fields/validators/ValidatorHelper.js +55 -0
  302. package/dist/ui/fields/validators/index.d.ts +8 -0
  303. package/dist/ui/fields/validators/index.js +24 -0
  304. package/dist/ui/geometry/AspectRatio.d.ts +27 -0
  305. package/dist/ui/geometry/AspectRatio.js +77 -0
  306. package/dist/ui/geometry/Bounds.d.ts +4 -0
  307. package/dist/ui/geometry/Bounds.js +11 -0
  308. package/dist/ui/geometry/Frame.d.ts +3 -0
  309. package/dist/ui/geometry/Frame.js +2 -0
  310. package/dist/ui/geometry/Insets.d.ts +14 -0
  311. package/dist/ui/geometry/Insets.js +14 -0
  312. package/dist/ui/geometry/PixelSize.d.ts +1 -0
  313. package/dist/ui/geometry/PixelSize.js +2 -0
  314. package/dist/ui/geometry/Point.d.ts +7 -0
  315. package/dist/ui/geometry/Point.js +15 -0
  316. package/dist/ui/geometry/Rect.d.ts +19 -0
  317. package/dist/ui/geometry/Rect.js +68 -0
  318. package/dist/ui/geometry/ScreenSize.d.ts +1 -0
  319. package/dist/ui/geometry/ScreenSize.js +2 -0
  320. package/dist/ui/geometry/Size.d.ts +7 -0
  321. package/dist/ui/geometry/Size.js +9 -0
  322. package/dist/ui/geometry/index.d.ts +9 -0
  323. package/dist/ui/geometry/index.js +25 -0
  324. package/dist/ui/index.d.ts +18 -0
  325. package/dist/ui/index.js +34 -0
  326. package/dist/ui/responsive/Breakpoint.d.ts +8 -0
  327. package/dist/ui/responsive/Breakpoint.js +24 -0
  328. package/dist/ui/responsive/BreakpointObserver.d.ts +16 -0
  329. package/dist/ui/responsive/BreakpointObserver.js +104 -0
  330. package/dist/ui/responsive/Breakpoints.d.ts +5 -0
  331. package/dist/ui/responsive/Breakpoints.js +15 -0
  332. package/dist/ui/responsive/ResponsiveValue.d.ts +7 -0
  333. package/dist/ui/responsive/ResponsiveValue.js +26 -0
  334. package/dist/ui/responsive/index.d.ts +4 -0
  335. package/dist/ui/responsive/index.js +20 -0
  336. package/dist/ui/richtext/LexicalUtils.d.ts +31 -0
  337. package/dist/ui/richtext/LexicalUtils.js +314 -0
  338. package/dist/ui/richtext/StyledTextNode.d.ts +33 -0
  339. package/dist/ui/richtext/StyledTextNode.js +101 -0
  340. package/dist/ui/richtext/index.d.ts +2 -0
  341. package/dist/ui/richtext/index.js +18 -0
  342. package/dist/utils/ArrayUtils.d.ts +17 -0
  343. package/dist/utils/ArrayUtils.js +66 -0
  344. package/dist/utils/ByteSize.d.ts +19 -0
  345. package/dist/utils/ByteSize.js +33 -0
  346. package/dist/utils/DateUtils.d.ts +15 -0
  347. package/dist/utils/DateUtils.js +100 -0
  348. package/dist/utils/Deferral.d.ts +28 -0
  349. package/dist/utils/Deferral.js +107 -0
  350. package/dist/utils/Duration.d.ts +7 -0
  351. package/dist/utils/Duration.js +35 -0
  352. package/dist/utils/Fn.d.ts +14 -0
  353. package/dist/utils/Fn.js +52 -0
  354. package/dist/utils/ObjectUtils.d.ts +89 -0
  355. package/dist/utils/ObjectUtils.js +159 -0
  356. package/dist/utils/Random.d.ts +15 -0
  357. package/dist/utils/Random.js +72 -0
  358. package/dist/utils/StringUtils.d.ts +10 -0
  359. package/dist/utils/StringUtils.js +51 -0
  360. package/dist/utils/UrlUtils.d.ts +22 -0
  361. package/dist/utils/UrlUtils.js +119 -0
  362. package/dist/utils/Value.d.ts +23 -0
  363. package/dist/utils/Value.js +122 -0
  364. package/dist/utils/index.d.ts +12 -0
  365. package/dist/utils/index.js +28 -0
  366. package/dist/utils/isDefined.d.ts +1 -0
  367. package/dist/utils/isDefined.js +6 -0
  368. package/package.json +64 -0
@@ -0,0 +1,105 @@
1
+ import { Transform } from '../types';
2
+ import { BlockLayout } from '../ui/block-layout';
3
+ import { Field } from './field';
4
+ import { Fields } from './Fields';
5
+ import { Optional } from './Optional';
6
+ export declare class Block<TId extends string = string, TFields extends Fields = any, TConfig extends Block.Config = any> {
7
+ readonly type = "block";
8
+ readonly id: TId;
9
+ readonly name: string;
10
+ readonly hint?: string;
11
+ readonly required: boolean;
12
+ readonly version: number;
13
+ readonly fields: TFields;
14
+ readonly editableFields: Fields.UnwrapOptional<TFields>;
15
+ readonly config: Block.Config.UnwrapOptional<TConfig>;
16
+ readonly getConfig?: Block.GetConfig<TConfig, TFields>;
17
+ readonly getLayout?: Block.GetLayout<TConfig, TFields>;
18
+ private constructor();
19
+ optional(): Optional<Block<TId, TFields, TConfig>>;
20
+ unwrap(): this;
21
+ modify(args: Block.ModifyArgs<TId, TFields, TConfig>): Block<TId, TFields, TConfig>;
22
+ rename(name: string): Block<TId, TFields, TConfig>;
23
+ hide(...keys: ReadonlyArray<Fields.OptionalKeys<TFields>>): Block<TId, TFields, TConfig>;
24
+ override(override: Fields.Override<TFields>): Block<TId, TFields, TConfig>;
25
+ extend<TAdditionalFields extends Fields>(fields: TAdditionalFields): Block<TId, TFields & TAdditionalFields, TConfig>;
26
+ static create<TId extends string, TFields extends Fields, TConfig extends Block.Config>(args: Block.FactoryArgs<TId, TFields, TConfig>): Block<TId, TFields, TConfig>;
27
+ }
28
+ export declare namespace Block {
29
+ type GetConfig<TConfig extends Config = Config, TFields extends Fields = Fields> = Transform<GetConfig.Args<TConfig, TFields>, GetConfig.Result<TConfig>>;
30
+ namespace GetConfig {
31
+ type Args<TConfig extends Config, TFields extends Fields> = {
32
+ config: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>>;
33
+ configSchema: Config.UnwrapOptional<TConfig>;
34
+ fields: Partial<Data.ForFields<TFields>> | Partial<LinkedData.ForFields<TFields>>;
35
+ };
36
+ type Result<TConfig extends Config> = {
37
+ updatedConfig?: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>>;
38
+ defaultConfig?: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>>;
39
+ updatedConfigSchema?: Partial<Config.UnwrapOptional<TConfig>>;
40
+ };
41
+ }
42
+ type GetLayout<TConfig extends Config = Config, TFields extends Fields = Fields> = Transform<GetLayout.Args<TConfig, TFields>, BlockLayout>;
43
+ namespace GetLayout {
44
+ type Args<TConfig extends Config, TFields extends Fields> = {
45
+ config: Partial<Data.ForConfig<Config.UnwrapOptional<TConfig>>> | Partial<LinkedData.ForConfig<Config.UnwrapOptional<TConfig>>>;
46
+ fields: Partial<Data.ForFields<TFields>> | Partial<LinkedData.ForFields<TFields>>;
47
+ };
48
+ }
49
+ type Config = Record<string, Optional.Maybe<Field.Type.Simple.Configuration>>;
50
+ namespace Config {
51
+ type UnwrapOptional<TConfig extends Config> = {
52
+ [key in keyof TConfig]: Optional.InnerType<TConfig[key]>;
53
+ };
54
+ }
55
+ type Data<T extends Block = Block> = {
56
+ type: 'block';
57
+ id: T['id'];
58
+ version: number;
59
+ config: Data.ForConfig<T['config']>;
60
+ fields: Data.ForFields<T['fields']>;
61
+ };
62
+ namespace Data {
63
+ type ForFields<T extends Fields = Fields> = {
64
+ [key in keyof T as T[key] extends Optional<Field.Type> ? never : key]: Field.Data.ForOptionalType<T[key]>;
65
+ } & {
66
+ [key in keyof T as T[key] extends Optional<Field.Type> ? key : never]?: Field.Data.ForOptionalType<T[key]>;
67
+ };
68
+ type ForOptional<T extends Optional.Maybe<Block> = Optional.Maybe<Block>> = T extends Optional<Block> ? Data<Optional.InnerType<T>> | undefined : T extends Block ? Data<T> : never;
69
+ type ForConfig<T extends Config = Config> = {
70
+ name?: string;
71
+ } & {
72
+ [key in keyof T]: Field.Data<Optional.InnerType<T[key]>>;
73
+ };
74
+ }
75
+ type LinkedData<T extends Block = Block> = Omit<Data<T>, 'fields'> & {
76
+ fields: LinkedData.ForFields<T['fields']>;
77
+ };
78
+ namespace LinkedData {
79
+ type ForFields<T extends Fields = Fields> = {
80
+ [key in keyof T as T[key] extends Optional<Field.Type> ? never : key]: Field.LinkedData.ForOptionalType<T[key]>;
81
+ } & {
82
+ [key in keyof T as T[key] extends Optional<Field.Type> ? key : never]?: Field.LinkedData.ForOptionalType<T[key]>;
83
+ };
84
+ type ForOptional<T extends Optional.Maybe<Block> = Optional.Maybe<Block>> = T extends Optional<Block> ? LinkedData<Optional.InnerType<T>> | undefined : T extends Block ? LinkedData<T> : never;
85
+ type ForConfig<T extends Config = Config> = {
86
+ name?: string;
87
+ } & {
88
+ [key in keyof T]: Field.LinkedData<Optional.InnerType<T[key]>>;
89
+ };
90
+ }
91
+ type ConstructorArgs<TId extends string, TFields extends Fields, TConfig extends Config = Config> = {
92
+ id: TId;
93
+ name: string;
94
+ hint?: string;
95
+ required?: boolean;
96
+ version: number;
97
+ fields: TFields;
98
+ editableFields: Fields.UnwrapOptional<TFields>;
99
+ config?: TConfig;
100
+ getConfig?: GetConfig<TConfig, TFields>;
101
+ getLayout?: GetLayout<TConfig, TFields>;
102
+ };
103
+ type ModifyArgs<TId extends string, TFields extends Fields, TConfig extends Config> = Partial<Pick<ConstructorArgs<TId, TFields, TConfig>, 'name' | 'hint' | 'required'>>;
104
+ type FactoryArgs<TId extends string, TFields extends Fields, TConfig extends Config = Config> = Omit<ConstructorArgs<TId, TFields, TConfig>, 'editableFields' | 'required'>;
105
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Block = void 0;
4
+ const errors_1 = require("../errors");
5
+ const Fields_1 = require("./Fields");
6
+ const Optional_1 = require("./Optional");
7
+ // class
8
+ class Block {
9
+ constructor(args) {
10
+ var _a;
11
+ this.type = 'block';
12
+ // fail if name key/id is included in config
13
+ if (args.config && 'name' in args.config) {
14
+ throw new errors_1.ArgumentError('Block config schemas reserve the "name" key for the built-in name property.');
15
+ }
16
+ // initialize instance variables
17
+ this.id = args.id;
18
+ this.name = args.name;
19
+ this.hint = args.hint;
20
+ this.required = (_a = args.required) !== null && _a !== void 0 ? _a : true;
21
+ this.version = args.version;
22
+ this.fields = args.fields;
23
+ this.editableFields = args.editableFields;
24
+ this.config = args.config
25
+ ? Object.entries(args.config).reduce((fields, [fieldId, field]) => {
26
+ fields[fieldId] = field.unwrap();
27
+ return fields;
28
+ }, {})
29
+ : {};
30
+ this.getConfig = args.getConfig;
31
+ this.getLayout = args.getLayout;
32
+ }
33
+ optional() {
34
+ return new Optional_1.Optional(this);
35
+ }
36
+ unwrap() {
37
+ return this;
38
+ }
39
+ modify(args) {
40
+ // create new block (re-map required fields)
41
+ return new Block(Object.assign({ id: this.id, name: this.name, hint: this.hint, required: this.required, version: this.version, fields: this.fields, editableFields: this.editableFields, config: this.config, getConfig: this.getConfig, getLayout: this.getLayout }, args));
42
+ }
43
+ rename(name) {
44
+ return this.modify({ name });
45
+ }
46
+ hide(...keys) {
47
+ // create new block with removed fields
48
+ return new Block({
49
+ id: this.id,
50
+ name: this.name,
51
+ hint: this.hint,
52
+ version: this.version,
53
+ required: this.required,
54
+ fields: this.fields,
55
+ editableFields: keys.reduce((fields, key) => {
56
+ // handle field if not already pruned
57
+ const field = fields[key];
58
+ if (field) {
59
+ // throw if field is required
60
+ if (field.required) {
61
+ throw new errors_1.InvalidOperationError(`Cannot hide required field: ${String(key)} in block: ${this.name}`);
62
+ }
63
+ // otherwise delete field if not already pruned
64
+ else {
65
+ delete fields[key];
66
+ }
67
+ }
68
+ // keep reducing
69
+ return fields;
70
+ }, Object.assign({}, this.editableFields)),
71
+ config: this.config,
72
+ getConfig: this.getConfig,
73
+ getLayout: this.getLayout
74
+ });
75
+ }
76
+ override(override) {
77
+ // get overrides from function
78
+ const overrides = override(this.fields);
79
+ // create new block with persisted field spec and overridden fields in unwrapped fields
80
+ return new Block({
81
+ id: this.id,
82
+ name: this.name,
83
+ hint: this.hint,
84
+ version: this.version,
85
+ required: this.required,
86
+ fields: this.fields,
87
+ editableFields: Object.assign(Object.assign({}, this.editableFields), overrides),
88
+ config: this.config,
89
+ getConfig: this.getConfig,
90
+ getLayout: this.getLayout
91
+ });
92
+ }
93
+ extend(fields) {
94
+ return new Block({
95
+ id: this.id,
96
+ name: this.name,
97
+ hint: this.hint,
98
+ required: this.required,
99
+ version: this.version,
100
+ fields: Object.assign(Object.assign({}, this.fields), fields),
101
+ editableFields: Object.assign(Object.assign({}, this.editableFields), Fields_1.Fields.unwrap(fields)),
102
+ config: this.config,
103
+ getConfig: this.getConfig,
104
+ getLayout: this.getLayout
105
+ });
106
+ }
107
+ static create(args) {
108
+ // create new block with both field spec and unwrapped fields
109
+ return new Block({
110
+ id: args.id,
111
+ name: args.name,
112
+ hint: args.hint,
113
+ version: args.version,
114
+ fields: args.fields,
115
+ editableFields: Fields_1.Fields.unwrap(args.fields),
116
+ config: args.config,
117
+ getConfig: args.getConfig,
118
+ getLayout: args.getLayout
119
+ });
120
+ }
121
+ }
122
+ exports.Block = Block;
@@ -0,0 +1,108 @@
1
+ import { StringKeyOf, Tagged } from 'type-fest';
2
+ import { Language } from '../regionalization';
3
+ import { PartialBy } from '../types';
4
+ import { MimeType } from '../ui';
5
+ import type { Asset } from './Asset';
6
+ import type { Collection } from './Collection';
7
+ import type { Page } from './Page';
8
+ export declare class ChangeSet {
9
+ readonly brand: string;
10
+ readonly id: ChangeSet.Id;
11
+ readonly groupId: ChangeSet.GroupId;
12
+ private _name;
13
+ private _changes;
14
+ readonly createdOn: number;
15
+ readonly updatedOn: number;
16
+ private _publishedOn?;
17
+ private _modified;
18
+ constructor(args: ChangeSet.ConstructorArgs);
19
+ get isDefault(): boolean;
20
+ get name(): string;
21
+ set name(name: string);
22
+ get status(): ChangeSet.Status;
23
+ get errors(): boolean;
24
+ get publishedOn(): number | undefined;
25
+ set publishedOn(publishedOn: number | undefined);
26
+ get modified(): boolean;
27
+ get changes(): ReadonlyArray<ChangeSet.Change>;
28
+ get pageChanges(): ChangeSet.Change.ForPage[];
29
+ addPageChange(userId: string, change: Omit<ChangeSet.Change.ForPage, 'attribution'>): void;
30
+ deletePageChange(id: Page.Id): void;
31
+ get collectionChanges(): ChangeSet.Change.ForCollection[];
32
+ addCollectionChange(userId: string, change: Omit<ChangeSet.Change.ForCollection, 'attribution'>): void;
33
+ deleteCollectionChange(id: Collection.Id): void;
34
+ get assetChanges(): ChangeSet.Change.ForAsset[];
35
+ addAssetChange(userId: string, change: Omit<ChangeSet.Change.ForAsset, 'attribution'>): void;
36
+ deleteAssetChange(id: Asset.Id): void;
37
+ toData(): ChangeSet.Data;
38
+ }
39
+ export declare namespace ChangeSet {
40
+ type Id = Tagged<string, 'ChangeSet.Id'>;
41
+ type GroupId = Tagged<string, 'ChangeSet.GroupId'> | GroupId.Global;
42
+ namespace GroupId {
43
+ const global: "__global";
44
+ type Global = typeof global;
45
+ }
46
+ type Status = 'commited' | 'ready' | 'incomplete' | 'errors';
47
+ type Change = Change.ForPage | Change.ForCollection | Change.ForAsset;
48
+ namespace Change {
49
+ export type Id = Change['id'];
50
+ export type Type = 'create' | 'update' | 'unpublish' | 'delete';
51
+ type Base = {
52
+ type: Type;
53
+ name: string;
54
+ errors: boolean;
55
+ attribution: Attribution[];
56
+ };
57
+ export type Attribution = {
58
+ userId: string;
59
+ updatedOn: number;
60
+ };
61
+ export type ForPage = Base & {
62
+ __type: 'page';
63
+ id: Page.Id;
64
+ schema: Page.Type;
65
+ region: string;
66
+ language: Language;
67
+ slug?: string;
68
+ };
69
+ export type ForCollection = Base & {
70
+ __type: 'collection';
71
+ id: Collection.Id;
72
+ groupId: Collection.GroupId;
73
+ schema: Collection.Type;
74
+ language: Language;
75
+ };
76
+ export type ForAsset = Base & {
77
+ __type: 'asset';
78
+ id: Asset.Id;
79
+ mimeType: MimeType;
80
+ };
81
+ export {};
82
+ }
83
+ type Data = {
84
+ brand: string;
85
+ id: Id;
86
+ groupId: GroupId;
87
+ name: string;
88
+ changes: Change[];
89
+ errors: boolean;
90
+ createdOn: number;
91
+ updatedOn: number;
92
+ publishedOn?: number;
93
+ };
94
+ namespace Data {
95
+ type Prop = StringKeyOf<Data>;
96
+ const props: ReadonlyArray<Prop>;
97
+ type New = PartialBy<Omit<Data, 'id' | 'createdOn' | 'updatedOn' | 'publishedOn'>, 'name' | 'errors' | 'changes'>;
98
+ namespace New {
99
+ function filter(data: Data | New): data is New;
100
+ }
101
+ type Grouped = {
102
+ groupId: GroupId;
103
+ latest: Data;
104
+ total: number;
105
+ };
106
+ }
107
+ type ConstructorArgs = Omit<Data, 'errors'>;
108
+ }
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.ChangeSet = void 0;
15
+ // model
16
+ class ChangeSet {
17
+ constructor(args) {
18
+ // initialize instance variables
19
+ this.brand = args.brand;
20
+ this.id = args.id;
21
+ this.groupId = args.groupId;
22
+ this._name = args.name;
23
+ this._changes = args.changes.slice();
24
+ this.createdOn = args.createdOn;
25
+ this.updatedOn = args.updatedOn;
26
+ this._publishedOn = args.publishedOn;
27
+ this._modified = false;
28
+ }
29
+ get isDefault() {
30
+ return this.groupId === ChangeSet.GroupId.global;
31
+ }
32
+ get name() {
33
+ return this._name;
34
+ }
35
+ set name(name) {
36
+ if (this._name !== name) {
37
+ this._name = name;
38
+ this._modified = true;
39
+ }
40
+ }
41
+ get status() {
42
+ // mark published if live
43
+ const { _publishedOn, _changes } = this;
44
+ if (_publishedOn) {
45
+ return 'commited';
46
+ }
47
+ // mark ready if there are no errors
48
+ const errors = _changes.filter(change => change.errors);
49
+ if (errors.length === 0) {
50
+ return 'ready';
51
+ }
52
+ // or incomplete if there are any drafts in the errors
53
+ else if (errors.some(change => change.type === 'create')) {
54
+ return 'incomplete';
55
+ }
56
+ // or errors
57
+ else {
58
+ return 'errors';
59
+ }
60
+ }
61
+ get errors() {
62
+ return this._changes.some(change => change.errors);
63
+ }
64
+ get publishedOn() {
65
+ return this._publishedOn;
66
+ }
67
+ set publishedOn(publishedOn) {
68
+ if (this._publishedOn !== publishedOn) {
69
+ this._publishedOn = publishedOn;
70
+ this._modified = true;
71
+ }
72
+ }
73
+ get modified() {
74
+ return this._modified;
75
+ }
76
+ get changes() {
77
+ return this._changes;
78
+ }
79
+ get pageChanges() {
80
+ return this._changes.filter(change => change.__type === 'page');
81
+ }
82
+ addPageChange(userId, change) {
83
+ // apply change
84
+ addChange({
85
+ changes: this._changes,
86
+ change,
87
+ userId
88
+ });
89
+ // mark modified
90
+ this._modified = true;
91
+ }
92
+ deletePageChange(id) {
93
+ this._changes = this.changes.filter(change => change.id !== id);
94
+ this._modified = true;
95
+ }
96
+ get collectionChanges() {
97
+ return this._changes.filter(change => change.__type === 'collection');
98
+ }
99
+ addCollectionChange(userId, change) {
100
+ // apply change
101
+ addChange({
102
+ changes: this._changes,
103
+ change,
104
+ userId
105
+ });
106
+ // mark modified
107
+ this._modified = true;
108
+ }
109
+ deleteCollectionChange(id) {
110
+ this._changes = this.changes.filter(change => change.id !== id);
111
+ this._modified = true;
112
+ }
113
+ get assetChanges() {
114
+ return this._changes.filter(change => change.__type === 'asset');
115
+ }
116
+ addAssetChange(userId, change) {
117
+ // apply change
118
+ addChange({
119
+ changes: this._changes,
120
+ change,
121
+ userId
122
+ });
123
+ // mark modified
124
+ this._modified = true;
125
+ }
126
+ deleteAssetChange(id) {
127
+ this._changes = this.changes.filter(change => change.id !== id);
128
+ this._modified = true;
129
+ }
130
+ toData() {
131
+ const { brand, id, groupId, name, _changes, errors, createdOn, updatedOn, publishedOn } = this;
132
+ return {
133
+ brand,
134
+ id,
135
+ groupId,
136
+ name,
137
+ changes: _changes,
138
+ errors,
139
+ createdOn,
140
+ updatedOn,
141
+ publishedOn
142
+ };
143
+ }
144
+ }
145
+ exports.ChangeSet = ChangeSet;
146
+ // extension
147
+ (function (ChangeSet) {
148
+ let GroupId;
149
+ (function (GroupId) {
150
+ GroupId.global = '__global';
151
+ })(GroupId = ChangeSet.GroupId || (ChangeSet.GroupId = {}));
152
+ let Data;
153
+ (function (Data) {
154
+ Data.props = [
155
+ 'brand', 'id', 'groupId', 'name', 'changes', 'errors', 'createdOn', 'updatedOn', 'publishedOn'
156
+ ];
157
+ let New;
158
+ (function (New) {
159
+ function filter(data) {
160
+ return !('id' in data);
161
+ }
162
+ New.filter = filter;
163
+ })(New = Data.New || (Data.New = {}));
164
+ })(Data = ChangeSet.Data || (ChangeSet.Data = {}));
165
+ })(ChangeSet || (exports.ChangeSet = ChangeSet = {}));
166
+ function addChange({ changes, change, userId }) {
167
+ // update existing page
168
+ const updatedOn = Date.now();
169
+ const changeIndex = changes.findIndex(({ id }) => change.id === id);
170
+ if (changeIndex >= 0) {
171
+ // update attribution (skip if it's the same change by the same user)
172
+ const _a = changes[changeIndex], { type, attribution } = _a, existingChange = __rest(_a, ["type", "attribution"]);
173
+ const lastAttribution = attribution.length > 0
174
+ ? attribution[attribution.length - 1]
175
+ : undefined;
176
+ if ((lastAttribution === null || lastAttribution === void 0 ? void 0 : lastAttribution.userId) !== userId || change.type !== type) {
177
+ attribution.push({ userId, updatedOn });
178
+ }
179
+ // update change
180
+ changes[changeIndex] = Object.assign(Object.assign(Object.assign({}, existingChange), change), { type,
181
+ attribution });
182
+ }
183
+ // or add a new one
184
+ else {
185
+ changes.push(Object.assign(Object.assign({}, change), { attribution: [{ userId, updatedOn }] }));
186
+ }
187
+ }