neo.mjs 9.6.1 → 9.7.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/{apps/ServiceWorker.mjs → ServiceWorker.mjs} +5 -5
- package/apps/portal/view/home/FooterContainer.mjs +1 -1
- package/buildScripts/injectPackageVersion.mjs +19 -28
- package/buildScripts/webpack/development/webpack.config.worker.mjs +1 -1
- package/buildScripts/webpack/json/build.json +1 -1
- package/package.json +1 -1
- package/src/DefaultConfig.mjs +4 -3
- package/src/Main.mjs +10 -9
- package/src/main/addon/ServiceWorker.mjs +9 -6
- package/src/worker/ServiceBase.mjs +1 -0
- package/examples/ServiceWorker.mjs +0 -35
@@ -1,6 +1,6 @@
|
|
1
|
-
import Neo from '
|
2
|
-
import * as core from '
|
3
|
-
import ServiceBase from '
|
1
|
+
import Neo from './src/Neo.mjs';
|
2
|
+
import * as core from './src/core/_export.mjs';
|
3
|
+
import ServiceBase from './src/worker/ServiceBase.mjs';
|
4
4
|
|
5
5
|
/**
|
6
6
|
* @class Neo.ServiceWorker
|
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
|
|
20
20
|
*/
|
21
21
|
singleton: true,
|
22
22
|
/**
|
23
|
-
* @member {String} version='9.
|
23
|
+
* @member {String} version='9.7.0'
|
24
24
|
*/
|
25
|
-
version: '9.
|
25
|
+
version: '9.7.0'
|
26
26
|
}
|
27
27
|
|
28
28
|
/**
|
@@ -15,20 +15,13 @@ 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
|
-
|
24
|
-
|
25
|
-
serviceContentArray, serviceWorkerPath
|
26
|
-
|
27
|
-
if (!insideNeo) {
|
28
|
-
// todo
|
29
|
-
} else {
|
30
|
-
serviceWorkerFolders.push('examples');
|
31
|
-
}
|
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
|
+
versionString = `'${packageJson.version}'`,
|
24
|
+
serviceContentArray, serviceWorkerPath;
|
32
25
|
|
33
26
|
for (; i < len; i++) {
|
34
27
|
if (contentArray[i].includes('version:')) {
|
@@ -41,24 +34,22 @@ for (; i < len; i++) {
|
|
41
34
|
|
42
35
|
fs.writeFileSync(configPath, contentArray.join(os.EOL));
|
43
36
|
|
44
|
-
|
45
|
-
|
46
|
-
serviceContentArray = fs.readFileSync(serviceWorkerPath).toString().split(os.EOL);
|
37
|
+
serviceWorkerPath = path.join(__dirname, 'ServiceWorker.mjs');
|
38
|
+
serviceContentArray = fs.readFileSync(serviceWorkerPath, 'utf-8').toString().split(os.EOL);
|
47
39
|
|
48
|
-
|
49
|
-
|
40
|
+
i = 0;
|
41
|
+
len = serviceContentArray.length;
|
50
42
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
}
|
43
|
+
for (; i < len; i++) {
|
44
|
+
if (serviceContentArray[i].includes('version:')) {
|
45
|
+
// we want to update the comment inside ServiceWorker.mjs as well
|
46
|
+
serviceContentArray[i - 2] = serviceContentArray[i - 2].replace(/'\d.+'/, versionString);
|
47
|
+
serviceContentArray[i] = serviceContentArray[i] .replace(/'\d.+'/, versionString);
|
48
|
+
break;
|
58
49
|
}
|
50
|
+
}
|
59
51
|
|
60
|
-
|
61
|
-
});
|
52
|
+
fs.writeFileSync(serviceWorkerPath, serviceContentArray.join(os.EOL));
|
62
53
|
|
63
54
|
// Update the version inside the Portal App Footer
|
64
55
|
if (insideNeo) {
|
@@ -15,7 +15,7 @@ export default env => {
|
|
15
15
|
|
16
16
|
if (filenameConfig.workers) {
|
17
17
|
Object.entries(filenameConfig.workers).forEach(([key, value]) => {
|
18
|
-
// Inside a neo workspace, we want to use the SW inside the top level
|
18
|
+
// Inside a neo workspace, we want to use the SW inside the top level folder,
|
19
19
|
// to allow overriding its logic
|
20
20
|
if (key === env.worker) {
|
21
21
|
entry[key] = path.resolve(key === 'service' && !insideNeo ? cwd : neoPath, value.input);
|
package/package.json
CHANGED
package/src/DefaultConfig.mjs
CHANGED
@@ -229,7 +229,8 @@ const DefaultConfig = {
|
|
229
229
|
* True will add the ServiceWorker main thread addon to support caching of assets (PWA)
|
230
230
|
* See: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
|
231
231
|
*
|
232
|
-
* You can also use a string to specify the target environment => 'dist/production'
|
232
|
+
* You can also use a string to specify the target environment => 'dist/production'.
|
233
|
+
* Using 'dist/production' will also use the service worker for 'dist/esm'
|
233
234
|
* @default false
|
234
235
|
* @memberOf! module:Neo
|
235
236
|
* @name config.useServiceWorker
|
@@ -263,12 +264,12 @@ const DefaultConfig = {
|
|
263
264
|
useVdomWorker: true,
|
264
265
|
/**
|
265
266
|
* buildScripts/injectPackageVersion.mjs will update this value
|
266
|
-
* @default '9.
|
267
|
+
* @default '9.7.0'
|
267
268
|
* @memberOf! module:Neo
|
268
269
|
* @name config.version
|
269
270
|
* @type String
|
270
271
|
*/
|
271
|
-
version: '9.
|
272
|
+
version: '9.7.0'
|
272
273
|
};
|
273
274
|
|
274
275
|
Object.assign(DefaultConfig, {
|
package/src/Main.mjs
CHANGED
@@ -243,28 +243,29 @@ class Main extends core.Base {
|
|
243
243
|
*
|
244
244
|
*/
|
245
245
|
async onDomContentLoaded() {
|
246
|
-
let me
|
247
|
-
{config}
|
248
|
-
|
249
|
-
|
246
|
+
let me = this,
|
247
|
+
{config} = Neo,
|
248
|
+
imports = [],
|
249
|
+
{environment, mainThreadAddons, useServiceWorker} = config,
|
250
250
|
modules;
|
251
251
|
|
252
252
|
DomAccess.onDomContentLoaded();
|
253
253
|
|
254
|
-
//
|
254
|
+
// We need different publicPath values for the main thread inside the webpack based dist envs,
|
255
255
|
// depending on the hierarchy level of the app entry point
|
256
|
-
if (
|
256
|
+
if (environment === 'dist/development' || environment === 'dist/production') {
|
257
257
|
__webpack_require__.p = config.basePath.substring(6)
|
258
258
|
}
|
259
259
|
|
260
|
-
//
|
260
|
+
// Intended for the online examples where we need an easy way to add GA to every generated app
|
261
261
|
if (config.useGoogleAnalytics && !mainThreadAddons.includes('AnalyticsByGoogle')) {
|
262
262
|
mainThreadAddons.push('AnalyticsByGoogle')
|
263
263
|
}
|
264
264
|
|
265
265
|
if ((
|
266
|
-
|
267
|
-
|
266
|
+
useServiceWorker === true ||
|
267
|
+
useServiceWorker === environment ||
|
268
|
+
(useServiceWorker === 'dist/production' && environment === 'dist/esm')
|
268
269
|
) &&
|
269
270
|
!mainThreadAddons.includes('ServiceWorker')
|
270
271
|
) {
|
@@ -30,13 +30,16 @@ class ServiceWorker extends Base {
|
|
30
30
|
if ('serviceWorker' in navigator) {
|
31
31
|
let me = this,
|
32
32
|
{config} = Neo,
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
{environment} = config,
|
34
|
+
devMode = environment === 'development',
|
35
|
+
hasJsModules = devMode || environment === 'dist/esm',
|
36
|
+
fileName = hasJsModules ? 'ServiceWorker.mjs' : 'serviceworker.js',
|
37
|
+
opts = hasJsModules ? {type: 'module'} : {},
|
38
|
+
path = (hasJsModules ? config.basePath : config.workerBasePath) + fileName,
|
38
39
|
{serviceWorker} = navigator,
|
39
|
-
registration
|
40
|
+
registration;
|
41
|
+
|
42
|
+
registration = await serviceWorker.register(path, opts);
|
40
43
|
|
41
44
|
window.addEventListener('beforeunload', me.onBeforeUnload.bind(me));
|
42
45
|
|
@@ -1,35 +0,0 @@
|
|
1
|
-
import Neo from '../src/Neo.mjs';
|
2
|
-
import * as core from '../src/core/_export.mjs';
|
3
|
-
import ServiceBase from '../src/worker/ServiceBase.mjs';
|
4
|
-
|
5
|
-
/**
|
6
|
-
* @class Neo.ServiceWorker
|
7
|
-
* @extends Neo.worker.ServiceBase
|
8
|
-
* @singleton
|
9
|
-
*/
|
10
|
-
class ServiceWorker extends ServiceBase {
|
11
|
-
static config = {
|
12
|
-
/**
|
13
|
-
* @member {String} className='Neo.ServiceWorker'
|
14
|
-
* @protected
|
15
|
-
*/
|
16
|
-
className: 'Neo.ServiceWorker',
|
17
|
-
/**
|
18
|
-
* @member {Boolean} singleton=true
|
19
|
-
* @protected
|
20
|
-
*/
|
21
|
-
singleton: true,
|
22
|
-
/**
|
23
|
-
* @member {String} version='9.6.1'
|
24
|
-
*/
|
25
|
-
version: '9.6.1'
|
26
|
-
}
|
27
|
-
|
28
|
-
/**
|
29
|
-
* @member {String} workerId='service'
|
30
|
-
* @protected
|
31
|
-
*/
|
32
|
-
workerId = 'service'
|
33
|
-
}
|
34
|
-
|
35
|
-
export default Neo.setupClass(ServiceWorker);
|