neo.mjs 4.3.11 → 4.3.12
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/apps/ServiceWorker.mjs +5 -1
- package/buildScripts/injectPackageVersion.mjs +29 -6
- package/examples/ServiceWorker.mjs +5 -1
- package/package.json +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/main/addon/ServiceWorker.mjs +10 -1
- package/src/worker/Manager.mjs +10 -1
- package/src/worker/ServiceBase.mjs +8 -2
package/apps/ServiceWorker.mjs
CHANGED
@@ -15,15 +15,19 @@ const
|
|
15
15
|
neoPath = insideNeo ? './' : './node_modules/neo.mjs/',
|
16
16
|
programName = `${packageJson.name} inject-package-version`;
|
17
17
|
|
18
|
-
let startDate
|
19
|
-
configPath
|
20
|
-
contentArray
|
21
|
-
i
|
22
|
-
len
|
23
|
-
|
18
|
+
let startDate = new Date(),
|
19
|
+
configPath = path.join(__dirname, 'src/DefaultConfig.mjs'),
|
20
|
+
contentArray = fs.readFileSync(configPath).toString().split(os.EOL),
|
21
|
+
i = 0,
|
22
|
+
len = contentArray.length,
|
23
|
+
serviceWorkerFolders = ['apps'],
|
24
|
+
versionString = `'${packageJson.version}'`,
|
25
|
+
serviceContentArray, serviceWorkerPath
|
24
26
|
|
25
27
|
if (!insideNeo) {
|
26
28
|
// todo
|
29
|
+
} else {
|
30
|
+
serviceWorkerFolders.push('examples');
|
27
31
|
}
|
28
32
|
|
29
33
|
for (; i < len; i++) {
|
@@ -37,6 +41,25 @@ for (; i < len; i++) {
|
|
37
41
|
|
38
42
|
fs.writeFileSync(configPath, contentArray.join(os.EOL));
|
39
43
|
|
44
|
+
serviceWorkerFolders.forEach(folder => {
|
45
|
+
serviceWorkerPath = path.join(__dirname, folder, 'ServiceWorker.mjs');
|
46
|
+
serviceContentArray = fs.readFileSync(serviceWorkerPath).toString().split(os.EOL);
|
47
|
+
|
48
|
+
i = 0;
|
49
|
+
len = serviceContentArray.length;
|
50
|
+
|
51
|
+
for (; i < len; i++) {
|
52
|
+
if (serviceContentArray[i].includes('version:')) {
|
53
|
+
// we want to update the comment inside ServiceWorker.mjs as well
|
54
|
+
serviceContentArray[i - 2] = serviceContentArray[i - 2].replace(/'\d.+'/, versionString);
|
55
|
+
serviceContentArray[i] = serviceContentArray[i] .replace(/'\d.+'/, versionString);
|
56
|
+
break;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
fs.writeFileSync(serviceWorkerPath, serviceContentArray.join(os.EOL));
|
61
|
+
});
|
62
|
+
|
40
63
|
const processTime = (Math.round((new Date - startDate) * 100) / 100000).toFixed(2);
|
41
64
|
console.log(`\nTotal time for ${programName}: ${processTime}s`);
|
42
65
|
|
package/package.json
CHANGED
package/src/DefaultConfig.mjs
CHANGED
@@ -229,12 +229,12 @@ const DefaultConfig = {
|
|
229
229
|
useVdomWorker: true,
|
230
230
|
/**
|
231
231
|
* buildScripts/injectPackageVersion.mjs will update this value
|
232
|
-
* @default '4.3.
|
232
|
+
* @default '4.3.11'
|
233
233
|
* @memberOf! module:Neo
|
234
234
|
* @name config.version
|
235
235
|
* @type String
|
236
236
|
*/
|
237
|
-
version: '4.3.
|
237
|
+
version: '4.3.11'
|
238
238
|
};
|
239
239
|
|
240
240
|
Object.assign(DefaultConfig, {
|
@@ -42,10 +42,19 @@ class ServiceWorker extends Base {
|
|
42
42
|
serviceWorker.ready.then(() => {
|
43
43
|
serviceWorker.onmessage = WorkerManager.onWorkerMessage.bind(WorkerManager);
|
44
44
|
|
45
|
+
if (!WorkerManager.getWorker('service')) {
|
46
|
+
/*
|
47
|
+
* navigator.serviceWorker.controller can be null in case we load a page for the first time
|
48
|
+
* or in case of a force refresh.
|
49
|
+
* See: https://www.w3.org/TR/service-workers/#navigator-service-worker-controller
|
50
|
+
*/
|
51
|
+
WorkerManager.serviceWorker = registration.active;
|
52
|
+
}
|
53
|
+
|
45
54
|
WorkerManager.sendMessage('service', {
|
46
55
|
action: 'registerNeoConfig',
|
47
56
|
data : config
|
48
|
-
})
|
57
|
+
})
|
49
58
|
});
|
50
59
|
})
|
51
60
|
}
|
package/src/worker/Manager.mjs
CHANGED
@@ -16,6 +16,15 @@ const NeoConfig = Neo.config,
|
|
16
16
|
* @singleton
|
17
17
|
*/
|
18
18
|
class Manager extends Base {
|
19
|
+
/**
|
20
|
+
* navigator.serviceWorker.controller can be null in case we load a page for the first time
|
21
|
+
* or in case of a force refresh.
|
22
|
+
* See: https://www.w3.org/TR/service-workers/#navigator-service-worker-controller
|
23
|
+
* Only in this case main.addon.ServiceWorker will store the active registration once ready here.
|
24
|
+
* @member {ServiceWorker|null} serviceWorker=null
|
25
|
+
*/
|
26
|
+
serviceWorker = null
|
27
|
+
|
19
28
|
static getConfig() {return {
|
20
29
|
/**
|
21
30
|
* @member {String} className='Neo.worker.Manager'
|
@@ -224,7 +233,7 @@ class Manager extends Base {
|
|
224
233
|
*/
|
225
234
|
getWorker(name) {
|
226
235
|
if (name === 'service') {
|
227
|
-
return navigator.serviceWorker?.controller;
|
236
|
+
return navigator.serviceWorker?.controller || this.serviceWorker;
|
228
237
|
}
|
229
238
|
|
230
239
|
return name instanceof Worker ? name : this.workers[name].worker;
|
@@ -250,11 +250,17 @@ class ServiceBase extends Base {
|
|
250
250
|
* @param {Object} msg
|
251
251
|
* @param {ExtendableMessageEvent} event
|
252
252
|
*/
|
253
|
-
onRegisterNeoConfig(msg, event) {
|
253
|
+
async onRegisterNeoConfig(msg, event) {
|
254
|
+
let me = this;
|
255
|
+
|
254
256
|
Neo.config = Neo.config || {};
|
255
257
|
Object.assign(Neo.config, msg.data);
|
256
258
|
|
257
|
-
|
259
|
+
if (me.version !== Neo.config.version) {
|
260
|
+
await me.clearCaches()
|
261
|
+
}
|
262
|
+
|
263
|
+
me.onConnect(event.source);
|
258
264
|
}
|
259
265
|
|
260
266
|
/**
|