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
@ -25,7 +25,8 @@ const entrypoints = [
|
||||
'dist/packages-dist/platform-server/testing.d.ts', 'dist/packages-dist/http/http.d.ts',
|
||||
'dist/packages-dist/http/testing.d.ts', 'dist/packages-dist/forms/forms.d.ts',
|
||||
'dist/packages-dist/router/router.d.ts', 'dist/packages-dist/animations/animations.d.ts',
|
||||
'dist/packages-dist/animations/browser.d.ts',
|
||||
'dist/packages-dist/service-worker/service-worker.d.ts',
|
||||
'dist/packages-dist/service-worker/config.d.ts', 'dist/packages-dist/animations/browser.d.ts',
|
||||
'dist/packages-dist/animations/browser/testing.d.ts',
|
||||
'dist/packages-dist/platform-browser/animations.d.ts'
|
||||
];
|
||||
|
52
tools/public_api_guard/service-worker/config.d.ts
vendored
Normal file
52
tools/public_api_guard/service-worker/config.d.ts
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
/** @experimental */
|
||||
export interface AssetGroup {
|
||||
installMode?: 'prefetch' | 'lazy';
|
||||
name: string;
|
||||
resources: {
|
||||
files?: Glob[];
|
||||
versionedFiles?: Glob[];
|
||||
urls?: Glob[];
|
||||
};
|
||||
updateMode?: 'prefetch' | 'lazy';
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export interface Config {
|
||||
appData?: {};
|
||||
assetGroups?: AssetGroup[];
|
||||
dataGroups?: DataGroup[];
|
||||
index: string;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export interface DataGroup {
|
||||
cacheConfig: {
|
||||
maxSize: number;
|
||||
maxAge: Duration;
|
||||
timeout?: Duration;
|
||||
strategy?: 'freshness' | 'performance';
|
||||
};
|
||||
name: string;
|
||||
urls: Glob[];
|
||||
version?: number;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare type Duration = string;
|
||||
|
||||
/** @experimental */
|
||||
export interface Filesystem {
|
||||
list(dir: string): Promise<string[]>;
|
||||
read(file: string): Promise<string>;
|
||||
write(file: string, contents: string): Promise<void>;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare class Generator {
|
||||
readonly fs: Filesystem;
|
||||
constructor(fs: Filesystem, baseHref: string);
|
||||
process(config: Config): Promise<Object>;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare type Glob = string;
|
24
tools/public_api_guard/service-worker/service-worker.d.ts
vendored
Normal file
24
tools/public_api_guard/service-worker/service-worker.d.ts
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
/** @experimental */
|
||||
export declare class ServiceWorkerModule {
|
||||
static register(script: string, opts?: RegistrationOptions): ModuleWithProviders;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare class SwPush {
|
||||
readonly messages: Observable<object>;
|
||||
readonly subscription: Observable<PushSubscription | null>;
|
||||
constructor(sw: NgswCommChannel);
|
||||
requestSubscription(options: {
|
||||
serverPublicKey: string;
|
||||
}): Promise<PushSubscription>;
|
||||
unsubscribe(): Promise<void>;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare class SwUpdate {
|
||||
readonly activated: Observable<UpdateActivatedEvent>;
|
||||
readonly available: Observable<UpdateAvailableEvent>;
|
||||
constructor(sw: NgswCommChannel);
|
||||
activateUpdate(): Promise<void>;
|
||||
checkForUpdate(): Promise<void>;
|
||||
}
|
@ -29,8 +29,8 @@
|
||||
"platform-webworker",
|
||||
"platform-webworker-dynamic",
|
||||
"router",
|
||||
"service-worker",
|
||||
"upgrade",
|
||||
|
||||
"packaging",
|
||||
"changelog"
|
||||
]
|
||||
|
@ -49,19 +49,19 @@ describe('validate-commit-message.js', function() {
|
||||
expect(validateMessage('refactor(docs): something')).toBe(INVALID);
|
||||
['INVALID COMMIT MSG: "fix(Compiler): something"\n' +
|
||||
' => ERROR: "Compiler" is not an allowed scope.\n' +
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, upgrade, packaging, changelog',
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, service-worker, upgrade, packaging, changelog',
|
||||
'INVALID COMMIT MSG: "feat(bah): something"\n' +
|
||||
' => ERROR: "bah" is not an allowed scope.\n' +
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, upgrade, packaging, changelog',
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, service-worker, upgrade, packaging, changelog',
|
||||
'INVALID COMMIT MSG: "style(webworker): something"\n' +
|
||||
' => ERROR: "webworker" is not an allowed scope.\n' +
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, upgrade, packaging, changelog',
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, service-worker, upgrade, packaging, changelog',
|
||||
'INVALID COMMIT MSG: "refactor(security): something"\n' +
|
||||
' => ERROR: "security" is not an allowed scope.\n' +
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, upgrade, packaging, changelog',
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, service-worker, upgrade, packaging, changelog',
|
||||
'INVALID COMMIT MSG: "refactor(docs): something"\n' +
|
||||
' => ERROR: "docs" is not an allowed scope.\n' +
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, upgrade, packaging, changelog']
|
||||
' => SCOPES: aio, animations, bazel, benchpress, common, compiler, compiler-cli, core, forms, http, language-service, platform-browser, platform-browser-dynamic, platform-server, platform-webworker, platform-webworker-dynamic, router, service-worker, upgrade, packaging, changelog']
|
||||
.forEach((expectedErrorMessage, index) => {
|
||||
expect(expectedErrorMessage).toEqual(errors[index]);
|
||||
});
|
||||
|
Reference in New Issue
Block a user