@wix/astro 2.25.0 → 2.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/build/dependencies/astro-translations/{chunk-YRKN4TFH.js → backend-runtime/middleware/static-translations.js} +33 -1
  2. package/build/dependencies/astro-translations/backend-runtime/runtime/i18n.d.ts +4 -0
  3. package/build/dependencies/astro-translations/backend-runtime/runtime/i18n.js +42 -0
  4. package/build/dependencies/astro-translations/integration/index.js +296 -0
  5. package/build/dependencies/astro-translations/types/wix-astro-i18n.d.ts +18 -0
  6. package/build/dependencies/astro-viewer-services-extensions/browser-runtime/sdk.js +21 -0
  7. package/build/dependencies/astro-viewer-services-extensions/types/index.d.ts +27 -0
  8. package/build/integration/builders-experimental.js +1 -1
  9. package/build/integration/builders-trusted.js +2 -2
  10. package/build/integration/builders.d.ts +27 -4
  11. package/build/integration/builders.js +2 -2
  12. package/build/integration/{chunk-S5CQHYTB.js → chunk-CBVCNKLN.js} +437 -13
  13. package/build/integration/chunk-CBVCNKLN.js.map +1 -0
  14. package/build/integration/{chunk-CTGNWVC3.js → chunk-E42TF2A2.js} +3 -5
  15. package/build/integration/chunk-E42TF2A2.js.map +1 -0
  16. package/build/integration/{chunk-LQFJQHEX.js → chunk-KCOYXYJL.js} +2 -2
  17. package/build/integration/{chunk-XF55M5AE.js → chunk-MNQWQ2MC.js} +2 -2
  18. package/build/integration/{chunk-XF55M5AE.js.map → chunk-MNQWQ2MC.js.map} +1 -1
  19. package/build/integration/index.js +78 -29
  20. package/build/integration/index.js.map +1 -1
  21. package/package.json +4 -2
  22. package/build/dependencies/astro-translations/index.js +0 -133
  23. package/build/dependencies/astro-translations/middleware/static-translations.js +0 -58
  24. package/build/integration/chunk-CTGNWVC3.js.map +0 -1
  25. package/build/integration/chunk-S5CQHYTB.js.map +0 -1
  26. /package/build/dependencies/astro-translations/{middleware → backend-runtime/middleware}/static-translations.d.ts +0 -0
  27. /package/build/dependencies/astro-translations/{index.d.ts → integration/index.d.ts} +0 -0
  28. /package/build/integration/{chunk-LQFJQHEX.js.map → chunk-KCOYXYJL.js.map} +0 -0
@@ -1,3 +1,8 @@
1
+ // src/middleware/static-translations.ts
2
+ import { i18n } from "@wix/essentials";
3
+ import { headTransformStream } from "@wix/request-transform-utils";
4
+ import { multilingual } from "@wix/site";
5
+
1
6
  // ../../node_modules/outdent/lib-module/index.js
2
7
  function noop() {
3
8
  var args = [];
@@ -131,6 +136,33 @@ if (typeof module !== "undefined") {
131
136
  }
132
137
  }
133
138
 
139
+ // src/middleware/static-translations.ts
140
+ globalThis.__wix_translations__ = __WIX_ASTRO_I18N__.translations;
141
+ var onRequest = async (context, next) => {
142
+ const response = await next();
143
+ const contentType = response.headers.get("Content-Type");
144
+ if (contentType !== "text/html" || context.url.pathname.startsWith("/_wix") || !response.body) {
145
+ return response;
146
+ }
147
+ const filteredTranslations = getFilteredTranslations();
148
+ const translationsScript = defaultOutdent`
149
+ <script>window.__wix_translations__ = ${JSON.stringify(filteredTranslations)};</script>
150
+ `;
151
+ return new Response(
152
+ response.body.pipeThrough(new TextDecoderStream()).pipeThrough(headTransformStream(translationsScript)).pipeThrough(new TextEncoderStream()),
153
+ response
154
+ );
155
+ };
156
+ function getFilteredTranslations() {
157
+ const allTranslations = globalThis.__wix_translations__ ?? {};
158
+ const pickLanguage = (lang) => lang != null && allTranslations[lang] ? { [lang]: allTranslations[lang] } : {};
159
+ const currentLanguage = i18n.getLanguage();
160
+ const primaryLanguage = multilingual.listSupportedLanguages().find((language) => language.primary)?.id;
161
+ return {
162
+ ...pickLanguage(currentLanguage),
163
+ ...pickLanguage(primaryLanguage)
164
+ };
165
+ }
134
166
  export {
135
- defaultOutdent
167
+ onRequest
136
168
  };
@@ -0,0 +1,4 @@
1
+ declare function getAbsoluteLocaleUrl(path?: string): string;
2
+ declare function getRelativeLocaleUrl(path?: string): string;
3
+
4
+ export { getAbsoluteLocaleUrl, getRelativeLocaleUrl };
@@ -0,0 +1,42 @@
1
+ // src/runtime/i18n.ts
2
+ import { i18n } from "@wix/essentials";
3
+ import { applyLanguageToUrl } from "@wix/headless-localization-utils";
4
+ import { listSupportedLanguages } from "@wix/multilingual-manager";
5
+ var PLACEHOLDER_BASE = "http://localhost";
6
+ var { base: configBase = "/", siteUrl } = __WIX_ASTRO_I18N__;
7
+ function getAbsoluteLocaleUrl(path) {
8
+ const baseUrl = siteUrl ?? PLACEHOLDER_BASE;
9
+ const localizedUrl = buildLocalizedUrl(baseUrl, path);
10
+ if (siteUrl == null) {
11
+ const url = new URL(localizedUrl);
12
+ return url.pathname + url.search + url.hash;
13
+ }
14
+ return localizedUrl;
15
+ }
16
+ function getRelativeLocaleUrl(path) {
17
+ const localizedUrl = new URL(buildLocalizedUrl(PLACEHOLDER_BASE, path));
18
+ return localizedUrl.pathname + localizedUrl.search + localizedUrl.hash;
19
+ }
20
+ function buildLocalizedUrl(baseUrl, path) {
21
+ const basePath = configBase === "/" ? "" : configBase.replace(/\/$/, "");
22
+ const pathSegment = path?.startsWith("/") ? path : `/${path ?? ""}`;
23
+ const url = new URL(basePath + pathSegment || "/", baseUrl);
24
+ const languageConfig = getCurrentLanguageConfig();
25
+ return languageConfig ? applyLanguageToUrl(url.href, languageConfig) : url.href;
26
+ }
27
+ function getCurrentLanguageConfig() {
28
+ const currentLanguage = i18n.getLanguage();
29
+ const languages = listSupportedLanguages();
30
+ const language = languages.find((lang) => lang.id === currentLanguage);
31
+ if (language == null || language.primary) {
32
+ return;
33
+ }
34
+ return {
35
+ languageCode: language.id,
36
+ resolutionMethod: language.resolutionMethod
37
+ };
38
+ }
39
+ export {
40
+ getAbsoluteLocaleUrl,
41
+ getRelativeLocaleUrl
42
+ };
@@ -0,0 +1,296 @@
1
+ // src/index.ts
2
+ import { readFileSync } from "fs";
3
+ import { fileURLToPath as fileURLToPath3 } from "url";
4
+
5
+ // src/utils/loadTranslations.ts
6
+ import { readdir } from "fs/promises";
7
+ import { join as join2 } from "path";
8
+ import { fileURLToPath } from "url";
9
+ import { readJson } from "@wix/fs-utils";
10
+ import { toNamespaceDictionary } from "@wix/headless-localization-utils";
11
+
12
+ // src/constants.ts
13
+ var TRANSLATIONS_METADATA_FILENAME = "metadata.json";
14
+ var TRANSLATIONS_FILENAME = "translations.json";
15
+
16
+ // src/utils/errorMessages.ts
17
+ import { join } from "path";
18
+
19
+ // ../../node_modules/outdent/lib-module/index.js
20
+ function noop() {
21
+ var args = [];
22
+ for (var _i = 0; _i < arguments.length; _i++) {
23
+ args[_i] = arguments[_i];
24
+ }
25
+ }
26
+ function createWeakMap() {
27
+ if (typeof WeakMap !== "undefined") {
28
+ return /* @__PURE__ */ new WeakMap();
29
+ } else {
30
+ return fakeSetOrMap();
31
+ }
32
+ }
33
+ function fakeSetOrMap() {
34
+ return {
35
+ add: noop,
36
+ delete: noop,
37
+ get: noop,
38
+ set: noop,
39
+ has: function(k) {
40
+ return false;
41
+ }
42
+ };
43
+ }
44
+ var hop = Object.prototype.hasOwnProperty;
45
+ var has = function(obj, prop) {
46
+ return hop.call(obj, prop);
47
+ };
48
+ function extend(target, source) {
49
+ for (var prop in source) {
50
+ if (has(source, prop)) {
51
+ target[prop] = source[prop];
52
+ }
53
+ }
54
+ return target;
55
+ }
56
+ var reLeadingNewline = /^[ \t]*(?:\r\n|\r|\n)/;
57
+ var reTrailingNewline = /(?:\r\n|\r|\n)[ \t]*$/;
58
+ var reStartsWithNewlineOrIsEmpty = /^(?:[\r\n]|$)/;
59
+ var reDetectIndentation = /(?:\r\n|\r|\n)([ \t]*)(?:[^ \t\r\n]|$)/;
60
+ var reOnlyWhitespaceWithAtLeastOneNewline = /^[ \t]*[\r\n][ \t\r\n]*$/;
61
+ function _outdentArray(strings, firstInterpolatedValueSetsIndentationLevel, options) {
62
+ var indentationLevel = 0;
63
+ var match = strings[0].match(reDetectIndentation);
64
+ if (match) {
65
+ indentationLevel = match[1].length;
66
+ }
67
+ var reSource = "(\\r\\n|\\r|\\n).{0," + indentationLevel + "}";
68
+ var reMatchIndent = new RegExp(reSource, "g");
69
+ if (firstInterpolatedValueSetsIndentationLevel) {
70
+ strings = strings.slice(1);
71
+ }
72
+ var newline = options.newline, trimLeadingNewline = options.trimLeadingNewline, trimTrailingNewline = options.trimTrailingNewline;
73
+ var normalizeNewlines = typeof newline === "string";
74
+ var l = strings.length;
75
+ var outdentedStrings = strings.map(function(v, i) {
76
+ v = v.replace(reMatchIndent, "$1");
77
+ if (i === 0 && trimLeadingNewline) {
78
+ v = v.replace(reLeadingNewline, "");
79
+ }
80
+ if (i === l - 1 && trimTrailingNewline) {
81
+ v = v.replace(reTrailingNewline, "");
82
+ }
83
+ if (normalizeNewlines) {
84
+ v = v.replace(/\r\n|\n|\r/g, function(_) {
85
+ return newline;
86
+ });
87
+ }
88
+ return v;
89
+ });
90
+ return outdentedStrings;
91
+ }
92
+ function concatStringsAndValues(strings, values) {
93
+ var ret = "";
94
+ for (var i = 0, l = strings.length; i < l; i++) {
95
+ ret += strings[i];
96
+ if (i < l - 1) {
97
+ ret += values[i];
98
+ }
99
+ }
100
+ return ret;
101
+ }
102
+ function isTemplateStringsArray(v) {
103
+ return has(v, "raw") && has(v, "length");
104
+ }
105
+ function createInstance(options) {
106
+ var arrayAutoIndentCache = createWeakMap();
107
+ var arrayFirstInterpSetsIndentCache = createWeakMap();
108
+ function outdent(stringsOrOptions) {
109
+ var values = [];
110
+ for (var _i = 1; _i < arguments.length; _i++) {
111
+ values[_i - 1] = arguments[_i];
112
+ }
113
+ if (isTemplateStringsArray(stringsOrOptions)) {
114
+ var strings = stringsOrOptions;
115
+ var firstInterpolatedValueSetsIndentationLevel = (values[0] === outdent || values[0] === defaultOutdent) && reOnlyWhitespaceWithAtLeastOneNewline.test(strings[0]) && reStartsWithNewlineOrIsEmpty.test(strings[1]);
116
+ var cache = firstInterpolatedValueSetsIndentationLevel ? arrayFirstInterpSetsIndentCache : arrayAutoIndentCache;
117
+ var renderedArray = cache.get(strings);
118
+ if (!renderedArray) {
119
+ renderedArray = _outdentArray(strings, firstInterpolatedValueSetsIndentationLevel, options);
120
+ cache.set(strings, renderedArray);
121
+ }
122
+ if (values.length === 0) {
123
+ return renderedArray[0];
124
+ }
125
+ var rendered = concatStringsAndValues(renderedArray, firstInterpolatedValueSetsIndentationLevel ? values.slice(1) : values);
126
+ return rendered;
127
+ } else {
128
+ return createInstance(extend(extend({}, options), stringsOrOptions || {}));
129
+ }
130
+ }
131
+ var fullOutdent = extend(outdent, {
132
+ string: function(str) {
133
+ return _outdentArray([str], false, options)[0];
134
+ }
135
+ });
136
+ return fullOutdent;
137
+ }
138
+ var defaultOutdent = createInstance({
139
+ trimLeadingNewline: true,
140
+ trimTrailingNewline: true
141
+ });
142
+ if (typeof module !== "undefined") {
143
+ try {
144
+ module.exports = defaultOutdent;
145
+ Object.defineProperty(defaultOutdent, "__esModule", { value: true });
146
+ defaultOutdent.default = defaultOutdent;
147
+ defaultOutdent.outdent = defaultOutdent;
148
+ } catch (e) {
149
+ }
150
+ }
151
+
152
+ // src/utils/errorMessages.ts
153
+ function createTranslationFilesError(translationsDir) {
154
+ return new Error(defaultOutdent`
155
+ Failed to load translation file(s).
156
+ 💡 Tip: create a file '${join(translationsDir, "translations.json")}' in your project, then use the Wix CLI to push these keys.
157
+
158
+ Example translation file structure:
159
+ {
160
+ "hello": "Hello",
161
+ "goodbye": "Goodbye"
162
+ }
163
+
164
+ 🔍 Need Help?
165
+ - Visit our docs: https://dev.wix.com/docs/go-headless
166
+ `);
167
+ }
168
+
169
+ // src/utils/loadTranslations.ts
170
+ async function loadTranslationFile(filePath) {
171
+ return readJson(filePath).then(
172
+ (data) => toNamespaceDictionary(data)
173
+ );
174
+ }
175
+ async function loadAllTranslations(astroConfig) {
176
+ const srcDir = fileURLToPath(astroConfig.srcDir);
177
+ const rootDir = fileURLToPath(astroConfig.root);
178
+ const tempDir = join2(rootDir, ".wix");
179
+ const multilingualDir = join2(tempDir, "multilingual");
180
+ const primaryTranslationPath = join2(srcDir, TRANSLATIONS_FILENAME);
181
+ const pulledTranslationsDir = join2(multilingualDir, "translations");
182
+ let metadata;
183
+ let primaryTranslation;
184
+ try {
185
+ metadata = await loadMetadata(multilingualDir);
186
+ primaryTranslation = await loadPrimaryTranslation(
187
+ primaryTranslationPath,
188
+ metadata
189
+ );
190
+ } catch {
191
+ throw createTranslationFilesError(srcDir);
192
+ }
193
+ const wixTranslations = await loadTranslations(pulledTranslationsDir);
194
+ return { ...wixTranslations, ...primaryTranslation };
195
+ }
196
+ async function loadMetadata(translationsMetadataDir) {
197
+ const metadataPath = join2(
198
+ translationsMetadataDir,
199
+ TRANSLATIONS_METADATA_FILENAME
200
+ );
201
+ return await readJson(metadataPath);
202
+ }
203
+ async function loadPrimaryTranslation(primaryTranslationPath, metadata) {
204
+ const translationContent = await loadTranslationFile(primaryTranslationPath);
205
+ return {
206
+ [metadata.primaryLanguageCode]: translationContent
207
+ };
208
+ }
209
+ async function loadTranslations(translationsDir) {
210
+ const files = await readdir(translationsDir);
211
+ const jsonFiles = files.filter((file) => file.endsWith(".json"));
212
+ const translations = {};
213
+ for (const file of jsonFiles) {
214
+ const languageCode = file.replace(".json", "");
215
+ const filePath = join2(translationsDir, file);
216
+ translations[languageCode] = await loadTranslationFile(filePath);
217
+ }
218
+ return translations;
219
+ }
220
+
221
+ // src/vite/wix-astro-i18n-plugin.ts
222
+ import { fileURLToPath as fileURLToPath2 } from "url";
223
+ var VIRTUAL_MODULE_ID = "wix:astro:i18n";
224
+ var RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`;
225
+ var i18nRuntimePath = fileURLToPath2(
226
+ new URL(
227
+ "../dependencies/astro-translations/backend-runtime/runtime/i18n.js",
228
+ import.meta.url
229
+ )
230
+ );
231
+ var wixAstroI18nPlugin = () => {
232
+ return {
233
+ name: "vite-plugin-wix-astro-i18n",
234
+ enforce: "pre",
235
+ load(id) {
236
+ if (id !== RESOLVED_VIRTUAL_MODULE_ID) {
237
+ return;
238
+ }
239
+ return `export * from '${i18nRuntimePath}';`;
240
+ },
241
+ resolveId(id) {
242
+ return id === VIRTUAL_MODULE_ID ? RESOLVED_VIRTUAL_MODULE_ID : void 0;
243
+ }
244
+ };
245
+ };
246
+
247
+ // src/index.ts
248
+ var i18nTypesPath = fileURLToPath3(
249
+ new URL(
250
+ "../dependencies/astro-translations/types/wix-astro-i18n.d.ts",
251
+ import.meta.url
252
+ )
253
+ );
254
+ var createIntegration = () => {
255
+ return {
256
+ name: "@wix/astro/static-translations",
257
+ hooks: {
258
+ "astro:config:setup": async ({
259
+ addMiddleware,
260
+ config: astroConfig,
261
+ updateConfig
262
+ }) => {
263
+ const translations = await loadAllTranslations(astroConfig);
264
+ updateConfig({
265
+ vite: {
266
+ define: {
267
+ __WIX_ASTRO_I18N__: JSON.stringify({
268
+ base: astroConfig.base,
269
+ siteUrl: astroConfig.site ?? null,
270
+ translations
271
+ })
272
+ },
273
+ plugins: [wixAstroI18nPlugin()]
274
+ }
275
+ });
276
+ addMiddleware({
277
+ entrypoint: new URL(
278
+ "../dependencies/astro-translations/backend-runtime/middleware/static-translations.js",
279
+ import.meta.url
280
+ ),
281
+ order: "pre"
282
+ });
283
+ },
284
+ "astro:config:done": async ({ injectTypes }) => {
285
+ injectTypes({
286
+ content: readFileSync(i18nTypesPath, "utf-8"),
287
+ filename: "wix-astro-i18n.d.ts"
288
+ });
289
+ }
290
+ }
291
+ };
292
+ };
293
+ var index_default = createIntegration;
294
+ export {
295
+ index_default as default
296
+ };
@@ -0,0 +1,18 @@
1
+ declare module 'wix:astro:i18n' {
2
+ /**
3
+ * Returns a relative URL path with the current locale applied.
4
+ * Uses the language from the current request context.
5
+ *
6
+ * @param path - Optional path to localize (defaults to '/')
7
+ * @returns Localized relative URL (e.g., '/fr/getting-started')
8
+ */
9
+ export function getRelativeLocaleUrl(path?: string): string;
10
+
11
+ /**
12
+ * Returns an absolute URL with the current locale applied.
13
+ *
14
+ * @param path - Optional path to localize (defaults to '/')
15
+ * @returns Localized absolute URL (e.g., 'https://example.com/fr/getting-started')
16
+ */
17
+ export function getAbsoluteLocaleUrl(path?: string): string;
18
+ }
@@ -0,0 +1,21 @@
1
+ // ../astro-browser-runtime/src/sdk/site.ts
2
+ import { createClient } from "@wix/sdk";
3
+ import { site } from "@wix/site";
4
+ var enableClient = (applicationId) => {
5
+ const host = site.host({ applicationId });
6
+ const auth = site.auth();
7
+ const wixClient = createClient({
8
+ auth,
9
+ host
10
+ });
11
+ wixClient.enableContext("module");
12
+ return auth.getAccessTokenInjector();
13
+ };
14
+
15
+ // src/runtime/sdk.ts
16
+ function createContext() {
17
+ return enableClient(import.meta.env.WIX_CLIENT_ID);
18
+ }
19
+ export {
20
+ createContext
21
+ };
@@ -0,0 +1,27 @@
1
+ import { WixIntegration, BaseExtension } from '@wix/astro-core';
2
+
3
+ declare const createIntegration: () => WixIntegration;
4
+
5
+ interface ViewerService extends BaseExtension {
6
+ type: 'ViewerService';
7
+ options: Options;
8
+ }
9
+ interface Options {
10
+ id: string;
11
+ description?: string;
12
+ docLink?: string;
13
+ editor?: {
14
+ [key: string]: unknown;
15
+ bundle: string;
16
+ dependencies?: string[];
17
+ };
18
+ packageName: string;
19
+ viewer: {
20
+ [key: string]: unknown;
21
+ bundle: string;
22
+ dependencies?: string[];
23
+ };
24
+ }
25
+ declare function viewerService(options: Options): ViewerService;
26
+
27
+ export { createIntegration as default, viewerService };
@@ -3,7 +3,7 @@ const require = _createRequire(import.meta.url);
3
3
  import {
4
4
  contextProvider,
5
5
  functionLibrary
6
- } from "./chunk-XF55M5AE.js";
6
+ } from "./chunk-MNQWQ2MC.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-23MOLCVI.js";
@@ -3,7 +3,7 @@ const require = _createRequire(import.meta.url);
3
3
  import {
4
4
  trustedBackofficePage,
5
5
  trustedBackofficeWidget
6
- } from "./chunk-LQFJQHEX.js";
6
+ } from "./chunk-KCOYXYJL.js";
7
7
  import {
8
8
  app,
9
9
  bookingsStaffSortingProvider,
@@ -20,7 +20,7 @@ import {
20
20
  siteComponentPanel,
21
21
  sitePlugin,
22
22
  webhook
23
- } from "./chunk-CTGNWVC3.js";
23
+ } from "./chunk-E42TF2A2.js";
24
24
  import {
25
25
  init_esm_shims
26
26
  } from "./chunk-23MOLCVI.js";
@@ -1,5 +1,5 @@
1
1
  import { b as bookingsStaffSortingProvider, c as customElement, e as ecomAdditionalFees, a as ecomDiscountTriggers, d as ecomGiftCards, f as ecomPaymentSettings, g as ecomShippingRates, h as ecomValidations, i as embeddedScript, w as webhook, s as siteComponent, j as siteComponentPanel, k as sitePlugin } from './index.d-BUVlSCHa.js';
2
- import { g as genericExtension } from './index.d-D4c48TR0.js';
2
+ import { B as BaseExtension, g as genericExtension } from './index.d-D4c48TR0.js';
3
3
  export { a as app } from './index.d-D4c48TR0.js';
4
4
 
5
5
  interface BackofficeExtensionMenuPlugin {
@@ -55,15 +55,37 @@ declare function backofficeModal(options: Options$1): BackofficeModal;
55
55
 
56
56
  interface BackofficePage {
57
57
  type: 'BackofficePage';
58
- options: Options;
58
+ options: Options$4;
59
59
  }
60
- interface Options {
60
+ interface Options$4 {
61
61
  id: string;
62
62
  component: string;
63
63
  routePath: string;
64
64
  title: string;
65
65
  }
66
- declare function backofficePage(options: Options): BackofficePage;
66
+ declare function backofficePage(options: Options$4): BackofficePage;
67
+
68
+ interface ViewerService extends BaseExtension {
69
+ type: 'ViewerService';
70
+ options: Options;
71
+ }
72
+ interface Options {
73
+ id: string;
74
+ description?: string;
75
+ docLink?: string;
76
+ editor?: {
77
+ [key: string]: unknown;
78
+ bundle: string;
79
+ dependencies?: string[];
80
+ };
81
+ packageName: string;
82
+ viewer: {
83
+ [key: string]: unknown;
84
+ bundle: string;
85
+ dependencies?: string[];
86
+ };
87
+ }
88
+ declare function viewerService(options: Options): ViewerService;
67
89
 
68
90
  declare const extensions: {
69
91
  bookingsStaffSortingProvider: typeof bookingsStaffSortingProvider;
@@ -84,6 +106,7 @@ declare const extensions: {
84
106
  siteComponent: typeof siteComponent;
85
107
  siteComponentPanel: typeof siteComponentPanel;
86
108
  sitePlugin: typeof sitePlugin;
109
+ viewerService: typeof viewerService;
87
110
  };
88
111
 
89
112
  export { extensions };
@@ -2,10 +2,10 @@ import { createRequire as _createRequire } from 'node:module';
2
2
  const require = _createRequire(import.meta.url);
3
3
  import {
4
4
  extensions
5
- } from "./chunk-S5CQHYTB.js";
5
+ } from "./chunk-CBVCNKLN.js";
6
6
  import {
7
7
  app
8
- } from "./chunk-CTGNWVC3.js";
8
+ } from "./chunk-E42TF2A2.js";
9
9
  import "./chunk-23MOLCVI.js";
10
10
  export {
11
11
  app,