diff --git a/src/Our.Umbraco.FullTextSearch.Client/public/umbraco-package.json b/src/Our.Umbraco.FullTextSearch.Client/public/umbraco-package.json index 3e52059..3b40fba 100644 --- a/src/Our.Umbraco.FullTextSearch.Client/public/umbraco-package.json +++ b/src/Our.Umbraco.FullTextSearch.Client/public/umbraco-package.json @@ -1,7 +1,7 @@ { "$schema": "../umbraco-package-schema.json", "name": "Our.Umbraco.FullTextSearch", - "version": "5.0.0-alpha002", + "version": "5.0.0", "extensions": [ { "type": "entryPoint", diff --git a/src/Our.Umbraco.FullTextSearch.Client/src/actions/entity/reindex.action.ts b/src/Our.Umbraco.FullTextSearch.Client/src/actions/entity/reindex.action.ts index 2d37c2c..80a4a4e 100644 --- a/src/Our.Umbraco.FullTextSearch.Client/src/actions/entity/reindex.action.ts +++ b/src/Our.Umbraco.FullTextSearch.Client/src/actions/entity/reindex.action.ts @@ -15,12 +15,16 @@ export class ReindexNodeAction extends UmbEntityActionBase { }); } + async execute() { - this.#modalManagerContext?.open(this, REINDEX_NODE_MODAL_TOKEN, { + + const modal = this.#modalManagerContext?.open(this, REINDEX_NODE_MODAL_TOKEN, { data: { unique: this.args.unique } }); + + await modal?.onSubmit(); } }; diff --git a/src/Our.Umbraco.FullTextSearch.Client/vite.config.ts b/src/Our.Umbraco.FullTextSearch.Client/vite.config.ts index acd1ee9..fc45bdc 100644 --- a/src/Our.Umbraco.FullTextSearch.Client/vite.config.ts +++ b/src/Our.Umbraco.FullTextSearch.Client/vite.config.ts @@ -14,11 +14,6 @@ export default defineConfig({ sourcemap: true, rollupOptions: { external: [/^@umbraco/], // ignore the Umbraco Backoffice package in the build - output: { - manualChunks: undefined, - inlineDynamicImports: true, - chunkFileNames: `[name]-[hash].js`, - } }, }, mode: 'production' diff --git a/src/Our.Umbraco.FullTextSearch/Migrations/ZeroOneZero/CreateCacheTable.cs b/src/Our.Umbraco.FullTextSearch/Migrations/ZeroOneZero/CreateCacheTable.cs index 366f01a..4feaf72 100644 --- a/src/Our.Umbraco.FullTextSearch/Migrations/ZeroOneZero/CreateCacheTable.cs +++ b/src/Our.Umbraco.FullTextSearch/Migrations/ZeroOneZero/CreateCacheTable.cs @@ -36,7 +36,7 @@ public class CacheTableSchema public string Culture { get; set; } [Column("Text")] - [SpecialDbType(SpecialDbTypes.NTEXT)] + [SpecialDbType(SpecialDbTypes.NVARCHARMAX)] public string Text { get; set; } [Column("LastUpdated")] diff --git a/src/Our.Umbraco.FullTextSearch/Our.Umbraco.FullTextSearch.csproj b/src/Our.Umbraco.FullTextSearch/Our.Umbraco.FullTextSearch.csproj index 9f51041..38ac8f5 100644 --- a/src/Our.Umbraco.FullTextSearch/Our.Umbraco.FullTextSearch.csproj +++ b/src/Our.Umbraco.FullTextSearch/Our.Umbraco.FullTextSearch.csproj @@ -20,7 +20,6 @@ - @@ -29,5 +28,6 @@ + diff --git a/src/Our.Umbraco.FullTextSearch/buildTransitive/Our.Umbraco.FullTextSearch.props b/src/Our.Umbraco.FullTextSearch/buildTransitive/Our.Umbraco.FullTextSearch.targets similarity index 85% rename from src/Our.Umbraco.FullTextSearch/buildTransitive/Our.Umbraco.FullTextSearch.props rename to src/Our.Umbraco.FullTextSearch/buildTransitive/Our.Umbraco.FullTextSearch.targets index 06db5c0..8391dab 100644 --- a/src/Our.Umbraco.FullTextSearch/buildTransitive/Our.Umbraco.FullTextSearch.props +++ b/src/Our.Umbraco.FullTextSearch/buildTransitive/Our.Umbraco.FullTextSearch.targets @@ -1,5 +1,5 @@  - + - + \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js b/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js index 9bc6272..b8009a5 100644 --- a/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js @@ -1,809 +1,6 @@ -var P = (t) => { - throw TypeError(t); -}; -var q = (t, e, n) => e.has(t) || P("Cannot " + n); -var a = (t, e, n) => (q(t, e, "read from private field"), n ? n.call(t) : e.get(t)), h = (t, e, n) => e.has(t) ? P("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, n), f = (t, e, n, r) => (q(t, e, "write to private field"), r ? r.call(t, n) : e.set(t, n), n); -import { UMB_AUTH_CONTEXT as W } from "@umbraco-cms/backoffice/auth"; -import { UMB_DOCUMENT_ROOT_ENTITY_TYPE as ne, UMB_DOCUMENT_ENTITY_TYPE as re, UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS as ie } from "@umbraco-cms/backoffice/document"; -import { UmbEntityActionBase as se } from "@umbraco-cms/backoffice/entity-action"; -import { UmbModalToken as oe, UMB_MODAL_MANAGER_CONTEXT as ae } from "@umbraco-cms/backoffice/modal"; -import { LitElement as de, html as C, property as K, state as X, customElement as le } from "@umbraco-cms/backoffice/external/lit"; -import { UmbElementMixin as ce } from "@umbraco-cms/backoffice/element-api"; -import { UmbControllerBase as ue } from "@umbraco-cms/backoffice/class-api"; -import { UmbContextToken as xe } from "@umbraco-cms/backoffice/context-api"; -import { tryExecuteAndNotify as y } from "@umbraco-cms/backoffice/resources"; -import { UmbObjectState as F, UmbStringState as H } from "@umbraco-cms/backoffice/observable-api"; -import { UMB_NOTIFICATION_CONTEXT as he } from "@umbraco-cms/backoffice/notification"; -const fe = { - type: "entityAction", - kind: "default", - alias: "our.umbraco.fulltextsearch.reindex.action", - name: "ReindexNode", - weight: -100, - forEntityTypes: [ne, re], - api: () => Promise.resolve().then(() => je), - elementName: "our-umbraco-fulltext-search-actions-entity-reindexnode", - meta: { - icon: "icon-alarm-clock", - label: "#fullTextSearch_reindex", - repositoryAlias: ie - } -}, me = [fe], ge = { - type: "modal", - alias: "our.umbraco.fulltextsearch.modals.reindexnode", - name: "Reindex node", - js: () => Promise.resolve().then(() => qe) -}, ye = [ge], be = [ - { - type: "localization", - alias: "Our.Umbraco.FullTextSearch.Localizations.En", - name: "English", - meta: { - culture: "en" - }, - js: () => Promise.resolve().then(() => Le) - }, - { - type: "localization", - alias: "Our.Umbraco.FullTextSearch.Localizations.Da", - name: "Danish", - meta: { - culture: "da" - }, - js: () => Promise.resolve().then(() => Be) - }, - { - type: "localization", - alias: "Our.Umbraco.FullTextSearch.Localizations.Cy", - name: "Welsh", - meta: { - culture: "cy" - }, - js: () => Promise.resolve().then(() => Ve) - }, - { - type: "localization", - alias: "Our.Umbraco.FullTextSearch.Localizations.Fr", - name: "French", - meta: { - culture: "fr" - }, - js: () => Promise.resolve().then(() => Ke) - }, - { - type: "localization", - alias: "Our.Umbraco.FullTextSearch.Localizations.Nb", - name: "Norwegian bokmål", - meta: { - culture: "nb" - }, - js: () => Promise.resolve().then(() => Je) - }, - { - type: "localization", - alias: "Our.Umbraco.FullTextSearch.Localizations.Nl", - name: "Dutch", - meta: { - culture: "nl" - }, - js: () => Promise.resolve().then(() => Qe) - } -], pe = be, Te = [ - { - type: "globalContext", - alias: "our.umbraco.fulltextsearch.context", - name: "Full Text Search context", - js: () => Promise.resolve().then(() => Ue) - } -], Se = [...Te]; -class L extends Error { - constructor(e, n, r) { - super(r), this.name = "ApiError", this.url = n.url, this.status = n.status, this.statusText = n.statusText, this.body = n.body, this.request = e; - } -} -class _e extends Error { - constructor(e) { - super(e), this.name = "CancelError"; - } - get isCancelled() { - return !0; - } -} -class Ne { - constructor(e) { - this._isResolved = !1, this._isRejected = !1, this._isCancelled = !1, this.cancelHandlers = [], this.promise = new Promise((n, r) => { - this._resolve = n, this._reject = r; - const i = (d) => { - this._isResolved || this._isRejected || this._isCancelled || (this._isResolved = !0, this._resolve && this._resolve(d)); - }, s = (d) => { - this._isResolved || this._isRejected || this._isCancelled || (this._isRejected = !0, this._reject && this._reject(d)); - }, o = (d) => { - this._isResolved || this._isRejected || this._isCancelled || this.cancelHandlers.push(d); - }; - return Object.defineProperty(o, "isResolved", { - get: () => this._isResolved - }), Object.defineProperty(o, "isRejected", { - get: () => this._isRejected - }), Object.defineProperty(o, "isCancelled", { - get: () => this._isCancelled - }), e(i, s, o); - }); - } - get [Symbol.toStringTag]() { - return "Cancellable Promise"; - } - then(e, n) { - return this.promise.then(e, n); - } - catch(e) { - return this.promise.catch(e); - } - finally(e) { - return this.promise.finally(e); - } - cancel() { - if (!(this._isResolved || this._isRejected || this._isCancelled)) { - if (this._isCancelled = !0, this.cancelHandlers.length) - try { - for (const e of this.cancelHandlers) - e(); - } catch (e) { - console.warn("Cancellation threw an error", e); - return; - } - this.cancelHandlers.length = 0, this._reject && this._reject(new _e("Request aborted")); - } - } - get isCancelled() { - return this._isCancelled; - } -} -class $ { - constructor() { - this._fns = []; - } - eject(e) { - const n = this._fns.indexOf(e); - n !== -1 && (this._fns = [ - ...this._fns.slice(0, n), - ...this._fns.slice(n + 1) - ]); - } - use(e) { - this._fns = [...this._fns, e]; - } -} -const l = { - BASE: "", - CREDENTIALS: "include", - ENCODE_PATH: void 0, - HEADERS: void 0, - PASSWORD: void 0, - TOKEN: void 0, - USERNAME: void 0, - VERSION: "Latest", - WITH_CREDENTIALS: !1, - interceptors: { - request: new $(), - response: new $() - } -}, k = (t) => typeof t == "string", D = (t) => k(t) && t !== "", M = (t) => t instanceof Blob, J = (t) => t instanceof FormData, Ie = (t) => { - try { - return btoa(t); - } catch { - return Buffer.from(t).toString("base64"); - } -}, Ae = (t) => { - const e = [], n = (i, s) => { - e.push(`${encodeURIComponent(i)}=${encodeURIComponent(String(s))}`); - }, r = (i, s) => { - s != null && (Array.isArray(s) ? s.forEach((o) => r(i, o)) : typeof s == "object" ? Object.entries(s).forEach(([o, d]) => r(`${i}[${o}]`, d)) : n(i, s)); - }; - return Object.entries(t).forEach(([i, s]) => r(i, s)), e.length ? `?${e.join("&")}` : ""; -}, ve = (t, e) => { - const n = encodeURI, r = e.url.replace("{api-version}", t.VERSION).replace(/{(.*?)}/g, (s, o) => { - var d; - return (d = e.path) != null && d.hasOwnProperty(o) ? n(String(e.path[o])) : s; - }), i = t.BASE + r; - return e.query ? i + Ae(e.query) : i; -}, ke = (t) => { - if (t.formData) { - const e = new FormData(), n = (r, i) => { - k(i) || M(i) ? e.append(r, i) : e.append(r, JSON.stringify(i)); - }; - return Object.entries(t.formData).filter(([, r]) => r != null).forEach(([r, i]) => { - Array.isArray(i) ? i.forEach((s) => n(r, s)) : n(r, i); - }), e; - } -}, E = async (t, e) => typeof e == "function" ? e(t) : e, we = async (t, e) => { - const [n, r, i, s] = await Promise.all([ - E(e, t.TOKEN), - E(e, t.USERNAME), - E(e, t.PASSWORD), - E(e, t.HEADERS) - ]), o = Object.entries({ - Accept: "application/json", - ...s, - ...e.headers - }).filter(([, d]) => d != null).reduce((d, [m, c]) => ({ - ...d, - [m]: String(c) - }), {}); - if (D(n) && (o.Authorization = `Bearer ${n}`), D(r) && D(i)) { - const d = Ie(`${r}:${i}`); - o.Authorization = `Basic ${d}`; - } - return e.body !== void 0 && (e.mediaType ? o["Content-Type"] = e.mediaType : M(e.body) ? o["Content-Type"] = e.body.type || "application/octet-stream" : k(e.body) ? o["Content-Type"] = "text/plain" : J(e.body) || (o["Content-Type"] = "application/json")), new Headers(o); -}, Ee = (t) => { - var e, n; - if (t.body !== void 0) - return (e = t.mediaType) != null && e.includes("application/json") || (n = t.mediaType) != null && n.includes("+json") ? JSON.stringify(t.body) : k(t.body) || M(t.body) || J(t.body) ? t.body : JSON.stringify(t.body); -}, Re = async (t, e, n, r, i, s, o) => { - const d = new AbortController(); - let m = { - headers: s, - body: r ?? i, - method: e.method, - signal: d.signal - }; - t.WITH_CREDENTIALS && (m.credentials = t.CREDENTIALS); - for (const c of t.interceptors.request._fns) - m = await c(m); - return o(() => d.abort()), await fetch(n, m); -}, Ce = (t, e) => { - if (e) { - const n = t.headers.get(e); - if (k(n)) - return n; - } -}, Fe = async (t) => { - if (t.status !== 204) - try { - const e = t.headers.get("Content-Type"); - if (e) { - const n = ["application/octet-stream", "application/pdf", "application/zip", "audio/", "image/", "video/"]; - if (e.includes("application/json") || e.includes("+json")) - return await t.json(); - if (n.some((r) => e.includes(r))) - return await t.blob(); - if (e.includes("multipart/form-data")) - return await t.formData(); - if (e.includes("text/")) - return await t.text(); - } - } catch (e) { - console.error(e); - } -}, De = (t, e) => { - const r = { - 400: "Bad Request", - 401: "Unauthorized", - 402: "Payment Required", - 403: "Forbidden", - 404: "Not Found", - 405: "Method Not Allowed", - 406: "Not Acceptable", - 407: "Proxy Authentication Required", - 408: "Request Timeout", - 409: "Conflict", - 410: "Gone", - 411: "Length Required", - 412: "Precondition Failed", - 413: "Payload Too Large", - 414: "URI Too Long", - 415: "Unsupported Media Type", - 416: "Range Not Satisfiable", - 417: "Expectation Failed", - 418: "Im a teapot", - 421: "Misdirected Request", - 422: "Unprocessable Content", - 423: "Locked", - 424: "Failed Dependency", - 425: "Too Early", - 426: "Upgrade Required", - 428: "Precondition Required", - 429: "Too Many Requests", - 431: "Request Header Fields Too Large", - 451: "Unavailable For Legal Reasons", - 500: "Internal Server Error", - 501: "Not Implemented", - 502: "Bad Gateway", - 503: "Service Unavailable", - 504: "Gateway Timeout", - 505: "HTTP Version Not Supported", - 506: "Variant Also Negotiates", - 507: "Insufficient Storage", - 508: "Loop Detected", - 510: "Not Extended", - 511: "Network Authentication Required", - ...t.errors - }[e.status]; - if (r) - throw new L(t, e, r); - if (!e.ok) { - const i = e.status ?? "unknown", s = e.statusText ?? "unknown", o = (() => { - try { - return JSON.stringify(e.body, null, 2); - } catch { - return; - } - })(); - throw new L( - t, - e, - `Generic Error: status: ${i}; status text: ${s}; body: ${o}` - ); - } -}, b = (t, e) => new Ne(async (n, r, i) => { - try { - const s = ve(t, e), o = ke(e), d = Ee(e), m = await we(t, e); - if (!i.isCancelled) { - let c = await Re(t, e, s, d, o, m, i); - for (const te of t.interceptors.response._fns) - c = await te(c); - const Z = await Fe(c), ee = Ce(c, e.responseHeader), z = { - url: s, - ok: c.ok, - status: c.status, - statusText: c.statusText, - body: ee ?? Z - }; - De(e, z), n(z.body); - } - } catch (s) { - r(s); - } -}); -class p { - /** - * @returns unknown OK - * @throws ApiError - */ - static getUmbracoFulltextsearchApiV5FulltextsearchConfig() { - return b(l, { - method: "GET", - url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/config" - }); - } - /** - * @returns unknown OK - * @throws ApiError - */ - static getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes(e = {}) { - const { pageNumber: n } = e; - return b(l, { - method: "GET", - url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes", - query: { - pageNumber: n - } - }); - } - /** - * @returns unknown OK - * @throws ApiError - */ - static getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes(e = {}) { - const { pageNumber: n } = e; - return b(l, { - method: "GET", - url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes", - query: { - pageNumber: n - } - }); - } - /** - * @returns unknown OK - * @throws ApiError - */ - static getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus() { - return b(l, { - method: "GET", - url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/indexstatus" - }); - } - /** - * @returns unknown OK - * @throws ApiError - */ - static getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes(e = {}) { - const { pageNumber: n } = e; - return b(l, { - method: "GET", - url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes", - query: { - pageNumber: n - } - }); - } - /** - * @returns unknown OK - * @throws ApiError - */ - static postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes(e = {}) { - const { requestBody: n } = e; - return b(l, { - method: "POST", - url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes", - body: n, - mediaType: "application/json" - }); - } -} -const ut = (t, e) => { - e.registerMany([ - ...me, - ...ye, - ...pe, - ...Se - ]), t.consumeContext(W, (n) => { - const r = n.getOpenApiConfiguration(); - l.TOKEN = r.token, l.BASE = r.base, l.WITH_CREDENTIALS = r.withCredentials; - }); -}, Oe = new oe("our.umbraco.fulltextsearch.modals.reindexnode", { - modal: { - type: "dialog", - size: "small" - } -}); -var v; -class B extends se { - constructor(n, r) { - super(n, r); - h(this, v); - this.consumeContext(ae, (i) => { - f(this, v, i); - }); - } - async execute() { - var n; - (n = a(this, v)) == null || n.open(this, Oe, { - data: { - unique: this.args.unique - } - }); - } -} -v = new WeakMap(); -const je = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - ReindexNodeAction: B, - default: B -}, Symbol.toStringTag, { value: "Module" })); -var u; -class Me { - constructor(e) { - h(this, u); - f(this, u, e); - } - async config() { - return await y(a(this, u), p.getUmbracoFulltextsearchApiV5FulltextsearchConfig()); - } - async indexStatus() { - return await y(a(this, u), p.getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus()); - } - async incorrectIndexedNodes(e) { - return await y(a(this, u), p.getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes({ - pageNumber: e - })); - } - async indexedNodes(e) { - return await y(a(this, u), p.getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes({ - pageNumber: e - })); - } - async missingNodes(e) { - return await y(a(this, u), p.getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes({ - pageNumber: e - })); - } - async reindex(e, n) { - return await y(a(this, u), p.postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes({ - requestBody: { - includeDescendants: e, - nodeIds: n - } - })); - } -} -u = new WeakMap(); -var x, T, S, _, N, I; -class j extends ue { - constructor(n) { - super(n); - h(this, x); - h(this, T); - h(this, S); - h(this, _); - h(this, N); - h(this, I); - f(this, T, new F(void 0)), this.config = a(this, T).asObservable(), f(this, S, new F(void 0)), this.indexStatus = a(this, S).asObservable(), f(this, _, new F(void 0)), this.indexedNodes = a(this, _).asObservable(), f(this, N, new H(void 0)), this.incorrectIndexedNodes = a(this, N).asObservable(), f(this, I, new H(void 0)), this.missingIndexedNodes = a(this, I).asObservable(), this.provideContext(U, this), f(this, x, new Me(n)), this.consumeContext(W, (r) => { - const i = r.getOpenApiConfiguration(); - l.TOKEN = i.token, l.BASE = i.base, l.WITH_CREDENTIALS = i.withCredentials; - }); - } - async getConfig() { - const { data: n } = await a(this, x).config(); - n && a(this, T).setValue(n); - } - async reindex(n, r) { - await a(this, x).reindex(n, r); - } - async getIndexStatus() { - const { data: n } = await a(this, x).indexStatus(); - n && a(this, S).setValue(n); - } - async getIndexedNodes(n) { - const { data: r } = await a(this, x).indexedNodes(n); - r && a(this, _).setValue(r); - } - async getIncorrectIndexedNodes(n) { - const { data: r } = await a(this, x).incorrectIndexedNodes(n); - r && a(this, N).setValue(r); - } - async getMissingNodes(n) { - const { data: r } = await a(this, x).missingNodes(n); - r && a(this, I).setValue(r); - } -} -x = new WeakMap(), T = new WeakMap(), S = new WeakMap(), _ = new WeakMap(), N = new WeakMap(), I = new WeakMap(); -const U = new xe(j.name), Ue = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - FULLTEXTSEARCH_CONTEXT_TOKEN: U, - FullTextSearchContext: j, - default: j -}, Symbol.toStringTag, { value: "Module" })); -var ze = Object.defineProperty, Pe = Object.getOwnPropertyDescriptor, Y = (t) => { - throw TypeError(t); -}, w = (t, e, n, r) => { - for (var i = r > 1 ? void 0 : r ? Pe(e, n) : e, s = t.length - 1, o; s >= 0; s--) - (o = t[s]) && (i = (r ? o(e, n, i) : o(i)) || i); - return r && i && ze(e, n, i), i; -}, Q = (t, e, n) => e.has(t) || Y("Cannot " + n), O = (t, e, n) => (Q(t, e, "read from private field"), e.get(t)), G = (t, e, n) => e.has(t) ? Y("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, n), V = (t, e, n, r) => (Q(t, e, "write to private field"), e.set(t, n), n), A, R; -let g = class extends ce(de) { - constructor() { - super(), G(this, A), G(this, R), this.consumeContext(U, (t) => { - V(this, R, t); - }), this.consumeContext(he, (t) => { - V(this, A, t); - }); - } - _handleCancel() { - var t; - (t = this.modalContext) == null || t.submit(); - } - async _reindex(t) { - var n, r, i, s, o; - if (!this.modalContext) return; - (n = this.modalContext) == null || n.submit(); - const e = (r = O(this, A)) == null ? void 0 : r.stay("default", { - data: { - headline: this.localize.term("fullTextSearch_reindexing"), - message: this.localize.term("fullTextSearch_reindexingMessage") - } - }); - await ((s = O(this, R)) == null ? void 0 : s.reindex(t, [Number((i = this.modalContext) == null ? void 0 : i.data.unique) || 0])), e == null || e.close(), (o = O(this, A)) == null || o.peek("positive", { - data: { - headline: this.localize.term("fullTextSearch_reindexed"), - message: this.localize.term("fullTextSearch_reindexedMessage") - } - }); - } - render() { - var t, e; - return C` - - ${(e = this.modalContext) != null && e.data.unique ? C` - this._reindex(!1)}> - - Reindex just this node - - this._reindex(!0)}> - - Reindex with descendants - - - ` : C` - this._reindex(!0)}> - - Reindex all content - - `} - - - Cancel - - - - `; - } -}; -A = /* @__PURE__ */ new WeakMap(); -R = /* @__PURE__ */ new WeakMap(); -w([ - K({ attribute: !1 }) -], g.prototype, "modalContext", 2); -w([ - K({ attribute: !1 }) -], g.prototype, "data", 2); -w([ - X() -], g.prototype, "_withDescendantsState", 2); -w([ - X() -], g.prototype, "_withoutDescendantsState", 2); -g = w([ - le("our-umbraco-fulltext-search-reindex-node-modal") -], g); -const qe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - get default() { - return g; - } -}, Symbol.toStringTag, { value: "Module" })), He = { - fullTextSearch: { - allIndexableNodesAreIndexed: "All indexable nodes has full text content in index", - couldntGetIncorrectIndexedNodes: "Couldn't get incorrectly indexed nodes", - couldntGetMissingNodes: "Couldn't get missing nodes", - externalIndexNotFound: "ExternalIndex not found", - fullTextSearchIsDisabled: "FullTextSearch is disabled", - fullTextSearchIsEnabled: "FullTextSearch is enabled", - indexableNodesDescription: "The total number of indexable nodes, according to the current Full Text Search config", - indexedNodesDescription: "The total number of indexed nodes searchable by Full Text Search", - incorrectIndexedNodesDescription: "The total number of indexed nodes that should not be indexed according to the current Full Text Search config", - missingNodesDescription: "The total number of missing indexed nodes, according to the current Full Text Search config", - nodesAreIncorrectlyIndexed: "{0} node(s) are incorrectly indexed with full text content", - nodesAreMissingInIndex: "{0} node(s) are missing full text content in index", - reindex: "Reindex", - reindexAllNodes: "Reindex all nodes", - reindexing: "Reindexing...", - reindexingMessage: "This can take a while, please be patient", - reindexNode: "Reindex node", - reindexed: "Reindexed", - reindexedMessage: "Reindexing complete", - reindexNodes: "Reindex nodes", - reindexWithDescendants: "Reindex with descendants" - } -}, Le = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - default: He -}, Symbol.toStringTag, { value: "Module" })), $e = { - fullTextSearch: { - allIndexableNodesAreIndexed: "Alle indekserbare noder har full text indhold i indekset", - couldntGetIncorrectIndexedNodes: "Kunne ikke hente fejlagtigt indekserede noder", - couldntGetMissingNodes: "Kunne ikke hente manglende noder", - externalIndexNotFound: "ExternalIndex blev ikke fundet", - fullTextSearchIsDisabled: "FullTextSearch er deaktiveret", - fullTextSearchIsEnabled: "FullTextSearch is aktiveret", - incorrectIndexedNodesDescription: "Antal noder der ikke burde være indekseret, ifølge den nuværende konfiguration", - indexableNodesDescription: "Antal noder der kan indekseres, ifølge den nuværende konfiguration", - indexedNodesDescription: "Antal noder der kan søges frem med Full Text Search", - missingNodesDescription: "Antal noder der mangler full text indhold i indekset", - nodesAreIncorrectlyIndexed: "{0} node(r) er fejlagtigt indekseret med full text indhold", - nodesAreMissingInIndex: "{0} node(r) mangler full text indhold i indekset", - reindex: "Reindeksér", - reindexAllNodes: "Reindeksér alle noder", - reindexed: "Reindekseret", - reindexedMessage: "Reindeksering færdig", - reindexing: "Reindekserer...", - reindexingMessage: "Dette kan tage et øjeblik", - reindexNode: "Reindeksér node", - reindexNodes: "Reindeksér noder", - reindexWithDescendants: "Reindeksér med undernoder" - } -}, Be = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - default: $e -}, Symbol.toStringTag, { value: "Module" })), Ge = { - fullTextSearch: { - allIndexableNodesAreIndexed: "Mae gan bob nod a ellir ei mynegeio gynnwys testun llawn yn yr mynegai", - couldntGetIncorrectIndexedNodes: "Methu â chael nodau wedi'u mynegeio' yn anghywir", - couldntGetMissingNodes: "Methwyd â chael nodau coll", - externalIndexNotFound: "Heb ddod o hyd i ExternalIndex", - fullTextSearchIsDisabled: "Mae FullTextSearch wedi'i analluogi", - fullTextSearchIsEnabled: "Mae FullTextSearch wedi'i alluogi", - incorrectIndexedNodesDescription: "Cyfanswm y nodau mynegeiedig na ddylai fod wedi'u mynegeio yn ôl y ffurfweddiad Full Text Search presennol", - indexableNodesDescription: "Cyfanswm y nodau y gellir eu mynegeio, yn ôl y ffurfweddiad Full Text Search presennol", - indexedNodesDescription: "Cyfanswm y nodau mynegeiedig y gellir eu chwilio gyda Full Text Search", - missingNodesDescription: "Cyfanswm y nodau mynegeiedig sydd ar goll, yn ôl y ffurfweddiad Full Text Search presennol", - nodesAreIncorrectlyIndexed: "Mae {0} nod(au) wedi'u mynegeio'n anghywir gyda chynnwys testun llawn", - nodesAreMissingInIndex: "Mae {0} nod(au) yn methu eu cynnwys testun llawn yn yr mynegai", - reindex: "Ail-fynegi", - reindexAllNodes: "Ail-fynegi all nodau", - reindexed: "Ail-fynegiwyd", - reindexedMessage: "Wedi ail-fynegiwyd", - reindexing: "Ail-fynegio...", - reindexingMessage: "Wedi ail-fynegio", - reindexNodes: "Ail-fynegi Nodau", - reindexWithDescendants: "Ail-fynegi gyda disgynyddion" - } -}, Ve = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - default: Ge -}, Symbol.toStringTag, { value: "Module" })), We = { - fullTextSearch: { - allIndexableNodesAreIndexed: "Tous les noeuds indexables ont leur contenu intégral dans l'index", - couldntGetIncorrectIndexedNodes: "Impossible de récupérer les noeuds indexés incorrectement", - couldntGetMissingNodes: "Impossible de récupérer les noeuds manquant", - externalIndexNotFound: "ExternalIndex n'a pas été trouvé", - fullTextSearchIsDisabled: "FullTextSearch est désactivé", - fullTextSearchIsEnabled: "FullTextSearch est activé", - incorrectIndexedNodesDescription: "Le nombre total de noeuds indexés qui ne devraient pas l'être selon la configuration actuelle du Full Text Search", - indexableNodesDescription: "Le nombre total de noeuds indexables, selon la configuration actuelle du Full Text Search", - indexedNodesDescription: "Le nombre total de noeuds indexés qui peuvent être cherchés par le Full Text Search", - missingNodesDescription: "Le nombre total de noeuds indexés manquant, selon la configuration actuelle du Full Text Search", - nodesAreIncorrectlyIndexed: "{0} noeud(s) sont incorrectement indexés avec leur contenu intégral", - nodesAreMissingInIndex: "{0} noeud(s) n'ont pas leur contenu intégral dans l'index", - reindex: "Indexer à nouveau", - reindexAllNodes: "Indexer à nouveau tous les nœuds", - reindexed: "Nouvelle indexation", - reindexedMessage: "Nouvelle indexation terminée", - reindexing: "Nouvelle indexation en cours...", - reindexingMessage: "Veuillez patienter", - reindexNode: "Indexer à nouveau le nœud", - reindexNodes: "Indexer à nouveau les noeuds", - reindexWithDescendants: "Indexer à nouveau, y compris les descendants" - } -}, Ke = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - default: We -}, Symbol.toStringTag, { value: "Module" })), Xe = { - fullTextSearch: { - allIndexableNodesAreIndexed: "Alle indekserbare noder har fulltekstinnhold i indeksen", - couldntGetIncorrectIndexedNodes: "Kunne ikke hente feilaktig indekserte noder", - couldntGetMissingNodes: "Kunne ikke hente manglende noder", - externalIndexNotFound: "ExternalIndex ikke funnet", - fullTextSearchIsDisabled: "FullTextSearch er deaktivert", - fullTextSearchIsEnabled: "FullTextSearch er aktivert", - incorrectIndexedNodesDescription: "Det totale antall indekserte noder som ikke skal indekseres i henhold til gjeldende Full Text Search-konfigurasjon", - indexableNodesDescription: "Det totale antall indekserbare noder, i henhold til gjeldende Full Text Search konfigurasjon", - indexedNodesDescription: "Det totale antall indekserte noder som kan søkes etter av Full Text Search", - missingNodesDescription: "Totalt antall manglende indekserte noder, i henhold til gjeldende Full Text Search konfigurasjon", - nodesAreIncorrectlyIndexed: "{0} node(r) er feilaktig indeksert med fulltekstinnhold", - nodesAreMissingInIndex: "{0} node(r) mangler fulltekstinnhold i indeksen", - reindex: "Reindekser", - reindexAllNodes: "Reindekser alle noder", - reindexed: "Reindekseret", - reindexedMessage: "Reindeksering ferdig", - reindexing: "Reindekserer...", - reindexingMessage: "Vennligst vent", - reindexNode: "Reindekser node", - reindexNodes: "Reindekser noder", - reindexWithDescendants: "Reindekser med etterkommere" - } -}, Je = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - default: Xe -}, Symbol.toStringTag, { value: "Module" })), Ye = { - fullTextSearch: { - indexableNodes: "Indexeerbare nodes", - indexableNodesDescription: "Het totaal aantal indexeerbare nodes volgens de huidige Full Text Search configuratie", - indexedNodes: "Geïndexeerde nodes", - indexedNodesDescription: "Het totaal aantal geïndexeerde nodes die doorzoekbaar zijn door Full Text Search", - missingNodes: "Ontbrekende nodes", - missingNodesDescription: "Het totaal aantal ontbrekende nodes volgens de huidige Full Text Search configuratie", - incorrectIndexedNodes: "Foutief geïndexeerde nodes", - incorrectIndexedNodesDescription: "Het totaal aantal geïndexeerde nodes, die dat niet zouden moeten zijn, volgens de huidige Full Text Search configuratie", - reindexNodes: "Herindexeer nodes", - reindexing: "Herindexeren...", - reindex: "Herindexeer", - reindexDescription: "Selecteer of alle nodes opnieuw geïndexeerd moeten worden", - reindexWithDescendants: "Herindexeren inclusief onderliggende", - includeDescendants: "Inclusief onderliggende", - allNodes: "Alle nodes", - selectNodes: "Selecteer nodes", - selectNodesDescription: "Selecteer de nodes om te herindexeren", - selectedNodes: "Geselecteerde nodes", - description: "Omschrijving", - developedBy: "Ontwikkeld door", - sponsoredBy: "Gesponsord door" - } -}, Qe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ - __proto__: null, - default: Ye -}, Symbol.toStringTag, { value: "Module" })); +import "@umbraco-cms/backoffice/auth"; +import { o as i } from "./index-DB07aDTd.js"; export { - ut as onInit + i as onInit }; //# sourceMappingURL=assets.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js.map index dd5f7d3..9f2ca55 100644 --- a/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js.map +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/assets.js.map @@ -1 +1 @@ -{"version":3,"file":"assets.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/actions/entity/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/modals/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/context/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/ApiError.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/CancelablePromise.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/OpenAPI.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/request.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/services.gen.ts","../../Our.Umbraco.FullTextSearch.Client/src/index.ts","../../Our.Umbraco.FullTextSearch.Client/src/modals/reindexnode.modaltoken.ts","../../Our.Umbraco.FullTextSearch.Client/src/actions/entity/reindex.action.ts","../../Our.Umbraco.FullTextSearch.Client/src/repository/sources/fulltextsearch.source.ts","../../Our.Umbraco.FullTextSearch.Client/src/context/fulltextsearch.context.ts","../../Our.Umbraco.FullTextSearch.Client/src/modals/reindexnode.element.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/en.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/da.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/cy.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/fr.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/nb.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/nl.ts"],"sourcesContent":["import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from \"@umbraco-cms/backoffice/document\";\r\nimport { ManifestEntityAction } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst entityAction: ManifestEntityAction = {\r\n type: 'entityAction',\r\n kind: 'default',\r\n alias: 'our.umbraco.fulltextsearch.reindex.action',\r\n name: 'ReindexNode',\r\n weight: -100,\r\n forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE],\r\n api: () => import('./reindex.action.ts'),\r\n elementName: 'our-umbraco-fulltext-search-actions-entity-reindexnode',\r\n meta: {\r\n icon: 'icon-alarm-clock',\r\n label: '#fullTextSearch_reindex',\r\n repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS,\r\n }\r\n}\r\n\r\nexport const manifests = [entityAction];\r\n","import { ManifestModal } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst reIndexNodeModal: ManifestModal = {\r\n type: 'modal',\r\n alias: 'our.umbraco.fulltextsearch.modals.reindexnode',\r\n name: 'Reindex node',\r\n js: () => import('./reindexnode.element.ts'),\r\n}\r\n\r\nexport const manifests = [reIndexNodeModal];\r\n","import { ManifestLocalization } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst localizations: ManifestLocalization[] = [\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.En\",\r\n name: \"English\",\r\n meta: {\r\n culture: \"en\"\r\n },\r\n js: () => import(\"./en.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Da\",\r\n name: \"Danish\",\r\n meta: {\r\n culture: \"da\"\r\n },\r\n js: () => import(\"./da.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Cy\",\r\n name: \"Welsh\",\r\n meta: {\r\n culture: \"cy\"\r\n },\r\n js: () => import(\"./cy.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Fr\",\r\n name: \"French\",\r\n meta: {\r\n culture: \"fr\"\r\n },\r\n js: () => import(\"./fr.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Nb\",\r\n name: \"Norwegian bokmål\",\r\n meta: {\r\n culture: \"nb\"\r\n },\r\n js: () => import(\"./nb.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Nl\",\r\n name: \"Dutch\",\r\n meta: {\r\n culture: \"nl\"\r\n },\r\n js: () => import(\"./nl.ts\")\r\n }\r\n]\r\n\r\nexport const manifests = localizations;\r\n","import { ManifestGlobalContext } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst contexts: Array = [\r\n {\r\n type: 'globalContext',\r\n alias: 'our.umbraco.fulltextsearch.context',\r\n name: 'Full Text Search context',\r\n js: () => import('./fulltextsearch.context.ts')\r\n }\r\n]\r\n\r\nexport const manifests = [...contexts];","import type { ApiRequestOptions } from './ApiRequestOptions';\r\nimport type { ApiResult } from './ApiResult';\r\n\r\nexport class ApiError extends Error {\r\n\tpublic readonly url: string;\r\n\tpublic readonly status: number;\r\n\tpublic readonly statusText: string;\r\n\tpublic readonly body: unknown;\r\n\tpublic readonly request: ApiRequestOptions;\r\n\r\n\tconstructor(request: ApiRequestOptions, response: ApiResult, message: string) {\r\n\t\tsuper(message);\r\n\r\n\t\tthis.name = 'ApiError';\r\n\t\tthis.url = response.url;\r\n\t\tthis.status = response.status;\r\n\t\tthis.statusText = response.statusText;\r\n\t\tthis.body = response.body;\r\n\t\tthis.request = request;\r\n\t}\r\n}","export class CancelError extends Error {\r\n\tconstructor(message: string) {\r\n\t\tsuper(message);\r\n\t\tthis.name = 'CancelError';\r\n\t}\r\n\r\n\tpublic get isCancelled(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport interface OnCancel {\r\n\treadonly isResolved: boolean;\r\n\treadonly isRejected: boolean;\r\n\treadonly isCancelled: boolean;\r\n\r\n\t(cancelHandler: () => void): void;\r\n}\r\n\r\nexport class CancelablePromise implements Promise {\r\n\tprivate _isResolved: boolean;\r\n\tprivate _isRejected: boolean;\r\n\tprivate _isCancelled: boolean;\r\n\treadonly cancelHandlers: (() => void)[];\r\n\treadonly promise: Promise;\r\n\tprivate _resolve?: (value: T | PromiseLike) => void;\r\n\tprivate _reject?: (reason?: unknown) => void;\r\n\r\n\tconstructor(\r\n\t\texecutor: (\r\n\t\t\tresolve: (value: T | PromiseLike) => void,\r\n\t\t\treject: (reason?: unknown) => void,\r\n\t\t\tonCancel: OnCancel\r\n\t\t) => void\r\n\t) {\r\n\t\tthis._isResolved = false;\r\n\t\tthis._isRejected = false;\r\n\t\tthis._isCancelled = false;\r\n\t\tthis.cancelHandlers = [];\r\n\t\tthis.promise = new Promise((resolve, reject) => {\r\n\t\t\tthis._resolve = resolve;\r\n\t\t\tthis._reject = reject;\r\n\r\n\t\t\tconst onResolve = (value: T | PromiseLike): void => {\r\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._isResolved = true;\r\n\t\t\t\tif (this._resolve) this._resolve(value);\r\n\t\t\t};\r\n\r\n\t\t\tconst onReject = (reason?: unknown): void => {\r\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._isRejected = true;\r\n\t\t\t\tif (this._reject) this._reject(reason);\r\n\t\t\t};\r\n\r\n\t\t\tconst onCancel = (cancelHandler: () => void): void => {\r\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.cancelHandlers.push(cancelHandler);\r\n\t\t\t};\r\n\r\n\t\t\tObject.defineProperty(onCancel, 'isResolved', {\r\n\t\t\t\tget: (): boolean => this._isResolved,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(onCancel, 'isRejected', {\r\n\t\t\t\tget: (): boolean => this._isRejected,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(onCancel, 'isCancelled', {\r\n\t\t\t\tget: (): boolean => this._isCancelled,\r\n\t\t\t});\r\n\r\n\t\t\treturn executor(onResolve, onReject, onCancel as OnCancel);\r\n\t\t});\r\n\t}\r\n\r\n\tget [Symbol.toStringTag]() {\r\n\t\treturn \"Cancellable Promise\";\r\n\t}\r\n\r\n\tpublic then(\r\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\r\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike) | null\r\n\t): Promise {\r\n\t\treturn this.promise.then(onFulfilled, onRejected);\r\n\t}\r\n\r\n\tpublic catch(\r\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike) | null\r\n\t): Promise {\r\n\t\treturn this.promise.catch(onRejected);\r\n\t}\r\n\r\n\tpublic finally(onFinally?: (() => void) | null): Promise {\r\n\t\treturn this.promise.finally(onFinally);\r\n\t}\r\n\r\n\tpublic cancel(): void {\r\n\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._isCancelled = true;\r\n\t\tif (this.cancelHandlers.length) {\r\n\t\t\ttry {\r\n\t\t\t\tfor (const cancelHandler of this.cancelHandlers) {\r\n\t\t\t\t\tcancelHandler();\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Cancellation threw an error', error);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.cancelHandlers.length = 0;\r\n\t\tif (this._reject) this._reject(new CancelError('Request aborted'));\r\n\t}\r\n\r\n\tpublic get isCancelled(): boolean {\r\n\t\treturn this._isCancelled;\r\n\t}\r\n}","import type { ApiRequestOptions } from './ApiRequestOptions';\r\n\r\ntype Headers = Record;\r\ntype Middleware = (value: T) => T | Promise;\r\ntype Resolver = (options: ApiRequestOptions) => Promise;\r\n\r\nexport class Interceptors {\r\n _fns: Middleware[];\r\n\r\n constructor() {\r\n this._fns = [];\r\n }\r\n\r\n eject(fn: Middleware) {\r\n const index = this._fns.indexOf(fn);\r\n if (index !== -1) {\r\n this._fns = [\r\n ...this._fns.slice(0, index),\r\n ...this._fns.slice(index + 1),\r\n ];\r\n }\r\n }\r\n\r\n use(fn: Middleware) {\r\n this._fns = [...this._fns, fn];\r\n }\r\n}\r\n\r\nexport type OpenAPIConfig = {\r\n\tBASE: string;\r\n\tCREDENTIALS: 'include' | 'omit' | 'same-origin';\r\n\tENCODE_PATH?: ((path: string) => string) | undefined;\r\n\tHEADERS?: Headers | Resolver | undefined;\r\n\tPASSWORD?: string | Resolver | undefined;\r\n\tTOKEN?: string | Resolver | undefined;\r\n\tUSERNAME?: string | Resolver | undefined;\r\n\tVERSION: string;\r\n\tWITH_CREDENTIALS: boolean;\r\n\tinterceptors: {request: Interceptors;\r\n\t\tresponse: Interceptors;};\r\n};\r\n\r\nexport const OpenAPI: OpenAPIConfig = {\r\n\tBASE: '',\r\n\tCREDENTIALS: 'include',\r\n\tENCODE_PATH: undefined,\r\n\tHEADERS: undefined,\r\n\tPASSWORD: undefined,\r\n\tTOKEN: undefined,\r\n\tUSERNAME: undefined,\r\n\tVERSION: 'Latest',\r\n\tWITH_CREDENTIALS: false,\r\n\tinterceptors: {request: new Interceptors(),response: new Interceptors(),\r\n\t},\r\n};","import { ApiError } from './ApiError';\r\nimport type { ApiRequestOptions } from './ApiRequestOptions';\r\nimport type { ApiResult } from './ApiResult';\r\nimport { CancelablePromise } from './CancelablePromise';\r\nimport type { OnCancel } from './CancelablePromise';\r\nimport type { OpenAPIConfig } from './OpenAPI';\r\n\r\nexport const isString = (value: unknown): value is string => {\r\n\treturn typeof value === 'string';\r\n};\r\n\r\nexport const isStringWithValue = (value: unknown): value is string => {\r\n\treturn isString(value) && value !== '';\r\n};\r\n\r\nexport const isBlob = (value: any): value is Blob => {\r\n\treturn value instanceof Blob;\r\n};\r\n\r\nexport const isFormData = (value: unknown): value is FormData => {\r\n\treturn value instanceof FormData;\r\n};\r\n\r\nexport const base64 = (str: string): string => {\r\n\ttry {\r\n\t\treturn btoa(str);\r\n\t} catch (err) {\r\n\t\t// @ts-ignore\r\n\t\treturn Buffer.from(str).toString('base64');\r\n\t}\r\n};\r\n\r\nexport const getQueryString = (params: Record): string => {\r\n\tconst qs: string[] = [];\r\n\r\n\tconst append = (key: string, value: unknown) => {\r\n\t\tqs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\r\n\t};\r\n\r\n\tconst encodePair = (key: string, value: unknown) => {\r\n\t\tif (value === undefined || value === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(value)) {\r\n\t\t\tvalue.forEach(v => encodePair(key, v));\r\n\t\t} else if (typeof value === 'object') {\r\n\t\t\tObject.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v));\r\n\t\t} else {\r\n\t\t\tappend(key, value);\r\n\t\t}\r\n\t};\r\n\r\n\tObject.entries(params).forEach(([key, value]) => encodePair(key, value));\r\n\r\n\treturn qs.length ? `?${qs.join('&')}` : '';\r\n};\r\n\r\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\r\n\tconst encoder = config.ENCODE_PATH || encodeURI;\r\n\r\n\tconst path = options.url\r\n\t\t.replace('{api-version}', config.VERSION)\r\n\t\t.replace(/{(.*?)}/g, (substring: string, group: string) => {\r\n\t\t\tif (options.path?.hasOwnProperty(group)) {\r\n\t\t\t\treturn encoder(String(options.path[group]));\r\n\t\t\t}\r\n\t\t\treturn substring;\r\n\t\t});\r\n\r\n\tconst url = config.BASE + path;\r\n\treturn options.query ? url + getQueryString(options.query) : url;\r\n};\r\n\r\nexport const getFormData = (options: ApiRequestOptions): FormData | undefined => {\r\n\tif (options.formData) {\r\n\t\tconst formData = new FormData();\r\n\r\n\t\tconst process = (key: string, value: unknown) => {\r\n\t\t\tif (isString(value) || isBlob(value)) {\r\n\t\t\t\tformData.append(key, value);\r\n\t\t\t} else {\r\n\t\t\t\tformData.append(key, JSON.stringify(value));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tObject.entries(options.formData)\r\n\t\t\t.filter(([, value]) => value !== undefined && value !== null)\r\n\t\t\t.forEach(([key, value]) => {\r\n\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\tvalue.forEach(v => process(key, v));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocess(key, value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn formData;\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\ntype Resolver = (options: ApiRequestOptions) => Promise;\r\n\r\nexport const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => {\r\n\tif (typeof resolver === 'function') {\r\n\t\treturn (resolver as Resolver)(options);\r\n\t}\r\n\treturn resolver;\r\n};\r\n\r\nexport const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => {\r\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\r\n\t\tresolve(options, config.TOKEN),\r\n\t\tresolve(options, config.USERNAME),\r\n\t\tresolve(options, config.PASSWORD),\r\n\t\tresolve(options, config.HEADERS),\r\n\t]);\r\n\r\n\tconst headers = Object.entries({\r\n\t\tAccept: 'application/json',\r\n\t\t...additionalHeaders,\r\n\t\t...options.headers,\r\n\t})\r\n\t\t.filter(([, value]) => value !== undefined && value !== null)\r\n\t\t.reduce((headers, [key, value]) => ({\r\n\t\t\t...headers,\r\n\t\t\t[key]: String(value),\r\n\t\t}), {} as Record);\r\n\r\n\tif (isStringWithValue(token)) {\r\n\t\theaders['Authorization'] = `Bearer ${token}`;\r\n\t}\r\n\r\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\r\n\t\tconst credentials = base64(`${username}:${password}`);\r\n\t\theaders['Authorization'] = `Basic ${credentials}`;\r\n\t}\r\n\r\n\tif (options.body !== undefined) {\r\n\t\tif (options.mediaType) {\r\n\t\t\theaders['Content-Type'] = options.mediaType;\r\n\t\t} else if (isBlob(options.body)) {\r\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\r\n\t\t} else if (isString(options.body)) {\r\n\t\t\theaders['Content-Type'] = 'text/plain';\r\n\t\t} else if (!isFormData(options.body)) {\r\n\t\t\theaders['Content-Type'] = 'application/json';\r\n\t\t}\r\n\t}\r\n\r\n\treturn new Headers(headers);\r\n};\r\n\r\nexport const getRequestBody = (options: ApiRequestOptions): unknown => {\r\n\tif (options.body !== undefined) {\r\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\r\n\t\t\treturn JSON.stringify(options.body);\r\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\r\n\t\t\treturn options.body;\r\n\t\t} else {\r\n\t\t\treturn JSON.stringify(options.body);\r\n\t\t}\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\nexport const sendRequest = async (\r\n\tconfig: OpenAPIConfig,\r\n\toptions: ApiRequestOptions,\r\n\turl: string,\r\n\tbody: any,\r\n\tformData: FormData | undefined,\r\n\theaders: Headers,\r\n\tonCancel: OnCancel\r\n): Promise => {\r\n\tconst controller = new AbortController();\r\n\r\n\tlet request: RequestInit = {\r\n\t\theaders,\r\n\t\tbody: body ?? formData,\r\n\t\tmethod: options.method,\r\n\t\tsignal: controller.signal,\r\n\t};\r\n\r\n\tif (config.WITH_CREDENTIALS) {\r\n\t\trequest.credentials = config.CREDENTIALS;\r\n\t}\r\n\r\n\tfor (const fn of config.interceptors.request._fns) {\r\n\t\trequest = await fn(request);\r\n\t}\r\n\r\n\tonCancel(() => controller.abort());\r\n\r\n\treturn await fetch(url, request);\r\n};\r\n\r\nexport const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\r\n\tif (responseHeader) {\r\n\t\tconst content = response.headers.get(responseHeader);\r\n\t\tif (isString(content)) {\r\n\t\t\treturn content;\r\n\t\t}\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\nexport const getResponseBody = async (response: Response): Promise => {\r\n\tif (response.status !== 204) {\r\n\t\ttry {\r\n\t\t\tconst contentType = response.headers.get('Content-Type');\r\n\t\t\tif (contentType) {\r\n\t\t\t\tconst binaryTypes = ['application/octet-stream', 'application/pdf', 'application/zip', 'audio/', 'image/', 'video/'];\r\n\t\t\t\tif (contentType.includes('application/json') || contentType.includes('+json')) {\r\n\t\t\t\t\treturn await response.json();\r\n\t\t\t\t} else if (binaryTypes.some(type => contentType.includes(type))) {\r\n\t\t\t\t\treturn await response.blob();\r\n\t\t\t\t} else if (contentType.includes('multipart/form-data')) {\r\n\t\t\t\t\treturn await response.formData();\r\n\t\t\t\t} else if (contentType.includes('text/')) {\r\n\t\t\t\t\treturn await response.text();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\nexport const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\r\n\tconst errors: Record = {\r\n\t\t400: 'Bad Request',\r\n\t\t401: 'Unauthorized',\r\n\t\t402: 'Payment Required',\r\n\t\t403: 'Forbidden',\r\n\t\t404: 'Not Found',\r\n\t\t405: 'Method Not Allowed',\r\n\t\t406: 'Not Acceptable',\r\n\t\t407: 'Proxy Authentication Required',\r\n\t\t408: 'Request Timeout',\r\n\t\t409: 'Conflict',\r\n\t\t410: 'Gone',\r\n\t\t411: 'Length Required',\r\n\t\t412: 'Precondition Failed',\r\n\t\t413: 'Payload Too Large',\r\n\t\t414: 'URI Too Long',\r\n\t\t415: 'Unsupported Media Type',\r\n\t\t416: 'Range Not Satisfiable',\r\n\t\t417: 'Expectation Failed',\r\n\t\t418: 'Im a teapot',\r\n\t\t421: 'Misdirected Request',\r\n\t\t422: 'Unprocessable Content',\r\n\t\t423: 'Locked',\r\n\t\t424: 'Failed Dependency',\r\n\t\t425: 'Too Early',\r\n\t\t426: 'Upgrade Required',\r\n\t\t428: 'Precondition Required',\r\n\t\t429: 'Too Many Requests',\r\n\t\t431: 'Request Header Fields Too Large',\r\n\t\t451: 'Unavailable For Legal Reasons',\r\n\t\t500: 'Internal Server Error',\r\n\t\t501: 'Not Implemented',\r\n\t\t502: 'Bad Gateway',\r\n\t\t503: 'Service Unavailable',\r\n\t\t504: 'Gateway Timeout',\r\n\t\t505: 'HTTP Version Not Supported',\r\n\t\t506: 'Variant Also Negotiates',\r\n\t\t507: 'Insufficient Storage',\r\n\t\t508: 'Loop Detected',\r\n\t\t510: 'Not Extended',\r\n\t\t511: 'Network Authentication Required',\r\n\t\t...options.errors,\r\n\t}\r\n\r\n\tconst error = errors[result.status];\r\n\tif (error) {\r\n\t\tthrow new ApiError(options, result, error);\r\n\t}\r\n\r\n\tif (!result.ok) {\r\n\t\tconst errorStatus = result.status ?? 'unknown';\r\n\t\tconst errorStatusText = result.statusText ?? 'unknown';\r\n\t\tconst errorBody = (() => {\r\n\t\t\ttry {\r\n\t\t\t\treturn JSON.stringify(result.body, null, 2);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\tthrow new ApiError(options, result,\r\n\t\t\t`Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\r\n\t\t);\r\n\t}\r\n};\r\n\r\n/**\r\n * Request method\r\n * @param config The OpenAPI configuration object\r\n * @param options The request options from the service\r\n * @returns CancelablePromise\r\n * @throws ApiError\r\n */\r\nexport const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => {\r\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\r\n\t\ttry {\r\n\t\t\tconst url = getUrl(config, options);\r\n\t\t\tconst formData = getFormData(options);\r\n\t\t\tconst body = getRequestBody(options);\r\n\t\t\tconst headers = await getHeaders(config, options);\r\n\r\n\t\t\tif (!onCancel.isCancelled) {\r\n\t\t\t\tlet response = await sendRequest(config, options, url, body, formData, headers, onCancel);\r\n\r\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\r\n\t\t\t\t\tresponse = await fn(response);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst responseBody = await getResponseBody(response);\r\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\r\n\r\n\t\t\t\tconst result: ApiResult = {\r\n\t\t\t\t\turl,\r\n\t\t\t\t\tok: response.ok,\r\n\t\t\t\t\tstatus: response.status,\r\n\t\t\t\t\tstatusText: response.statusText,\r\n\t\t\t\t\tbody: responseHeader ?? responseBody,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcatchErrorCodes(options, result);\r\n\r\n\t\t\t\tresolve(result.body);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\treject(error);\r\n\t\t}\r\n\t});\r\n};","// This file is auto-generated by @hey-api/openapi-ts\r\n\r\n\r\nimport type { CancelablePromise } from './core/CancelablePromise';\r\nimport { OpenAPI } from './core/OpenAPI';\r\nimport { request as __request } from './core/request';\r\nimport type { $OpenApiTs } from './types.gen';\r\n\r\nexport class FulltextsearchService {\r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchConfig(): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/config']['get']['res'][200]> {\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/config'\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes']['get']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes']['get']['res'][200]> {\r\n const { pageNumber } = data;\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes',\r\n query: {\r\n pageNumber\r\n }\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes']['get']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes']['get']['res'][200]> {\r\n const { pageNumber } = data;\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes',\r\n query: {\r\n pageNumber\r\n }\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus(): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/indexstatus']['get']['res'][200]> {\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/indexstatus'\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes']['get']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes']['get']['res'][200]> {\r\n const { pageNumber } = data;\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes',\r\n query: {\r\n pageNumber\r\n }\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes']['post']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes']['post']['res'][200]> {\r\n const { requestBody } = data;\r\n return __request(OpenAPI, {\r\n method: 'POST',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes',\r\n body: requestBody,\r\n mediaType: 'application/json'\r\n});\r\n }\r\n \r\n}","import { UmbEntryPointOnInit } from '@umbraco-cms/backoffice/extension-api';\r\nimport { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';\r\nimport { manifests as entityActionManifests } from './actions/entity/manifest.ts';\r\nimport { manifests as modalManifests } from './modals/manifest.ts';\r\nimport { manifests as localizationManifests } from './localization/manifest.ts';\r\nimport { manifests as contextManifests } from './context/manifest.ts';\r\nimport { OpenAPI } from './api/index.ts';\r\n\r\nexport const onInit: UmbEntryPointOnInit = (_host, extensionRegistry) => {\r\n\r\n // register them here. \r\n extensionRegistry.registerMany([\r\n ...entityActionManifests,\r\n ...modalManifests,\r\n ...localizationManifests,\r\n ...contextManifests\r\n ]);\r\n\r\n\r\n _host.consumeContext(UMB_AUTH_CONTEXT, (_auth) => {\r\n const umbOpenApi = _auth.getOpenApiConfiguration();\r\n OpenAPI.TOKEN = umbOpenApi.token;\r\n OpenAPI.BASE = umbOpenApi.base;\r\n OpenAPI.WITH_CREDENTIALS = umbOpenApi.withCredentials;\r\n });\r\n\r\n};","import { UmbEntityUnique } from \"@umbraco-cms/backoffice/entity\";\r\nimport { UmbModalToken } from \"@umbraco-cms/backoffice/modal\";\r\n\r\nexport type ReindexNodeModalData = {\r\n unique: UmbEntityUnique;\r\n}\r\n\r\nexport const REINDEX_NODE_MODAL_TOKEN = new UmbModalToken('our.umbraco.fulltextsearch.modals.reindexnode', {\r\n modal: {\r\n type: 'dialog',\r\n size: 'small'\r\n }\r\n});","import { UmbControllerHostElement } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { UmbEntityActionArgs, UmbEntityActionBase } from \"@umbraco-cms/backoffice/entity-action\";\r\nimport { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';\r\nimport { REINDEX_NODE_MODAL_TOKEN } from \"../../modals/reindexnode.modaltoken\";\r\n\r\nexport class ReindexNodeAction extends UmbEntityActionBase {\r\n #modalManagerContext?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE;\r\n\r\n\r\n constructor(host: UmbControllerHostElement, args: UmbEntityActionArgs) {\r\n super(host, args)\r\n\r\n this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {\r\n this.#modalManagerContext = instance;\r\n });\r\n }\r\n\r\n async execute() {\r\n this.#modalManagerContext?.open(this, REINDEX_NODE_MODAL_TOKEN, {\r\n data: {\r\n unique: this.args.unique\r\n }\r\n });\r\n }\r\n\r\n};\r\n\r\nexport default ReindexNodeAction;","import { UmbControllerHost } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\nimport { FulltextsearchService } from \"../../api\";\r\n\r\nexport class FullTextSearchDataSource {\r\n\r\n #host: UmbControllerHost;\r\n\r\n constructor(host: UmbControllerHost) {\r\n this.#host = host;\r\n }\r\n\r\n async config() {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchConfig());\r\n }\r\n\r\n async indexStatus() {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus());\r\n }\r\n\r\n async incorrectIndexedNodes(pageNumber?: number) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes({\r\n pageNumber\r\n }));\r\n }\r\n\r\n async indexedNodes(pageNumber?: number) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes({\r\n pageNumber\r\n }));\r\n }\r\n\r\n async missingNodes(pageNumber?: number) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes({\r\n pageNumber\r\n }));\r\n }\r\n\r\n async reindex(includeDescendants: boolean, nodeIds?: Array<(number)>) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes({\r\n requestBody: {\r\n includeDescendants,\r\n nodeIds\r\n }\r\n }));\r\n }\r\n}","import { UMB_AUTH_CONTEXT } from \"@umbraco-cms/backoffice/auth\";\r\nimport { UmbControllerBase } from \"@umbraco-cms/backoffice/class-api\";\r\nimport { UmbContextToken } from \"@umbraco-cms/backoffice/context-api\";\r\nimport { UmbControllerHost } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { FullTextSearchOptions, IndexedNodeResult, IndexStatus, OpenAPI } from './../api/index.ts';\r\nimport { FullTextSearchDataSource } from \"../repository/sources/fulltextsearch.source.ts\";\r\nimport { UmbObjectState, UmbStringState } from \"@umbraco-cms/backoffice/observable-api\";\r\n\r\n\r\nexport class FullTextSearchContext extends UmbControllerBase {\r\n\r\n #source: FullTextSearchDataSource;\r\n\r\n #config = new UmbObjectState(undefined);\r\n public readonly config = this.#config.asObservable();\r\n\r\n #indexStatus = new UmbObjectState(undefined);\r\n public readonly indexStatus = this.#indexStatus.asObservable();\r\n\r\n #indexedNodes = new UmbObjectState(undefined);\r\n public readonly indexedNodes = this.#indexedNodes.asObservable();\r\n\r\n #incorrectIndexedNodes = new UmbStringState(undefined);\r\n public readonly incorrectIndexedNodes = this.#incorrectIndexedNodes.asObservable();\r\n\r\n #missingIndexedNodes = new UmbStringState(undefined);\r\n public readonly missingIndexedNodes = this.#missingIndexedNodes.asObservable();\r\n\r\n\r\n constructor(host: UmbControllerHost) {\r\n super(host);\r\n this.provideContext(FULLTEXTSEARCH_CONTEXT_TOKEN, this);\r\n this.#source = new FullTextSearchDataSource(host);\r\n\r\n this.consumeContext(UMB_AUTH_CONTEXT, (_auth) => {\r\n const umbOpenApi = _auth.getOpenApiConfiguration();\r\n OpenAPI.TOKEN = umbOpenApi.token;\r\n OpenAPI.BASE = umbOpenApi.base;\r\n OpenAPI.WITH_CREDENTIALS = umbOpenApi.withCredentials;\r\n });\r\n }\r\n\r\n async getConfig() {\r\n const { data } = await this.#source.config();\r\n\r\n if (data) {\r\n this.#config.setValue(data);\r\n }\r\n }\r\n\r\n async reindex(includeDescendants: boolean, nodeIds?: Array<(number)>) {\r\n await this.#source.reindex(includeDescendants, nodeIds);\r\n }\r\n\r\n async getIndexStatus() {\r\n const { data } = await this.#source.indexStatus();\r\n\r\n if (data) {\r\n this.#indexStatus.setValue(data);\r\n }\r\n }\r\n\r\n async getIndexedNodes(pageNumber?: number) {\r\n const { data } = await this.#source.indexedNodes(pageNumber);\r\n if (data) {\r\n this.#indexedNodes.setValue(data);\r\n }\r\n }\r\n\r\n async getIncorrectIndexedNodes(pageNumber?: number) {\r\n const { data } = await this.#source.incorrectIndexedNodes(pageNumber);\r\n if (data) {\r\n this.#incorrectIndexedNodes.setValue(data);\r\n }\r\n }\r\n\r\n async getMissingNodes(pageNumber?: number) {\r\n const { data } = await this.#source.missingNodes(pageNumber);\r\n if (data) {\r\n this.#missingIndexedNodes.setValue(data);\r\n }\r\n }\r\n}\r\n\r\nexport default FullTextSearchContext;\r\nexport const FULLTEXTSEARCH_CONTEXT_TOKEN =\r\n new UmbContextToken(FullTextSearchContext.name);","import { html, LitElement, property, customElement, state } from \"@umbraco-cms/backoffice/external/lit\";\r\nimport { UmbElementMixin } from \"@umbraco-cms/backoffice/element-api\";\r\nimport type { UmbModalContext } from \"@umbraco-cms/backoffice/modal\";\r\nimport { UmbModalExtensionElement } from \"@umbraco-cms/backoffice/extension-registry\";\r\nimport { ReindexNodeModalData } from \"./reindexnode.modaltoken.ts\";\r\nimport { UUIButtonState } from \"@umbraco-cms/backoffice/external/uui\";\r\nimport FullTextSearchContext, { FULLTEXTSEARCH_CONTEXT_TOKEN } from \"../context/fulltextsearch.context.ts\";\r\nimport { UMB_NOTIFICATION_CONTEXT, UmbNotificationContext } from \"@umbraco-cms/backoffice/notification\";\r\n\r\n@customElement('our-umbraco-fulltext-search-reindex-node-modal')\r\nexport default class ReindexNodeDialogElement\r\n extends UmbElementMixin(LitElement)\r\n implements UmbModalExtensionElement {\r\n \r\n #notificationContext?: UmbNotificationContext;\r\n #fullTextSearchContext?: FullTextSearchContext;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.consumeContext(FULLTEXTSEARCH_CONTEXT_TOKEN, (fullTextSearchContext) => {\r\n this.#fullTextSearchContext = fullTextSearchContext;\r\n })\r\n\r\n this.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => {\r\n this.#notificationContext = instance;\r\n });\r\n }\r\n\r\n @property({ attribute: false })\r\n modalContext?: UmbModalContext;\r\n\r\n @property({ attribute: false })\r\n data?: ReindexNodeModalData;\r\n\r\n @state()\r\n private _withDescendantsState: UUIButtonState;\r\n\r\n @state()\r\n private _withoutDescendantsState: UUIButtonState;\r\n\r\n private _handleCancel() {\r\n this.modalContext?.submit();\r\n }\r\n\r\n private async _reindex(includeDescendants: boolean) {\r\n if (!this.modalContext) return;\r\n\r\n this.modalContext?.submit();\r\n\r\n const reindexingNotification = this.#notificationContext?.stay('default', {\r\n data: {\r\n headline: this.localize.term(`fullTextSearch_reindexing`),\r\n message: this.localize.term(`fullTextSearch_reindexingMessage`)\r\n }\r\n });\r\n\r\n await this.#fullTextSearchContext?.reindex(includeDescendants, [Number(this.modalContext?.data.unique) || 0]);\r\n \r\n reindexingNotification?.close();\r\n\r\n this.#notificationContext?.peek('positive', {\r\n data: {\r\n headline: this.localize.term(`fullTextSearch_reindexed`),\r\n message: this.localize.term(`fullTextSearch_reindexedMessage`)\r\n }\r\n });\r\n }\r\n\r\n override render() {\r\n return html`\r\n \r\n ${(this.modalContext?.data.unique\r\n ? html`\r\n this._reindex(false)}>\r\n \r\n Reindex just this node\r\n \r\n this._reindex(true)}>\r\n \r\n Reindex with descendants\r\n \r\n \r\n ` : html`\r\n this._reindex(true)}>\r\n \r\n Reindex all content\r\n \r\n `)}\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n `;\r\n }\r\n}","export default {\r\n fullTextSearch: {\r\n allIndexableNodesAreIndexed: \"All indexable nodes has full text content in index\",\r\n couldntGetIncorrectIndexedNodes: \"Couldn't get incorrectly indexed nodes\",\r\n couldntGetMissingNodes: \"Couldn't get missing nodes\",\r\n externalIndexNotFound: \"ExternalIndex not found\",\r\n fullTextSearchIsDisabled: \"FullTextSearch is disabled\",\r\n fullTextSearchIsEnabled: \"FullTextSearch is enabled\",\r\n indexableNodesDescription: \"The total number of indexable nodes, according to the current Full Text Search config\",\r\n indexedNodesDescription: \"The total number of indexed nodes searchable by Full Text Search\",\r\n incorrectIndexedNodesDescription: \"The total number of indexed nodes that should not be indexed according to the current Full Text Search config\",\r\n missingNodesDescription: \"The total number of missing indexed nodes, according to the current Full Text Search config\",\r\n nodesAreIncorrectlyIndexed: \"{0} node(s) are incorrectly indexed with full text content\",\r\n nodesAreMissingInIndex: \"{0} node(s) are missing full text content in index\",\r\n reindex: \"Reindex\",\r\n reindexAllNodes: \"Reindex all nodes\",\r\n reindexing: \"Reindexing...\",\r\n reindexingMessage: \"This can take a while, please be patient\",\r\n reindexNode: \"Reindex node\",\r\n reindexed: \"Reindexed\",\r\n reindexedMessage: \"Reindexing complete\",\r\n reindexNodes: \"Reindex nodes\",\r\n reindexWithDescendants: \"Reindex with descendants\"\r\n }\r\n};\r\n","export default {\r\n fullTextSearch: {\r\n allIndexableNodesAreIndexed: 'Alle indekserbare noder har full text indhold i indekset',\r\n couldntGetIncorrectIndexedNodes: 'Kunne ikke hente fejlagtigt indekserede noder',\r\n couldntGetMissingNodes: 'Kunne ikke hente manglende noder',\r\n externalIndexNotFound: 'ExternalIndex blev ikke fundet',\r\n fullTextSearchIsDisabled: 'FullTextSearch er deaktiveret',\r\n fullTextSearchIsEnabled: 'FullTextSearch is aktiveret',\r\n incorrectIndexedNodesDescription: 'Antal noder der ikke burde være indekseret, ifølge den nuværende konfiguration',\r\n indexableNodesDescription: 'Antal noder der kan indekseres, ifølge den nuværende konfiguration',\r\n indexedNodesDescription: 'Antal noder der kan søges frem med Full Text Search',\r\n missingNodesDescription: 'Antal noder der mangler full text indhold i indekset',\r\n nodesAreIncorrectlyIndexed: '{0} node(r) er fejlagtigt indekseret med full text indhold',\r\n nodesAreMissingInIndex: '{0} node(r) mangler full text indhold i indekset',\r\n reindex: 'Reindeksér',\r\n reindexAllNodes: 'Reindeksér alle noder',\r\n reindexed: 'Reindekseret',\r\n reindexedMessage: 'Reindeksering færdig',\r\n reindexing: 'Reindekserer...',\r\n reindexingMessage: 'Dette kan tage et øjeblik',\r\n reindexNode: 'Reindeksér node',\r\n reindexNodes: 'Reindeksér noder',\r\n reindexWithDescendants: 'Reindeksér med undernoder'\r\n }\r\n};\r\n","export default {\r\n fullTextSearch: {\r\n allIndexableNodesAreIndexed: 'Mae gan bob nod a ellir ei mynegeio gynnwys testun llawn yn yr mynegai',\r\n couldntGetIncorrectIndexedNodes: 'Methu â chael nodau wedi\\'u mynegeio\\' yn anghywir',\r\n couldntGetMissingNodes: 'Methwyd â chael nodau coll',\r\n externalIndexNotFound: 'Heb ddod o hyd i ExternalIndex',\r\n fullTextSearchIsDisabled: 'Mae FullTextSearch wedi\\'i analluogi',\r\n fullTextSearchIsEnabled: 'Mae FullTextSearch wedi\\'i alluogi',\r\n incorrectIndexedNodesDescription: 'Cyfanswm y nodau mynegeiedig na ddylai fod wedi\\'u mynegeio yn ôl y ffurfweddiad Full Text Search presennol',\r\n indexableNodesDescription: 'Cyfanswm y nodau y gellir eu mynegeio, yn ôl y ffurfweddiad Full Text Search presennol',\r\n indexedNodesDescription: 'Cyfanswm y nodau mynegeiedig y gellir eu chwilio gyda Full Text Search',\r\n missingNodesDescription: 'Cyfanswm y nodau mynegeiedig sydd ar goll, yn ôl y ffurfweddiad Full Text Search presennol',\r\n nodesAreIncorrectlyIndexed: 'Mae {0} nod(au) wedi\\'u mynegeio\\'n anghywir gyda chynnwys testun llawn',\r\n nodesAreMissingInIndex: 'Mae {0} nod(au) yn methu eu cynnwys testun llawn yn yr mynegai',\r\n reindex: 'Ail-fynegi',\r\n reindexAllNodes: 'Ail-fynegi all nodau',\r\n reindexed: 'Ail-fynegiwyd',\r\n reindexedMessage: 'Wedi ail-fynegiwyd',\r\n reindexing: 'Ail-fynegio...',\r\n reindexingMessage: 'Wedi ail-fynegio',\r\n reindexNodes: 'Ail-fynegi Nodau',\r\n reindexWithDescendants: 'Ail-fynegi gyda disgynyddion'\r\n }\r\n};\r\n","export default {\r\n fullTextSearch: {\r\n allIndexableNodesAreIndexed: \"Tous les noeuds indexables ont leur contenu intégral dans l'index\",\r\n couldntGetIncorrectIndexedNodes: \"Impossible de récupérer les noeuds indexés incorrectement\",\r\n couldntGetMissingNodes: \"Impossible de récupérer les noeuds manquant\",\r\n externalIndexNotFound: \"ExternalIndex n'a pas été trouvé\",\r\n fullTextSearchIsDisabled: \"FullTextSearch est désactivé\",\r\n fullTextSearchIsEnabled: \"FullTextSearch est activé\",\r\n incorrectIndexedNodesDescription: \"Le nombre total de noeuds indexés qui ne devraient pas l'être selon la configuration actuelle du Full Text Search\",\r\n indexableNodesDescription: \"Le nombre total de noeuds indexables, selon la configuration actuelle du Full Text Search\",\r\n indexedNodesDescription: \"Le nombre total de noeuds indexés qui peuvent être cherchés par le Full Text Search\",\r\n missingNodesDescription: \"Le nombre total de noeuds indexés manquant, selon la configuration actuelle du Full Text Search\",\r\n nodesAreIncorrectlyIndexed: \"{0} noeud(s) sont incorrectement indexés avec leur contenu intégral\",\r\n nodesAreMissingInIndex: \"{0} noeud(s) n'ont pas leur contenu intégral dans l'index\",\r\n reindex: \"Indexer à nouveau\",\r\n reindexAllNodes: \"Indexer à nouveau tous les nœuds\",\r\n reindexed: \"Nouvelle indexation\",\r\n reindexedMessage: \"Nouvelle indexation terminée\",\r\n reindexing: \"Nouvelle indexation en cours...\",\r\n reindexingMessage: \"Veuillez patienter\",\r\n reindexNode: \"Indexer à nouveau le nœud\",\r\n reindexNodes: \"Indexer à nouveau les noeuds\",\r\n reindexWithDescendants: \"Indexer à nouveau, y compris les descendants\"\r\n }\r\n};\r\n","export default {\r\n fullTextSearch: {\r\n allIndexableNodesAreIndexed: \"Alle indekserbare noder har fulltekstinnhold i indeksen\",\r\n couldntGetIncorrectIndexedNodes: \"Kunne ikke hente feilaktig indekserte noder\",\r\n couldntGetMissingNodes: \"Kunne ikke hente manglende noder\",\r\n externalIndexNotFound: \"ExternalIndex ikke funnet\",\r\n fullTextSearchIsDisabled: \"FullTextSearch er deaktivert\",\r\n fullTextSearchIsEnabled: \"FullTextSearch er aktivert\",\r\n incorrectIndexedNodesDescription: \"Det totale antall indekserte noder som ikke skal indekseres i henhold til gjeldende Full Text Search-konfigurasjon\",\r\n indexableNodesDescription: \"Det totale antall indekserbare noder, i henhold til gjeldende Full Text Search konfigurasjon\",\r\n indexedNodesDescription: \"Det totale antall indekserte noder som kan søkes etter av Full Text Search\",\r\n missingNodesDescription: \"Totalt antall manglende indekserte noder, i henhold til gjeldende Full Text Search konfigurasjon\",\r\n nodesAreIncorrectlyIndexed: \"{0} node(r) er feilaktig indeksert med fulltekstinnhold\",\r\n nodesAreMissingInIndex: \"{0} node(r) mangler fulltekstinnhold i indeksen\",\r\n reindex: \"Reindekser\",\r\n reindexAllNodes: \"Reindekser alle noder\",\r\n reindexed: \"Reindekseret\",\r\n reindexedMessage: \"Reindeksering ferdig\",\r\n reindexing: \"Reindekserer...\",\r\n reindexingMessage: \"Vennligst vent\",\r\n reindexNode: \"Reindekser node\",\r\n reindexNodes: \"Reindekser noder\",\r\n reindexWithDescendants: \"Reindekser med etterkommere\"\r\n }\r\n};\r\n","export default {\r\n fullTextSearch: {\r\n indexableNodes: \"Indexeerbare nodes\",\r\n indexableNodesDescription: \"Het totaal aantal indexeerbare nodes volgens de huidige Full Text Search configuratie\",\r\n indexedNodes: \"Geïndexeerde nodes\",\r\n indexedNodesDescription: \"Het totaal aantal geïndexeerde nodes die doorzoekbaar zijn door Full Text Search\",\r\n missingNodes: \"Ontbrekende nodes\",\r\n missingNodesDescription: \"Het totaal aantal ontbrekende nodes volgens de huidige Full Text Search configuratie\",\r\n incorrectIndexedNodes: \"Foutief geïndexeerde nodes\",\r\n incorrectIndexedNodesDescription: \"Het totaal aantal geïndexeerde nodes, die dat niet zouden moeten zijn, volgens de huidige Full Text Search configuratie\",\r\n reindexNodes: \"Herindexeer nodes\",\r\n reindexing: \"Herindexeren...\",\r\n reindex: \"Herindexeer\",\r\n reindexDescription: \"Selecteer of alle nodes opnieuw geïndexeerd moeten worden\",\r\n reindexWithDescendants: \"Herindexeren inclusief onderliggende\",\r\n includeDescendants: \"Inclusief onderliggende\",\r\n allNodes: \"Alle nodes\",\r\n selectNodes: \"Selecteer nodes\",\r\n selectNodesDescription: \"Selecteer de nodes om te herindexeren\",\r\n selectedNodes: \"Geselecteerde nodes\",\r\n description: \"Omschrijving\",\r\n developedBy: \"Ontwikkeld door\",\r\n sponsoredBy: \"Gesponsord door\"\r\n }\r\n};\r\n"],"names":["entityAction","UMB_DOCUMENT_ROOT_ENTITY_TYPE","UMB_DOCUMENT_ENTITY_TYPE","reindex_action","UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS","manifests","reIndexNodeModal","reindexnode_element","localizations","en$1","da$1","cy$1","fr$1","nb$1","nl$1","contexts","fulltextsearch_context","ApiError","request","response","message","CancelError","CancelablePromise","executor","resolve","reject","onResolve","value","onReject","reason","onCancel","cancelHandler","onFulfilled","onRejected","onFinally","error","Interceptors","fn","index","OpenAPI","isString","isStringWithValue","isBlob","isFormData","base64","str","getQueryString","params","qs","append","key","encodePair","v","k","getUrl","config","options","encoder","path","substring","group","_a","url","getFormData","formData","process","resolver","getHeaders","token","username","password","additionalHeaders","headers","credentials","getRequestBody","_b","sendRequest","body","controller","getResponseHeader","responseHeader","content","getResponseBody","contentType","binaryTypes","type","catchErrorCodes","result","errorStatus","errorStatusText","errorBody","responseBody","FulltextsearchService","__request","data","pageNumber","requestBody","onInit","_host","extensionRegistry","entityActionManifests","modalManifests","localizationManifests","contextManifests","UMB_AUTH_CONTEXT","_auth","umbOpenApi","REINDEX_NODE_MODAL_TOKEN","UmbModalToken","ReindexNodeAction","UmbEntityActionBase","host","args","__privateAdd","_modalManagerContext","UMB_MODAL_MANAGER_CONTEXT","instance","__privateSet","__privateGet","FullTextSearchDataSource","tryExecuteAndNotify","includeDescendants","nodeIds","FullTextSearchContext","UmbControllerBase","_source","_config","_indexStatus","_indexedNodes","_incorrectIndexedNodes","_missingIndexedNodes","UmbObjectState","UmbStringState","FULLTEXTSEARCH_CONTEXT_TOKEN","UmbContextToken","_notificationContext","_fullTextSearchContext","ReindexNodeDialogElement","UmbElementMixin","LitElement","fullTextSearchContext","UMB_NOTIFICATION_CONTEXT","reindexingNotification","_d","_c","_e","html","__decorateClass","property","state","customElement","en","da","cy","fr","nb","nl"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"assets.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/cy-Co3J_yCx.js b/src/Our.Umbraco.FullTextSearch/wwwroot/cy-Co3J_yCx.js new file mode 100644 index 0000000..606fce2 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/cy-Co3J_yCx.js @@ -0,0 +1,16 @@ +const e = { + fullTextSearch: { + reindex: "Ail-fynegi", + reindexAllNodes: "Ail-fynegi all nodau", + reindexed: "Ail-fynegiwyd", + reindexedMessage: "Wedi ail-fynegiwyd", + reindexing: "Ail-fynegio...", + reindexingMessage: "Gwelwch gynnig", + reindexNode: "Ail-fynegi nodau", + reindexWithDescendants: "Ail-fynegi gyda disgynyddion" + } +}; +export { + e as default +}; +//# sourceMappingURL=cy-Co3J_yCx.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/cy-Co3J_yCx.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/cy-Co3J_yCx.js.map new file mode 100644 index 0000000..4adafa4 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/cy-Co3J_yCx.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cy-Co3J_yCx.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/localization/cy.ts"],"sourcesContent":["export default {\r\n fullTextSearch: {\r\n reindex: 'Ail-fynegi',\r\n reindexAllNodes: 'Ail-fynegi all nodau',\r\n reindexed: 'Ail-fynegiwyd',\r\n reindexedMessage: 'Wedi ail-fynegiwyd',\r\n reindexing: 'Ail-fynegio...',\r\n reindexingMessage: 'Gwelwch gynnig',\r\n reindexNode: 'Ail-fynegi nodau',\r\n reindexWithDescendants: 'Ail-fynegi gyda disgynyddion'\r\n }\r\n};\r\n"],"names":["cy"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACX,gBAAgB;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,wBAAwB;AAAA,EAC5B;AACJ;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/da-BgQK7Sz-.js b/src/Our.Umbraco.FullTextSearch/wwwroot/da-BgQK7Sz-.js new file mode 100644 index 0000000..0caf873 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/da-BgQK7Sz-.js @@ -0,0 +1,16 @@ +const e = { + fullTextSearch: { + reindex: "Reindeksér", + reindexAllNodes: "Reindeksér alle noder", + reindexed: "Reindekseret", + reindexedMessage: "Reindeksering færdig", + reindexing: "Reindekserer...", + reindexingMessage: "Dette kan tage et øjeblik", + reindexNode: "Reindeksér node", + reindexWithDescendants: "Reindeksér med undernoder" + } +}; +export { + e as default +}; +//# sourceMappingURL=da-BgQK7Sz-.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/da-BgQK7Sz-.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/da-BgQK7Sz-.js.map new file mode 100644 index 0000000..14294e1 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/da-BgQK7Sz-.js.map @@ -0,0 +1 @@ +{"version":3,"file":"da-BgQK7Sz-.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/localization/da.ts"],"sourcesContent":["export default {\r\n fullTextSearch: {\r\n reindex: 'Reindeksér',\r\n reindexAllNodes: 'Reindeksér alle noder',\r\n reindexed: 'Reindekseret',\r\n reindexedMessage: 'Reindeksering færdig',\r\n reindexing: 'Reindekserer...',\r\n reindexingMessage: 'Dette kan tage et øjeblik',\r\n reindexNode: 'Reindeksér node',\r\n reindexWithDescendants: 'Reindeksér med undernoder'\r\n }\r\n};\r\n"],"names":["da"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACX,gBAAgB;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,wBAAwB;AAAA,EAC5B;AACJ;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/en-BhWH3rme.js b/src/Our.Umbraco.FullTextSearch/wwwroot/en-BhWH3rme.js new file mode 100644 index 0000000..af6461b --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/en-BhWH3rme.js @@ -0,0 +1,16 @@ +const e = { + fullTextSearch: { + reindex: "Reindex", + reindexAllNodes: "Reindex all nodes", + reindexed: "Reindexed", + reindexedMessage: "Reindexing complete", + reindexing: "Reindexing...", + reindexingMessage: "This can take a while, please be patient", + reindexNode: "Reindex node", + reindexWithDescendants: "Reindex with descendants" + } +}; +export { + e as default +}; +//# sourceMappingURL=en-BhWH3rme.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/en-BhWH3rme.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/en-BhWH3rme.js.map new file mode 100644 index 0000000..dbcac84 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/en-BhWH3rme.js.map @@ -0,0 +1 @@ +{"version":3,"file":"en-BhWH3rme.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/localization/en.ts"],"sourcesContent":["export default {\r\n fullTextSearch: {\r\n reindex: \"Reindex\",\r\n reindexAllNodes: \"Reindex all nodes\",\r\n reindexed: \"Reindexed\",\r\n reindexedMessage: \"Reindexing complete\",\r\n reindexing: \"Reindexing...\",\r\n reindexingMessage: \"This can take a while, please be patient\",\r\n reindexNode: \"Reindex node\",\r\n reindexWithDescendants: \"Reindex with descendants\"\r\n }\r\n};\r\n"],"names":["en"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACX,gBAAgB;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,wBAAwB;AAAA,EAC5B;AACJ;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/fr-3pqRkfVr.js b/src/Our.Umbraco.FullTextSearch/wwwroot/fr-3pqRkfVr.js new file mode 100644 index 0000000..d173ed9 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/fr-3pqRkfVr.js @@ -0,0 +1,16 @@ +const e = { + fullTextSearch: { + reindex: "Indexer à nouveau", + reindexAllNodes: "Indexer à nouveau tous les nœuds", + reindexed: "Nouvelle indexation", + reindexedMessage: "Nouvelle indexation terminée", + reindexing: "Nouvelle indexation en cours...", + reindexingMessage: "Veuillez patienter", + reindexNode: "Indexer à nouveau le nœud", + reindexWithDescendants: "Indexer à nouveau, y compris les descendants" + } +}; +export { + e as default +}; +//# sourceMappingURL=fr-3pqRkfVr.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/fr-3pqRkfVr.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/fr-3pqRkfVr.js.map new file mode 100644 index 0000000..ced1089 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/fr-3pqRkfVr.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fr-3pqRkfVr.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/localization/fr.ts"],"sourcesContent":["export default {\r\n fullTextSearch: {\r\n reindex: \"Indexer à nouveau\",\r\n reindexAllNodes: \"Indexer à nouveau tous les nœuds\",\r\n reindexed: \"Nouvelle indexation\",\r\n reindexedMessage: \"Nouvelle indexation terminée\",\r\n reindexing: \"Nouvelle indexation en cours...\",\r\n reindexingMessage: \"Veuillez patienter\",\r\n reindexNode: \"Indexer à nouveau le nœud\",\r\n reindexWithDescendants: \"Indexer à nouveau, y compris les descendants\"\r\n }\r\n};\r\n"],"names":["fr"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACX,gBAAgB;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,wBAAwB;AAAA,EAC5B;AACJ;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/fulltextsearch.context-BLn8Y4qb.js b/src/Our.Umbraco.FullTextSearch/wwwroot/fulltextsearch.context-BLn8Y4qb.js new file mode 100644 index 0000000..dbf5c4f --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/fulltextsearch.context-BLn8Y4qb.js @@ -0,0 +1,401 @@ +var j = (t) => { + throw TypeError(t); +}; +var v = (t, e, r) => e.has(t) || j("Cannot " + r); +var c = (t, e, r) => (v(t, e, "read from private field"), r ? r.call(t) : e.get(t)), m = (t, e, r) => e.has(t) ? j("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), y = (t, e, r, s) => (v(t, e, "write to private field"), s ? s.call(t, r) : e.set(t, r), r); +import { UMB_AUTH_CONTEXT as P } from "@umbraco-cms/backoffice/auth"; +import { UmbControllerBase as B } from "@umbraco-cms/backoffice/class-api"; +import { UmbContextToken as D } from "@umbraco-cms/backoffice/context-api"; +import { O as h } from "./index-DB07aDTd.js"; +import { tryExecuteAndNotify as x } from "@umbraco-cms/backoffice/resources"; +import { UmbObjectState as N, UmbStringState as I } from "@umbraco-cms/backoffice/observable-api"; +class U extends Error { + constructor(e, r, s) { + super(s), this.name = "ApiError", this.url = r.url, this.status = r.status, this.statusText = r.statusText, this.body = r.body, this.request = e; + } +} +class L extends Error { + constructor(e) { + super(e), this.name = "CancelError"; + } + get isCancelled() { + return !0; + } +} +class $ { + constructor(e) { + this._isResolved = !1, this._isRejected = !1, this._isCancelled = !1, this.cancelHandlers = [], this.promise = new Promise((r, s) => { + this._resolve = r, this._reject = s; + const n = (o) => { + this._isResolved || this._isRejected || this._isCancelled || (this._isResolved = !0, this._resolve && this._resolve(o)); + }, a = (o) => { + this._isResolved || this._isRejected || this._isCancelled || (this._isRejected = !0, this._reject && this._reject(o)); + }, i = (o) => { + this._isResolved || this._isRejected || this._isCancelled || this.cancelHandlers.push(o); + }; + return Object.defineProperty(i, "isResolved", { + get: () => this._isResolved + }), Object.defineProperty(i, "isRejected", { + get: () => this._isRejected + }), Object.defineProperty(i, "isCancelled", { + get: () => this._isCancelled + }), e(n, a, i); + }); + } + get [Symbol.toStringTag]() { + return "Cancellable Promise"; + } + then(e, r) { + return this.promise.then(e, r); + } + catch(e) { + return this.promise.catch(e); + } + finally(e) { + return this.promise.finally(e); + } + cancel() { + if (!(this._isResolved || this._isRejected || this._isCancelled)) { + if (this._isCancelled = !0, this.cancelHandlers.length) + try { + for (const e of this.cancelHandlers) + e(); + } catch (e) { + console.warn("Cancellation threw an error", e); + return; + } + this.cancelHandlers.length = 0, this._reject && this._reject(new L("Request aborted")); + } + } + get isCancelled() { + return this._isCancelled; + } +} +const S = (t) => typeof t == "string", A = (t) => S(t) && t !== "", F = (t) => t instanceof Blob, O = (t) => t instanceof FormData, G = (t) => { + try { + return btoa(t); + } catch { + return Buffer.from(t).toString("base64"); + } +}, M = (t) => { + const e = [], r = (n, a) => { + e.push(`${encodeURIComponent(n)}=${encodeURIComponent(String(a))}`); + }, s = (n, a) => { + a != null && (Array.isArray(a) ? a.forEach((i) => s(n, i)) : typeof a == "object" ? Object.entries(a).forEach(([i, o]) => s(`${n}[${i}]`, o)) : r(n, a)); + }; + return Object.entries(t).forEach(([n, a]) => s(n, a)), e.length ? `?${e.join("&")}` : ""; +}, k = (t, e) => { + const r = encodeURI, s = e.url.replace("{api-version}", t.VERSION).replace(/{(.*?)}/g, (a, i) => { + var o; + return (o = e.path) != null && o.hasOwnProperty(i) ? r(String(e.path[i])) : a; + }), n = t.BASE + s; + return e.query ? n + M(e.query) : n; +}, z = (t) => { + if (t.formData) { + const e = new FormData(), r = (s, n) => { + S(n) || F(n) ? e.append(s, n) : e.append(s, JSON.stringify(n)); + }; + return Object.entries(t.formData).filter(([, s]) => s != null).forEach(([s, n]) => { + Array.isArray(n) ? n.forEach((a) => r(s, a)) : r(s, n); + }), e; + } +}, E = async (t, e) => typeof e == "function" ? e(t) : e, J = async (t, e) => { + const [r, s, n, a] = await Promise.all([ + E(e, t.TOKEN), + E(e, t.USERNAME), + E(e, t.PASSWORD), + E(e, t.HEADERS) + ]), i = Object.entries({ + Accept: "application/json", + ...a, + ...e.headers + }).filter(([, o]) => o != null).reduce((o, [f, d]) => ({ + ...o, + [f]: String(d) + }), {}); + if (A(r) && (i.Authorization = `Bearer ${r}`), A(s) && A(n)) { + const o = G(`${s}:${n}`); + i.Authorization = `Basic ${o}`; + } + return e.body !== void 0 && (e.mediaType ? i["Content-Type"] = e.mediaType : F(e.body) ? i["Content-Type"] = e.body.type || "application/octet-stream" : S(e.body) ? i["Content-Type"] = "text/plain" : O(e.body) || (i["Content-Type"] = "application/json")), new Headers(i); +}, W = (t) => { + var e, r; + if (t.body !== void 0) + return (e = t.mediaType) != null && e.includes("application/json") || (r = t.mediaType) != null && r.includes("+json") ? JSON.stringify(t.body) : S(t.body) || F(t.body) || O(t.body) ? t.body : JSON.stringify(t.body); +}, K = async (t, e, r, s, n, a, i) => { + const o = new AbortController(); + let f = { + headers: a, + body: s ?? n, + method: e.method, + signal: o.signal + }; + t.WITH_CREDENTIALS && (f.credentials = t.CREDENTIALS); + for (const d of t.interceptors.request._fns) + f = await d(f); + return i(() => o.abort()), await fetch(r, f); +}, X = (t, e) => { + if (e) { + const r = t.headers.get(e); + if (S(r)) + return r; + } +}, Q = async (t) => { + if (t.status !== 204) + try { + const e = t.headers.get("Content-Type"); + if (e) { + const r = ["application/octet-stream", "application/pdf", "application/zip", "audio/", "image/", "video/"]; + if (e.includes("application/json") || e.includes("+json")) + return await t.json(); + if (r.some((s) => e.includes(s))) + return await t.blob(); + if (e.includes("multipart/form-data")) + return await t.formData(); + if (e.includes("text/")) + return await t.text(); + } + } catch (e) { + console.error(e); + } +}, Y = (t, e) => { + const s = { + 400: "Bad Request", + 401: "Unauthorized", + 402: "Payment Required", + 403: "Forbidden", + 404: "Not Found", + 405: "Method Not Allowed", + 406: "Not Acceptable", + 407: "Proxy Authentication Required", + 408: "Request Timeout", + 409: "Conflict", + 410: "Gone", + 411: "Length Required", + 412: "Precondition Failed", + 413: "Payload Too Large", + 414: "URI Too Long", + 415: "Unsupported Media Type", + 416: "Range Not Satisfiable", + 417: "Expectation Failed", + 418: "Im a teapot", + 421: "Misdirected Request", + 422: "Unprocessable Content", + 423: "Locked", + 424: "Failed Dependency", + 425: "Too Early", + 426: "Upgrade Required", + 428: "Precondition Required", + 429: "Too Many Requests", + 431: "Request Header Fields Too Large", + 451: "Unavailable For Legal Reasons", + 500: "Internal Server Error", + 501: "Not Implemented", + 502: "Bad Gateway", + 503: "Service Unavailable", + 504: "Gateway Timeout", + 505: "HTTP Version Not Supported", + 506: "Variant Also Negotiates", + 507: "Insufficient Storage", + 508: "Loop Detected", + 510: "Not Extended", + 511: "Network Authentication Required", + ...t.errors + }[e.status]; + if (s) + throw new U(t, e, s); + if (!e.ok) { + const n = e.status ?? "unknown", a = e.statusText ?? "unknown", i = (() => { + try { + return JSON.stringify(e.body, null, 2); + } catch { + return; + } + })(); + throw new U( + t, + e, + `Generic Error: status: ${n}; status text: ${a}; body: ${i}` + ); + } +}, b = (t, e) => new $(async (r, s, n) => { + try { + const a = k(t, e), i = z(e), o = W(e), f = await J(t, e); + if (!n.isCancelled) { + let d = await K(t, e, a, o, i, f, n); + for (const H of t.interceptors.response._fns) + d = await H(d); + const q = await Q(d), V = X(d, e.responseHeader), _ = { + url: a, + ok: d.ok, + status: d.status, + statusText: d.statusText, + body: V ?? q + }; + Y(e, _), r(_.body); + } + } catch (a) { + s(a); + } +}); +class p { + /** + * @returns unknown OK + * @throws ApiError + */ + static getUmbracoFulltextsearchApiV5FulltextsearchConfig() { + return b(h, { + method: "GET", + url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/config" + }); + } + /** + * @returns unknown OK + * @throws ApiError + */ + static getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes(e = {}) { + const { pageNumber: r } = e; + return b(h, { + method: "GET", + url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes", + query: { + pageNumber: r + } + }); + } + /** + * @returns unknown OK + * @throws ApiError + */ + static getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes(e = {}) { + const { pageNumber: r } = e; + return b(h, { + method: "GET", + url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes", + query: { + pageNumber: r + } + }); + } + /** + * @returns unknown OK + * @throws ApiError + */ + static getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus() { + return b(h, { + method: "GET", + url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/indexstatus" + }); + } + /** + * @returns unknown OK + * @throws ApiError + */ + static getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes(e = {}) { + const { pageNumber: r } = e; + return b(h, { + method: "GET", + url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes", + query: { + pageNumber: r + } + }); + } + /** + * @returns unknown OK + * @throws ApiError + */ + static postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes(e = {}) { + const { requestBody: r } = e; + return b(h, { + method: "POST", + url: "/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes", + body: r, + mediaType: "application/json" + }); + } +} +var l; +class Z { + constructor(e) { + m(this, l); + y(this, l, e); + } + async config() { + return await x(c(this, l), p.getUmbracoFulltextsearchApiV5FulltextsearchConfig()); + } + async indexStatus() { + return await x(c(this, l), p.getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus()); + } + async incorrectIndexedNodes(e) { + return await x(c(this, l), p.getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes({ + pageNumber: e + })); + } + async indexedNodes(e) { + return await x(c(this, l), p.getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes({ + pageNumber: e + })); + } + async missingNodes(e) { + return await x(c(this, l), p.getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes({ + pageNumber: e + })); + } + async reindex(e, r) { + return await x(c(this, l), p.postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes({ + requestBody: { + includeDescendants: e, + nodeIds: r + } + })); + } +} +l = new WeakMap(); +var u, g, T, w, R, C; +class ee extends B { + constructor(r) { + super(r); + m(this, u); + m(this, g); + m(this, T); + m(this, w); + m(this, R); + m(this, C); + y(this, g, new N(void 0)), this.config = c(this, g).asObservable(), y(this, T, new N(void 0)), this.indexStatus = c(this, T).asObservable(), y(this, w, new N(void 0)), this.indexedNodes = c(this, w).asObservable(), y(this, R, new I(void 0)), this.incorrectIndexedNodes = c(this, R).asObservable(), y(this, C, new I(void 0)), this.missingIndexedNodes = c(this, C).asObservable(), this.provideContext(te, this), y(this, u, new Z(r)), this.consumeContext(P, (s) => { + const n = s.getOpenApiConfiguration(); + h.TOKEN = n.token, h.BASE = n.base, h.WITH_CREDENTIALS = n.withCredentials; + }); + } + async getConfig() { + const { data: r } = await c(this, u).config(); + r && c(this, g).setValue(r); + } + async reindex(r, s) { + await c(this, u).reindex(r, s); + } + async getIndexStatus() { + const { data: r } = await c(this, u).indexStatus(); + r && c(this, T).setValue(r); + } + async getIndexedNodes(r) { + const { data: s } = await c(this, u).indexedNodes(r); + s && c(this, w).setValue(s); + } + async getIncorrectIndexedNodes(r) { + const { data: s } = await c(this, u).incorrectIndexedNodes(r); + s && c(this, R).setValue(s); + } + async getMissingNodes(r) { + const { data: s } = await c(this, u).missingNodes(r); + s && c(this, C).setValue(s); + } +} +u = new WeakMap(), g = new WeakMap(), T = new WeakMap(), w = new WeakMap(), R = new WeakMap(), C = new WeakMap(); +const te = new D(ee.name); +export { + te as FULLTEXTSEARCH_CONTEXT_TOKEN, + ee as FullTextSearchContext, + ee as default +}; +//# sourceMappingURL=fulltextsearch.context-BLn8Y4qb.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/fulltextsearch.context-BLn8Y4qb.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/fulltextsearch.context-BLn8Y4qb.js.map new file mode 100644 index 0000000..b8eca55 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/fulltextsearch.context-BLn8Y4qb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fulltextsearch.context-BLn8Y4qb.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/api/core/ApiError.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/CancelablePromise.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/request.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/services.gen.ts","../../Our.Umbraco.FullTextSearch.Client/src/repository/sources/fulltextsearch.source.ts","../../Our.Umbraco.FullTextSearch.Client/src/context/fulltextsearch.context.ts"],"sourcesContent":["import type { ApiRequestOptions } from './ApiRequestOptions';\r\nimport type { ApiResult } from './ApiResult';\r\n\r\nexport class ApiError extends Error {\r\n\tpublic readonly url: string;\r\n\tpublic readonly status: number;\r\n\tpublic readonly statusText: string;\r\n\tpublic readonly body: unknown;\r\n\tpublic readonly request: ApiRequestOptions;\r\n\r\n\tconstructor(request: ApiRequestOptions, response: ApiResult, message: string) {\r\n\t\tsuper(message);\r\n\r\n\t\tthis.name = 'ApiError';\r\n\t\tthis.url = response.url;\r\n\t\tthis.status = response.status;\r\n\t\tthis.statusText = response.statusText;\r\n\t\tthis.body = response.body;\r\n\t\tthis.request = request;\r\n\t}\r\n}","export class CancelError extends Error {\r\n\tconstructor(message: string) {\r\n\t\tsuper(message);\r\n\t\tthis.name = 'CancelError';\r\n\t}\r\n\r\n\tpublic get isCancelled(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport interface OnCancel {\r\n\treadonly isResolved: boolean;\r\n\treadonly isRejected: boolean;\r\n\treadonly isCancelled: boolean;\r\n\r\n\t(cancelHandler: () => void): void;\r\n}\r\n\r\nexport class CancelablePromise implements Promise {\r\n\tprivate _isResolved: boolean;\r\n\tprivate _isRejected: boolean;\r\n\tprivate _isCancelled: boolean;\r\n\treadonly cancelHandlers: (() => void)[];\r\n\treadonly promise: Promise;\r\n\tprivate _resolve?: (value: T | PromiseLike) => void;\r\n\tprivate _reject?: (reason?: unknown) => void;\r\n\r\n\tconstructor(\r\n\t\texecutor: (\r\n\t\t\tresolve: (value: T | PromiseLike) => void,\r\n\t\t\treject: (reason?: unknown) => void,\r\n\t\t\tonCancel: OnCancel\r\n\t\t) => void\r\n\t) {\r\n\t\tthis._isResolved = false;\r\n\t\tthis._isRejected = false;\r\n\t\tthis._isCancelled = false;\r\n\t\tthis.cancelHandlers = [];\r\n\t\tthis.promise = new Promise((resolve, reject) => {\r\n\t\t\tthis._resolve = resolve;\r\n\t\t\tthis._reject = reject;\r\n\r\n\t\t\tconst onResolve = (value: T | PromiseLike): void => {\r\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._isResolved = true;\r\n\t\t\t\tif (this._resolve) this._resolve(value);\r\n\t\t\t};\r\n\r\n\t\t\tconst onReject = (reason?: unknown): void => {\r\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis._isRejected = true;\r\n\t\t\t\tif (this._reject) this._reject(reason);\r\n\t\t\t};\r\n\r\n\t\t\tconst onCancel = (cancelHandler: () => void): void => {\r\n\t\t\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.cancelHandlers.push(cancelHandler);\r\n\t\t\t};\r\n\r\n\t\t\tObject.defineProperty(onCancel, 'isResolved', {\r\n\t\t\t\tget: (): boolean => this._isResolved,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(onCancel, 'isRejected', {\r\n\t\t\t\tget: (): boolean => this._isRejected,\r\n\t\t\t});\r\n\r\n\t\t\tObject.defineProperty(onCancel, 'isCancelled', {\r\n\t\t\t\tget: (): boolean => this._isCancelled,\r\n\t\t\t});\r\n\r\n\t\t\treturn executor(onResolve, onReject, onCancel as OnCancel);\r\n\t\t});\r\n\t}\r\n\r\n\tget [Symbol.toStringTag]() {\r\n\t\treturn \"Cancellable Promise\";\r\n\t}\r\n\r\n\tpublic then(\r\n\t\tonFulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\r\n\t\tonRejected?: ((reason: unknown) => TResult2 | PromiseLike) | null\r\n\t): Promise {\r\n\t\treturn this.promise.then(onFulfilled, onRejected);\r\n\t}\r\n\r\n\tpublic catch(\r\n\t\tonRejected?: ((reason: unknown) => TResult | PromiseLike) | null\r\n\t): Promise {\r\n\t\treturn this.promise.catch(onRejected);\r\n\t}\r\n\r\n\tpublic finally(onFinally?: (() => void) | null): Promise {\r\n\t\treturn this.promise.finally(onFinally);\r\n\t}\r\n\r\n\tpublic cancel(): void {\r\n\t\tif (this._isResolved || this._isRejected || this._isCancelled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._isCancelled = true;\r\n\t\tif (this.cancelHandlers.length) {\r\n\t\t\ttry {\r\n\t\t\t\tfor (const cancelHandler of this.cancelHandlers) {\r\n\t\t\t\t\tcancelHandler();\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Cancellation threw an error', error);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.cancelHandlers.length = 0;\r\n\t\tif (this._reject) this._reject(new CancelError('Request aborted'));\r\n\t}\r\n\r\n\tpublic get isCancelled(): boolean {\r\n\t\treturn this._isCancelled;\r\n\t}\r\n}","import { ApiError } from './ApiError';\r\nimport type { ApiRequestOptions } from './ApiRequestOptions';\r\nimport type { ApiResult } from './ApiResult';\r\nimport { CancelablePromise } from './CancelablePromise';\r\nimport type { OnCancel } from './CancelablePromise';\r\nimport type { OpenAPIConfig } from './OpenAPI';\r\n\r\nexport const isString = (value: unknown): value is string => {\r\n\treturn typeof value === 'string';\r\n};\r\n\r\nexport const isStringWithValue = (value: unknown): value is string => {\r\n\treturn isString(value) && value !== '';\r\n};\r\n\r\nexport const isBlob = (value: any): value is Blob => {\r\n\treturn value instanceof Blob;\r\n};\r\n\r\nexport const isFormData = (value: unknown): value is FormData => {\r\n\treturn value instanceof FormData;\r\n};\r\n\r\nexport const base64 = (str: string): string => {\r\n\ttry {\r\n\t\treturn btoa(str);\r\n\t} catch (err) {\r\n\t\t// @ts-ignore\r\n\t\treturn Buffer.from(str).toString('base64');\r\n\t}\r\n};\r\n\r\nexport const getQueryString = (params: Record): string => {\r\n\tconst qs: string[] = [];\r\n\r\n\tconst append = (key: string, value: unknown) => {\r\n\t\tqs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\r\n\t};\r\n\r\n\tconst encodePair = (key: string, value: unknown) => {\r\n\t\tif (value === undefined || value === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(value)) {\r\n\t\t\tvalue.forEach(v => encodePair(key, v));\r\n\t\t} else if (typeof value === 'object') {\r\n\t\t\tObject.entries(value).forEach(([k, v]) => encodePair(`${key}[${k}]`, v));\r\n\t\t} else {\r\n\t\t\tappend(key, value);\r\n\t\t}\r\n\t};\r\n\r\n\tObject.entries(params).forEach(([key, value]) => encodePair(key, value));\r\n\r\n\treturn qs.length ? `?${qs.join('&')}` : '';\r\n};\r\n\r\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\r\n\tconst encoder = config.ENCODE_PATH || encodeURI;\r\n\r\n\tconst path = options.url\r\n\t\t.replace('{api-version}', config.VERSION)\r\n\t\t.replace(/{(.*?)}/g, (substring: string, group: string) => {\r\n\t\t\tif (options.path?.hasOwnProperty(group)) {\r\n\t\t\t\treturn encoder(String(options.path[group]));\r\n\t\t\t}\r\n\t\t\treturn substring;\r\n\t\t});\r\n\r\n\tconst url = config.BASE + path;\r\n\treturn options.query ? url + getQueryString(options.query) : url;\r\n};\r\n\r\nexport const getFormData = (options: ApiRequestOptions): FormData | undefined => {\r\n\tif (options.formData) {\r\n\t\tconst formData = new FormData();\r\n\r\n\t\tconst process = (key: string, value: unknown) => {\r\n\t\t\tif (isString(value) || isBlob(value)) {\r\n\t\t\t\tformData.append(key, value);\r\n\t\t\t} else {\r\n\t\t\t\tformData.append(key, JSON.stringify(value));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tObject.entries(options.formData)\r\n\t\t\t.filter(([, value]) => value !== undefined && value !== null)\r\n\t\t\t.forEach(([key, value]) => {\r\n\t\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\t\tvalue.forEach(v => process(key, v));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocess(key, value);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn formData;\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\ntype Resolver = (options: ApiRequestOptions) => Promise;\r\n\r\nexport const resolve = async (options: ApiRequestOptions, resolver?: T | Resolver): Promise => {\r\n\tif (typeof resolver === 'function') {\r\n\t\treturn (resolver as Resolver)(options);\r\n\t}\r\n\treturn resolver;\r\n};\r\n\r\nexport const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions): Promise => {\r\n\tconst [token, username, password, additionalHeaders] = await Promise.all([\r\n\t\tresolve(options, config.TOKEN),\r\n\t\tresolve(options, config.USERNAME),\r\n\t\tresolve(options, config.PASSWORD),\r\n\t\tresolve(options, config.HEADERS),\r\n\t]);\r\n\r\n\tconst headers = Object.entries({\r\n\t\tAccept: 'application/json',\r\n\t\t...additionalHeaders,\r\n\t\t...options.headers,\r\n\t})\r\n\t\t.filter(([, value]) => value !== undefined && value !== null)\r\n\t\t.reduce((headers, [key, value]) => ({\r\n\t\t\t...headers,\r\n\t\t\t[key]: String(value),\r\n\t\t}), {} as Record);\r\n\r\n\tif (isStringWithValue(token)) {\r\n\t\theaders['Authorization'] = `Bearer ${token}`;\r\n\t}\r\n\r\n\tif (isStringWithValue(username) && isStringWithValue(password)) {\r\n\t\tconst credentials = base64(`${username}:${password}`);\r\n\t\theaders['Authorization'] = `Basic ${credentials}`;\r\n\t}\r\n\r\n\tif (options.body !== undefined) {\r\n\t\tif (options.mediaType) {\r\n\t\t\theaders['Content-Type'] = options.mediaType;\r\n\t\t} else if (isBlob(options.body)) {\r\n\t\t\theaders['Content-Type'] = options.body.type || 'application/octet-stream';\r\n\t\t} else if (isString(options.body)) {\r\n\t\t\theaders['Content-Type'] = 'text/plain';\r\n\t\t} else if (!isFormData(options.body)) {\r\n\t\t\theaders['Content-Type'] = 'application/json';\r\n\t\t}\r\n\t}\r\n\r\n\treturn new Headers(headers);\r\n};\r\n\r\nexport const getRequestBody = (options: ApiRequestOptions): unknown => {\r\n\tif (options.body !== undefined) {\r\n\t\tif (options.mediaType?.includes('application/json') || options.mediaType?.includes('+json')) {\r\n\t\t\treturn JSON.stringify(options.body);\r\n\t\t} else if (isString(options.body) || isBlob(options.body) || isFormData(options.body)) {\r\n\t\t\treturn options.body;\r\n\t\t} else {\r\n\t\t\treturn JSON.stringify(options.body);\r\n\t\t}\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\nexport const sendRequest = async (\r\n\tconfig: OpenAPIConfig,\r\n\toptions: ApiRequestOptions,\r\n\turl: string,\r\n\tbody: any,\r\n\tformData: FormData | undefined,\r\n\theaders: Headers,\r\n\tonCancel: OnCancel\r\n): Promise => {\r\n\tconst controller = new AbortController();\r\n\r\n\tlet request: RequestInit = {\r\n\t\theaders,\r\n\t\tbody: body ?? formData,\r\n\t\tmethod: options.method,\r\n\t\tsignal: controller.signal,\r\n\t};\r\n\r\n\tif (config.WITH_CREDENTIALS) {\r\n\t\trequest.credentials = config.CREDENTIALS;\r\n\t}\r\n\r\n\tfor (const fn of config.interceptors.request._fns) {\r\n\t\trequest = await fn(request);\r\n\t}\r\n\r\n\tonCancel(() => controller.abort());\r\n\r\n\treturn await fetch(url, request);\r\n};\r\n\r\nexport const getResponseHeader = (response: Response, responseHeader?: string): string | undefined => {\r\n\tif (responseHeader) {\r\n\t\tconst content = response.headers.get(responseHeader);\r\n\t\tif (isString(content)) {\r\n\t\t\treturn content;\r\n\t\t}\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\nexport const getResponseBody = async (response: Response): Promise => {\r\n\tif (response.status !== 204) {\r\n\t\ttry {\r\n\t\t\tconst contentType = response.headers.get('Content-Type');\r\n\t\t\tif (contentType) {\r\n\t\t\t\tconst binaryTypes = ['application/octet-stream', 'application/pdf', 'application/zip', 'audio/', 'image/', 'video/'];\r\n\t\t\t\tif (contentType.includes('application/json') || contentType.includes('+json')) {\r\n\t\t\t\t\treturn await response.json();\r\n\t\t\t\t} else if (binaryTypes.some(type => contentType.includes(type))) {\r\n\t\t\t\t\treturn await response.blob();\r\n\t\t\t\t} else if (contentType.includes('multipart/form-data')) {\r\n\t\t\t\t\treturn await response.formData();\r\n\t\t\t\t} else if (contentType.includes('text/')) {\r\n\t\t\t\t\treturn await response.text();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(error);\r\n\t\t}\r\n\t}\r\n\treturn undefined;\r\n};\r\n\r\nexport const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\r\n\tconst errors: Record = {\r\n\t\t400: 'Bad Request',\r\n\t\t401: 'Unauthorized',\r\n\t\t402: 'Payment Required',\r\n\t\t403: 'Forbidden',\r\n\t\t404: 'Not Found',\r\n\t\t405: 'Method Not Allowed',\r\n\t\t406: 'Not Acceptable',\r\n\t\t407: 'Proxy Authentication Required',\r\n\t\t408: 'Request Timeout',\r\n\t\t409: 'Conflict',\r\n\t\t410: 'Gone',\r\n\t\t411: 'Length Required',\r\n\t\t412: 'Precondition Failed',\r\n\t\t413: 'Payload Too Large',\r\n\t\t414: 'URI Too Long',\r\n\t\t415: 'Unsupported Media Type',\r\n\t\t416: 'Range Not Satisfiable',\r\n\t\t417: 'Expectation Failed',\r\n\t\t418: 'Im a teapot',\r\n\t\t421: 'Misdirected Request',\r\n\t\t422: 'Unprocessable Content',\r\n\t\t423: 'Locked',\r\n\t\t424: 'Failed Dependency',\r\n\t\t425: 'Too Early',\r\n\t\t426: 'Upgrade Required',\r\n\t\t428: 'Precondition Required',\r\n\t\t429: 'Too Many Requests',\r\n\t\t431: 'Request Header Fields Too Large',\r\n\t\t451: 'Unavailable For Legal Reasons',\r\n\t\t500: 'Internal Server Error',\r\n\t\t501: 'Not Implemented',\r\n\t\t502: 'Bad Gateway',\r\n\t\t503: 'Service Unavailable',\r\n\t\t504: 'Gateway Timeout',\r\n\t\t505: 'HTTP Version Not Supported',\r\n\t\t506: 'Variant Also Negotiates',\r\n\t\t507: 'Insufficient Storage',\r\n\t\t508: 'Loop Detected',\r\n\t\t510: 'Not Extended',\r\n\t\t511: 'Network Authentication Required',\r\n\t\t...options.errors,\r\n\t}\r\n\r\n\tconst error = errors[result.status];\r\n\tif (error) {\r\n\t\tthrow new ApiError(options, result, error);\r\n\t}\r\n\r\n\tif (!result.ok) {\r\n\t\tconst errorStatus = result.status ?? 'unknown';\r\n\t\tconst errorStatusText = result.statusText ?? 'unknown';\r\n\t\tconst errorBody = (() => {\r\n\t\t\ttry {\r\n\t\t\t\treturn JSON.stringify(result.body, null, 2);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn undefined;\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\tthrow new ApiError(options, result,\r\n\t\t\t`Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\r\n\t\t);\r\n\t}\r\n};\r\n\r\n/**\r\n * Request method\r\n * @param config The OpenAPI configuration object\r\n * @param options The request options from the service\r\n * @returns CancelablePromise\r\n * @throws ApiError\r\n */\r\nexport const request = (config: OpenAPIConfig, options: ApiRequestOptions): CancelablePromise => {\r\n\treturn new CancelablePromise(async (resolve, reject, onCancel) => {\r\n\t\ttry {\r\n\t\t\tconst url = getUrl(config, options);\r\n\t\t\tconst formData = getFormData(options);\r\n\t\t\tconst body = getRequestBody(options);\r\n\t\t\tconst headers = await getHeaders(config, options);\r\n\r\n\t\t\tif (!onCancel.isCancelled) {\r\n\t\t\t\tlet response = await sendRequest(config, options, url, body, formData, headers, onCancel);\r\n\r\n\t\t\t\tfor (const fn of config.interceptors.response._fns) {\r\n\t\t\t\t\tresponse = await fn(response);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst responseBody = await getResponseBody(response);\r\n\t\t\t\tconst responseHeader = getResponseHeader(response, options.responseHeader);\r\n\r\n\t\t\t\tconst result: ApiResult = {\r\n\t\t\t\t\turl,\r\n\t\t\t\t\tok: response.ok,\r\n\t\t\t\t\tstatus: response.status,\r\n\t\t\t\t\tstatusText: response.statusText,\r\n\t\t\t\t\tbody: responseHeader ?? responseBody,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcatchErrorCodes(options, result);\r\n\r\n\t\t\t\tresolve(result.body);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\treject(error);\r\n\t\t}\r\n\t});\r\n};","// This file is auto-generated by @hey-api/openapi-ts\r\n\r\n\r\nimport type { CancelablePromise } from './core/CancelablePromise';\r\nimport { OpenAPI } from './core/OpenAPI';\r\nimport { request as __request } from './core/request';\r\nimport type { $OpenApiTs } from './types.gen';\r\n\r\nexport class FulltextsearchService {\r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchConfig(): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/config']['get']['res'][200]> {\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/config'\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes']['get']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes']['get']['res'][200]> {\r\n const { pageNumber } = data;\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/incorrectindexednodes',\r\n query: {\r\n pageNumber\r\n }\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes']['get']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes']['get']['res'][200]> {\r\n const { pageNumber } = data;\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/indexednodes',\r\n query: {\r\n pageNumber\r\n }\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus(): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/indexstatus']['get']['res'][200]> {\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/indexstatus'\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes']['get']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes']['get']['res'][200]> {\r\n const { pageNumber } = data;\r\n return __request(OpenAPI, {\r\n method: 'GET',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/missingnodes',\r\n query: {\r\n pageNumber\r\n }\r\n});\r\n }\r\n \r\n /**\r\n * @returns unknown OK\r\n * @throws ApiError\r\n */\r\n public static postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes(data: $OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes']['post']['req'] = {}): CancelablePromise<$OpenApiTs['/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes']['post']['res'][200]> {\r\n const { requestBody } = data;\r\n return __request(OpenAPI, {\r\n method: 'POST',\r\n url: '/umbraco/fulltextsearch/api/v5/fulltextsearch/reindexnodes',\r\n body: requestBody,\r\n mediaType: 'application/json'\r\n});\r\n }\r\n \r\n}","import { UmbControllerHost } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\nimport { FulltextsearchService } from \"../../api\";\r\n\r\nexport class FullTextSearchDataSource {\r\n\r\n #host: UmbControllerHost;\r\n\r\n constructor(host: UmbControllerHost) {\r\n this.#host = host;\r\n }\r\n\r\n async config() {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchConfig());\r\n }\r\n\r\n async indexStatus() {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchIndexstatus());\r\n }\r\n\r\n async incorrectIndexedNodes(pageNumber?: number) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchIncorrectindexednodes({\r\n pageNumber\r\n }));\r\n }\r\n\r\n async indexedNodes(pageNumber?: number) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchIndexednodes({\r\n pageNumber\r\n }));\r\n }\r\n\r\n async missingNodes(pageNumber?: number) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.getUmbracoFulltextsearchApiV5FulltextsearchMissingnodes({\r\n pageNumber\r\n }));\r\n }\r\n\r\n async reindex(includeDescendants: boolean, nodeIds?: Array<(number)>) {\r\n return await tryExecuteAndNotify(this.#host, FulltextsearchService.postUmbracoFulltextsearchApiV5FulltextsearchReindexnodes({\r\n requestBody: {\r\n includeDescendants,\r\n nodeIds\r\n }\r\n }));\r\n }\r\n}","import { UMB_AUTH_CONTEXT } from \"@umbraco-cms/backoffice/auth\";\r\nimport { UmbControllerBase } from \"@umbraco-cms/backoffice/class-api\";\r\nimport { UmbContextToken } from \"@umbraco-cms/backoffice/context-api\";\r\nimport { UmbControllerHost } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { FullTextSearchOptions, IndexedNodeResult, IndexStatus, OpenAPI } from './../api/index.ts';\r\nimport { FullTextSearchDataSource } from \"../repository/sources/fulltextsearch.source.ts\";\r\nimport { UmbObjectState, UmbStringState } from \"@umbraco-cms/backoffice/observable-api\";\r\n\r\n\r\nexport class FullTextSearchContext extends UmbControllerBase {\r\n\r\n #source: FullTextSearchDataSource;\r\n\r\n #config = new UmbObjectState(undefined);\r\n public readonly config = this.#config.asObservable();\r\n\r\n #indexStatus = new UmbObjectState(undefined);\r\n public readonly indexStatus = this.#indexStatus.asObservable();\r\n\r\n #indexedNodes = new UmbObjectState(undefined);\r\n public readonly indexedNodes = this.#indexedNodes.asObservable();\r\n\r\n #incorrectIndexedNodes = new UmbStringState(undefined);\r\n public readonly incorrectIndexedNodes = this.#incorrectIndexedNodes.asObservable();\r\n\r\n #missingIndexedNodes = new UmbStringState(undefined);\r\n public readonly missingIndexedNodes = this.#missingIndexedNodes.asObservable();\r\n\r\n\r\n constructor(host: UmbControllerHost) {\r\n super(host);\r\n this.provideContext(FULLTEXTSEARCH_CONTEXT_TOKEN, this);\r\n this.#source = new FullTextSearchDataSource(host);\r\n\r\n this.consumeContext(UMB_AUTH_CONTEXT, (_auth) => {\r\n const umbOpenApi = _auth.getOpenApiConfiguration();\r\n OpenAPI.TOKEN = umbOpenApi.token;\r\n OpenAPI.BASE = umbOpenApi.base;\r\n OpenAPI.WITH_CREDENTIALS = umbOpenApi.withCredentials;\r\n });\r\n }\r\n\r\n async getConfig() {\r\n const { data } = await this.#source.config();\r\n\r\n if (data) {\r\n this.#config.setValue(data);\r\n }\r\n }\r\n\r\n async reindex(includeDescendants: boolean, nodeIds?: Array<(number)>) {\r\n await this.#source.reindex(includeDescendants, nodeIds);\r\n }\r\n\r\n async getIndexStatus() {\r\n const { data } = await this.#source.indexStatus();\r\n\r\n if (data) {\r\n this.#indexStatus.setValue(data);\r\n }\r\n }\r\n\r\n async getIndexedNodes(pageNumber?: number) {\r\n const { data } = await this.#source.indexedNodes(pageNumber);\r\n if (data) {\r\n this.#indexedNodes.setValue(data);\r\n }\r\n }\r\n\r\n async getIncorrectIndexedNodes(pageNumber?: number) {\r\n const { data } = await this.#source.incorrectIndexedNodes(pageNumber);\r\n if (data) {\r\n this.#incorrectIndexedNodes.setValue(data);\r\n }\r\n }\r\n\r\n async getMissingNodes(pageNumber?: number) {\r\n const { data } = await this.#source.missingNodes(pageNumber);\r\n if (data) {\r\n this.#missingIndexedNodes.setValue(data);\r\n }\r\n }\r\n}\r\n\r\nexport default FullTextSearchContext;\r\nexport const FULLTEXTSEARCH_CONTEXT_TOKEN =\r\n new UmbContextToken(FullTextSearchContext.name);"],"names":["ApiError","request","response","message","CancelError","CancelablePromise","executor","resolve","reject","onResolve","value","onReject","reason","onCancel","cancelHandler","onFulfilled","onRejected","onFinally","error","isString","isStringWithValue","isBlob","isFormData","base64","str","getQueryString","params","qs","append","key","encodePair","v","k","getUrl","config","options","encoder","path","substring","group","_a","url","getFormData","formData","process","resolver","getHeaders","token","username","password","additionalHeaders","headers","credentials","getRequestBody","_b","sendRequest","body","controller","fn","getResponseHeader","responseHeader","content","getResponseBody","contentType","binaryTypes","type","catchErrorCodes","result","errorStatus","errorStatusText","errorBody","responseBody","FulltextsearchService","__request","OpenAPI","data","pageNumber","requestBody","FullTextSearchDataSource","host","__privateAdd","_host","__privateSet","tryExecuteAndNotify","__privateGet","includeDescendants","nodeIds","FullTextSearchContext","UmbControllerBase","_source","_config","_indexStatus","_indexedNodes","_incorrectIndexedNodes","_missingIndexedNodes","UmbObjectState","UmbStringState","FULLTEXTSEARCH_CONTEXT_TOKEN","UMB_AUTH_CONTEXT","_auth","umbOpenApi","UmbContextToken"],"mappings":"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"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/index-DB07aDTd.js b/src/Our.Umbraco.FullTextSearch/wwwroot/index-DB07aDTd.js new file mode 100644 index 0000000..c73f796 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/index-DB07aDTd.js @@ -0,0 +1,129 @@ +import { UMB_AUTH_CONTEXT as s } from "@umbraco-cms/backoffice/auth"; +import { UMB_DOCUMENT_ROOT_ENTITY_TYPE as l, UMB_DOCUMENT_ENTITY_TYPE as c, UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS as r } from "@umbraco-cms/backoffice/document"; +const m = { + type: "entityAction", + kind: "default", + alias: "our.umbraco.fulltextsearch.reindex.action", + name: "ReindexNode", + weight: -100, + forEntityTypes: [l, c], + api: () => import("./reindex.action-DG1dTn-f.js"), + elementName: "our-umbraco-fulltext-search-actions-entity-reindexnode", + meta: { + icon: "icon-alarm-clock", + label: "#fullTextSearch_reindex", + repositoryAlias: r + } +}, u = [m], p = { + type: "modal", + alias: "our.umbraco.fulltextsearch.modals.reindexnode", + name: "Reindex node", + js: () => import("./reindexnode.element-C5_DoL2X.js") +}, T = [p], E = [ + { + type: "localization", + alias: "Our.Umbraco.FullTextSearch.Localizations.En", + name: "English", + meta: { + culture: "en" + }, + js: () => import("./en-BhWH3rme.js") + }, + { + type: "localization", + alias: "Our.Umbraco.FullTextSearch.Localizations.Da", + name: "Danish", + meta: { + culture: "da" + }, + js: () => import("./da-BgQK7Sz-.js") + }, + { + type: "localization", + alias: "Our.Umbraco.FullTextSearch.Localizations.Cy", + name: "Welsh", + meta: { + culture: "cy" + }, + js: () => import("./cy-Co3J_yCx.js") + }, + { + type: "localization", + alias: "Our.Umbraco.FullTextSearch.Localizations.Fr", + name: "French", + meta: { + culture: "fr" + }, + js: () => import("./fr-3pqRkfVr.js") + }, + { + type: "localization", + alias: "Our.Umbraco.FullTextSearch.Localizations.Nb", + name: "Norwegian bokmål", + meta: { + culture: "nb" + }, + js: () => import("./nb-_r7CNvV3.js") + }, + { + type: "localization", + alias: "Our.Umbraco.FullTextSearch.Localizations.Nl", + name: "Dutch", + meta: { + culture: "nl" + }, + js: () => import("./nl-q1MxHDQM.js") + } +], d = E, x = [ + { + type: "globalContext", + alias: "our.umbraco.fulltextsearch.context", + name: "Full Text Search context", + js: () => import("./fulltextsearch.context-BLn8Y4qb.js") + } +], h = [...x]; +class n { + constructor() { + this._fns = []; + } + eject(e) { + const t = this._fns.indexOf(e); + t !== -1 && (this._fns = [ + ...this._fns.slice(0, t), + ...this._fns.slice(t + 1) + ]); + } + use(e) { + this._fns = [...this._fns, e]; + } +} +const o = { + BASE: "", + CREDENTIALS: "include", + ENCODE_PATH: void 0, + HEADERS: void 0, + PASSWORD: void 0, + TOKEN: void 0, + USERNAME: void 0, + VERSION: "Latest", + WITH_CREDENTIALS: !1, + interceptors: { + request: new n(), + response: new n() + } +}, _ = (i, e) => { + e.registerMany([ + ...u, + ...T, + ...d, + ...h + ]), i.consumeContext(s, (t) => { + const a = t.getOpenApiConfiguration(); + o.TOKEN = a.token, o.BASE = a.base, o.WITH_CREDENTIALS = a.withCredentials; + }); +}; +export { + o as O, + _ as o +}; +//# sourceMappingURL=index-DB07aDTd.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/index-DB07aDTd.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/index-DB07aDTd.js.map new file mode 100644 index 0000000..b99c860 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/index-DB07aDTd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index-DB07aDTd.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/actions/entity/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/modals/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/localization/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/context/manifest.ts","../../Our.Umbraco.FullTextSearch.Client/src/api/core/OpenAPI.ts","../../Our.Umbraco.FullTextSearch.Client/src/index.ts"],"sourcesContent":["import { UMB_DOCUMENT_ENTITY_TYPE, UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS, UMB_DOCUMENT_ROOT_ENTITY_TYPE } from \"@umbraco-cms/backoffice/document\";\r\nimport { ManifestEntityAction } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst entityAction: ManifestEntityAction = {\r\n type: 'entityAction',\r\n kind: 'default',\r\n alias: 'our.umbraco.fulltextsearch.reindex.action',\r\n name: 'ReindexNode',\r\n weight: -100,\r\n forEntityTypes: [UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_DOCUMENT_ENTITY_TYPE],\r\n api: () => import('./reindex.action.ts'),\r\n elementName: 'our-umbraco-fulltext-search-actions-entity-reindexnode',\r\n meta: {\r\n icon: 'icon-alarm-clock',\r\n label: '#fullTextSearch_reindex',\r\n repositoryAlias: UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS,\r\n }\r\n}\r\n\r\nexport const manifests = [entityAction];\r\n","import { ManifestModal } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst reIndexNodeModal: ManifestModal = {\r\n type: 'modal',\r\n alias: 'our.umbraco.fulltextsearch.modals.reindexnode',\r\n name: 'Reindex node',\r\n js: () => import('./reindexnode.element.ts'),\r\n}\r\n\r\nexport const manifests = [reIndexNodeModal];\r\n","import { ManifestLocalization } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst localizations: ManifestLocalization[] = [\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.En\",\r\n name: \"English\",\r\n meta: {\r\n culture: \"en\"\r\n },\r\n js: () => import(\"./en.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Da\",\r\n name: \"Danish\",\r\n meta: {\r\n culture: \"da\"\r\n },\r\n js: () => import(\"./da.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Cy\",\r\n name: \"Welsh\",\r\n meta: {\r\n culture: \"cy\"\r\n },\r\n js: () => import(\"./cy.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Fr\",\r\n name: \"French\",\r\n meta: {\r\n culture: \"fr\"\r\n },\r\n js: () => import(\"./fr.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Nb\",\r\n name: \"Norwegian bokmål\",\r\n meta: {\r\n culture: \"nb\"\r\n },\r\n js: () => import(\"./nb.ts\")\r\n },\r\n {\r\n type: \"localization\",\r\n alias: \"Our.Umbraco.FullTextSearch.Localizations.Nl\",\r\n name: \"Dutch\",\r\n meta: {\r\n culture: \"nl\"\r\n },\r\n js: () => import(\"./nl.ts\")\r\n }\r\n]\r\n\r\nexport const manifests = localizations;\r\n","import { ManifestGlobalContext } from \"@umbraco-cms/backoffice/extension-registry\";\r\n\r\nconst contexts: Array = [\r\n {\r\n type: 'globalContext',\r\n alias: 'our.umbraco.fulltextsearch.context',\r\n name: 'Full Text Search context',\r\n js: () => import('./fulltextsearch.context.ts')\r\n }\r\n]\r\n\r\nexport const manifests = [...contexts];","import type { ApiRequestOptions } from './ApiRequestOptions';\r\n\r\ntype Headers = Record;\r\ntype Middleware = (value: T) => T | Promise;\r\ntype Resolver = (options: ApiRequestOptions) => Promise;\r\n\r\nexport class Interceptors {\r\n _fns: Middleware[];\r\n\r\n constructor() {\r\n this._fns = [];\r\n }\r\n\r\n eject(fn: Middleware) {\r\n const index = this._fns.indexOf(fn);\r\n if (index !== -1) {\r\n this._fns = [\r\n ...this._fns.slice(0, index),\r\n ...this._fns.slice(index + 1),\r\n ];\r\n }\r\n }\r\n\r\n use(fn: Middleware) {\r\n this._fns = [...this._fns, fn];\r\n }\r\n}\r\n\r\nexport type OpenAPIConfig = {\r\n\tBASE: string;\r\n\tCREDENTIALS: 'include' | 'omit' | 'same-origin';\r\n\tENCODE_PATH?: ((path: string) => string) | undefined;\r\n\tHEADERS?: Headers | Resolver | undefined;\r\n\tPASSWORD?: string | Resolver | undefined;\r\n\tTOKEN?: string | Resolver | undefined;\r\n\tUSERNAME?: string | Resolver | undefined;\r\n\tVERSION: string;\r\n\tWITH_CREDENTIALS: boolean;\r\n\tinterceptors: {request: Interceptors;\r\n\t\tresponse: Interceptors;};\r\n};\r\n\r\nexport const OpenAPI: OpenAPIConfig = {\r\n\tBASE: '',\r\n\tCREDENTIALS: 'include',\r\n\tENCODE_PATH: undefined,\r\n\tHEADERS: undefined,\r\n\tPASSWORD: undefined,\r\n\tTOKEN: undefined,\r\n\tUSERNAME: undefined,\r\n\tVERSION: 'Latest',\r\n\tWITH_CREDENTIALS: false,\r\n\tinterceptors: {request: new Interceptors(),response: new Interceptors(),\r\n\t},\r\n};","import { UmbEntryPointOnInit } from '@umbraco-cms/backoffice/extension-api';\r\nimport { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';\r\nimport { manifests as entityActionManifests } from './actions/entity/manifest.ts';\r\nimport { manifests as modalManifests } from './modals/manifest.ts';\r\nimport { manifests as localizationManifests } from './localization/manifest.ts';\r\nimport { manifests as contextManifests } from './context/manifest.ts';\r\nimport { OpenAPI } from './api/index.ts';\r\n\r\nexport const onInit: UmbEntryPointOnInit = (_host, extensionRegistry) => {\r\n\r\n // register them here. \r\n extensionRegistry.registerMany([\r\n ...entityActionManifests,\r\n ...modalManifests,\r\n ...localizationManifests,\r\n ...contextManifests\r\n ]);\r\n\r\n\r\n _host.consumeContext(UMB_AUTH_CONTEXT, (_auth) => {\r\n const umbOpenApi = _auth.getOpenApiConfiguration();\r\n OpenAPI.TOKEN = umbOpenApi.token;\r\n OpenAPI.BASE = umbOpenApi.base;\r\n OpenAPI.WITH_CREDENTIALS = umbOpenApi.withCredentials;\r\n });\r\n\r\n};"],"names":["entityAction","UMB_DOCUMENT_ROOT_ENTITY_TYPE","UMB_DOCUMENT_ENTITY_TYPE","UMB_DOCUMENT_DETAIL_REPOSITORY_ALIAS","manifests","reIndexNodeModal","localizations","contexts","Interceptors","fn","index","OpenAPI","onInit","_host","extensionRegistry","entityActionManifests","modalManifests","localizationManifests","contextManifests","UMB_AUTH_CONTEXT","_auth","umbOpenApi"],"mappings":"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"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/nb-_r7CNvV3.js b/src/Our.Umbraco.FullTextSearch/wwwroot/nb-_r7CNvV3.js new file mode 100644 index 0000000..a442390 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/nb-_r7CNvV3.js @@ -0,0 +1,16 @@ +const e = { + fullTextSearch: { + reindex: "Reindekser", + reindexAllNodes: "Reindekser alle noder", + reindexed: "Reindekseret", + reindexedMessage: "Reindeksering ferdig", + reindexing: "Reindekserer...", + reindexingMessage: "Vennligst vent", + reindexNode: "Reindekser node", + reindexWithDescendants: "Reindekser med etterkommere" + } +}; +export { + e as default +}; +//# sourceMappingURL=nb-_r7CNvV3.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/nb-_r7CNvV3.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/nb-_r7CNvV3.js.map new file mode 100644 index 0000000..1596e29 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/nb-_r7CNvV3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nb-_r7CNvV3.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/localization/nb.ts"],"sourcesContent":["export default {\r\n fullTextSearch: {\r\n reindex: \"Reindekser\",\r\n reindexAllNodes: \"Reindekser alle noder\",\r\n reindexed: \"Reindekseret\",\r\n reindexedMessage: \"Reindeksering ferdig\",\r\n reindexing: \"Reindekserer...\",\r\n reindexingMessage: \"Vennligst vent\",\r\n reindexNode: \"Reindekser node\",\r\n reindexWithDescendants: \"Reindekser med etterkommere\"\r\n }\r\n};\r\n"],"names":["nb"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACX,gBAAgB;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,wBAAwB;AAAA,EAC5B;AACJ;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/nl-q1MxHDQM.js b/src/Our.Umbraco.FullTextSearch/wwwroot/nl-q1MxHDQM.js new file mode 100644 index 0000000..dea50f3 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/nl-q1MxHDQM.js @@ -0,0 +1,16 @@ +const e = { + fullTextSearch: { + reindex: "Herindexeer", + reindexAllNodes: "Herindexeer alle nodes", + reindexed: "Herindexeerde", + reindexedMessage: "Herindexeren voltooid", + reindexing: "Herindexeren...", + reindexingMessage: "Even geduld, dit kan duren drie minuten", + reindexNode: "Herindexeer node", + reindexWithDescendants: "Herindexeren inclusief onderliggende" + } +}; +export { + e as default +}; +//# sourceMappingURL=nl-q1MxHDQM.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/nl-q1MxHDQM.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/nl-q1MxHDQM.js.map new file mode 100644 index 0000000..29b3b27 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/nl-q1MxHDQM.js.map @@ -0,0 +1 @@ +{"version":3,"file":"nl-q1MxHDQM.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/localization/nl.ts"],"sourcesContent":["export default {\r\n fullTextSearch: {\r\n reindex: \"Herindexeer\",\r\n reindexAllNodes: \"Herindexeer alle nodes\",\r\n reindexed: \"Herindexeerde\",\r\n reindexedMessage: \"Herindexeren voltooid\",\r\n reindexing: \"Herindexeren...\",\r\n reindexingMessage: \"Even geduld, dit kan duren drie minuten\",\r\n reindexNode: \"Herindexeer node\",\r\n reindexWithDescendants: \"Herindexeren inclusief onderliggende\",\r\n }\r\n};\r\n"],"names":["nl"],"mappings":"AAAA,MAAeA,IAAA;AAAA,EACX,gBAAgB;AAAA,IACZ,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,aAAa;AAAA,IACb,wBAAwB;AAAA,EAC5B;AACJ;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/reindex.action-DG1dTn-f.js b/src/Our.Umbraco.FullTextSearch/wwwroot/reindex.action-DG1dTn-f.js new file mode 100644 index 0000000..bb3d302 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/reindex.action-DG1dTn-f.js @@ -0,0 +1,38 @@ +var a = (t) => { + throw TypeError(t); +}; +var i = (t, o, e) => o.has(t) || a("Cannot " + e); +var r = (t, o, e) => (i(t, o, "read from private field"), e ? e.call(t) : o.get(t)), u = (t, o, e) => o.has(t) ? a("Cannot add the same private member more than once") : o instanceof WeakSet ? o.add(t) : o.set(t, e), c = (t, o, e, n) => (i(t, o, "write to private field"), n ? n.call(t, e) : o.set(t, e), e); +import { UmbEntityActionBase as d } from "@umbraco-cms/backoffice/entity-action"; +import { UmbModalToken as l, UMB_MODAL_MANAGER_CONTEXT as x } from "@umbraco-cms/backoffice/modal"; +const E = new l("our.umbraco.fulltextsearch.modals.reindexnode", { + modal: { + type: "dialog", + size: "small" + } +}); +var s; +class M extends d { + constructor(e, n) { + super(e, n); + u(this, s); + this.consumeContext(x, (m) => { + c(this, s, m); + }); + } + async execute() { + var n; + const e = (n = r(this, s)) == null ? void 0 : n.open(this, E, { + data: { + unique: this.args.unique + } + }); + await (e == null ? void 0 : e.onSubmit()); + } +} +s = new WeakMap(); +export { + M as ReindexNodeAction, + M as default +}; +//# sourceMappingURL=reindex.action-DG1dTn-f.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/reindex.action-DG1dTn-f.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/reindex.action-DG1dTn-f.js.map new file mode 100644 index 0000000..c2aaba3 --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/reindex.action-DG1dTn-f.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reindex.action-DG1dTn-f.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/modals/reindexnode.modaltoken.ts","../../Our.Umbraco.FullTextSearch.Client/src/actions/entity/reindex.action.ts"],"sourcesContent":["import { UmbEntityUnique } from \"@umbraco-cms/backoffice/entity\";\r\nimport { UmbModalToken } from \"@umbraco-cms/backoffice/modal\";\r\n\r\nexport type ReindexNodeModalData = {\r\n unique: UmbEntityUnique;\r\n}\r\n\r\nexport const REINDEX_NODE_MODAL_TOKEN = new UmbModalToken('our.umbraco.fulltextsearch.modals.reindexnode', {\r\n modal: {\r\n type: 'dialog',\r\n size: 'small'\r\n }\r\n});","import { UmbControllerHostElement } from \"@umbraco-cms/backoffice/controller-api\";\r\nimport { UmbEntityActionArgs, UmbEntityActionBase } from \"@umbraco-cms/backoffice/entity-action\";\r\nimport { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';\r\nimport { REINDEX_NODE_MODAL_TOKEN } from \"../../modals/reindexnode.modaltoken\";\r\n\r\nexport class ReindexNodeAction extends UmbEntityActionBase {\r\n #modalManagerContext?: typeof UMB_MODAL_MANAGER_CONTEXT.TYPE;\r\n\r\n\r\n constructor(host: UmbControllerHostElement, args: UmbEntityActionArgs) {\r\n super(host, args)\r\n\r\n this.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {\r\n this.#modalManagerContext = instance;\r\n });\r\n }\r\n\r\n\r\n async execute() {\r\n \r\n const modal = this.#modalManagerContext?.open(this, REINDEX_NODE_MODAL_TOKEN, {\r\n data: {\r\n unique: this.args.unique\r\n }\r\n });\r\n\r\n await modal?.onSubmit();\r\n }\r\n\r\n};\r\n\r\nexport default ReindexNodeAction;"],"names":["REINDEX_NODE_MODAL_TOKEN","UmbModalToken","ReindexNodeAction","UmbEntityActionBase","host","args","__privateAdd","_modalManagerContext","UMB_MODAL_MANAGER_CONTEXT","instance","__privateSet","modal","_a","__privateGet"],"mappings":";;;;;;;AAOa,MAAAA,IAA2B,IAAIC,EAAoC,iDAAiD;AAAA,EAC7H,OAAO;AAAA,IACH,MAAM;AAAA,IACN,MAAM;AAAA,EACV;AACJ,CAAC;;ACPM,MAAMC,UAA0BC,EAA2B;AAAA,EAI9D,YAAYC,GAAgCC,GAAkC;AAC1E,UAAMD,GAAMC,CAAI;AAJpB,IAAAC,EAAA,MAAAC;AAMS,SAAA,eAAeC,GAA2B,CAACC,MAAa;AACzD,MAAAC,EAAA,MAAKH,GAAuBE;AAAA,IAAA,CAC/B;AAAA,EACL;AAAA,EAGA,MAAM,UAAU;;AAEZ,UAAME,KAAQC,IAAAC,EAAA,MAAKN,OAAL,gBAAAK,EAA2B,KAAK,MAAMZ,GAA0B;AAAA,MAC1E,MAAM;AAAA,QACF,QAAQ,KAAK,KAAK;AAAA,MACtB;AAAA,IAAA;AAGJ,WAAMW,KAAA,gBAAAA,EAAO;AAAA,EACjB;AAEJ;AAvBIJ,IAAA;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/reindexnode.element-C5_DoL2X.js b/src/Our.Umbraco.FullTextSearch/wwwroot/reindexnode.element-C5_DoL2X.js new file mode 100644 index 0000000..ffe2f2e --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/reindexnode.element-C5_DoL2X.js @@ -0,0 +1,90 @@ +import { LitElement as T, html as c, property as m, state as p, customElement as v } from "@umbraco-cms/backoffice/external/lit"; +import { UmbElementMixin as y } from "@umbraco-cms/backoffice/element-api"; +import { FULLTEXTSEARCH_CONTEXT_TOKEN as S } from "./fulltextsearch.context-BLn8Y4qb.js"; +import { UMB_NOTIFICATION_CONTEXT as b } from "@umbraco-cms/backoffice/notification"; +var w = Object.defineProperty, z = Object.getOwnPropertyDescriptor, f = (e) => { + throw TypeError(e); +}, u = (e, t, a, l) => { + for (var i = l > 1 ? void 0 : l ? z(t, a) : t, n = e.length - 1, o; n >= 0; n--) + (o = e[n]) && (i = (l ? o(t, a, i) : o(i)) || i); + return l && i && w(t, a, i), i; +}, C = (e, t, a) => t.has(e) || f("Cannot " + a), h = (e, t, a) => (C(e, t, "read from private field"), t.get(e)), x = (e, t, a) => t.has(e) ? f("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, a), _ = (e, t, a, l) => (C(e, t, "write to private field"), t.set(e, a), a), s, d; +let r = class extends y(T) { + constructor() { + super(), x(this, s), x(this, d), this.consumeContext(S, (e) => { + _(this, d, e); + }), this.consumeContext(b, (e) => { + _(this, s, e); + }); + } + _handleCancel() { + var e; + (e = this.modalContext) == null || e.submit(); + } + async _reindex(e) { + var a, l, i, n, o; + if (!this.modalContext) return; + (a = this.modalContext) == null || a.submit(); + const t = (l = h(this, s)) == null ? void 0 : l.stay("default", { + data: { + headline: this.localize.term("fullTextSearch_reindexing"), + message: this.localize.term("fullTextSearch_reindexingMessage") + } + }); + await ((n = h(this, d)) == null ? void 0 : n.reindex(e, [Number((i = this.modalContext) == null ? void 0 : i.data.unique) || 0])), t == null || t.close(), (o = h(this, s)) == null || o.peek("positive", { + data: { + headline: this.localize.term("fullTextSearch_reindexed"), + message: this.localize.term("fullTextSearch_reindexedMessage") + } + }); + } + render() { + var e, t; + return c` + + ${(t = this.modalContext) != null && t.data.unique ? c` + this._reindex(!1)}> + + Reindex just this node + + this._reindex(!0)}> + + Reindex with descendants + + + ` : c` + this._reindex(!0)}> + + Reindex all content + + `} + + + Cancel + + + + `; + } +}; +s = /* @__PURE__ */ new WeakMap(); +d = /* @__PURE__ */ new WeakMap(); +u([ + m({ attribute: !1 }) +], r.prototype, "modalContext", 2); +u([ + m({ attribute: !1 }) +], r.prototype, "data", 2); +u([ + p() +], r.prototype, "_withDescendantsState", 2); +u([ + p() +], r.prototype, "_withoutDescendantsState", 2); +r = u([ + v("our-umbraco-fulltext-search-reindex-node-modal") +], r); +export { + r as default +}; +//# sourceMappingURL=reindexnode.element-C5_DoL2X.js.map diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/reindexnode.element-C5_DoL2X.js.map b/src/Our.Umbraco.FullTextSearch/wwwroot/reindexnode.element-C5_DoL2X.js.map new file mode 100644 index 0000000..4df33da --- /dev/null +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/reindexnode.element-C5_DoL2X.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reindexnode.element-C5_DoL2X.js","sources":["../../Our.Umbraco.FullTextSearch.Client/src/modals/reindexnode.element.ts"],"sourcesContent":["import { html, LitElement, property, customElement, state } from \"@umbraco-cms/backoffice/external/lit\";\r\nimport { UmbElementMixin } from \"@umbraco-cms/backoffice/element-api\";\r\nimport type { UmbModalContext } from \"@umbraco-cms/backoffice/modal\";\r\nimport { UmbModalExtensionElement } from \"@umbraco-cms/backoffice/extension-registry\";\r\nimport { ReindexNodeModalData } from \"./reindexnode.modaltoken.ts\";\r\nimport { UUIButtonState } from \"@umbraco-cms/backoffice/external/uui\";\r\nimport FullTextSearchContext, { FULLTEXTSEARCH_CONTEXT_TOKEN } from \"../context/fulltextsearch.context.ts\";\r\nimport { UMB_NOTIFICATION_CONTEXT, UmbNotificationContext } from \"@umbraco-cms/backoffice/notification\";\r\n\r\n@customElement('our-umbraco-fulltext-search-reindex-node-modal')\r\nexport default class ReindexNodeDialogElement\r\n extends UmbElementMixin(LitElement)\r\n implements UmbModalExtensionElement {\r\n \r\n #notificationContext?: UmbNotificationContext;\r\n #fullTextSearchContext?: FullTextSearchContext;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.consumeContext(FULLTEXTSEARCH_CONTEXT_TOKEN, (fullTextSearchContext) => {\r\n this.#fullTextSearchContext = fullTextSearchContext;\r\n })\r\n\r\n this.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => {\r\n this.#notificationContext = instance;\r\n });\r\n }\r\n\r\n @property({ attribute: false })\r\n modalContext?: UmbModalContext;\r\n\r\n @property({ attribute: false })\r\n data?: ReindexNodeModalData;\r\n\r\n @state()\r\n private _withDescendantsState: UUIButtonState;\r\n\r\n @state()\r\n private _withoutDescendantsState: UUIButtonState;\r\n\r\n private _handleCancel() {\r\n this.modalContext?.submit();\r\n }\r\n\r\n private async _reindex(includeDescendants: boolean) {\r\n if (!this.modalContext) return;\r\n\r\n this.modalContext?.submit();\r\n\r\n const reindexingNotification = this.#notificationContext?.stay('default', {\r\n data: {\r\n headline: this.localize.term(`fullTextSearch_reindexing`),\r\n message: this.localize.term(`fullTextSearch_reindexingMessage`)\r\n }\r\n });\r\n\r\n await this.#fullTextSearchContext?.reindex(includeDescendants, [Number(this.modalContext?.data.unique) || 0]);\r\n \r\n reindexingNotification?.close();\r\n\r\n this.#notificationContext?.peek('positive', {\r\n data: {\r\n headline: this.localize.term(`fullTextSearch_reindexed`),\r\n message: this.localize.term(`fullTextSearch_reindexedMessage`)\r\n }\r\n });\r\n }\r\n\r\n override render() {\r\n return html`\r\n \r\n ${(this.modalContext?.data.unique\r\n ? html`\r\n this._reindex(false)}>\r\n \r\n Reindex just this node\r\n \r\n this._reindex(true)}>\r\n \r\n Reindex with descendants\r\n \r\n \r\n ` : html`\r\n this._reindex(true)}>\r\n \r\n Reindex all content\r\n \r\n `)}\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n `;\r\n }\r\n}"],"names":["_notificationContext","_fullTextSearchContext","ReindexNodeDialogElement","UmbElementMixin","LitElement","__privateAdd","FULLTEXTSEARCH_CONTEXT_TOKEN","fullTextSearchContext","__privateSet","UMB_NOTIFICATION_CONTEXT","instance","_a","includeDescendants","reindexingNotification","_b","__privateGet","_d","_c","_e","html","__decorateClass","property","state","customElement"],"mappings":";;;;;;;;;;gUAAAA,GAAAC;AAUA,IAAqBC,IAArB,cACYC,EAAgBC,CAAU,EACwB;AAAA,EAK1D,cAAc;AACJ,aAJVC,EAAA,MAAAL,CAAA,GACAK,EAAA,MAAAJ,CAAA,GAKS,KAAA,eAAeK,GAA8B,CAACC,MAA0B;AACzE,MAAAC,EAAA,MAAKP,GAAyBM,CAAA;AAAA,IAAA,CACjC,GAEI,KAAA,eAAeE,GAA0B,CAACC,MAAa;AACxD,MAAAF,EAAA,MAAKR,GAAuBU,CAAA;AAAA,IAAA,CAC/B;AAAA,EACL;AAAA,EAcQ,gBAAgB;;AACpB,KAAAC,IAAA,KAAK,iBAAL,QAAAA,EAAmB;AAAA,EACvB;AAAA,EAEA,MAAc,SAASC,GAA6B;;AAC5C,QAAA,CAAC,KAAK,aAAc;AAExB,KAAAD,IAAA,KAAK,iBAAL,QAAAA,EAAmB;AAEnB,UAAME,KAAyBC,IAAAC,EAAA,MAAKf,CAAsB,MAA3B,gBAAAc,EAA2B,KAAK,WAAW;AAAA,MACtE,MAAM;AAAA,QACF,UAAU,KAAK,SAAS,KAAK,2BAA2B;AAAA,QACxD,SAAS,KAAK,SAAS,KAAK,kCAAkC;AAAA,MAClE;AAAA,IAAA;AAGJ,YAAME,IAAAD,EAAK,MAAAd,CAAA,MAAL,gBAAAe,EAA6B,QAAQJ,GAAoB,CAAC,QAAOK,IAAA,KAAK,iBAAL,gBAAAA,EAAmB,KAAK,MAAM,KAAK,CAAC,KAE3GJ,KAAA,QAAAA,EAAwB,UAEnBK,IAAAH,EAAA,MAAAf,CAAA,MAAA,QAAAkB,EAAsB,KAAK,YAAY;AAAA,MACxC,MAAM;AAAA,QACF,UAAU,KAAK,SAAS,KAAK,0BAA0B;AAAA,QACvD,SAAS,KAAK,SAAS,KAAK,iCAAiC;AAAA,MACjE;AAAA,IAAA;AAAA,EAER;AAAA,EAES,SAAS;;AACP,WAAAC;AAAA,2CAC4B,KAAK,SAAS,MAAKR,IAAA,KAAK,iBAAL,QAAAA,EAAmB,KAAK,SAAS,+BAA+B,gCAAgC,CAAC;AAAA,mBAC5IG,IAAA,KAAK,iBAAL,QAAAA,EAAmB,KAAK,SACzBK;AAAA,wDACsC,KAAK,wBAAwB,WAAW,MAAM,KAAK,SAAS,EAAK,CAAC;AAAA;AAAA;AAAA;AAAA,0DAIhE,KAAK,qBAAqB,WAAW,MAAM,KAAK,SAAS,EAAI,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKpGA;AAAA,wDACoC,KAAK,qBAAqB,WAAW,MAAM,KAAK,SAAS,EAAI,CAAC;AAAA;AAAA;AAAA;AAAA,iBAIpG;AAAA,qCACmB,KAAK,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnD;AACJ;AAnFInB,IAAA,oBAAA,QAAA;AACAC,IAAA,oBAAA,QAAA;AAeAmB,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,IAAO;AAAA,GAnBbnB,EAoBjB,WAAA,gBAAA,CAAA;AAGAkB,EAAA;AAAA,EADCC,EAAS,EAAE,WAAW,IAAO;AAAA,GAtBbnB,EAuBjB,WAAA,QAAA,CAAA;AAGQkB,EAAA;AAAA,EADPE,EAAM;AAAA,GAzBUpB,EA0BT,WAAA,yBAAA,CAAA;AAGAkB,EAAA;AAAA,EADPE,EAAM;AAAA,GA5BUpB,EA6BT,WAAA,4BAAA,CAAA;AA7BSA,IAArBkB,EAAA;AAAA,EADCG,EAAc,gDAAgD;AAAA,GAC1CrB,CAAA;"} \ No newline at end of file diff --git a/src/Our.Umbraco.FullTextSearch/wwwroot/umbraco-package.json b/src/Our.Umbraco.FullTextSearch/wwwroot/umbraco-package.json index 3e52059..3b40fba 100644 --- a/src/Our.Umbraco.FullTextSearch/wwwroot/umbraco-package.json +++ b/src/Our.Umbraco.FullTextSearch/wwwroot/umbraco-package.json @@ -1,7 +1,7 @@ { "$schema": "../umbraco-package-schema.json", "name": "Our.Umbraco.FullTextSearch", - "version": "5.0.0-alpha002", + "version": "5.0.0", "extensions": [ { "type": "entryPoint",