@xwiki/cristal-sharedworker-impl 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/dist/assets/worker-89Qy0euM.js +57 -0
- package/dist/assets/worker-89Qy0euM.js.map +1 -0
- package/dist/components/defaultQueueWorker.d.ts +1 -1
- package/dist/components/worker.d.ts +1 -1
- package/dist/index.es.js +10 -10
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +22 -17
- package/src/components/componentsInit.ts +2 -2
- package/src/components/defaultQueueWorker.ts +10 -9
- package/src/components/worker.ts +16 -9
- package/src/components/workerCristalApp.ts +1 -1
- package/tsconfig.json +17 -8
- package/vitest.config.ts +25 -0
- package/dist/assets/worker-DhHDiwPg.js +0 -47
- package/dist/assets/worker-DhHDiwPg.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { QueueWorker } from '@xwiki/cristal-sharedworker-api';
|
|
2
1
|
import { CristalApp, Logger } from '@xwiki/cristal-api';
|
|
2
|
+
import { QueueWorker } from '@xwiki/cristal-sharedworker-api';
|
|
3
3
|
export default class DefaultQueueWorker implements QueueWorker {
|
|
4
4
|
private workerInstance;
|
|
5
5
|
private cristalApp;
|
package/dist/index.es.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
3
|
-
import {
|
|
1
|
+
import { name as d } from "@xwiki/cristal-document-api";
|
|
2
|
+
import * as i from "comlink";
|
|
3
|
+
import { injectable as g, inject as c } from "inversify";
|
|
4
4
|
function h(e) {
|
|
5
5
|
return new SharedWorker(
|
|
6
|
-
"/assets/worker-
|
|
6
|
+
"/assets/worker-89Qy0euM.js",
|
|
7
7
|
{
|
|
8
8
|
name: e == null ? void 0 : e.name
|
|
9
9
|
}
|
|
@@ -23,7 +23,7 @@ let l = class {
|
|
|
23
23
|
this.logger.debug(
|
|
24
24
|
"Received callback that new document has been loaded",
|
|
25
25
|
e
|
|
26
|
-
), this.cristalApp.getContainer().get(
|
|
26
|
+
), this.cristalApp.getContainer().get(d).refreshCurrentDocument(), this.logger.debug(
|
|
27
27
|
"Done callback that new document has been loaded",
|
|
28
28
|
e
|
|
29
29
|
);
|
|
@@ -37,10 +37,10 @@ let l = class {
|
|
|
37
37
|
const e = new h({
|
|
38
38
|
name: "cristal-sharedworker"
|
|
39
39
|
});
|
|
40
|
-
this.workerInstance =
|
|
40
|
+
this.workerInstance = i.wrap(e.port);
|
|
41
41
|
const r = this;
|
|
42
42
|
this.workerInstance.setPageLoadedCallback(
|
|
43
|
-
|
|
43
|
+
i.proxy(function(t) {
|
|
44
44
|
r.pageLoaded(t);
|
|
45
45
|
})
|
|
46
46
|
), console.debug("Worker initialized", this.workerInstance);
|
|
@@ -69,9 +69,9 @@ let l = class {
|
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
71
|
l = m([
|
|
72
|
-
|
|
73
|
-
u(0,
|
|
74
|
-
u(1,
|
|
72
|
+
g(),
|
|
73
|
+
u(0, c("Logger")),
|
|
74
|
+
u(1, c("CristalApp"))
|
|
75
75
|
], l);
|
|
76
76
|
class I {
|
|
77
77
|
constructor(r) {
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/components/defaultQueueWorker.ts","../src/components/componentsInit.ts"],"sourcesContent":["/*\n * See the LICENSE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n */\n\nimport
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/components/defaultQueueWorker.ts","../src/components/componentsInit.ts"],"sourcesContent":["/*\n * See the LICENSE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n */\n\nimport Worker from \"./worker?sharedworker\";\nimport { name as documentServiceName } from \"@xwiki/cristal-document-api\";\nimport * as Comlink from \"comlink\";\nimport { inject, injectable } from \"inversify\";\nimport type { CristalApp, Logger } from \"@xwiki/cristal-api\";\nimport type { DocumentService } from \"@xwiki/cristal-document-api\";\nimport type { MyWorker, QueueWorker } from \"@xwiki/cristal-sharedworker-api\";\n\n@injectable()\nexport default class DefaultQueueWorker implements QueueWorker {\n // TODO remove use of any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private workerInstance: any;\n private cristalApp: CristalApp;\n private logger: Logger;\n\n public constructor(\n @inject<Logger>(\"Logger\") logger: Logger,\n @inject<CristalApp>(\"CristalApp\") cristalApp: CristalApp,\n ) {\n this.initialize();\n this.logger = logger;\n this.cristalApp = cristalApp;\n }\n\n public pageLoaded(page: string): void {\n try {\n this.logger.debug(\n \"Received callback that new document has been loaded\",\n page,\n );\n // We need to access the DocumentService lasily as otherwise the\n // internal pinia instance is initialized too early.\n const documentService = this.cristalApp\n .getContainer()\n .get<DocumentService>(documentServiceName);\n documentService.refreshCurrentDocument();\n\n this.logger.debug(\n \"Done callback that new document has been loaded\",\n page,\n );\n } catch (e) {\n this.logger.error(\"Error calling loadPage\", e);\n }\n }\n\n public initialize(): void {\n try {\n if (this.workerInstance == null) {\n // this.workerInstance = new ComlinkWorker<typeof import('./worker')>(new URL('./worker',\n // import.meta.url), {/* normal Worker options*/})\n const sworker = new Worker({\n name: \"cristal-sharedworker\",\n });\n this.workerInstance = Comlink.wrap<MyWorker>(sworker.port);\n // TODO get rid of aliasing\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n this.workerInstance.setPageLoadedCallback(\n Comlink.proxy(function (page: string) {\n that.pageLoaded(page);\n }),\n );\n\n console.debug(\"Worker initialized\", this.workerInstance);\n } else {\n console.debug(\"Already initialized\");\n }\n } catch (e) {\n console.error(\"Failed to initialize shared worker\", e);\n }\n }\n\n public getStatus(): boolean {\n if (this.workerInstance != null) {\n console.log(\"workerInstance is ready\");\n return true;\n } else {\n console.log(\"workerInstance is null. Cannot call\");\n return false;\n }\n }\n\n public async increment(): Promise<number> {\n if (this.workerInstance == null) {\n console.log(\"workerInstance is null. Cannot call\");\n return -1;\n } else {\n const result = await this.workerInstance.add(1);\n console.log(\"Results from shared worker: \", result);\n return result;\n }\n }\n\n public async addToQueue(page: string): Promise<void> {\n console.log(\"worker Calling addToQueue\", page);\n if (this.workerInstance != null) {\n await this.workerInstance.addToQueue(page);\n } else {\n console.log(\"workerInstance is null. Cannot call\");\n }\n }\n\n public async getQueueSize(): Promise<number> {\n console.log(\"worker Calling getQueueSize\");\n if (this.workerInstance == null) {\n return -1;\n } else {\n return await this.workerInstance.getQueueSize();\n }\n }\n}\n","/*\n * See the LICENSE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n */\n\nimport DefaultQueueWorker from \"./defaultQueueWorker\";\nimport type { QueueWorker } from \"@xwiki/cristal-sharedworker-api\";\nimport type { Container } from \"inversify\";\n\nexport default class ComponentInit {\n constructor(container: Container) {\n container.bind<QueueWorker>(\"QueueWorker\").to(DefaultQueueWorker);\n }\n}\n"],"names":["DefaultQueueWorker","logger","cristalApp","page","documentServiceName","e","sworker","Worker","Comlink","that","result","__decorateClass","injectable","__decorateParam","ComponentInit","container"],"mappings":";;;;;;;;;;;;;;;;AA6BA,IAAqBA,IAArB,MAA+D;AAAA,EAOtD,YACqBC,GACQC,GAClC;AACA,SAAK,WAAW,GAChB,KAAK,SAASD,GACd,KAAK,aAAaC;AAAA,EAAA;AAAA,EAGb,WAAWC,GAAoB;AAChC,QAAA;AACF,WAAK,OAAO;AAAA,QACV;AAAA,QACAA;AAAA,MACF,GAGwB,KAAK,WAC1B,aAAa,EACb,IAAqBC,CAAmB,EAC3B,uBAAuB,GAEvC,KAAK,OAAO;AAAA,QACV;AAAA,QACAD;AAAA,MACF;AAAA,aACOE,GAAG;AACL,WAAA,OAAO,MAAM,0BAA0BA,CAAC;AAAA,IAAA;AAAA,EAC/C;AAAA,EAGK,aAAmB;AACpB,QAAA;AACE,UAAA,KAAK,kBAAkB,MAAM;AAGzB,cAAAC,IAAU,IAAIC,EAAO;AAAA,UACzB,MAAM;AAAA,QAAA,CACP;AACD,aAAK,iBAAiBC,EAAQ,KAAeF,EAAQ,IAAI;AAGzD,cAAMG,IAAO;AACb,aAAK,eAAe;AAAA,UAClBD,EAAQ,MAAM,SAAUL,GAAc;AACpC,YAAAM,EAAK,WAAWN,CAAI;AAAA,UACrB,CAAA;AAAA,QACH,GAEQ,QAAA,MAAM,sBAAsB,KAAK,cAAc;AAAA,MAAA;AAEvD,gBAAQ,MAAM,qBAAqB;AAAA,aAE9B,GAAG;AACF,cAAA,MAAM,sCAAsC,CAAC;AAAA,IAAA;AAAA,EACvD;AAAA,EAGK,YAAqB;AACtB,WAAA,KAAK,kBAAkB,QACzB,QAAQ,IAAI,yBAAyB,GAC9B,OAEP,QAAQ,IAAI,qCAAqC,GAC1C;AAAA,EACT;AAAA,EAGF,MAAa,YAA6B;AACpC,QAAA,KAAK,kBAAkB;AACzB,qBAAQ,IAAI,qCAAqC,GAC1C;AACF;AACL,YAAMO,IAAS,MAAM,KAAK,eAAe,IAAI,CAAC;AACtC,qBAAA,IAAI,gCAAgCA,CAAM,GAC3CA;AAAA,IAAA;AAAA,EACT;AAAA,EAGF,MAAa,WAAWP,GAA6B;AAC3C,YAAA,IAAI,6BAA6BA,CAAI,GACzC,KAAK,kBAAkB,OACnB,MAAA,KAAK,eAAe,WAAWA,CAAI,IAEzC,QAAQ,IAAI,qCAAqC;AAAA,EACnD;AAAA,EAGF,MAAa,eAAgC;AAEvC,WADJ,QAAQ,IAAI,6BAA6B,GACrC,KAAK,kBAAkB,OAClB,KAEA,MAAM,KAAK,eAAe,aAAa;AAAA,EAChD;AAEJ;AAvGqBH,IAArBW,EAAA;AAAA,EADCC,EAAW;AAAA,EASPC,OAAe,QAAQ,CAAA;AAAA,EACvBA,OAAmB,YAAY,CAAA;AAAA,GATfb,CAAA;ACLrB,MAAqBc,EAAc;AAAA,EACjC,YAAYC,GAAsB;AAChC,IAAAA,EAAU,KAAkB,aAAa,EAAE,GAAGf,CAAkB;AAAA,EAAA;AAEpE;"}
|
package/dist/index.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(n,
|
|
1
|
+
(function(n,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("@xwiki/cristal-document-api"),require("comlink"),require("inversify")):typeof define=="function"&&define.amd?define(["exports","@xwiki/cristal-document-api","comlink","inversify"],a):(n=typeof globalThis<"u"?globalThis:n||self,a(n.cristal_impl={},n.cristalDocumentApi,n.Comlink,n.inversify))})(this,function(n,a,g,s){"use strict";function h(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const d=h(g);function w(e){return new SharedWorker("/assets/worker-89Qy0euM.js",{name:e==null?void 0:e.name})}var k=Object.defineProperty,p=Object.getOwnPropertyDescriptor,m=(e,r,t,o)=>{for(var i=o>1?void 0:o?p(r,t):r,c=e.length-1,u;c>=0;c--)(u=e[c])&&(i=(o?u(r,t,i):u(i))||i);return o&&i&&k(r,t,i),i},f=(e,r)=>(t,o)=>r(t,o,e);let l=class{constructor(e,r){this.initialize(),this.logger=e,this.cristalApp=r}pageLoaded(e){try{this.logger.debug("Received callback that new document has been loaded",e),this.cristalApp.getContainer().get(a.name).refreshCurrentDocument(),this.logger.debug("Done callback that new document has been loaded",e)}catch(r){this.logger.error("Error calling loadPage",r)}}initialize(){try{if(this.workerInstance==null){const e=new w({name:"cristal-sharedworker"});this.workerInstance=d.wrap(e.port);const r=this;this.workerInstance.setPageLoadedCallback(d.proxy(function(t){r.pageLoaded(t)})),console.debug("Worker initialized",this.workerInstance)}else console.debug("Already initialized")}catch(e){console.error("Failed to initialize shared worker",e)}}getStatus(){return this.workerInstance!=null?(console.log("workerInstance is ready"),!0):(console.log("workerInstance is null. Cannot call"),!1)}async increment(){if(this.workerInstance==null)return console.log("workerInstance is null. Cannot call"),-1;{const e=await this.workerInstance.add(1);return console.log("Results from shared worker: ",e),e}}async addToQueue(e){console.log("worker Calling addToQueue",e),this.workerInstance!=null?await this.workerInstance.addToQueue(e):console.log("workerInstance is null. Cannot call")}async getQueueSize(){return console.log("worker Calling getQueueSize"),this.workerInstance==null?-1:await this.workerInstance.getQueueSize()}};l=m([s.injectable(),f(0,s.inject("Logger")),f(1,s.inject("CristalApp"))],l);class b{constructor(r){r.bind("QueueWorker").to(l)}}n.ComponentInit=b,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
|
|
2
2
|
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/components/defaultQueueWorker.ts","../src/components/componentsInit.ts"],"sourcesContent":["/*\n * See the LICENSE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n */\n\nimport
|
|
1
|
+
{"version":3,"file":"index.umd.js","sources":["../src/components/defaultQueueWorker.ts","../src/components/componentsInit.ts"],"sourcesContent":["/*\n * See the LICENSE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n */\n\nimport Worker from \"./worker?sharedworker\";\nimport { name as documentServiceName } from \"@xwiki/cristal-document-api\";\nimport * as Comlink from \"comlink\";\nimport { inject, injectable } from \"inversify\";\nimport type { CristalApp, Logger } from \"@xwiki/cristal-api\";\nimport type { DocumentService } from \"@xwiki/cristal-document-api\";\nimport type { MyWorker, QueueWorker } from \"@xwiki/cristal-sharedworker-api\";\n\n@injectable()\nexport default class DefaultQueueWorker implements QueueWorker {\n // TODO remove use of any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private workerInstance: any;\n private cristalApp: CristalApp;\n private logger: Logger;\n\n public constructor(\n @inject<Logger>(\"Logger\") logger: Logger,\n @inject<CristalApp>(\"CristalApp\") cristalApp: CristalApp,\n ) {\n this.initialize();\n this.logger = logger;\n this.cristalApp = cristalApp;\n }\n\n public pageLoaded(page: string): void {\n try {\n this.logger.debug(\n \"Received callback that new document has been loaded\",\n page,\n );\n // We need to access the DocumentService lasily as otherwise the\n // internal pinia instance is initialized too early.\n const documentService = this.cristalApp\n .getContainer()\n .get<DocumentService>(documentServiceName);\n documentService.refreshCurrentDocument();\n\n this.logger.debug(\n \"Done callback that new document has been loaded\",\n page,\n );\n } catch (e) {\n this.logger.error(\"Error calling loadPage\", e);\n }\n }\n\n public initialize(): void {\n try {\n if (this.workerInstance == null) {\n // this.workerInstance = new ComlinkWorker<typeof import('./worker')>(new URL('./worker',\n // import.meta.url), {/* normal Worker options*/})\n const sworker = new Worker({\n name: \"cristal-sharedworker\",\n });\n this.workerInstance = Comlink.wrap<MyWorker>(sworker.port);\n // TODO get rid of aliasing\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n this.workerInstance.setPageLoadedCallback(\n Comlink.proxy(function (page: string) {\n that.pageLoaded(page);\n }),\n );\n\n console.debug(\"Worker initialized\", this.workerInstance);\n } else {\n console.debug(\"Already initialized\");\n }\n } catch (e) {\n console.error(\"Failed to initialize shared worker\", e);\n }\n }\n\n public getStatus(): boolean {\n if (this.workerInstance != null) {\n console.log(\"workerInstance is ready\");\n return true;\n } else {\n console.log(\"workerInstance is null. Cannot call\");\n return false;\n }\n }\n\n public async increment(): Promise<number> {\n if (this.workerInstance == null) {\n console.log(\"workerInstance is null. Cannot call\");\n return -1;\n } else {\n const result = await this.workerInstance.add(1);\n console.log(\"Results from shared worker: \", result);\n return result;\n }\n }\n\n public async addToQueue(page: string): Promise<void> {\n console.log(\"worker Calling addToQueue\", page);\n if (this.workerInstance != null) {\n await this.workerInstance.addToQueue(page);\n } else {\n console.log(\"workerInstance is null. Cannot call\");\n }\n }\n\n public async getQueueSize(): Promise<number> {\n console.log(\"worker Calling getQueueSize\");\n if (this.workerInstance == null) {\n return -1;\n } else {\n return await this.workerInstance.getQueueSize();\n }\n }\n}\n","/*\n * See the LICENSE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n */\n\nimport DefaultQueueWorker from \"./defaultQueueWorker\";\nimport type { QueueWorker } from \"@xwiki/cristal-sharedworker-api\";\nimport type { Container } from \"inversify\";\n\nexport default class ComponentInit {\n constructor(container: Container) {\n container.bind<QueueWorker>(\"QueueWorker\").to(DefaultQueueWorker);\n }\n}\n"],"names":["DefaultQueueWorker","logger","cristalApp","page","documentServiceName","e","sworker","Worker","Comlink","that","result","__decorateClass","injectable","__decorateParam","ComponentInit","container"],"mappings":"4+BA6BA,IAAqBA,EAArB,KAA+D,CAOtD,YACqBC,EACQC,EAClC,CACA,KAAK,WAAW,EAChB,KAAK,OAASD,EACd,KAAK,WAAaC,CAAA,CAGb,WAAWC,EAAoB,CAChC,GAAA,CACF,KAAK,OAAO,MACV,sDACAA,CACF,EAGwB,KAAK,WAC1B,aAAa,EACb,IAAqBC,MAAmB,EAC3B,uBAAuB,EAEvC,KAAK,OAAO,MACV,kDACAD,CACF,QACOE,EAAG,CACL,KAAA,OAAO,MAAM,yBAA0BA,CAAC,CAAA,CAC/C,CAGK,YAAmB,CACpB,GAAA,CACE,GAAA,KAAK,gBAAkB,KAAM,CAGzB,MAAAC,EAAU,IAAIC,EAAO,CACzB,KAAM,sBAAA,CACP,EACD,KAAK,eAAiBC,EAAQ,KAAeF,EAAQ,IAAI,EAGzD,MAAMG,EAAO,KACb,KAAK,eAAe,sBAClBD,EAAQ,MAAM,SAAUL,EAAc,CACpCM,EAAK,WAAWN,CAAI,CACrB,CAAA,CACH,EAEQ,QAAA,MAAM,qBAAsB,KAAK,cAAc,CAAA,MAEvD,QAAQ,MAAM,qBAAqB,QAE9B,EAAG,CACF,QAAA,MAAM,qCAAsC,CAAC,CAAA,CACvD,CAGK,WAAqB,CACtB,OAAA,KAAK,gBAAkB,MACzB,QAAQ,IAAI,yBAAyB,EAC9B,KAEP,QAAQ,IAAI,qCAAqC,EAC1C,GACT,CAGF,MAAa,WAA6B,CACpC,GAAA,KAAK,gBAAkB,KACzB,eAAQ,IAAI,qCAAqC,EAC1C,GACF,CACL,MAAMO,EAAS,MAAM,KAAK,eAAe,IAAI,CAAC,EACtC,eAAA,IAAI,+BAAgCA,CAAM,EAC3CA,CAAA,CACT,CAGF,MAAa,WAAWP,EAA6B,CAC3C,QAAA,IAAI,4BAA6BA,CAAI,EACzC,KAAK,gBAAkB,KACnB,MAAA,KAAK,eAAe,WAAWA,CAAI,EAEzC,QAAQ,IAAI,qCAAqC,CACnD,CAGF,MAAa,cAAgC,CAEvC,OADJ,QAAQ,IAAI,6BAA6B,EACrC,KAAK,gBAAkB,KAClB,GAEA,MAAM,KAAK,eAAe,aAAa,CAChD,CAEJ,EAvGqBH,EAArBW,EAAA,CADCC,aAAW,EASPC,aAAe,QAAQ,CAAA,EACvBA,aAAmB,YAAY,CAAA,CAAA,EATfb,CAAA,ECLrB,MAAqBc,CAAc,CACjC,YAAYC,EAAsB,CAChCA,EAAU,KAAkB,aAAa,EAAE,GAAGf,CAAkB,CAAA,CAEpE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xwiki/cristal-sharedworker-impl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"license": "LGPL 2.1",
|
|
5
5
|
"author": "XWiki Org Community <contact@xwiki.org>",
|
|
6
6
|
"homepage": "https://cristal.xwiki.org/",
|
|
@@ -23,28 +23,33 @@
|
|
|
23
23
|
"main": "./dist/index.es.js",
|
|
24
24
|
"types": "./dist/index.d.ts",
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"comlink": "4.4.
|
|
27
|
-
"inversify": "6.0
|
|
28
|
-
"
|
|
29
|
-
"vue
|
|
30
|
-
"
|
|
31
|
-
"@xwiki/cristal-
|
|
32
|
-
"@xwiki/cristal-backend-github": "0.
|
|
33
|
-
"@xwiki/cristal-
|
|
34
|
-
"@xwiki/cristal-backend-dexie": "0.
|
|
35
|
-
"@xwiki/cristal-
|
|
36
|
-
"@xwiki/cristal-
|
|
37
|
-
"@xwiki/cristal-
|
|
38
|
-
"@xwiki/cristal-
|
|
26
|
+
"comlink": "4.4.2",
|
|
27
|
+
"inversify": "6.2.0",
|
|
28
|
+
"reflect-metadata": "0.2.2",
|
|
29
|
+
"vue": "3.5.13",
|
|
30
|
+
"vue-router": "4.5.0",
|
|
31
|
+
"@xwiki/cristal-api": "0.13.0",
|
|
32
|
+
"@xwiki/cristal-backend-github": "0.13.0",
|
|
33
|
+
"@xwiki/cristal-authentication-default": "0.13.0",
|
|
34
|
+
"@xwiki/cristal-backend-dexie": "0.13.0",
|
|
35
|
+
"@xwiki/cristal-extension-manager": "0.13.0",
|
|
36
|
+
"@xwiki/cristal-backend-xwiki": "0.13.0",
|
|
37
|
+
"@xwiki/cristal-document-api": "0.13.0",
|
|
38
|
+
"@xwiki/cristal-backend-nextcloud": "0.13.0",
|
|
39
|
+
"@xwiki/cristal-sharedworker-api": "0.13.0"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"
|
|
42
|
-
"
|
|
42
|
+
"typescript": "5.6.3",
|
|
43
|
+
"vite": "6.0.3",
|
|
44
|
+
"vite-plugin-comlink": "5.1.0",
|
|
45
|
+
"vue-tsc": "2.1.10",
|
|
46
|
+
"@xwiki/cristal-dev-config": "0.13.0"
|
|
43
47
|
},
|
|
44
48
|
"scripts": {
|
|
45
49
|
"build": "pnpm compile",
|
|
46
50
|
"clean": "rimraf dist",
|
|
47
51
|
"compile": "vue-tsc --project tsconfig.json && vite build",
|
|
48
|
-
"lint": "eslint \"./src/**/*.{ts,tsx}\" --max-warnings=0"
|
|
52
|
+
"lint": "eslint \"./src/**/*.{ts,tsx,vue}\" --max-warnings=0",
|
|
53
|
+
"test": "vitest --run"
|
|
49
54
|
}
|
|
50
55
|
}
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
import type { Container } from "inversify";
|
|
22
|
-
import type { QueueWorker } from "@xwiki/cristal-sharedworker-api";
|
|
23
21
|
import DefaultQueueWorker from "./defaultQueueWorker";
|
|
22
|
+
import type { QueueWorker } from "@xwiki/cristal-sharedworker-api";
|
|
23
|
+
import type { Container } from "inversify";
|
|
24
24
|
|
|
25
25
|
export default class ComponentInit {
|
|
26
26
|
constructor(container: Container) {
|
|
@@ -18,15 +18,13 @@
|
|
|
18
18
|
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
+
import Worker from "./worker?sharedworker";
|
|
22
|
+
import { name as documentServiceName } from "@xwiki/cristal-document-api";
|
|
23
|
+
import * as Comlink from "comlink";
|
|
21
24
|
import { inject, injectable } from "inversify";
|
|
25
|
+
import type { CristalApp, Logger } from "@xwiki/cristal-api";
|
|
26
|
+
import type { DocumentService } from "@xwiki/cristal-document-api";
|
|
22
27
|
import type { MyWorker, QueueWorker } from "@xwiki/cristal-sharedworker-api";
|
|
23
|
-
import * as Comlink from "comlink";
|
|
24
|
-
import Worker from "./worker?sharedworker";
|
|
25
|
-
import { type CristalApp, type Logger } from "@xwiki/cristal-api";
|
|
26
|
-
import {
|
|
27
|
-
type DocumentService,
|
|
28
|
-
name as documentServiceName,
|
|
29
|
-
} from "@xwiki/cristal-document-api";
|
|
30
28
|
|
|
31
29
|
@injectable()
|
|
32
30
|
export default class DefaultQueueWorker implements QueueWorker {
|
|
@@ -126,7 +124,10 @@ export default class DefaultQueueWorker implements QueueWorker {
|
|
|
126
124
|
|
|
127
125
|
public async getQueueSize(): Promise<number> {
|
|
128
126
|
console.log("worker Calling getQueueSize");
|
|
129
|
-
if (this.workerInstance == null)
|
|
130
|
-
|
|
127
|
+
if (this.workerInstance == null) {
|
|
128
|
+
return -1;
|
|
129
|
+
} else {
|
|
130
|
+
return await this.workerInstance.getQueueSize();
|
|
131
|
+
}
|
|
131
132
|
}
|
|
132
133
|
}
|
package/src/components/worker.ts
CHANGED
|
@@ -18,19 +18,20 @@
|
|
|
18
18
|
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
21
|
+
import "reflect-metadata";
|
|
22
|
+
import { WorkerCristalApp } from "./workerCristalApp";
|
|
23
|
+
import WorkerQueueWorker from "./workerQueueWorker";
|
|
24
|
+
import { CristalApp, WrappingStorage } from "@xwiki/cristal-api";
|
|
25
|
+
import { ComponentInit as AuthenticationDefaultComponentInit } from "@xwiki/cristal-authentication-default";
|
|
26
26
|
import { ComponentInit as DexieBackendComponentInit } from "@xwiki/cristal-backend-dexie";
|
|
27
27
|
import { ComponentInit as GithubBackendComponentInit } from "@xwiki/cristal-backend-github";
|
|
28
28
|
import { ComponentInit as NextcloudBackendComponentInit } from "@xwiki/cristal-backend-nextcloud";
|
|
29
29
|
import { ComponentInit as XWikiBackendComponentInit } from "@xwiki/cristal-backend-xwiki";
|
|
30
|
-
import {
|
|
30
|
+
import { CristalLoader } from "@xwiki/cristal-extension-manager";
|
|
31
|
+
import * as Comlink from "comlink";
|
|
32
|
+
import type { WikiConfig } from "@xwiki/cristal-api";
|
|
33
|
+
import type { MyWorker, QueueWorker } from "@xwiki/cristal-sharedworker-api";
|
|
31
34
|
import type { Container } from "inversify";
|
|
32
|
-
import { WorkerCristalApp } from "./workerCristalApp";
|
|
33
|
-
import WorkerQueueWorker from "./workerQueueWorker";
|
|
34
35
|
|
|
35
36
|
export class Worker implements MyWorker {
|
|
36
37
|
private currentNumber: number = 0;
|
|
@@ -88,6 +89,8 @@ export class Worker implements MyWorker {
|
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
// TODO: reduce the number of statements in the following method and reactivate the disabled eslint rule.
|
|
93
|
+
// eslint-disable-next-line max-statements
|
|
91
94
|
public async handleQueueItem(page: string): Promise<void> {
|
|
92
95
|
console.log("Handling queue item code ready to process", page);
|
|
93
96
|
|
|
@@ -141,6 +144,8 @@ export class Worker implements MyWorker {
|
|
|
141
144
|
return this.queue.length;
|
|
142
145
|
}
|
|
143
146
|
|
|
147
|
+
// TODO: reduce the number of statements in the following method and reactivate the disabled eslint rule.
|
|
148
|
+
// eslint-disable-next-line max-statements
|
|
144
149
|
public getWikiConfig(configName: string): WikiConfig | undefined {
|
|
145
150
|
const wikiConfigObject = this.configMap.get(configName);
|
|
146
151
|
if (wikiConfigObject == null) {
|
|
@@ -190,6 +195,8 @@ export class Worker implements MyWorker {
|
|
|
190
195
|
}
|
|
191
196
|
}
|
|
192
197
|
|
|
198
|
+
// TODO: reduce the number of statements in the following method and reactivate the disabled eslint rule.
|
|
199
|
+
// eslint-disable-next-line max-statements
|
|
193
200
|
public async initialize(): Promise<void> {
|
|
194
201
|
console.log("Starting initialize");
|
|
195
202
|
const extensionList: Array<string> = ["storage"];
|
|
@@ -218,7 +225,7 @@ export class Worker implements MyWorker {
|
|
|
218
225
|
new GithubBackendComponentInit(cristalLoader.container);
|
|
219
226
|
new NextcloudBackendComponentInit(cristalLoader.container);
|
|
220
227
|
new XWikiBackendComponentInit(cristalLoader.container);
|
|
221
|
-
new
|
|
228
|
+
new AuthenticationDefaultComponentInit(cristalLoader.container);
|
|
222
229
|
console.log("Loading storage components");
|
|
223
230
|
this.initialized = true;
|
|
224
231
|
console.log("Finished initialize");
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
+
import { injectable } from "inversify";
|
|
21
22
|
import type {
|
|
22
23
|
CristalApp as CristalApp,
|
|
23
24
|
Logger,
|
|
@@ -27,7 +28,6 @@ import type {
|
|
|
27
28
|
WikiConfig,
|
|
28
29
|
} from "@xwiki/cristal-api";
|
|
29
30
|
import type { Container } from "inversify";
|
|
30
|
-
import { injectable } from "inversify";
|
|
31
31
|
import type { App, Component } from "vue";
|
|
32
32
|
import type { Router } from "vue-router";
|
|
33
33
|
|
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"rootDir": "src",
|
|
4
|
+
"outDir": "dist",
|
|
5
|
+
"resolveJsonModule": true,
|
|
6
|
+
"types": [
|
|
7
|
+
"vite/client"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"extends": "./../../tsconfig.json",
|
|
11
|
+
"include": [
|
|
12
|
+
"./src/index.ts",
|
|
13
|
+
"./src/**/*"
|
|
14
|
+
],
|
|
15
|
+
"exclude": [
|
|
16
|
+
"**/*.spec.ts",
|
|
17
|
+
"**/*.test.ts"
|
|
18
|
+
]
|
|
10
19
|
}
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* See the LICENSE file distributed with this work for additional
|
|
3
|
+
* information regarding copyright ownership.
|
|
4
|
+
*
|
|
5
|
+
* This is free software; you can redistribute it and/or modify it
|
|
6
|
+
* under the terms of the GNU Lesser General Public License as
|
|
7
|
+
* published by the Free Software Foundation; either version 2.1 of
|
|
8
|
+
* the License, or (at your option) any later version.
|
|
9
|
+
*
|
|
10
|
+
* This software is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
13
|
+
* Lesser General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
16
|
+
* License along with this software; if not, write to the Free
|
|
17
|
+
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
|
18
|
+
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import localConfig from "./vite.config";
|
|
22
|
+
import { mergeConfig } from "vitest/config";
|
|
23
|
+
import defaultConfig from "@xwiki/cristal-dev-config/vitest-vue.config";
|
|
24
|
+
|
|
25
|
+
export default mergeConfig(defaultConfig, localConfig);
|