feat(service-worker): introduce the @angular/service-worker package (#19274)
This service worker is a conceptual derivative of the existing @angular/service-worker maintained at github.com/angular/mobile-toolkit, but has been rewritten to support use across a much wider variety of applications. Entrypoints include: @angular/service-worker: a library for use within Angular client apps to communicate with the service worker. @angular/service-worker/gen: a library for generating ngsw.json files from glob-based SW config files. @angular/service-worker/ngsw-worker.js: the bundled service worker script itself. @angular/service-worker/ngsw-cli.js: a CLI tool for generating ngsw.json files from glob-based SW config files.
This commit is contained in:

committed by
Victor Berchet

parent
7c1d3e0f5a
commit
d442b6855f
33
packages/service-worker/config/src/glob.ts
Normal file
33
packages/service-worker/config/src/glob.ts
Normal file
@ -0,0 +1,33 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
const WILD_SINGLE = '[^\\/]+';
|
||||
const WILD_OPEN = '(?:.+\\/)?';
|
||||
|
||||
export function globToRegex(glob: string): string {
|
||||
const segments = glob.split('/').reverse();
|
||||
let regex: string = '';
|
||||
while (segments.length > 0) {
|
||||
const segment = segments.pop() !;
|
||||
if (segment === '**') {
|
||||
if (segments.length > 0) {
|
||||
regex += WILD_OPEN;
|
||||
} else {
|
||||
regex += '.*';
|
||||
}
|
||||
continue;
|
||||
} else {
|
||||
const processed = segment.replace(/\./g, '\\.').replace(/\*/g, WILD_SINGLE);
|
||||
regex += processed;
|
||||
if (segments.length > 0) {
|
||||
regex += '\\/';
|
||||
}
|
||||
}
|
||||
}
|
||||
return regex;
|
||||
}
|
Reference in New Issue
Block a user