@webiny/website-builder-sdk 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e

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 (272) hide show
  1. package/BindingsApi.js +29 -36
  2. package/BindingsApi.js.map +1 -1
  3. package/BindingsProcessor.js +34 -43
  4. package/BindingsProcessor.js.map +1 -1
  5. package/BindingsProcessor.test.js +82 -78
  6. package/BindingsProcessor.test.js.map +1 -1
  7. package/BindingsResolver.d.ts +4 -1
  8. package/BindingsResolver.js +99 -119
  9. package/BindingsResolver.js.map +1 -1
  10. package/BindingsResolver.test.js +399 -363
  11. package/BindingsResolver.test.js.map +1 -1
  12. package/ComponentInputTraverser.js +32 -49
  13. package/ComponentInputTraverser.js.map +1 -1
  14. package/ComponentManifestToAstConverter.js +20 -21
  15. package/ComponentManifestToAstConverter.js.map +1 -1
  16. package/ComponentRegistry.d.ts +9 -0
  17. package/ComponentRegistry.js +30 -44
  18. package/ComponentRegistry.js.map +1 -1
  19. package/ComponentResolver.d.ts +3 -2
  20. package/ComponentResolver.js +39 -29
  21. package/ComponentResolver.js.map +1 -1
  22. package/ComponentResolver.test.d.ts +1 -0
  23. package/ComponentResolver.test.js +81 -0
  24. package/ComponentResolver.test.js.map +1 -0
  25. package/ConstraintEvaluator.js +246 -353
  26. package/ConstraintEvaluator.js.map +1 -1
  27. package/ConstraintEvaluator.test.js +1616 -1438
  28. package/ConstraintEvaluator.test.js.map +1 -1
  29. package/ContentSdk.d.ts +14 -0
  30. package/ContentSdk.js +113 -90
  31. package/ContentSdk.js.map +1 -1
  32. package/DocumentStore.js +47 -59
  33. package/DocumentStore.js.map +1 -1
  34. package/DocumentStoreManager.js +17 -16
  35. package/DocumentStoreManager.js.map +1 -1
  36. package/EditingSdk.js +92 -121
  37. package/EditingSdk.js.map +1 -1
  38. package/ElementFactory.js +164 -172
  39. package/ElementFactory.js.map +1 -1
  40. package/ElementFactory.objectListDefaults.test.d.ts +1 -0
  41. package/ElementFactory.objectListDefaults.test.js +423 -0
  42. package/ElementFactory.objectListDefaults.test.js.map +1 -0
  43. package/ElementFactory.test.js +335 -262
  44. package/ElementFactory.test.js.map +1 -1
  45. package/Environment.js +18 -19
  46. package/Environment.js.map +1 -1
  47. package/FunctionConverter.js +8 -7
  48. package/FunctionConverter.js.map +1 -1
  49. package/HashObject.js +11 -26
  50. package/HashObject.js.map +1 -1
  51. package/HotkeyManager.js +40 -47
  52. package/HotkeyManager.js.map +1 -1
  53. package/IBindingsUpdater.js +0 -3
  54. package/IRedirects.js +0 -3
  55. package/InheritanceProcessor.js +99 -139
  56. package/InheritanceProcessor.js.map +1 -1
  57. package/InheritanceProcessor.test.js +178 -179
  58. package/InheritanceProcessor.test.js.map +1 -1
  59. package/InheritedValueResolver.d.ts +18 -1
  60. package/InheritedValueResolver.js +18 -20
  61. package/InheritedValueResolver.js.map +1 -1
  62. package/InputBindingsProcessor.d.ts +23 -2
  63. package/InputBindingsProcessor.js +200 -307
  64. package/InputBindingsProcessor.js.map +1 -1
  65. package/InputBindingsProcessorTokens.test.d.ts +1 -0
  66. package/InputBindingsProcessorTokens.test.js +400 -0
  67. package/InputBindingsProcessorTokens.test.js.map +1 -0
  68. package/InputsBindingsProcessor.test.js +334 -315
  69. package/InputsBindingsProcessor.test.js.map +1 -1
  70. package/InputsUpdater.js +23 -26
  71. package/InputsUpdater.js.map +1 -1
  72. package/LiveSdk.js +12 -13
  73. package/LiveSdk.js.map +1 -1
  74. package/Logger.js +9 -8
  75. package/Logger.js.map +1 -1
  76. package/MouseTracker.js +77 -83
  77. package/MouseTracker.js.map +1 -1
  78. package/NullSdk.js +22 -21
  79. package/NullSdk.js.map +1 -1
  80. package/PreviewDocument.d.ts +1 -0
  81. package/PreviewDocument.js +30 -30
  82. package/PreviewDocument.js.map +1 -1
  83. package/PreviewSdk.d.ts +2 -1
  84. package/PreviewSdk.js +19 -17
  85. package/PreviewSdk.js.map +1 -1
  86. package/PreviewViewport.js +51 -63
  87. package/PreviewViewport.js.map +1 -1
  88. package/ResizeObserver.js +24 -31
  89. package/ResizeObserver.js.map +1 -1
  90. package/StylesBindingsProcessor.d.ts +12 -2
  91. package/StylesBindingsProcessor.js +62 -79
  92. package/StylesBindingsProcessor.js.map +1 -1
  93. package/StylesUpdater.js +20 -25
  94. package/StylesUpdater.js.map +1 -1
  95. package/Theme.js +30 -25
  96. package/Theme.js.map +1 -1
  97. package/ViewportManager.js +89 -101
  98. package/ViewportManager.js.map +1 -1
  99. package/assertBindingShapes.d.ts +31 -0
  100. package/assertBindingShapes.js +64 -0
  101. package/assertBindingShapes.js.map +1 -0
  102. package/assertBindingShapes.test.d.ts +1 -0
  103. package/assertBindingShapes.test.js +131 -0
  104. package/assertBindingShapes.test.js.map +1 -0
  105. package/asset/deliveryUrl.d.ts +41 -0
  106. package/asset/deliveryUrl.js +34 -0
  107. package/asset/deliveryUrl.js.map +1 -0
  108. package/asset/deliveryUrl.test.d.ts +1 -0
  109. package/asset/deliveryUrl.test.js +127 -0
  110. package/asset/deliveryUrl.test.js.map +1 -0
  111. package/asset/geometry.d.ts +7 -0
  112. package/asset/geometry.js +10 -0
  113. package/asset/geometry.js.map +1 -0
  114. package/asset/imageSrcSet.d.ts +63 -0
  115. package/asset/imageSrcSet.js +98 -0
  116. package/asset/imageSrcSet.js.map +1 -0
  117. package/asset/imageSrcSet.test.d.ts +1 -0
  118. package/asset/imageSrcSet.test.js +103 -0
  119. package/asset/imageSrcSet.test.js.map +1 -0
  120. package/asset/index.d.ts +5 -0
  121. package/asset/index.js +5 -0
  122. package/asset/normalize.d.ts +24 -0
  123. package/asset/normalize.js +106 -0
  124. package/asset/normalize.js.map +1 -0
  125. package/asset/normalize.test.d.ts +1 -0
  126. package/asset/normalize.test.js +263 -0
  127. package/asset/normalize.test.js.map +1 -0
  128. package/asset/types.d.ts +2 -0
  129. package/asset/types.js +0 -0
  130. package/constants.js +7 -6
  131. package/constants.js.map +1 -1
  132. package/contentEntry/ContentEntryBindingsResolver.d.ts +30 -0
  133. package/contentEntry/ContentEntryBindingsResolver.js +45 -0
  134. package/contentEntry/ContentEntryBindingsResolver.js.map +1 -0
  135. package/contentEntry/ContentEntryCache.d.ts +46 -0
  136. package/contentEntry/ContentEntryCache.js +50 -0
  137. package/contentEntry/ContentEntryCache.js.map +1 -0
  138. package/contentEntry/resolveContentEntry.d.ts +74 -0
  139. package/contentEntry/resolveContentEntry.js +53 -0
  140. package/contentEntry/resolveContentEntry.js.map +1 -0
  141. package/contentEntry/resolveContentEntry.test.d.ts +1 -0
  142. package/contentEntry/resolveContentEntry.test.js +213 -0
  143. package/contentEntry/resolveContentEntry.test.js.map +1 -0
  144. package/createComponent.d.ts +5 -0
  145. package/createComponent.js +32 -0
  146. package/createComponent.js.map +1 -0
  147. package/createElement.js +5 -6
  148. package/createElement.js.map +1 -1
  149. package/createInput.d.ts +10 -2
  150. package/createInput.js +92 -143
  151. package/createInput.js.map +1 -1
  152. package/createTheme.js +2 -3
  153. package/createTheme.js.map +1 -1
  154. package/dataProviders/ApiClient.d.ts +10 -5
  155. package/dataProviders/ApiClient.js +40 -49
  156. package/dataProviders/ApiClient.js.map +1 -1
  157. package/dataProviders/DefaultDataProvider.d.ts +4 -0
  158. package/dataProviders/DefaultDataProvider.js +91 -58
  159. package/dataProviders/DefaultDataProvider.js.map +1 -1
  160. package/dataProviders/GET_EXPERIMENT_PAUSED.d.ts +1 -0
  161. package/dataProviders/GET_EXPERIMENT_PAUSED.js +17 -0
  162. package/dataProviders/GET_EXPERIMENT_PAUSED.js.map +1 -0
  163. package/dataProviders/GET_PAGE_BY_ID.js +2 -1
  164. package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
  165. package/dataProviders/GET_PAGE_BY_PATH.js +2 -1
  166. package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
  167. package/dataProviders/GET_PAGE_EXPERIMENT.d.ts +1 -0
  168. package/dataProviders/GET_PAGE_EXPERIMENT.js +32 -0
  169. package/dataProviders/GET_PAGE_EXPERIMENT.js.map +1 -0
  170. package/dataProviders/GET_VARIANT_CONTENT.d.ts +1 -0
  171. package/dataProviders/GET_VARIANT_CONTENT.js +24 -0
  172. package/dataProviders/GET_VARIANT_CONTENT.js.map +1 -0
  173. package/dataProviders/LIST_PUBLISHED_PAGES.js +2 -1
  174. package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
  175. package/dataProviders/NullDataProvider.d.ts +4 -0
  176. package/dataProviders/NullDataProvider.js +30 -20
  177. package/dataProviders/NullDataProvider.js.map +1 -1
  178. package/dataProviders/RedirectsProvider.js +24 -27
  179. package/dataProviders/RedirectsProvider.js.map +1 -1
  180. package/defaultBreakpoints.js +43 -22
  181. package/defaultBreakpoints.js.map +1 -1
  182. package/documentOperations/$addElementReferenceToParent.js +29 -32
  183. package/documentOperations/$addElementReferenceToParent.js.map +1 -1
  184. package/documentOperations/AddElement.js +8 -7
  185. package/documentOperations/AddElement.js.map +1 -1
  186. package/documentOperations/AddToParent.js +14 -13
  187. package/documentOperations/AddToParent.js.map +1 -1
  188. package/documentOperations/IDocumentOperation.js +0 -3
  189. package/documentOperations/RemoveElement.js +9 -15
  190. package/documentOperations/RemoveElement.js.map +1 -1
  191. package/documentOperations/SetGlobalInputBinding.js +23 -22
  192. package/documentOperations/SetGlobalInputBinding.js.map +1 -1
  193. package/documentOperations/SetGlobalStyleBinding.js +23 -23
  194. package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
  195. package/documentOperations/SetInputBindingOverride.js +30 -29
  196. package/documentOperations/SetInputBindingOverride.js.map +1 -1
  197. package/documentOperations/SetStyleBindingOverride.js +30 -31
  198. package/documentOperations/SetStyleBindingOverride.js.map +1 -1
  199. package/documentOperations/index.js +9 -8
  200. package/documentOperations/index.js.map +1 -1
  201. package/experiments/PostHogAnalyticsProvider.d.ts +31 -0
  202. package/experiments/PostHogAnalyticsProvider.js +28 -0
  203. package/experiments/PostHogAnalyticsProvider.js.map +1 -0
  204. package/experiments/analyticsProvider.d.ts +4 -0
  205. package/experiments/analyticsProvider.js +11 -0
  206. package/experiments/analyticsProvider.js.map +1 -0
  207. package/experiments/bucketing.d.ts +27 -0
  208. package/experiments/bucketing.js +91 -0
  209. package/experiments/bucketing.js.map +1 -0
  210. package/experiments/bucketing.test.d.ts +1 -0
  211. package/experiments/bucketing.test.js +183 -0
  212. package/experiments/bucketing.test.js.map +1 -0
  213. package/experiments/index.d.ts +5 -0
  214. package/experiments/index.js +5 -0
  215. package/experiments/render.d.ts +79 -0
  216. package/experiments/render.js +149 -0
  217. package/experiments/render.js.map +1 -0
  218. package/experiments/types.d.ts +108 -0
  219. package/experiments/types.js +4 -0
  220. package/experiments/types.js.map +1 -0
  221. package/findMatchingAstNode.js +11 -13
  222. package/findMatchingAstNode.js.map +1 -1
  223. package/generateElementId.js +2 -1
  224. package/generateElementId.js.map +1 -1
  225. package/headersProvider.js +4 -3
  226. package/headersProvider.js.map +1 -1
  227. package/image/geometry.d.ts +54 -0
  228. package/image/geometry.js +112 -0
  229. package/image/geometry.js.map +1 -0
  230. package/image/geometry.test.d.ts +1 -0
  231. package/image/geometry.test.js +190 -0
  232. package/image/geometry.test.js.map +1 -0
  233. package/image/index.d.ts +3 -0
  234. package/image/index.js +3 -0
  235. package/image/presets.d.ts +6 -0
  236. package/image/presets.js +20 -0
  237. package/image/presets.js.map +1 -0
  238. package/image/types.d.ts +10 -0
  239. package/image/types.js +0 -0
  240. package/index.d.ts +10 -0
  241. package/index.js +10 -2
  242. package/jsonPatch.js +5 -9
  243. package/jsonPatch.js.map +1 -1
  244. package/messages.js +12 -11
  245. package/messages.js.map +1 -1
  246. package/messenger/MessageOrigin.js +12 -11
  247. package/messenger/MessageOrigin.js.map +1 -1
  248. package/messenger/Messenger.js +58 -69
  249. package/messenger/Messenger.js.map +1 -1
  250. package/messenger/index.js +0 -2
  251. package/package.json +12 -9
  252. package/registerComponentGroup.js +5 -6
  253. package/registerComponentGroup.js.map +1 -1
  254. package/tokenBinding.d.ts +26 -0
  255. package/tokenBinding.js +15 -0
  256. package/tokenBinding.js.map +1 -0
  257. package/tokenBinding.test.d.ts +1 -0
  258. package/tokenBinding.test.js +165 -0
  259. package/tokenBinding.test.js.map +1 -0
  260. package/types/ShorthandCssProperties.js +0 -3
  261. package/types/WebsiteBuilderTheme.d.ts +12 -0
  262. package/types/WebsiteBuilderTheme.js +0 -3
  263. package/types.d.ts +96 -1
  264. package/types.js +0 -3
  265. package/IBindingsUpdater.js.map +0 -1
  266. package/IRedirects.js.map +0 -1
  267. package/documentOperations/IDocumentOperation.js.map +0 -1
  268. package/index.js.map +0 -1
  269. package/messenger/index.js.map +0 -1
  270. package/types/ShorthandCssProperties.js.map +0 -1
  271. package/types/WebsiteBuilderTheme.js.map +0 -1
  272. package/types.js.map +0 -1
package/ContentSdk.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { getPageWithExperiment } from "./experiments/render.js";
1
2
  import { environment } from "./Environment.js";
2
3
  import { LiveSdk } from "./LiveSdk.js";
3
4
  import { EditingSdk } from "./EditingSdk.js";
@@ -10,97 +11,119 @@ import { Theme } from "./Theme.js";
10
11
  import { viewportManager } from "./ViewportManager.js";
11
12
  import { RedirectsProvider } from "./dataProviders/RedirectsProvider.js";
12
13
  class InternalContentSdk {
13
- constructor(redirectsProvider, liveSdk, editingSdk) {
14
- this.redirectsProvider = redirectsProvider;
15
- this.activeSdk = editingSdk ?? liveSdk;
16
- this.editingSdk = editingSdk;
17
- }
18
- getEditingSdk() {
19
- return this.editingSdk;
20
- }
21
- async getPage(path) {
22
- return this.activeSdk.getPage(path);
23
- }
24
- listPages(options) {
25
- return this.activeSdk.listPages(options);
26
- }
27
- getAllRedirects() {
28
- return this.redirectsProvider.getAllRedirects();
29
- }
30
- getRedirectByPath(path) {
31
- return this.redirectsProvider.getRedirectByPath(path);
32
- }
14
+ constructor(redirectsProvider, liveSdk, editingSdk){
15
+ this.redirectsProvider = redirectsProvider;
16
+ this.activeSdk = editingSdk ?? liveSdk;
17
+ this.editingSdk = editingSdk;
18
+ }
19
+ getEditingSdk() {
20
+ return this.editingSdk;
21
+ }
22
+ async getPage(path) {
23
+ return this.activeSdk.getPage(path);
24
+ }
25
+ listPages(options) {
26
+ return this.activeSdk.listPages(options);
27
+ }
28
+ getAllRedirects() {
29
+ return this.redirectsProvider.getAllRedirects();
30
+ }
31
+ getRedirectByPath(path) {
32
+ return this.redirectsProvider.getRedirectByPath(path);
33
+ }
33
34
  }
34
- export class ContentSdk {
35
- isPreview = false;
36
- init(config, afterInit) {
37
- const configHash = JSON.stringify(config);
38
- if (this.lastConfig && this.lastConfig === configHash) {
39
- return;
40
- }
41
- this.lastConfig = configHash;
42
- const apiClient = new ApiClient(config.apiHost, config.apiKey, config.apiTenant);
43
- const dataProvider = new DefaultDataProvider({
44
- apiClient
45
- });
46
- let liveSdk = new LiveSdk(dataProvider);
47
- if (config.preview && !environment.isEditing()) {
48
- this.isPreview = true;
49
- liveSdk = new PreviewSdk(dataProvider, liveSdk);
50
- }
51
- const theme = Theme.from(config.theme ?? {});
52
- if (environment.isClient()) {
53
- viewportManager.setBreakpoints(theme.breakpoints);
54
- }
55
- let editingSdk;
56
- if (environment.isEditing()) {
57
- editingSdk = new EditingSdk(liveSdk, theme);
58
- }
59
- this.sdk = new InternalContentSdk(new RedirectsProvider(apiClient), liveSdk, editingSdk);
60
- if (typeof afterInit === "function") {
61
- afterInit();
62
- }
63
- }
64
- getEditingSdk() {
65
- this.assertInitialized();
66
- return this.sdk.getEditingSdk();
67
- }
68
- getPage(path) {
69
- this.assertInitialized();
70
- return this.sdk.getPage(path);
71
- }
72
- listPages(options) {
73
- this.assertInitialized();
74
- return this.sdk.listPages(options);
75
- }
76
- async getAllRedirects() {
77
- this.assertInitialized();
78
- return this.sdk.getAllRedirects();
79
- }
80
- getRedirectByPath(path) {
81
- this.assertInitialized();
82
- return this.sdk.getRedirectByPath(path);
83
- }
84
- registerComponent(blueprint) {
85
- this.assertInitialized();
86
- componentRegistry.register(blueprint);
87
- }
88
- resolveElement(params) {
89
- this.assertInitialized();
90
- return new ComponentResolver(componentRegistry).resolve(params);
91
- }
92
- isEditing() {
93
- return environment.isEditing();
94
- }
95
- isPreviewing() {
96
- return this.isPreview;
97
- }
98
- assertInitialized() {
99
- if (!this.sdk) {
100
- throw new Error(`ContentSdk has not been initialized!`);
101
- }
102
- }
35
+ class ContentSdk {
36
+ init(config, afterInit) {
37
+ const configHash = JSON.stringify(config);
38
+ if (this.lastConfig && this.lastConfig === configHash) return;
39
+ this.lastConfig = configHash;
40
+ const apiClient = new ApiClient({
41
+ apiHost: config.apiHost,
42
+ apiKey: config.apiKey,
43
+ apiTenant: config.apiTenant,
44
+ preview: config.preview
45
+ });
46
+ const dataProvider = new DefaultDataProvider({
47
+ apiClient
48
+ });
49
+ this.dataProvider = dataProvider;
50
+ let liveSdk = new LiveSdk(dataProvider);
51
+ if (config.preview && !environment.isEditing()) {
52
+ this.isPreview = true;
53
+ liveSdk = new PreviewSdk(dataProvider, liveSdk, config.previewParams);
54
+ }
55
+ const theme = Theme.from(config.theme ?? {});
56
+ if (environment.isClient()) viewportManager.setBreakpoints(theme.breakpoints);
57
+ let editingSdk;
58
+ if (environment.isEditing()) editingSdk = new EditingSdk(liveSdk, theme);
59
+ this.sdk = new InternalContentSdk(new RedirectsProvider(apiClient), liveSdk, editingSdk);
60
+ if ("function" == typeof afterInit) afterInit();
61
+ }
62
+ getEditingSdk() {
63
+ this.assertInitialized();
64
+ return this.sdk.getEditingSdk();
65
+ }
66
+ getPage(path) {
67
+ this.assertInitialized();
68
+ return this.sdk.getPage(path);
69
+ }
70
+ getPageExperiment(path) {
71
+ return this.requireDataProvider().getPageExperiment(path);
72
+ }
73
+ getVariantContent(variantId) {
74
+ return this.requireDataProvider().getVariantContent(variantId);
75
+ }
76
+ getExperimentPaused(experimentId) {
77
+ return this.requireDataProvider().getExperimentPaused(experimentId);
78
+ }
79
+ getPageWithExperiment(path, options) {
80
+ this.assertInitialized();
81
+ this.requireDataProvider();
82
+ return getPageWithExperiment({
83
+ getPage: (p)=>this.getPage(p),
84
+ getPageExperiment: (p)=>this.getPageExperiment(p),
85
+ getVariantContent: (id)=>this.getVariantContent(id),
86
+ getExperimentPaused: (id)=>this.getExperimentPaused(id)
87
+ }, path, options);
88
+ }
89
+ listPages(options) {
90
+ this.assertInitialized();
91
+ return this.sdk.listPages(options);
92
+ }
93
+ async getAllRedirects() {
94
+ this.assertInitialized();
95
+ return this.sdk.getAllRedirects();
96
+ }
97
+ getRedirectByPath(path) {
98
+ this.assertInitialized();
99
+ return this.sdk.getRedirectByPath(path);
100
+ }
101
+ registerComponent(blueprint) {
102
+ this.assertInitialized();
103
+ componentRegistry.register(blueprint);
104
+ }
105
+ resolveElement(params) {
106
+ this.assertInitialized();
107
+ return new ComponentResolver(componentRegistry).resolve(params);
108
+ }
109
+ isEditing() {
110
+ return environment.isEditing();
111
+ }
112
+ isPreviewing() {
113
+ return this.isPreview;
114
+ }
115
+ assertInitialized() {
116
+ if (!this.sdk) throw new Error("ContentSdk has not been initialized!");
117
+ }
118
+ requireDataProvider() {
119
+ if (!this.dataProvider) throw new Error("ContentSdk has not been initialized!");
120
+ return this.dataProvider;
121
+ }
122
+ constructor(){
123
+ this.isPreview = false;
124
+ }
103
125
  }
104
- export const contentSdk = new ContentSdk();
126
+ const contentSdk = new ContentSdk();
127
+ export { ContentSdk, contentSdk };
105
128
 
106
129
  //# sourceMappingURL=ContentSdk.js.map
package/ContentSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["environment","LiveSdk","EditingSdk","ComponentResolver","PreviewSdk","componentRegistry","ApiClient","DefaultDataProvider","Theme","viewportManager","RedirectsProvider","InternalContentSdk","constructor","redirectsProvider","liveSdk","editingSdk","activeSdk","getEditingSdk","getPage","path","listPages","options","getAllRedirects","getRedirectByPath","ContentSdk","isPreview","init","config","afterInit","configHash","JSON","stringify","lastConfig","apiClient","apiHost","apiKey","apiTenant","dataProvider","preview","isEditing","theme","from","isClient","setBreakpoints","breakpoints","sdk","assertInitialized","registerComponent","blueprint","register","resolveElement","params","resolve","isPreviewing","Error","contentSdk"],"sources":["ContentSdk.ts"],"sourcesContent":["import type {\n Component,\n IContentSdk,\n ListPagesOptions,\n ListPagesResult,\n PublicPage,\n PublicRedirect,\n ResolvedComponent\n} from \"~/types.js\";\nimport { environment } from \"./Environment.js\";\nimport { LiveSdk } from \"./LiveSdk.js\";\nimport { EditingSdk } from \"./EditingSdk.js\";\nimport { ComponentResolver, type ResolveElementParams } from \"~/ComponentResolver.js\";\nimport { PreviewSdk } from \"./PreviewSdk.js\";\nimport { componentRegistry } from \"~/ComponentRegistry.js\";\nimport { ApiClient } from \"~/dataProviders/ApiClient.js\";\nimport { DefaultDataProvider } from \"~/dataProviders/DefaultDataProvider.js\";\nimport type { WebsiteBuilderThemeInput } from \"./types/WebsiteBuilderTheme.js\";\nimport { Theme } from \"./Theme.js\";\nimport { viewportManager } from \"./ViewportManager.js\";\nimport type { IRedirects } from \"~/IRedirects.js\";\nimport { RedirectsProvider } from \"~/dataProviders/RedirectsProvider.js\";\n\nexport type ApiConfig = {\n apiKey: string;\n apiHost: string;\n apiTenant: string;\n};\n\nexport type ContentSDKConfig = ApiConfig & {\n preview?: boolean;\n theme?: WebsiteBuilderThemeInput;\n};\n\nclass InternalContentSdk implements IContentSdk, IRedirects {\n private activeSdk: IContentSdk;\n private editingSdk: EditingSdk | undefined;\n private redirectsProvider: IRedirects;\n\n constructor(redirectsProvider: IRedirects, liveSdk: LiveSdk, editingSdk?: EditingSdk) {\n this.redirectsProvider = redirectsProvider;\n this.activeSdk = editingSdk ?? liveSdk;\n this.editingSdk = editingSdk;\n }\n\n getEditingSdk() {\n return this.editingSdk;\n }\n\n async getPage(path: string): Promise<PublicPage | null> {\n return this.activeSdk.getPage(path);\n }\n\n listPages(options?: ListPagesOptions): Promise<ListPagesResult> {\n return this.activeSdk.listPages(options);\n }\n\n getAllRedirects(): Promise<Map<string, PublicRedirect>> {\n return this.redirectsProvider.getAllRedirects();\n }\n\n getRedirectByPath(path: string): Promise<PublicRedirect | undefined> {\n return this.redirectsProvider.getRedirectByPath(path);\n }\n}\n\nexport class ContentSdk implements IContentSdk, IRedirects {\n protected sdk?: InternalContentSdk;\n private isPreview = false;\n private lastConfig: any;\n\n public init(config: ContentSDKConfig, afterInit?: () => void): void {\n const configHash = JSON.stringify(config);\n if (this.lastConfig && this.lastConfig === configHash) {\n return;\n }\n\n this.lastConfig = configHash;\n const apiClient = new ApiClient(config.apiHost, config.apiKey, config.apiTenant);\n\n const dataProvider = new DefaultDataProvider({ apiClient });\n\n let liveSdk: IContentSdk = new LiveSdk(dataProvider);\n\n if (config.preview && !environment.isEditing()) {\n this.isPreview = true;\n liveSdk = new PreviewSdk(dataProvider, liveSdk);\n }\n\n const theme = Theme.from(config.theme ?? {});\n\n if (environment.isClient()) {\n viewportManager.setBreakpoints(theme.breakpoints);\n }\n\n let editingSdk;\n if (environment.isEditing()) {\n editingSdk = new EditingSdk(liveSdk, theme);\n }\n\n this.sdk = new InternalContentSdk(\n new RedirectsProvider(apiClient),\n liveSdk as LiveSdk,\n editingSdk\n );\n\n if (typeof afterInit === \"function\") {\n afterInit();\n }\n }\n\n public getEditingSdk() {\n this.assertInitialized();\n return this.sdk.getEditingSdk();\n }\n\n public getPage(path: string) {\n this.assertInitialized();\n return this.sdk.getPage(path);\n }\n\n public listPages(options?: ListPagesOptions) {\n this.assertInitialized();\n return this.sdk.listPages(options);\n }\n\n public async getAllRedirects() {\n this.assertInitialized();\n return this.sdk.getAllRedirects();\n }\n\n getRedirectByPath(path: string): Promise<PublicRedirect | undefined> {\n this.assertInitialized();\n return this.sdk.getRedirectByPath(path);\n }\n\n registerComponent(blueprint: Component): void {\n this.assertInitialized();\n componentRegistry.register(blueprint);\n }\n\n resolveElement(params: ResolveElementParams): ResolvedComponent[] | null {\n this.assertInitialized();\n return new ComponentResolver(componentRegistry).resolve(params);\n }\n\n isEditing() {\n return environment.isEditing();\n }\n\n isPreviewing() {\n return this.isPreview;\n }\n\n private assertInitialized(): asserts this is this & {\n sdk: IContentSdk;\n } {\n if (!this.sdk) {\n throw new Error(`ContentSdk has not been initialized!`);\n }\n }\n}\n\nexport const contentSdk = new ContentSdk();\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ContentSdk.js","sources":["../src/ContentSdk.ts"],"sourcesContent":["import type {\n Component,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n ListPagesResult,\n PublicPage,\n PublicRedirect,\n ResolvedComponent\n} from \"~/types.js\";\nimport type { ActiveExperiment, VariantContent } from \"~/experiments/types.js\";\nimport {\n getPageWithExperiment,\n type ExperimentRenderResult,\n type GetPageWithExperimentOptions\n} from \"~/experiments/render.js\";\nimport { environment } from \"./Environment.js\";\nimport { LiveSdk } from \"./LiveSdk.js\";\nimport { EditingSdk } from \"./EditingSdk.js\";\nimport { ComponentResolver, type ResolveElementParams } from \"~/ComponentResolver.js\";\nimport { PreviewSdk } from \"./PreviewSdk.js\";\nimport { componentRegistry } from \"~/ComponentRegistry.js\";\nimport { ApiClient } from \"~/dataProviders/ApiClient.js\";\nimport { DefaultDataProvider } from \"~/dataProviders/DefaultDataProvider.js\";\nimport type { WebsiteBuilderThemeInput } from \"./types/WebsiteBuilderTheme.js\";\nimport { Theme } from \"./Theme.js\";\nimport { viewportManager } from \"./ViewportManager.js\";\nimport type { IRedirects } from \"~/IRedirects.js\";\nimport { RedirectsProvider } from \"~/dataProviders/RedirectsProvider.js\";\n\nexport type ApiConfig = {\n apiKey: string;\n apiHost: string;\n apiTenant: string;\n};\n\nexport type ContentSDKConfig = ApiConfig & {\n preview?: boolean;\n previewParams?: string;\n theme?: WebsiteBuilderThemeInput;\n};\n\nclass InternalContentSdk implements IContentSdk, IRedirects {\n private activeSdk: IContentSdk;\n private editingSdk: EditingSdk | undefined;\n private redirectsProvider: IRedirects;\n\n constructor(redirectsProvider: IRedirects, liveSdk: LiveSdk, editingSdk?: EditingSdk) {\n this.redirectsProvider = redirectsProvider;\n this.activeSdk = editingSdk ?? liveSdk;\n this.editingSdk = editingSdk;\n }\n\n getEditingSdk() {\n return this.editingSdk;\n }\n\n async getPage(path: string): Promise<PublicPage | null> {\n return this.activeSdk.getPage(path);\n }\n\n listPages(options?: ListPagesOptions): Promise<ListPagesResult> {\n return this.activeSdk.listPages(options);\n }\n\n getAllRedirects(): Promise<Map<string, PublicRedirect>> {\n return this.redirectsProvider.getAllRedirects();\n }\n\n getRedirectByPath(path: string): Promise<PublicRedirect | undefined> {\n return this.redirectsProvider.getRedirectByPath(path);\n }\n}\n\nexport class ContentSdk implements IContentSdk, IRedirects {\n protected sdk?: InternalContentSdk;\n private isPreview = false;\n private lastConfig: any;\n private dataProvider?: IDataProvider;\n\n public init(config: ContentSDKConfig, afterInit?: () => void): void {\n const configHash = JSON.stringify(config);\n if (this.lastConfig && this.lastConfig === configHash) {\n return;\n }\n\n this.lastConfig = configHash;\n const apiClient = new ApiClient({\n apiHost: config.apiHost,\n apiKey: config.apiKey,\n apiTenant: config.apiTenant,\n preview: config.preview\n });\n\n const dataProvider = new DefaultDataProvider({ apiClient });\n this.dataProvider = dataProvider;\n\n let liveSdk: IContentSdk = new LiveSdk(dataProvider);\n\n if (config.preview && !environment.isEditing()) {\n this.isPreview = true;\n liveSdk = new PreviewSdk(dataProvider, liveSdk, config.previewParams);\n }\n\n const theme = Theme.from(config.theme ?? {});\n\n if (environment.isClient()) {\n viewportManager.setBreakpoints(theme.breakpoints);\n }\n\n let editingSdk;\n if (environment.isEditing()) {\n editingSdk = new EditingSdk(liveSdk, theme);\n }\n\n this.sdk = new InternalContentSdk(\n new RedirectsProvider(apiClient),\n liveSdk as LiveSdk,\n editingSdk\n );\n\n if (typeof afterInit === \"function\") {\n afterInit();\n }\n }\n\n public getEditingSdk() {\n this.assertInitialized();\n return this.sdk.getEditingSdk();\n }\n\n public getPage(path: string) {\n this.assertInitialized();\n return this.sdk.getPage(path);\n }\n\n public getPageExperiment(path: string): Promise<ActiveExperiment | null> {\n return this.requireDataProvider().getPageExperiment(path);\n }\n\n public getVariantContent(variantId: string): Promise<VariantContent | null> {\n return this.requireDataProvider().getVariantContent(variantId);\n }\n\n public getExperimentPaused(experimentId: string): Promise<boolean> {\n return this.requireDataProvider().getExperimentPaused(experimentId);\n }\n\n /**\n * Resolve and render the right page for the current visitor (control or a variant),\n * server-side. Bucketing, targeting, exposure emission, and cache-key handling are all\n * encapsulated here so projects do not reimplement them. See {@link getPageWithExperiment}.\n */\n public getPageWithExperiment(\n path: string,\n options?: GetPageWithExperimentOptions\n ): Promise<ExperimentRenderResult> {\n this.assertInitialized();\n this.requireDataProvider();\n return getPageWithExperiment(\n {\n getPage: p => this.getPage(p),\n getPageExperiment: p => this.getPageExperiment(p),\n getVariantContent: id => this.getVariantContent(id),\n getExperimentPaused: id => this.getExperimentPaused(id)\n },\n path,\n options\n );\n }\n\n public listPages(options?: ListPagesOptions) {\n this.assertInitialized();\n return this.sdk.listPages(options);\n }\n\n public async getAllRedirects() {\n this.assertInitialized();\n return this.sdk.getAllRedirects();\n }\n\n getRedirectByPath(path: string): Promise<PublicRedirect | undefined> {\n this.assertInitialized();\n return this.sdk.getRedirectByPath(path);\n }\n\n registerComponent(blueprint: Component): void {\n this.assertInitialized();\n componentRegistry.register(blueprint);\n }\n\n resolveElement(params: ResolveElementParams): ResolvedComponent[] | null {\n this.assertInitialized();\n return new ComponentResolver(componentRegistry).resolve(params);\n }\n\n isEditing() {\n return environment.isEditing();\n }\n\n isPreviewing() {\n return this.isPreview;\n }\n\n private assertInitialized(): asserts this is this & {\n sdk: IContentSdk;\n } {\n if (!this.sdk) {\n throw new Error(`ContentSdk has not been initialized!`);\n }\n }\n\n private requireDataProvider(): IDataProvider {\n if (!this.dataProvider) {\n throw new Error(`ContentSdk has not been initialized!`);\n }\n return this.dataProvider;\n }\n}\n\nexport const contentSdk = new ContentSdk();\n"],"names":["InternalContentSdk","redirectsProvider","liveSdk","editingSdk","path","options","ContentSdk","config","afterInit","configHash","JSON","apiClient","ApiClient","dataProvider","DefaultDataProvider","LiveSdk","environment","PreviewSdk","theme","Theme","viewportManager","EditingSdk","RedirectsProvider","variantId","experimentId","getPageWithExperiment","p","id","blueprint","componentRegistry","params","ComponentResolver","Error","contentSdk"],"mappings":"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"}
package/DocumentStore.js CHANGED
@@ -1,67 +1,55 @@
1
1
  import { jsonPatch } from "./jsonPatch.js";
2
- import { makeAutoObservable, runInAction, observable } from "mobx";
3
- export class DocumentStore {
4
- document = null;
5
- documentReady = false;
6
- readyResolvers = [];
7
- constructor() {
8
- makeAutoObservable(this);
9
- }
10
- setDocument(doc) {
11
- runInAction(() => {
12
- if (this.document) {
13
- Object.assign(this.document, doc);
14
- } else {
15
- this.document = observable(doc);
16
- }
17
- this.documentReady = true;
18
- this.readyResolvers.forEach(fn => fn());
19
- this.readyResolvers = [];
20
- });
21
- }
22
- updateDocument(cb) {
23
- runInAction(() => {
24
- if (this.document) {
25
- cb(this.document);
26
- }
27
- });
28
- }
29
- getDocument() {
30
- return this.document;
31
- }
32
- getElement(id) {
33
- if (!this.document) {
34
- return null;
2
+ import { makeAutoObservable, observable, runInAction } from "mobx";
3
+ class DocumentStore {
4
+ constructor(){
5
+ this.document = null;
6
+ this.documentReady = false;
7
+ this.readyResolvers = [];
8
+ makeAutoObservable(this);
35
9
  }
36
- return this.document.elements[id];
37
- }
38
- updateElement(id, patch) {
39
- if (!this.document) {
40
- return;
10
+ setDocument(doc) {
11
+ runInAction(()=>{
12
+ if (this.document) Object.assign(this.document, doc);
13
+ else this.document = observable(doc);
14
+ this.documentReady = true;
15
+ this.readyResolvers.forEach((fn)=>fn());
16
+ this.readyResolvers = [];
17
+ });
41
18
  }
42
- const current = this.document.elements[id];
43
- if (current) {
44
- this.document.elements[id] = {
45
- ...current,
46
- ...patch
47
- };
19
+ updateDocument(cb) {
20
+ runInAction(()=>{
21
+ if (this.document) cb(this.document);
22
+ });
48
23
  }
49
- }
50
- applyPatch(patch) {
51
- runInAction(() => {
52
- jsonPatch.applyPatch(this.document, patch, false, true);
53
- });
54
- }
55
- async waitForDocument() {
56
- if (this.documentReady) {
57
- return this.document;
24
+ getDocument() {
25
+ return this.document;
26
+ }
27
+ getElement(id) {
28
+ if (!this.document) return null;
29
+ return this.document.elements[id];
30
+ }
31
+ updateElement(id, patch) {
32
+ if (!this.document) return;
33
+ const current = this.document.elements[id];
34
+ if (current) this.document.elements[id] = {
35
+ ...current,
36
+ ...patch
37
+ };
38
+ }
39
+ applyPatch(patch) {
40
+ runInAction(()=>{
41
+ jsonPatch.applyPatch(this.document, patch, false, true);
42
+ });
43
+ }
44
+ async waitForDocument() {
45
+ if (this.documentReady) return this.document;
46
+ return new Promise((resolve)=>{
47
+ this.readyResolvers.push(()=>{
48
+ resolve(this.document);
49
+ });
50
+ });
58
51
  }
59
- return new Promise(resolve => {
60
- this.readyResolvers.push(() => {
61
- resolve(this.document);
62
- });
63
- });
64
- }
65
52
  }
53
+ export { DocumentStore };
66
54
 
67
55
  //# sourceMappingURL=DocumentStore.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["jsonPatch","makeAutoObservable","runInAction","observable","DocumentStore","document","documentReady","readyResolvers","constructor","setDocument","doc","Object","assign","forEach","fn","updateDocument","cb","getDocument","getElement","id","elements","updateElement","patch","current","applyPatch","waitForDocument","Promise","resolve","push"],"sources":["DocumentStore.ts"],"sourcesContent":["import { jsonPatch, type JsonPatchOperation } from \"~/jsonPatch.js\";\nimport type { Document } from \"~/types.js\";\nimport { makeAutoObservable, runInAction, observable } from \"mobx\";\n\nexport class DocumentStore<TDocument extends Document = Document> {\n private document: TDocument | null = null;\n private documentReady = false;\n private readyResolvers: (() => void)[] = [];\n\n constructor() {\n makeAutoObservable(this);\n }\n\n setDocument(doc: TDocument) {\n runInAction(() => {\n if (this.document) {\n Object.assign(this.document, doc);\n } else {\n this.document = observable(doc);\n }\n this.documentReady = true;\n this.readyResolvers.forEach(fn => fn());\n this.readyResolvers = [];\n });\n }\n\n updateDocument(cb: (document: TDocument) => void) {\n runInAction(() => {\n if (this.document) {\n cb(this.document);\n }\n });\n }\n\n getDocument() {\n return this.document;\n }\n\n getElement(id: string) {\n if (!this.document) {\n return null;\n }\n\n return this.document.elements[id];\n }\n\n updateElement(id: string, patch: Partial<any>) {\n if (!this.document) {\n return;\n }\n\n const current = this.document.elements[id];\n if (current) {\n this.document.elements[id] = { ...current, ...patch };\n }\n }\n\n applyPatch(patch: JsonPatchOperation[]) {\n runInAction(() => {\n jsonPatch.applyPatch(this.document!, patch, false, true);\n });\n }\n\n async waitForDocument(): Promise<TDocument> {\n if (this.documentReady) {\n return this.document as TDocument;\n }\n\n return new Promise(resolve => {\n this.readyResolvers.push(() => {\n resolve(this.document as TDocument);\n });\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAElB,SAASC,kBAAkB,EAAEC,WAAW,EAAEC,UAAU,QAAQ,MAAM;AAElE,OAAO,MAAMC,aAAa,CAAwC;EACtDC,QAAQ,GAAqB,IAAI;EACjCC,aAAa,GAAG,KAAK;EACrBC,cAAc,GAAmB,EAAE;EAE3CC,WAAWA,CAAA,EAAG;IACVP,kBAAkB,CAAC,IAAI,CAAC;EAC5B;EAEAQ,WAAWA,CAACC,GAAc,EAAE;IACxBR,WAAW,CAAC,MAAM;MACd,IAAI,IAAI,CAACG,QAAQ,EAAE;QACfM,MAAM,CAACC,MAAM,CAAC,IAAI,CAACP,QAAQ,EAAEK,GAAG,CAAC;MACrC,CAAC,MAAM;QACH,IAAI,CAACL,QAAQ,GAAGF,UAAU,CAACO,GAAG,CAAC;MACnC;MACA,IAAI,CAACJ,aAAa,GAAG,IAAI;MACzB,IAAI,CAACC,cAAc,CAACM,OAAO,CAACC,EAAE,IAAIA,EAAE,CAAC,CAAC,CAAC;MACvC,IAAI,CAACP,cAAc,GAAG,EAAE;IAC5B,CAAC,CAAC;EACN;EAEAQ,cAAcA,CAACC,EAAiC,EAAE;IAC9Cd,WAAW,CAAC,MAAM;MACd,IAAI,IAAI,CAACG,QAAQ,EAAE;QACfW,EAAE,CAAC,IAAI,CAACX,QAAQ,CAAC;MACrB;IACJ,CAAC,CAAC;EACN;EAEAY,WAAWA,CAAA,EAAG;IACV,OAAO,IAAI,CAACZ,QAAQ;EACxB;EAEAa,UAAUA,CAACC,EAAU,EAAE;IACnB,IAAI,CAAC,IAAI,CAACd,QAAQ,EAAE;MAChB,OAAO,IAAI;IACf;IAEA,OAAO,IAAI,CAACA,QAAQ,CAACe,QAAQ,CAACD,EAAE,CAAC;EACrC;EAEAE,aAAaA,CAACF,EAAU,EAAEG,KAAmB,EAAE;IAC3C,IAAI,CAAC,IAAI,CAACjB,QAAQ,EAAE;MAChB;IACJ;IAEA,MAAMkB,OAAO,GAAG,IAAI,CAAClB,QAAQ,CAACe,QAAQ,CAACD,EAAE,CAAC;IAC1C,IAAII,OAAO,EAAE;MACT,IAAI,CAAClB,QAAQ,CAACe,QAAQ,CAACD,EAAE,CAAC,GAAG;QAAE,GAAGI,OAAO;QAAE,GAAGD;MAAM,CAAC;IACzD;EACJ;EAEAE,UAAUA,CAACF,KAA2B,EAAE;IACpCpB,WAAW,CAAC,MAAM;MACdF,SAAS,CAACwB,UAAU,CAAC,IAAI,CAACnB,QAAQ,EAAGiB,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IAC5D,CAAC,CAAC;EACN;EAEA,MAAMG,eAAeA,CAAA,EAAuB;IACxC,IAAI,IAAI,CAACnB,aAAa,EAAE;MACpB,OAAO,IAAI,CAACD,QAAQ;IACxB;IAEA,OAAO,IAAIqB,OAAO,CAACC,OAAO,IAAI;MAC1B,IAAI,CAACpB,cAAc,CAACqB,IAAI,CAAC,MAAM;QAC3BD,OAAO,CAAC,IAAI,CAACtB,QAAqB,CAAC;MACvC,CAAC,CAAC;IACN,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"DocumentStore.js","sources":["../src/DocumentStore.ts"],"sourcesContent":["import { jsonPatch, type JsonPatchOperation } from \"~/jsonPatch.js\";\nimport type { Document } from \"~/types.js\";\nimport { makeAutoObservable, runInAction, observable } from \"mobx\";\n\nexport class DocumentStore<TDocument extends Document = Document> {\n private document: TDocument | null = null;\n private documentReady = false;\n private readyResolvers: (() => void)[] = [];\n\n constructor() {\n makeAutoObservable(this);\n }\n\n setDocument(doc: TDocument) {\n runInAction(() => {\n if (this.document) {\n Object.assign(this.document, doc);\n } else {\n this.document = observable(doc);\n }\n this.documentReady = true;\n this.readyResolvers.forEach(fn => fn());\n this.readyResolvers = [];\n });\n }\n\n updateDocument(cb: (document: TDocument) => void) {\n runInAction(() => {\n if (this.document) {\n cb(this.document);\n }\n });\n }\n\n getDocument() {\n return this.document;\n }\n\n getElement(id: string) {\n if (!this.document) {\n return null;\n }\n\n return this.document.elements[id];\n }\n\n updateElement(id: string, patch: Partial<any>) {\n if (!this.document) {\n return;\n }\n\n const current = this.document.elements[id];\n if (current) {\n this.document.elements[id] = { ...current, ...patch };\n }\n }\n\n applyPatch(patch: JsonPatchOperation[]) {\n runInAction(() => {\n jsonPatch.applyPatch(this.document!, patch, false, true);\n });\n }\n\n async waitForDocument(): Promise<TDocument> {\n if (this.documentReady) {\n return this.document as TDocument;\n }\n\n return new Promise(resolve => {\n this.readyResolvers.push(() => {\n resolve(this.document as TDocument);\n });\n });\n }\n}\n"],"names":["DocumentStore","makeAutoObservable","doc","runInAction","Object","observable","fn","cb","id","patch","current","jsonPatch","Promise","resolve"],"mappings":";;AAIO,MAAMA;IAKT,aAAc;aAJN,QAAQ,GAAqB;aAC7B,aAAa,GAAG;aAChB,cAAc,GAAmB,EAAE;QAGvCC,mBAAmB,IAAI;IAC3B;IAEA,YAAYC,GAAc,EAAE;QACxBC,YAAY;YACR,IAAI,IAAI,CAAC,QAAQ,EACbC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAEF;iBAE7B,IAAI,CAAC,QAAQ,GAAGG,WAAWH;YAE/B,IAAI,CAAC,aAAa,GAAG;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAACI,CAAAA,KAAMA;YAClC,IAAI,CAAC,cAAc,GAAG,EAAE;QAC5B;IACJ;IAEA,eAAeC,EAAiC,EAAE;QAC9CJ,YAAY;YACR,IAAI,IAAI,CAAC,QAAQ,EACbI,GAAG,IAAI,CAAC,QAAQ;QAExB;IACJ;IAEA,cAAc;QACV,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,WAAWC,EAAU,EAAE;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,EACd,OAAO;QAGX,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAACA,GAAG;IACrC;IAEA,cAAcA,EAAU,EAAEC,KAAmB,EAAE;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,EACd;QAGJ,MAAMC,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAACF,GAAG;QAC1C,IAAIE,SACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAACF,GAAG,GAAG;YAAE,GAAGE,OAAO;YAAE,GAAGD,KAAK;QAAC;IAE5D;IAEA,WAAWA,KAA2B,EAAE;QACpCN,YAAY;YACRQ,UAAU,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAGF,OAAO,OAAO;QACvD;IACJ;IAEA,MAAM,kBAAsC;QACxC,IAAI,IAAI,CAAC,aAAa,EAClB,OAAO,IAAI,CAAC,QAAQ;QAGxB,OAAO,IAAIG,QAAQC,CAAAA;YACf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBACrBA,QAAQ,IAAI,CAAC,QAAQ;YACzB;QACJ;IACJ;AACJ"}
@@ -1,22 +1,23 @@
1
1
  import { DocumentStore } from "./DocumentStore.js";
2
2
  class DocumentStoreManager {
3
- stores = new Map();
4
- getStores() {
5
- return this.stores;
6
- }
7
- getStore(id) {
8
- if (!this.stores.has(id)) {
9
- this.stores.set(id, new DocumentStore());
3
+ getStores() {
4
+ return this.stores;
5
+ }
6
+ getStore(id) {
7
+ if (!this.stores.has(id)) this.stores.set(id, new DocumentStore());
8
+ return this.stores.get(id);
9
+ }
10
+ removeStore(id) {
11
+ this.stores.delete(id);
12
+ }
13
+ hasStore(id) {
14
+ return this.stores.has(id);
15
+ }
16
+ constructor(){
17
+ this.stores = new Map();
10
18
  }
11
- return this.stores.get(id);
12
- }
13
- removeStore(id) {
14
- this.stores.delete(id);
15
- }
16
- hasStore(id) {
17
- return this.stores.has(id);
18
- }
19
19
  }
20
- export const documentStoreManager = new DocumentStoreManager();
20
+ const documentStoreManager = new DocumentStoreManager();
21
+ export { documentStoreManager };
21
22
 
22
23
  //# sourceMappingURL=DocumentStoreManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DocumentStore","DocumentStoreManager","stores","Map","getStores","getStore","id","has","set","get","removeStore","delete","hasStore","documentStoreManager"],"sources":["DocumentStoreManager.ts"],"sourcesContent":["import type { Document } from \"./types.js\";\nimport { DocumentStore } from \"./DocumentStore.js\";\n\nclass DocumentStoreManager {\n private stores = new Map<string, DocumentStore>();\n\n getStores() {\n return this.stores;\n }\n\n getStore<TDocument extends Document>(id: string): DocumentStore<TDocument> {\n if (!this.stores.has(id)) {\n this.stores.set(id, new DocumentStore<TDocument>());\n }\n return this.stores.get(id)! as DocumentStore<TDocument>;\n }\n\n removeStore(id: string) {\n this.stores.delete(id);\n }\n\n hasStore(id: string): boolean {\n return this.stores.has(id);\n }\n}\n\nexport const documentStoreManager = new DocumentStoreManager();\n"],"mappings":"AACA,SAASA,aAAa;AAEtB,MAAMC,oBAAoB,CAAC;EACfC,MAAM,GAAG,IAAIC,GAAG,CAAwB,CAAC;EAEjDC,SAASA,CAAA,EAAG;IACR,OAAO,IAAI,CAACF,MAAM;EACtB;EAEAG,QAAQA,CAA6BC,EAAU,EAA4B;IACvE,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACK,GAAG,CAACD,EAAE,CAAC,EAAE;MACtB,IAAI,CAACJ,MAAM,CAACM,GAAG,CAACF,EAAE,EAAE,IAAIN,aAAa,CAAY,CAAC,CAAC;IACvD;IACA,OAAO,IAAI,CAACE,MAAM,CAACO,GAAG,CAACH,EAAE,CAAC;EAC9B;EAEAI,WAAWA,CAACJ,EAAU,EAAE;IACpB,IAAI,CAACJ,MAAM,CAACS,MAAM,CAACL,EAAE,CAAC;EAC1B;EAEAM,QAAQA,CAACN,EAAU,EAAW;IAC1B,OAAO,IAAI,CAACJ,MAAM,CAACK,GAAG,CAACD,EAAE,CAAC;EAC9B;AACJ;AAEA,OAAO,MAAMO,oBAAoB,GAAG,IAAIZ,oBAAoB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"DocumentStoreManager.js","sources":["../src/DocumentStoreManager.ts"],"sourcesContent":["import type { Document } from \"./types.js\";\nimport { DocumentStore } from \"./DocumentStore.js\";\n\nclass DocumentStoreManager {\n private stores = new Map<string, DocumentStore>();\n\n getStores() {\n return this.stores;\n }\n\n getStore<TDocument extends Document>(id: string): DocumentStore<TDocument> {\n if (!this.stores.has(id)) {\n this.stores.set(id, new DocumentStore<TDocument>());\n }\n return this.stores.get(id)! as DocumentStore<TDocument>;\n }\n\n removeStore(id: string) {\n this.stores.delete(id);\n }\n\n hasStore(id: string): boolean {\n return this.stores.has(id);\n }\n}\n\nexport const documentStoreManager = new DocumentStoreManager();\n"],"names":["DocumentStoreManager","id","DocumentStore","Map","documentStoreManager"],"mappings":";AAGA,MAAMA;IAGF,YAAY;QACR,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,SAAqCC,EAAU,EAA4B;QACvE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAACA,KACjB,IAAI,CAAC,MAAM,CAAC,GAAG,CAACA,IAAI,IAAIC;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAACD;IAC3B;IAEA,YAAYA,EAAU,EAAE;QACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAACA;IACvB;IAEA,SAASA,EAAU,EAAW;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAACA;IAC3B;;aAnBQ,MAAM,GAAG,IAAIE;;AAoBzB;AAEO,MAAMC,uBAAuB,IAAIJ"}