@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.
- package/BindingsApi.js +29 -36
- package/BindingsApi.js.map +1 -1
- package/BindingsProcessor.js +34 -43
- package/BindingsProcessor.js.map +1 -1
- package/BindingsProcessor.test.js +82 -78
- package/BindingsProcessor.test.js.map +1 -1
- package/BindingsResolver.d.ts +4 -1
- package/BindingsResolver.js +99 -119
- package/BindingsResolver.js.map +1 -1
- package/BindingsResolver.test.js +399 -363
- package/BindingsResolver.test.js.map +1 -1
- package/ComponentInputTraverser.js +32 -49
- package/ComponentInputTraverser.js.map +1 -1
- package/ComponentManifestToAstConverter.js +20 -21
- package/ComponentManifestToAstConverter.js.map +1 -1
- package/ComponentRegistry.d.ts +9 -0
- package/ComponentRegistry.js +30 -44
- package/ComponentRegistry.js.map +1 -1
- package/ComponentResolver.d.ts +3 -2
- package/ComponentResolver.js +39 -29
- package/ComponentResolver.js.map +1 -1
- package/ComponentResolver.test.d.ts +1 -0
- package/ComponentResolver.test.js +81 -0
- package/ComponentResolver.test.js.map +1 -0
- package/ConstraintEvaluator.js +246 -353
- package/ConstraintEvaluator.js.map +1 -1
- package/ConstraintEvaluator.test.js +1616 -1438
- package/ConstraintEvaluator.test.js.map +1 -1
- package/ContentSdk.d.ts +14 -0
- package/ContentSdk.js +113 -90
- package/ContentSdk.js.map +1 -1
- package/DocumentStore.js +47 -59
- package/DocumentStore.js.map +1 -1
- package/DocumentStoreManager.js +17 -16
- package/DocumentStoreManager.js.map +1 -1
- package/EditingSdk.js +92 -121
- package/EditingSdk.js.map +1 -1
- package/ElementFactory.js +164 -172
- package/ElementFactory.js.map +1 -1
- package/ElementFactory.objectListDefaults.test.d.ts +1 -0
- package/ElementFactory.objectListDefaults.test.js +423 -0
- package/ElementFactory.objectListDefaults.test.js.map +1 -0
- package/ElementFactory.test.js +335 -262
- package/ElementFactory.test.js.map +1 -1
- package/Environment.js +18 -19
- package/Environment.js.map +1 -1
- package/FunctionConverter.js +8 -7
- package/FunctionConverter.js.map +1 -1
- package/HashObject.js +11 -26
- package/HashObject.js.map +1 -1
- package/HotkeyManager.js +40 -47
- package/HotkeyManager.js.map +1 -1
- package/IBindingsUpdater.js +0 -3
- package/IRedirects.js +0 -3
- package/InheritanceProcessor.js +99 -139
- package/InheritanceProcessor.js.map +1 -1
- package/InheritanceProcessor.test.js +178 -179
- package/InheritanceProcessor.test.js.map +1 -1
- package/InheritedValueResolver.d.ts +18 -1
- package/InheritedValueResolver.js +18 -20
- package/InheritedValueResolver.js.map +1 -1
- package/InputBindingsProcessor.d.ts +23 -2
- package/InputBindingsProcessor.js +200 -307
- package/InputBindingsProcessor.js.map +1 -1
- package/InputBindingsProcessorTokens.test.d.ts +1 -0
- package/InputBindingsProcessorTokens.test.js +400 -0
- package/InputBindingsProcessorTokens.test.js.map +1 -0
- package/InputsBindingsProcessor.test.js +334 -315
- package/InputsBindingsProcessor.test.js.map +1 -1
- package/InputsUpdater.js +23 -26
- package/InputsUpdater.js.map +1 -1
- package/LiveSdk.js +12 -13
- package/LiveSdk.js.map +1 -1
- package/Logger.js +9 -8
- package/Logger.js.map +1 -1
- package/MouseTracker.js +77 -83
- package/MouseTracker.js.map +1 -1
- package/NullSdk.js +22 -21
- package/NullSdk.js.map +1 -1
- package/PreviewDocument.d.ts +1 -0
- package/PreviewDocument.js +30 -30
- package/PreviewDocument.js.map +1 -1
- package/PreviewSdk.d.ts +2 -1
- package/PreviewSdk.js +19 -17
- package/PreviewSdk.js.map +1 -1
- package/PreviewViewport.js +51 -63
- package/PreviewViewport.js.map +1 -1
- package/ResizeObserver.js +24 -31
- package/ResizeObserver.js.map +1 -1
- package/StylesBindingsProcessor.d.ts +12 -2
- package/StylesBindingsProcessor.js +62 -79
- package/StylesBindingsProcessor.js.map +1 -1
- package/StylesUpdater.js +20 -25
- package/StylesUpdater.js.map +1 -1
- package/Theme.js +30 -25
- package/Theme.js.map +1 -1
- package/ViewportManager.js +89 -101
- package/ViewportManager.js.map +1 -1
- package/assertBindingShapes.d.ts +31 -0
- package/assertBindingShapes.js +64 -0
- package/assertBindingShapes.js.map +1 -0
- package/assertBindingShapes.test.d.ts +1 -0
- package/assertBindingShapes.test.js +131 -0
- package/assertBindingShapes.test.js.map +1 -0
- package/asset/deliveryUrl.d.ts +41 -0
- package/asset/deliveryUrl.js +34 -0
- package/asset/deliveryUrl.js.map +1 -0
- package/asset/deliveryUrl.test.d.ts +1 -0
- package/asset/deliveryUrl.test.js +127 -0
- package/asset/deliveryUrl.test.js.map +1 -0
- package/asset/geometry.d.ts +7 -0
- package/asset/geometry.js +10 -0
- package/asset/geometry.js.map +1 -0
- package/asset/imageSrcSet.d.ts +63 -0
- package/asset/imageSrcSet.js +98 -0
- package/asset/imageSrcSet.js.map +1 -0
- package/asset/imageSrcSet.test.d.ts +1 -0
- package/asset/imageSrcSet.test.js +103 -0
- package/asset/imageSrcSet.test.js.map +1 -0
- package/asset/index.d.ts +5 -0
- package/asset/index.js +5 -0
- package/asset/normalize.d.ts +24 -0
- package/asset/normalize.js +106 -0
- package/asset/normalize.js.map +1 -0
- package/asset/normalize.test.d.ts +1 -0
- package/asset/normalize.test.js +263 -0
- package/asset/normalize.test.js.map +1 -0
- package/asset/types.d.ts +2 -0
- package/asset/types.js +0 -0
- package/constants.js +7 -6
- package/constants.js.map +1 -1
- package/contentEntry/ContentEntryBindingsResolver.d.ts +30 -0
- package/contentEntry/ContentEntryBindingsResolver.js +45 -0
- package/contentEntry/ContentEntryBindingsResolver.js.map +1 -0
- package/contentEntry/ContentEntryCache.d.ts +46 -0
- package/contentEntry/ContentEntryCache.js +50 -0
- package/contentEntry/ContentEntryCache.js.map +1 -0
- package/contentEntry/resolveContentEntry.d.ts +74 -0
- package/contentEntry/resolveContentEntry.js +53 -0
- package/contentEntry/resolveContentEntry.js.map +1 -0
- package/contentEntry/resolveContentEntry.test.d.ts +1 -0
- package/contentEntry/resolveContentEntry.test.js +213 -0
- package/contentEntry/resolveContentEntry.test.js.map +1 -0
- package/createComponent.d.ts +5 -0
- package/createComponent.js +32 -0
- package/createComponent.js.map +1 -0
- package/createElement.js +5 -6
- package/createElement.js.map +1 -1
- package/createInput.d.ts +10 -2
- package/createInput.js +92 -143
- package/createInput.js.map +1 -1
- package/createTheme.js +2 -3
- package/createTheme.js.map +1 -1
- package/dataProviders/ApiClient.d.ts +10 -5
- package/dataProviders/ApiClient.js +40 -49
- package/dataProviders/ApiClient.js.map +1 -1
- package/dataProviders/DefaultDataProvider.d.ts +4 -0
- package/dataProviders/DefaultDataProvider.js +91 -58
- package/dataProviders/DefaultDataProvider.js.map +1 -1
- package/dataProviders/GET_EXPERIMENT_PAUSED.d.ts +1 -0
- package/dataProviders/GET_EXPERIMENT_PAUSED.js +17 -0
- package/dataProviders/GET_EXPERIMENT_PAUSED.js.map +1 -0
- package/dataProviders/GET_PAGE_BY_ID.js +2 -1
- package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_PATH.js +2 -1
- package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
- package/dataProviders/GET_PAGE_EXPERIMENT.d.ts +1 -0
- package/dataProviders/GET_PAGE_EXPERIMENT.js +32 -0
- package/dataProviders/GET_PAGE_EXPERIMENT.js.map +1 -0
- package/dataProviders/GET_VARIANT_CONTENT.d.ts +1 -0
- package/dataProviders/GET_VARIANT_CONTENT.js +24 -0
- package/dataProviders/GET_VARIANT_CONTENT.js.map +1 -0
- package/dataProviders/LIST_PUBLISHED_PAGES.js +2 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
- package/dataProviders/NullDataProvider.d.ts +4 -0
- package/dataProviders/NullDataProvider.js +30 -20
- package/dataProviders/NullDataProvider.js.map +1 -1
- package/dataProviders/RedirectsProvider.js +24 -27
- package/dataProviders/RedirectsProvider.js.map +1 -1
- package/defaultBreakpoints.js +43 -22
- package/defaultBreakpoints.js.map +1 -1
- package/documentOperations/$addElementReferenceToParent.js +29 -32
- package/documentOperations/$addElementReferenceToParent.js.map +1 -1
- package/documentOperations/AddElement.js +8 -7
- package/documentOperations/AddElement.js.map +1 -1
- package/documentOperations/AddToParent.js +14 -13
- package/documentOperations/AddToParent.js.map +1 -1
- package/documentOperations/IDocumentOperation.js +0 -3
- package/documentOperations/RemoveElement.js +9 -15
- package/documentOperations/RemoveElement.js.map +1 -1
- package/documentOperations/SetGlobalInputBinding.js +23 -22
- package/documentOperations/SetGlobalInputBinding.js.map +1 -1
- package/documentOperations/SetGlobalStyleBinding.js +23 -23
- package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
- package/documentOperations/SetInputBindingOverride.js +30 -29
- package/documentOperations/SetInputBindingOverride.js.map +1 -1
- package/documentOperations/SetStyleBindingOverride.js +30 -31
- package/documentOperations/SetStyleBindingOverride.js.map +1 -1
- package/documentOperations/index.js +9 -8
- package/documentOperations/index.js.map +1 -1
- package/experiments/PostHogAnalyticsProvider.d.ts +31 -0
- package/experiments/PostHogAnalyticsProvider.js +28 -0
- package/experiments/PostHogAnalyticsProvider.js.map +1 -0
- package/experiments/analyticsProvider.d.ts +4 -0
- package/experiments/analyticsProvider.js +11 -0
- package/experiments/analyticsProvider.js.map +1 -0
- package/experiments/bucketing.d.ts +27 -0
- package/experiments/bucketing.js +91 -0
- package/experiments/bucketing.js.map +1 -0
- package/experiments/bucketing.test.d.ts +1 -0
- package/experiments/bucketing.test.js +183 -0
- package/experiments/bucketing.test.js.map +1 -0
- package/experiments/index.d.ts +5 -0
- package/experiments/index.js +5 -0
- package/experiments/render.d.ts +79 -0
- package/experiments/render.js +149 -0
- package/experiments/render.js.map +1 -0
- package/experiments/types.d.ts +108 -0
- package/experiments/types.js +4 -0
- package/experiments/types.js.map +1 -0
- package/findMatchingAstNode.js +11 -13
- package/findMatchingAstNode.js.map +1 -1
- package/generateElementId.js +2 -1
- package/generateElementId.js.map +1 -1
- package/headersProvider.js +4 -3
- package/headersProvider.js.map +1 -1
- package/image/geometry.d.ts +54 -0
- package/image/geometry.js +112 -0
- package/image/geometry.js.map +1 -0
- package/image/geometry.test.d.ts +1 -0
- package/image/geometry.test.js +190 -0
- package/image/geometry.test.js.map +1 -0
- package/image/index.d.ts +3 -0
- package/image/index.js +3 -0
- package/image/presets.d.ts +6 -0
- package/image/presets.js +20 -0
- package/image/presets.js.map +1 -0
- package/image/types.d.ts +10 -0
- package/image/types.js +0 -0
- package/index.d.ts +10 -0
- package/index.js +10 -2
- package/jsonPatch.js +5 -9
- package/jsonPatch.js.map +1 -1
- package/messages.js +12 -11
- package/messages.js.map +1 -1
- package/messenger/MessageOrigin.js +12 -11
- package/messenger/MessageOrigin.js.map +1 -1
- package/messenger/Messenger.js +58 -69
- package/messenger/Messenger.js.map +1 -1
- package/messenger/index.js +0 -2
- package/package.json +12 -9
- package/registerComponentGroup.js +5 -6
- package/registerComponentGroup.js.map +1 -1
- package/tokenBinding.d.ts +26 -0
- package/tokenBinding.js +15 -0
- package/tokenBinding.js.map +1 -0
- package/tokenBinding.test.d.ts +1 -0
- package/tokenBinding.test.js +165 -0
- package/tokenBinding.test.js.map +1 -0
- package/types/ShorthandCssProperties.js +0 -3
- package/types/WebsiteBuilderTheme.d.ts +12 -0
- package/types/WebsiteBuilderTheme.js +0 -3
- package/types.d.ts +96 -1
- package/types.js +0 -3
- package/IBindingsUpdater.js.map +0 -1
- package/IRedirects.js.map +0 -1
- package/documentOperations/IDocumentOperation.js.map +0 -1
- package/index.js.map +0 -1
- package/messenger/index.js.map +0 -1
- package/types/ShorthandCssProperties.js.map +0 -1
- package/types/WebsiteBuilderTheme.js.map +0 -1
- 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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
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,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
...patch
|
|
47
|
-
};
|
|
19
|
+
updateDocument(cb) {
|
|
20
|
+
runInAction(()=>{
|
|
21
|
+
if (this.document) cb(this.document);
|
|
22
|
+
});
|
|
48
23
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
package/DocumentStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/DocumentStoreManager.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { DocumentStore } from "./DocumentStore.js";
|
|
2
2
|
class DocumentStoreManager {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
20
|
+
const documentStoreManager = new DocumentStoreManager();
|
|
21
|
+
export { documentStoreManager };
|
|
21
22
|
|
|
22
23
|
//# sourceMappingURL=DocumentStoreManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|