From 7357a51aeb1034a3991e8b98cf740d550bedde19 Mon Sep 17 00:00:00 2001 From: Martin Zanoni Date: Wed, 6 Aug 2025 13:32:14 +0200 Subject: [PATCH] feat: copy client files during dev on build --- samples/UmbracoV16/UmbracoV16.csproj | 11 +- .../relewise-dashboard/entrypoint-HsYqf3QU.js | 540 ------------------ .../entrypoint-HsYqf3QU.js.map | 1 - .../relewise-dashboard/relewise-dashboard.js | 2 +- .../relewise-dashboard.js.map | 2 +- .../relewise-dashboard/umbraco-package.json | 2 +- .../Client/src/bundle.manifests.ts | 2 +- 7 files changed, 14 insertions(+), 546 deletions(-) delete mode 100644 samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js delete mode 100644 samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js.map diff --git a/samples/UmbracoV16/UmbracoV16.csproj b/samples/UmbracoV16/UmbracoV16.csproj index c7a2703..7b43b93 100644 --- a/samples/UmbracoV16/UmbracoV16.csproj +++ b/samples/UmbracoV16/UmbracoV16.csproj @@ -1,4 +1,4 @@ - + net9.0 enable @@ -28,4 +28,13 @@ false + + + + + + + + diff --git a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js deleted file mode 100644 index d287e22..0000000 --- a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js +++ /dev/null @@ -1,540 +0,0 @@ -var I = Object.defineProperty; -var q = (e, t, r) => t in e ? I(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r; -var C = (e, t, r) => q(e, typeof t != "symbol" ? t + "" : t, r); -import { UMB_AUTH_CONTEXT as z } from "@umbraco-cms/backoffice/auth"; -import { html as u, css as N, state as f, customElement as D } from "@umbraco-cms/backoffice/external/lit"; -import { UmbLitElement as W } from "@umbraco-cms/backoffice/lit-element"; -var P = async (e, t) => { - let r = typeof t == "function" ? await t(e) : t; - if (r) return e.scheme === "bearer" ? `Bearer ${r}` : e.scheme === "basic" ? `Basic ${btoa(r)}` : r; -}, B = { bodySerializer: (e) => JSON.stringify(e, (t, r) => typeof r == "bigint" ? r.toString() : r) }, M = (e) => { - switch (e) { - case "label": - return "."; - case "matrix": - return ";"; - case "simple": - return ","; - default: - return "&"; - } -}, L = (e) => { - switch (e) { - case "form": - return ","; - case "pipeDelimited": - return "|"; - case "spaceDelimited": - return "%20"; - default: - return ","; - } -}, H = (e) => { - switch (e) { - case "label": - return "."; - case "matrix": - return ";"; - case "simple": - return ","; - default: - return "&"; - } -}, E = ({ allowReserved: e, explode: t, name: r, style: i, value: l }) => { - if (!t) { - let s = (e ? l : l.map((n) => encodeURIComponent(n))).join(L(i)); - switch (i) { - case "label": - return `.${s}`; - case "matrix": - return `;${r}=${s}`; - case "simple": - return s; - default: - return `${r}=${s}`; - } - } - let o = M(i), a = l.map((s) => i === "label" || i === "simple" ? e ? s : encodeURIComponent(s) : $({ allowReserved: e, name: r, value: s })).join(o); - return i === "label" || i === "matrix" ? o + a : a; -}, $ = ({ allowReserved: e, name: t, value: r }) => { - if (r == null) return ""; - if (typeof r == "object") throw new Error("Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these."); - return `${t}=${e ? r : encodeURIComponent(r)}`; -}, k = ({ allowReserved: e, explode: t, name: r, style: i, value: l }) => { - if (l instanceof Date) return `${r}=${l.toISOString()}`; - if (i !== "deepObject" && !t) { - let s = []; - Object.entries(l).forEach(([g, h]) => { - s = [...s, g, e ? h : encodeURIComponent(h)]; - }); - let n = s.join(","); - switch (i) { - case "form": - return `${r}=${n}`; - case "label": - return `.${n}`; - case "matrix": - return `;${r}=${n}`; - default: - return n; - } - } - let o = H(i), a = Object.entries(l).map(([s, n]) => $({ allowReserved: e, name: i === "deepObject" ? `${r}[${s}]` : s, value: n })).join(o); - return i === "label" || i === "matrix" ? o + a : a; -}, F = /\{[^{}]+\}/g, J = ({ path: e, url: t }) => { - let r = t, i = t.match(F); - if (i) for (let l of i) { - let o = !1, a = l.substring(1, l.length - 1), s = "simple"; - a.endsWith("*") && (o = !0, a = a.substring(0, a.length - 1)), a.startsWith(".") ? (a = a.substring(1), s = "label") : a.startsWith(";") && (a = a.substring(1), s = "matrix"); - let n = e[a]; - if (n == null) continue; - if (Array.isArray(n)) { - r = r.replace(l, E({ explode: o, name: a, style: s, value: n })); - continue; - } - if (typeof n == "object") { - r = r.replace(l, k({ explode: o, name: a, style: s, value: n })); - continue; - } - if (s === "matrix") { - r = r.replace(l, `;${$({ name: a, value: n })}`); - continue; - } - let g = encodeURIComponent(s === "label" ? `.${n}` : n); - r = r.replace(l, g); - } - return r; -}, j = ({ allowReserved: e, array: t, object: r } = {}) => (i) => { - let l = []; - if (i && typeof i == "object") for (let o in i) { - let a = i[o]; - if (a != null) if (Array.isArray(a)) { - let s = E({ allowReserved: e, explode: !0, name: o, style: "form", value: a, ...t }); - s && l.push(s); - } else if (typeof a == "object") { - let s = k({ allowReserved: e, explode: !0, name: o, style: "deepObject", value: a, ...r }); - s && l.push(s); - } else { - let s = $({ allowReserved: e, name: o, value: a }); - s && l.push(s); - } - } - return l.join("&"); -}, V = (e) => { - var r; - if (!e) return "stream"; - let t = (r = e.split(";")[0]) == null ? void 0 : r.trim(); - if (t) { - if (t.startsWith("application/json") || t.endsWith("+json")) return "json"; - if (t === "multipart/form-data") return "formData"; - if (["application/", "audio/", "image/", "video/"].some((i) => t.startsWith(i))) return "blob"; - if (t.startsWith("text/")) return "text"; - } -}, G = async ({ security: e, ...t }) => { - for (let r of e) { - let i = await P(r, t.auth); - if (!i) continue; - let l = r.name ?? "Authorization"; - switch (r.in) { - case "query": - t.query || (t.query = {}), t.query[l] = i; - break; - case "cookie": - t.headers.append("Cookie", `${l}=${i}`); - break; - case "header": - default: - t.headers.set(l, i); - break; - } - return; - } -}, A = (e) => X({ baseUrl: e.baseUrl, path: e.path, query: e.query, querySerializer: typeof e.querySerializer == "function" ? e.querySerializer : j(e.querySerializer), url: e.url }), X = ({ baseUrl: e, path: t, query: r, querySerializer: i, url: l }) => { - let o = l.startsWith("/") ? l : `/${l}`, a = (e ?? "") + o; - t && (a = J({ path: t, url: a })); - let s = r ? i(r) : ""; - return s.startsWith("?") && (s = s.substring(1)), s && (a += `?${s}`), a; -}, R = (e, t) => { - var i; - let r = { ...e, ...t }; - return (i = r.baseUrl) != null && i.endsWith("/") && (r.baseUrl = r.baseUrl.substring(0, r.baseUrl.length - 1)), r.headers = _(e.headers, t.headers), r; -}, _ = (...e) => { - let t = new Headers(); - for (let r of e) { - if (!r || typeof r != "object") continue; - let i = r instanceof Headers ? r.entries() : Object.entries(r); - for (let [l, o] of i) if (o === null) t.delete(l); - else if (Array.isArray(o)) for (let a of o) t.append(l, a); - else o !== void 0 && t.set(l, typeof o == "object" ? JSON.stringify(o) : o); - } - return t; -}, U = class { - constructor() { - C(this, "_fns"); - this._fns = []; - } - clear() { - this._fns = []; - } - getInterceptorIndex(e) { - return typeof e == "number" ? this._fns[e] ? e : -1 : this._fns.indexOf(e); - } - exists(e) { - let t = this.getInterceptorIndex(e); - return !!this._fns[t]; - } - eject(e) { - let t = this.getInterceptorIndex(e); - this._fns[t] && (this._fns[t] = null); - } - update(e, t) { - let r = this.getInterceptorIndex(e); - return this._fns[r] ? (this._fns[r] = t, e) : !1; - } - use(e) { - return this._fns = [...this._fns, e], this._fns.length - 1; - } -}, Y = () => ({ error: new U(), request: new U(), response: new U() }), K = j({ allowReserved: !1, array: { explode: !0, style: "form" }, object: { explode: !0, style: "deepObject" } }), Q = { "Content-Type": "application/json" }, S = (e = {}) => ({ ...B, headers: Q, parseAs: "auto", querySerializer: K, ...e }), Z = (e = {}) => { - let t = R(S(), e), r = () => ({ ...t }), i = (a) => (t = R(t, a), r()), l = Y(), o = async (a) => { - let s = { ...t, ...a, fetch: a.fetch ?? t.fetch ?? globalThis.fetch, headers: _(t.headers, a.headers) }; - s.security && await G({ ...s, security: s.security }), s.body && s.bodySerializer && (s.body = s.bodySerializer(s.body)), (s.body === void 0 || s.body === "") && s.headers.delete("Content-Type"); - let n = A(s), g = { redirect: "follow", ...s }, h = new Request(n, g); - for (let c of l.request._fns) c && (h = await c(h, s)); - let O = s.fetch, d = await O(h); - for (let c of l.response._fns) c && (d = await c(d, h, s)); - let m = { request: h, response: d }; - if (d.ok) { - if (d.status === 204 || d.headers.get("Content-Length") === "0") return { data: {}, ...m }; - let c = (s.parseAs === "auto" ? V(d.headers.get("Content-Type")) : s.parseAs) ?? "json"; - if (c === "stream") return { data: d.body, ...m }; - let v = await d[c](); - return c === "json" && (s.responseValidator && await s.responseValidator(v), s.responseTransformer && (v = await s.responseTransformer(v))), { data: v, ...m }; - } - let w = await d.text(); - try { - w = JSON.parse(w); - } catch { - } - let y = w; - for (let c of l.error._fns) c && (y = await c(w, d, h, s)); - if (y = y || {}, s.throwOnError) throw y; - return { error: y, ...m }; - }; - return { buildUrl: A, connect: (a) => o({ ...a, method: "CONNECT" }), delete: (a) => o({ ...a, method: "DELETE" }), get: (a) => o({ ...a, method: "GET" }), getConfig: r, head: (a) => o({ ...a, method: "HEAD" }), interceptors: l, options: (a) => o({ ...a, method: "OPTIONS" }), patch: (a) => o({ ...a, method: "PATCH" }), post: (a) => o({ ...a, method: "POST" }), put: (a) => o({ ...a, method: "PUT" }), request: o, setConfig: i, trace: (a) => o({ ...a, method: "TRACE" }) }; -}; -const x = Z(S({ - baseUrl: "https://localhost:44381" -})); -class T { - static configuration(t) { - return ((t == null ? void 0 : t.client) ?? x).get({ - security: [ - { - scheme: "bearer", - type: "http" - } - ], - url: "/umbraco/relewisedashboard/api/v1", - ...t - }); - } - static contentExport(t) { - return ((t == null ? void 0 : t.client) ?? x).post({ - security: [ - { - scheme: "bearer", - type: "http" - } - ], - url: "/umbraco/relewisedashboard/api/v1", - ...t - }); - } -} -var ee = Object.defineProperty, te = Object.getOwnPropertyDescriptor, b = (e, t, r, i) => { - for (var l = i > 1 ? void 0 : i ? te(t, r) : t, o = e.length - 1, a; o >= 0; o--) - (a = e[o]) && (l = (i ? a(t, r, l) : a(l)) || l); - return i && l && ee(t, r, l), l; -}; -let p = class extends W { - constructor() { - super(...arguments), this.exportLoading = !1, this.unhandledError = !1, this.relewiseNotAddedToUmbracoBuilder = !1, this.success = null, this.configuration = null, this.errorMessage = null; - } - async connectedCallback() { - super.connectedCallback(), await this.init(); - } - async exportContent({ permanentlyDelete: e = !1 } = {}) { - this.exportLoading = !0, this.errorMessage = "", this.success = ""; - try { - await T.contentExport({ throwOnError: !0, query: { permanentlyDelete: e } }), this.exportLoading = !1, this.success = "Content was successfully exported to Relewise", this.errorMessage = ""; - } catch { - this.exportLoading = !1, this.success = "", this.errorMessage = "Unexpected error while exporting data happened"; - } - } - async exportContentPermanentlyDelete() { - confirm("Are you sure, you want to perform an full export and remove deleted content items?") && (this.exportLoading = !0, this.errorMessage = "", this.success = "", await this.exportContent({ permanentlyDelete: !0 })); - } - async init() { - try { - const e = await T.configuration({ throwOnError: !0 }); - console.log("Configuration result", e), e.response.status === 200 ? (this.unhandledError = !1, this.configuration = e.data) : e.response.status === 403 ? this.relewiseNotAddedToUmbracoBuilder = !0 : this.unhandledError = !0; - } catch (e) { - console.error("Error fetching Relewise configuration:", e), this.unhandledError = !0; - } - } - render() { - return u` -
- - - You can perform various operations, e.g. Export all your content to Relewise.
- It's also possible to see the settings configured for Relewise directly here. -
-
- this.exportContent()} - ?disabled=${this.exportLoading || this.unhandledError || this.relewiseNotAddedToUmbracoBuilder || this.configuration && this.configuration.factoryFailed}> - Export content - - - this.exportContentPermanentlyDelete()} - ?disabled=${this.exportLoading || this.unhandledError || this.relewiseNotAddedToUmbracoBuilder || this.configuration && this.configuration.factoryFailed}> - Export content and remove old data - -
- ${this.success ? u`
${this.success}
` : ""} - ${this.errorMessage ? u`
${this.errorMessage}
` : ""} -
- - - - ${this.unhandledError ? u`
Unexpected error occurred. Please check the response on the XHR request or check logs.
` : ""} - - ${this.relewiseNotAddedToUmbracoBuilder ? u` - Relewise has not been added to the Umbraco builder. In 'Startup.cs' locate the 'services.AddUmbraco(...)'-method:
-
-services.AddUmbraco(_env, _config)
-	.AddBackOffice()
-	.AddWebsite()
-	.AddComposers()
-	.AddRelewise()
-	.Build();
-...
-
- Note the '.AddRelewise()' method-call above - insert that and re-run the site.` : ""} - - ${this.configuration && this.configuration.factoryFailed ? u` -
- No settings have been configured. Please check your call to the 'services.AddRelewise(options => { /* options goes here */ })'-method in 'Startup.cs':
-
-public void ConfigureServices(IServiceCollection services)
-{
-	services.AddRelewise(options => options.ReadFromConfiguration(_config));
-...			
-}
- Which then reads from the following configuration in appsettings.json: -
-"Relewise": {
-    "DatasetId": "<your dataset id here>",
-    "ApiKey": "<your master api key here>",
-    "ServerUrl": "<your server url here>",
-    "Timeout": "00:00:05"
-}
-
- Error message from server: -
${this.configuration.errorMessage}
- You can read more about configuring Relewise here: https://github.com/Relewise/relewise-sdk-csharp-extensions -
- ` : ""} - - ${this.configuration && this.configuration.trackedContentTypes ? u`
- Tracked content types are: - ${this.configuration && this.configuration.trackedContentTypes.length > 0 ? u`${this.configuration.trackedContentTypes.join(", ")}` : ""} - ${this.configuration && this.configuration.trackedContentTypes.length === 0 ? u`No tracked content type have been configured` : ""} - -
(Page views on these content types are automatically being tracked to Relewise by the RelewiseContentMiddleware)
- ${this.configuration && this.configuration.trackedContentTypes.length > 0 && !this.configuration.contentMiddlewareEnabled ? u` -
To have Page views being tracked automatically to Relewise, please ensure a call to the 'TrackContentViews()'-method in 'Startup.cs':
-
-app.UseUmbraco()
-	.WithMiddleware(u =>
-	{
-		u.UseBackOffice();
-		u.UseWebsite();
-		u.TrackContentViews();
-	})
-	.WithEndpoints(u =>
-	{
-		u.UseInstallerEndpoints();
-		u.UseBackOfficeEndpoints();
-		u.UseWebsiteEndpoints();
-	});
-
` : ""} - - ` : ""} - - ${this.configuration && this.configuration.exportedContentTypes ? u`
- Exported content types are: - ${this.configuration && this.configuration.exportedContentTypes.length > 0 ? u`${this.configuration.exportedContentTypes.join(", ")}` : ""} - ${this.configuration && this.configuration.exportedContentTypes.length === 0 ? u`No exported content type have been configured` : ""} -
(Any publish on these content types will automatically export the data to Relewise)
-
` : ""} - -
-
https://github.com/Relewise/relewise-integrations-umbraco -
- -
- - ${this.configuration && this.configuration.named ? u` - - - - - Name - Dataset Id - Server Url - Timeout (seconds) - - ${this.configuration.named.map((e) => u` - - - ${e.name} - - - - - - - - Tracker - - ${e.tracker.datasetId} - ${e.tracker.serverUrl ? e.tracker.serverUrl : "(default)"} - ${e.tracker.timeout} - - - - Recommender - - ${e.recommender.datasetId} - ${e.recommender.serverUrl ? e.recommender.serverUrl : "(default)"} - ${e.recommender.timeout} - - - - Searcher - - ${e.searcher.datasetId} - ${e.searcher.serverUrl ? e.searcher.serverUrl : "(default)"} - ${e.searcher.timeout} - - - - Search Administrator - - ${e.searchAdministrator.datasetId} - ${e.searchAdministrator.serverUrl ? e.searchAdministrator.serverUrl : "(default)"} - ${e.searchAdministrator.timeout} - - - - Analyzer - - ${e.analyzer.datasetId} - ${e.analyzer.serverUrl ? e.analyzer.serverUrl : "(default)"} - ${e.analyzer.timeout} - - - - Data Accessor - - ${e.dataAccessor.datasetId} - ${e.dataAccessor.serverUrl ? e.dataAccessor.serverUrl : "(default)"} - ${e.dataAccessor.timeout} - - `)} - - - ` : ""} - - -
- `; - } -}; -p.styles = N` - #relewise-dashboard { - display: flex; - flex-direction: column; - grid-gap: var(--uui-size-10); - padding: var(--uui-size-layout-1); - } - - .button-box { - margin-top: var(--uui-size-8); - display: flex; - justify-content: space-between; - } - - .mt-10 { - margin-top: 10px; - } - - .relewise-error { - color: var(--uui-color-invalid); - } - - `; -b([ - f() -], p.prototype, "exportLoading", 2); -b([ - f() -], p.prototype, "unhandledError", 2); -b([ - f() -], p.prototype, "relewiseNotAddedToUmbracoBuilder", 2); -b([ - f() -], p.prototype, "success", 2); -b([ - f() -], p.prototype, "configuration", 2); -b([ - f() -], p.prototype, "errorMessage", 2); -p = b([ - D("relewise-dashboard") -], p); -const le = (e) => { - e.consumeContext(z, (t) => { - if (t) { - var r = t.getOpenApiConfiguration(); - x.setConfig({ - auth: r.token, - baseUrl: r.base, - credentials: r.credentials - }), x.interceptors.request.use(async (i, l) => { - const o = await t.getLatestToken(); - return i.headers.set("Authorization", `Bearer ${o}`), i; - }); - } - }); -}, oe = (e, t) => { - console.log("Goodbye from Relewise 👋"); -}; -export { - p as RelewiseDashboardElement, - le as onInit, - oe as onUnload -}; -//# sourceMappingURL=entrypoint-HsYqf3QU.js.map diff --git a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js.map b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js.map deleted file mode 100644 index 5b4cba8..0000000 --- a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/entrypoint-HsYqf3QU.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"entrypoint-HsYqf3QU.js","sources":["../../../Client/node_modules/@hey-api/client-fetch/dist/index.js","../../../Client/src/api/client.gen.ts","../../../Client/src/api/sdk.gen.ts","../../../Client/src/relewise-dashboard.element.ts","../../../Client/src/entrypoints/entrypoint.ts"],"sourcesContent":["var j=async(t,r)=>{let e=typeof r==\"function\"?await r(t):r;if(e)return t.scheme===\"bearer\"?`Bearer ${e}`:t.scheme===\"basic\"?`Basic ${btoa(e)}`:e},z=(t,r,e)=>{typeof e==\"string\"||e instanceof Blob?t.append(r,e):t.append(r,JSON.stringify(e));},I=(t,r,e)=>{typeof e==\"string\"?t.append(r,e):t.append(r,JSON.stringify(e));},k={bodySerializer:t=>{let r=new FormData;return Object.entries(t).forEach(([e,i])=>{i!=null&&(Array.isArray(i)?i.forEach(a=>z(r,e,a)):z(r,e,i));}),r}},R={bodySerializer:t=>JSON.stringify(t,(r,e)=>typeof e==\"bigint\"?e.toString():e)},$={bodySerializer:t=>{let r=new URLSearchParams;return Object.entries(t).forEach(([e,i])=>{i!=null&&(Array.isArray(i)?i.forEach(a=>I(r,e,a)):I(r,e,i));}),r.toString()}},U=t=>{switch(t){case \"label\":return \".\";case \"matrix\":return \";\";case \"simple\":return \",\";default:return \"&\"}},_=t=>{switch(t){case \"form\":return \",\";case \"pipeDelimited\":return \"|\";case \"spaceDelimited\":return \"%20\";default:return \",\"}},D=t=>{switch(t){case \"label\":return \".\";case \"matrix\":return \";\";case \"simple\":return \",\";default:return \"&\"}},O=({allowReserved:t,explode:r,name:e,style:i,value:a})=>{if(!r){let n=(t?a:a.map(l=>encodeURIComponent(l))).join(_(i));switch(i){case \"label\":return `.${n}`;case \"matrix\":return `;${e}=${n}`;case \"simple\":return n;default:return `${e}=${n}`}}let o=U(i),s=a.map(n=>i===\"label\"||i===\"simple\"?t?n:encodeURIComponent(n):y({allowReserved:t,name:e,value:n})).join(o);return i===\"label\"||i===\"matrix\"?o+s:s},y=({allowReserved:t,name:r,value:e})=>{if(e==null)return \"\";if(typeof e==\"object\")throw new Error(\"Deeply-nested arrays/objects aren\\u2019t supported. Provide your own `querySerializer()` to handle these.\");return `${r}=${t?e:encodeURIComponent(e)}`},q=({allowReserved:t,explode:r,name:e,style:i,value:a})=>{if(a instanceof Date)return `${e}=${a.toISOString()}`;if(i!==\"deepObject\"&&!r){let n=[];Object.entries(a).forEach(([f,p])=>{n=[...n,f,t?p:encodeURIComponent(p)];});let l=n.join(\",\");switch(i){case \"form\":return `${e}=${l}`;case \"label\":return `.${l}`;case \"matrix\":return `;${e}=${l}`;default:return l}}let o=D(i),s=Object.entries(a).map(([n,l])=>y({allowReserved:t,name:i===\"deepObject\"?`${e}[${n}]`:n,value:l})).join(o);return i===\"label\"||i===\"matrix\"?o+s:s};var H=/\\{[^{}]+\\}/g,B=({path:t,url:r})=>{let e=r,i=r.match(H);if(i)for(let a of i){let o=false,s=a.substring(1,a.length-1),n=\"simple\";s.endsWith(\"*\")&&(o=true,s=s.substring(0,s.length-1)),s.startsWith(\".\")?(s=s.substring(1),n=\"label\"):s.startsWith(\";\")&&(s=s.substring(1),n=\"matrix\");let l=t[s];if(l==null)continue;if(Array.isArray(l)){e=e.replace(a,O({explode:o,name:s,style:n,value:l}));continue}if(typeof l==\"object\"){e=e.replace(a,q({explode:o,name:s,style:n,value:l}));continue}if(n===\"matrix\"){e=e.replace(a,`;${y({name:s,value:l})}`);continue}let f=encodeURIComponent(n===\"label\"?`.${l}`:l);e=e.replace(a,f);}return e},A=({allowReserved:t,array:r,object:e}={})=>a=>{let o=[];if(a&&typeof a==\"object\")for(let s in a){let n=a[s];if(n!=null)if(Array.isArray(n)){let l=O({allowReserved:t,explode:true,name:s,style:\"form\",value:n,...r});l&&o.push(l);}else if(typeof n==\"object\"){let l=q({allowReserved:t,explode:true,name:s,style:\"deepObject\",value:n,...e});l&&o.push(l);}else {let l=y({allowReserved:t,name:s,value:n});l&&o.push(l);}}return o.join(\"&\")},P=t=>{if(!t)return \"stream\";let r=t.split(\";\")[0]?.trim();if(r){if(r.startsWith(\"application/json\")||r.endsWith(\"+json\"))return \"json\";if(r===\"multipart/form-data\")return \"formData\";if([\"application/\",\"audio/\",\"image/\",\"video/\"].some(e=>r.startsWith(e)))return \"blob\";if(r.startsWith(\"text/\"))return \"text\"}},E=async({security:t,...r})=>{for(let e of t){let i=await j(e,r.auth);if(!i)continue;let a=e.name??\"Authorization\";switch(e.in){case \"query\":r.query||(r.query={}),r.query[a]=i;break;case \"cookie\":r.headers.append(\"Cookie\",`${a}=${i}`);break;case \"header\":default:r.headers.set(a,i);break}return}},S=t=>W({baseUrl:t.baseUrl,path:t.path,query:t.query,querySerializer:typeof t.querySerializer==\"function\"?t.querySerializer:A(t.querySerializer),url:t.url}),W=({baseUrl:t,path:r,query:e,querySerializer:i,url:a})=>{let o=a.startsWith(\"/\")?a:`/${a}`,s=(t??\"\")+o;r&&(s=B({path:r,url:s}));let n=e?i(e):\"\";return n.startsWith(\"?\")&&(n=n.substring(1)),n&&(s+=`?${n}`),s},x=(t,r)=>{let e={...t,...r};return e.baseUrl?.endsWith(\"/\")&&(e.baseUrl=e.baseUrl.substring(0,e.baseUrl.length-1)),e.headers=C(t.headers,r.headers),e},C=(...t)=>{let r=new Headers;for(let e of t){if(!e||typeof e!=\"object\")continue;let i=e instanceof Headers?e.entries():Object.entries(e);for(let[a,o]of i)if(o===null)r.delete(a);else if(Array.isArray(o))for(let s of o)r.append(a,s);else o!==void 0&&r.set(a,typeof o==\"object\"?JSON.stringify(o):o);}return r},h=class{_fns;constructor(){this._fns=[];}clear(){this._fns=[];}getInterceptorIndex(r){return typeof r==\"number\"?this._fns[r]?r:-1:this._fns.indexOf(r)}exists(r){let e=this.getInterceptorIndex(r);return !!this._fns[e]}eject(r){let e=this.getInterceptorIndex(r);this._fns[e]&&(this._fns[e]=null);}update(r,e){let i=this.getInterceptorIndex(r);return this._fns[i]?(this._fns[i]=e,r):false}use(r){return this._fns=[...this._fns,r],this._fns.length-1}},v=()=>({error:new h,request:new h,response:new h}),N=A({allowReserved:false,array:{explode:true,style:\"form\"},object:{explode:true,style:\"deepObject\"}}),Q={\"Content-Type\":\"application/json\"},w=(t={})=>({...R,headers:Q,parseAs:\"auto\",querySerializer:N,...t});var J=(t={})=>{let r=x(w(),t),e=()=>({...r}),i=s=>(r=x(r,s),e()),a=v(),o=async s=>{let n={...r,...s,fetch:s.fetch??r.fetch??globalThis.fetch,headers:C(r.headers,s.headers)};n.security&&await E({...n,security:n.security}),n.body&&n.bodySerializer&&(n.body=n.bodySerializer(n.body)),(n.body===void 0||n.body===\"\")&&n.headers.delete(\"Content-Type\");let l=S(n),f={redirect:\"follow\",...n},p=new Request(l,f);for(let c of a.request._fns)c&&(p=await c(p,n));let T=n.fetch,u=await T(p);for(let c of a.response._fns)c&&(u=await c(u,p,n));let m={request:p,response:u};if(u.ok){if(u.status===204||u.headers.get(\"Content-Length\")===\"0\")return {data:{},...m};let c=(n.parseAs===\"auto\"?P(u.headers.get(\"Content-Type\")):n.parseAs)??\"json\";if(c===\"stream\")return {data:u.body,...m};let b=await u[c]();return c===\"json\"&&(n.responseValidator&&await n.responseValidator(b),n.responseTransformer&&(b=await n.responseTransformer(b))),{data:b,...m}}let g=await u.text();try{g=JSON.parse(g);}catch{}let d=g;for(let c of a.error._fns)c&&(d=await c(g,u,p,n));if(d=d||{},n.throwOnError)throw d;return {error:d,...m}};return {buildUrl:S,connect:s=>o({...s,method:\"CONNECT\"}),delete:s=>o({...s,method:\"DELETE\"}),get:s=>o({...s,method:\"GET\"}),getConfig:e,head:s=>o({...s,method:\"HEAD\"}),interceptors:a,options:s=>o({...s,method:\"OPTIONS\"}),patch:s=>o({...s,method:\"PATCH\"}),post:s=>o({...s,method:\"POST\"}),put:s=>o({...s,method:\"PUT\"}),request:o,setConfig:i,trace:s=>o({...s,method:\"TRACE\"})}};export{J as createClient,w as createConfig,k as formDataBodySerializer,R as jsonBodySerializer,$ as urlSearchParamsBodySerializer};//# sourceMappingURL=index.js.map\n//# sourceMappingURL=index.js.map","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { ClientOptions } from './types.gen';\nimport { type Config, type ClientOptions as DefaultClientOptions, createClient, createConfig } from '@hey-api/client-fetch';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig = (override?: Config) => Config & T>;\n\nexport const client = createClient(createConfig({\n baseUrl: 'https://localhost:44381'\n}));","// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch';\nimport type { ConfigurationData, ContentExportData } from './types.gen';\nimport { client as _heyApiClient } from './client.gen';\n\nexport type Options = ClientOptions & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record;\n};\n\nexport class RelewiseDashboardService {\n public static configuration(options?: Options) {\n return (options?.client ?? _heyApiClient).get({\n security: [\n {\n scheme: 'bearer',\n type: 'http'\n }\n ],\n url: '/umbraco/relewisedashboard/api/v1',\n ...options\n });\n }\n \n public static contentExport(options?: Options) {\n return (options?.client ?? _heyApiClient).post({\n security: [\n {\n scheme: 'bearer',\n type: 'http'\n }\n ],\n url: '/umbraco/relewisedashboard/api/v1',\n ...options\n });\n }\n \n}","import { html, css, customElement, state } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { RelewiseDashboardService } from './api';\r\n\r\n@customElement('relewise-dashboard')\r\nexport class RelewiseDashboardElement extends UmbLitElement {\r\n\r\n @state()\r\n exportLoading: boolean = false;\r\n\r\n @state()\r\n unhandledError: boolean = false;\r\n\r\n @state()\r\n relewiseNotAddedToUmbracoBuilder: boolean = false;\r\n\r\n @state()\r\n success: string | null = null;\r\n\r\n @state()\r\n configuration: any | null = null;\r\n\r\n @state()\r\n errorMessage: string | null = null;\r\n\r\n async connectedCallback() {\r\n super.connectedCallback();\r\n\r\n await this.init();\r\n }\r\n\r\n async exportContent({ permanentlyDelete = false }: { permanentlyDelete?: boolean } = {}) {\r\n this.exportLoading = true;\r\n this.errorMessage = \"\";\r\n this.success = \"\";\r\n try {\r\n await RelewiseDashboardService.contentExport({ throwOnError: true, query: { permanentlyDelete } });\r\n\r\n this.exportLoading = false;\r\n this.success = \"Content was successfully exported to Relewise\";\r\n this.errorMessage = \"\";\r\n }\r\n catch (error) {\r\n this.exportLoading = false;\r\n this.success = \"\";\r\n this.errorMessage = \"Unexpected error while exporting data happened\";\r\n }\r\n }\r\n\r\n async exportContentPermanentlyDelete() {\r\n const confirmed = confirm(\"Are you sure, you want to perform an full export and remove deleted content items?\");\r\n if (!confirmed) {\r\n return;\r\n }\r\n\r\n this.exportLoading = true;\r\n this.errorMessage = \"\";\r\n this.success = \"\";\r\n\r\n await this.exportContent({ permanentlyDelete: true });\r\n }\r\n\r\n async init() {\r\n try {\r\n const result = await RelewiseDashboardService.configuration({ throwOnError: true });\r\n console.log(\"Configuration result\", result);\r\n if (result.response.status === 200) {\r\n this.unhandledError = false;\r\n this.configuration = result.data;\r\n } else if (result.response.status === 403) {\r\n this.relewiseNotAddedToUmbracoBuilder = true;\r\n } else {\r\n this.unhandledError = true;\r\n }\r\n } catch (error) {\r\n console.error(\"Error fetching Relewise configuration:\", error);\r\n this.unhandledError = true;\r\n }\r\n }\r\n\r\n override render() {\r\n return html`\r\n
\r\n \r\n \r\n You can perform various operations, e.g. Export all your content to Relewise.
\r\n It's also possible to see the settings configured for Relewise directly here.\r\n
\r\n
\r\n this.exportContent()} \r\n ?disabled=${this.exportLoading || this.unhandledError || this.relewiseNotAddedToUmbracoBuilder || (this.configuration && this.configuration.factoryFailed)}>\r\n Export content\r\n \r\n\r\n this.exportContentPermanentlyDelete()} \r\n ?disabled=${this.exportLoading || this.unhandledError || this.relewiseNotAddedToUmbracoBuilder || (this.configuration && this.configuration.factoryFailed)}>\r\n Export content and remove old data\r\n \r\n
\r\n ${this.success ? html`
${this.success}
` : ''}\r\n ${this.errorMessage ? html`
${this.errorMessage}
` : ''}\r\n
\r\n\r\n \r\n\r\n ${this.unhandledError ? html`
Unexpected error occurred. Please check the response on the XHR request or check logs.
` : ''}\r\n \r\n ${this.relewiseNotAddedToUmbracoBuilder ? html`\r\n Relewise has not been added to the Umbraco builder. In 'Startup.cs' locate the 'services.AddUmbraco(...)'-method:
\r\n
\r\nservices.AddUmbraco(_env, _config)\r\n\t.AddBackOffice()\r\n\t.AddWebsite()\r\n\t.AddComposers()\r\n\t.AddRelewise()\r\n\t.Build();\r\n...\r\n
\r\n Note the '.AddRelewise()' method-call above - insert that and re-run the site.`\r\n : ''}\r\n \r\n ${this.configuration && this.configuration.factoryFailed ? html`\r\n
\r\n No settings have been configured. Please check your call to the 'services.AddRelewise(options => { /* options goes here */ })'-method in 'Startup.cs':
\r\n
\r\npublic void ConfigureServices(IServiceCollection services)\r\n{\r\n\tservices.AddRelewise(options => options.ReadFromConfiguration(_config));\r\n...\t\t\t\r\n}
\r\n Which then reads from the following configuration in appsettings.json:\r\n
\r\n\"Relewise\": {\r\n    \"DatasetId\": \"<your dataset id here>\",\r\n    \"ApiKey\": \"<your master api key here>\",\r\n    \"ServerUrl\": \"<your server url here>\",\r\n    \"Timeout\": \"00:00:05\"\r\n}\r\n
\r\n Error message from server:\r\n
${this.configuration.errorMessage}
\r\n You can read more about configuring Relewise here: https://github.com/Relewise/relewise-sdk-csharp-extensions\r\n
\r\n ` : ''}\r\n\r\n ${this.configuration && this.configuration.trackedContentTypes ? html`
\r\n Tracked content types are:\r\n ${this.configuration && this.configuration.trackedContentTypes.length > 0 ? html`${this.configuration.trackedContentTypes.join(', ')}` : ''}\r\n ${this.configuration && this.configuration.trackedContentTypes.length === 0 ? html`No tracked content type have been configured` : ''}\r\n \r\n
(Page views on these content types are automatically being tracked to Relewise by the RelewiseContentMiddleware)
\r\n ${this.configuration && this.configuration.trackedContentTypes.length > 0 && !this.configuration.contentMiddlewareEnabled ? html`\r\n
To have Page views being tracked automatically to Relewise, please ensure a call to the 'TrackContentViews()'-method in 'Startup.cs':
\r\n
\r\napp.UseUmbraco()\r\n\t.WithMiddleware(u =>\r\n\t{\r\n\t\tu.UseBackOffice();\r\n\t\tu.UseWebsite();\r\n\t\tu.TrackContentViews();\r\n\t})\r\n\t.WithEndpoints(u =>\r\n\t{\r\n\t\tu.UseInstallerEndpoints();\r\n\t\tu.UseBackOfficeEndpoints();\r\n\t\tu.UseWebsiteEndpoints();\r\n\t});
\r\n
` : ''}\r\n \r\n ` : ''}\r\n\r\n ${this.configuration && this.configuration.exportedContentTypes ? html`
\r\n Exported content types are:\r\n ${this.configuration && this.configuration.exportedContentTypes.length > 0 ? html`${this.configuration.exportedContentTypes.join(', ')}` : ''}\r\n ${this.configuration && this.configuration.exportedContentTypes.length === 0 ? html`No exported content type have been configured` : ''}\r\n
(Any publish on these content types will automatically export the data to Relewise)
\r\n
` : ''}\r\n\r\n
\r\n
\r\n Find more information about the Umbraco integration here: https://github.com/Relewise/relewise-integrations-umbraco\r\n
\r\n\r\n
\r\n\r\n ${this.configuration && this.configuration.named ? html`\r\n \r\n\r\n \r\n \r\n Name\r\n Dataset Id\r\n Server Url\r\n Timeout (seconds)\r\n \r\n ${this.configuration.named.map((named: any) => html`\r\n \r\n \r\n ${named.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Tracker\r\n \r\n ${named.tracker.datasetId}\r\n ${named.tracker.serverUrl ? named.tracker.serverUrl : \"(default)\"}\r\n ${named.tracker.timeout}\r\n \r\n \r\n \r\n Recommender\r\n \r\n ${named.recommender.datasetId}\r\n ${named.recommender.serverUrl ? named.recommender.serverUrl : \"(default)\"}\r\n ${named.recommender.timeout}\r\n \r\n \r\n \r\n Searcher\r\n \r\n ${named.searcher.datasetId}\r\n ${named.searcher.serverUrl ? named.searcher.serverUrl : \"(default)\"}\r\n ${named.searcher.timeout}\r\n \r\n \r\n \r\n Search Administrator\r\n \r\n ${named.searchAdministrator.datasetId}\r\n ${named.searchAdministrator.serverUrl ? named.searchAdministrator.serverUrl : \"(default)\"}\r\n ${named.searchAdministrator.timeout}\r\n \r\n \r\n \r\n Analyzer\r\n \r\n ${named.analyzer.datasetId}\r\n ${named.analyzer.serverUrl ? named.analyzer.serverUrl : \"(default)\"}\r\n ${named.analyzer.timeout}\r\n \r\n \r\n \r\n Data Accessor\r\n \r\n ${named.dataAccessor.datasetId}\r\n ${named.dataAccessor.serverUrl ? named.dataAccessor.serverUrl : \"(default)\"}\r\n ${named.dataAccessor.timeout}\r\n \r\n `)}\r\n \r\n \r\n ` : ''}\r\n\r\n \r\n
\r\n `;\r\n }\r\n\r\n static override styles = css`\r\n #relewise-dashboard {\r\n display: flex;\r\n flex-direction: column;\r\n grid-gap: var(--uui-size-10);\r\n padding: var(--uui-size-layout-1);\r\n }\r\n\r\n .button-box {\r\n margin-top: var(--uui-size-8);\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n\r\n .mt-10 {\r\n margin-top: 10px;\r\n }\r\n \r\n .relewise-error {\r\n color: var(--uui-color-invalid);\r\n }\r\n\r\n `;\r\n}","import type {\r\n UmbEntryPointOnInit,\r\n UmbEntryPointOnUnload,\r\n} from \"@umbraco-cms/backoffice/extension-api\";\r\nimport { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';\r\nimport { client } from '../api/client.gen';\r\n\r\nexport * from '../relewise-dashboard.element';\r\n\r\n// load up the manifests here\r\nexport const onInit: UmbEntryPointOnInit = (_host) => {\r\n\r\n\t_host.consumeContext(UMB_AUTH_CONTEXT, (_auth) => {\r\n\t\tif (!_auth) return;\r\n\r\n\t\tvar config = _auth.getOpenApiConfiguration();\r\n\r\n\t\tclient.setConfig({\r\n\t\t\tauth: config.token,\r\n\t\t\tbaseUrl: config.base,\r\n\t\t\tcredentials: config.credentials,\r\n\t\t});\r\n\r\n\t\tclient.interceptors.request.use(async (request, _options) => {\r\n\r\n\t\t\tconst token = await _auth.getLatestToken();\r\n\t\t\trequest.headers.set('Authorization', `Bearer ${token}`);\r\n\t\t\treturn request;\r\n\t\t});\r\n\t});\r\n};\r\nexport const onUnload: UmbEntryPointOnUnload = (_host, _extensionRegistry) => {\r\n console.log(\"Goodbye from Relewise 👋\");\r\n};\r\n"],"names":["j","t","r","e","R","U","_","D","O","a","n","l","s","y","q","f","p","H","B","A","o","P","_a","E","S","W","x","C","h","__publicField","i","v","N","w","J","T","u","b","g","d","client","createClient","createConfig","RelewiseDashboardService","options","_heyApiClient","RelewiseDashboardElement","UmbLitElement","permanentlyDelete","result","error","html","named","css","__decorateClass","state","customElement","onInit","_host","UMB_AUTH_CONTEXT","_auth","config","request","_options","token","onUnload","_extensionRegistry"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js index fb6ae0f..cfce2ff 100644 --- a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js +++ b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js @@ -3,7 +3,7 @@ const t = [ name: "Relewise Dashboard Entrypoint", alias: "RelewiseDashboard.Entrypoint", type: "backofficeEntryPoint", - js: () => import("./entrypoint-HsYqf3QU.js") + js: () => import("./entrypoint-C7L6aEx2.js") } ], e = [ ...t diff --git a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js.map b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js.map index 0ca86e9..2a029c2 100644 --- a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js.map +++ b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/relewise-dashboard.js.map @@ -1 +1 @@ -{"version":3,"file":"relewise-dashboard.js","sources":["../../../Client/src/entrypoints/manifest.ts","../../../Client/src/bundle.manifests.ts"],"sourcesContent":["export const manifests: Array = [\r\n {\r\n name: \"Relewise Dashboard Entrypoint\",\r\n alias: \"RelewiseDashboard.Entrypoint\",\r\n type: \"backofficeEntryPoint\",\r\n js: () => import(\"./entrypoint.js\"),\r\n },\r\n];\r\n","import { manifests as entrypoints } from \"./entrypoints/manifest.js\";\r\n\r\n// Job of the bundle is to collate all the manifests from different parts of the extension and load other manifests\r\n// We load this bundle from umbraco-package.json\r\nexport const manifests: Array = [\r\n ...entrypoints,\r\n];\r\n"],"names":["manifests","entrypoints"],"mappings":"AAAO,MAAMA,IAAyC;AAAA,EACpD;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,IAAI,MAAM,OAAO,0BAAiB;AAAA,EAAA;AAEtC,GCHaA,IAAyC;AAAA,EACpD,GAAGC;AACL;"} \ No newline at end of file +{"version":3,"file":"relewise-dashboard.js","sources":["../../Client/src/entrypoints/manifest.ts","../../Client/src/bundle.manifests.ts"],"sourcesContent":["export const manifests: Array = [\r\n {\r\n name: \"Relewise Dashboard Entrypoint\",\r\n alias: \"RelewiseDashboard.Entrypoint\",\r\n type: \"backofficeEntryPoint\",\r\n js: () => import(\"./entrypoint.js\"),\r\n },\r\n];\r\n","import { manifests as entrypoints } from \"./entrypoints/manifest.js\";\r\n\r\n// Job of the bundle is to collate all the manifests from different parts of the extension and load other manifests\r\n// We load this bundle from umbraco-package.json\r\nexport const manifests: Array = [\r\n ...entrypoints,\r\n];"],"names":["manifests","entrypoints"],"mappings":"AAAO,MAAMA,IAAyC;AAAA,EACpD;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,IAAI,MAAM,OAAO,0BAAiB;AAAA,EAAA;AAEtC,GCHaA,IAAyC;AAAA,EACpD,GAAGC;AACL;"} \ No newline at end of file diff --git a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/umbraco-package.json b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/umbraco-package.json index b07ca0e..45109c4 100644 --- a/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/umbraco-package.json +++ b/samples/UmbracoV16/wwwroot/App_Plugins/relewise-dashboard/umbraco-package.json @@ -22,7 +22,7 @@ "conditions": [ { "alias": "Umb.Condition.SectionAlias", - "match": "Umb.Section.Content" + "match": "Umb.Section.Settings" } ] } diff --git a/src/Integrations.Umbraco/Client/src/bundle.manifests.ts b/src/Integrations.Umbraco/Client/src/bundle.manifests.ts index a0ec702..8536762 100644 --- a/src/Integrations.Umbraco/Client/src/bundle.manifests.ts +++ b/src/Integrations.Umbraco/Client/src/bundle.manifests.ts @@ -4,4 +4,4 @@ import { manifests as entrypoints } from "./entrypoints/manifest.js"; // We load this bundle from umbraco-package.json export const manifests: Array = [ ...entrypoints, -]; +]; \ No newline at end of file