Socket
Socket
Sign inDemoInstall

angular2-service-worker

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular2-service-worker - npm Package Compare versions

Comparing version 0.1.3 to 0.1.4

rollup.js

2

package.json
{
"name": "angular2-service-worker",
"version": "0.1.3",
"version": "0.1.4",
"description": "Experimental service worker by the Angular Mobile team",

@@ -5,0 +5,0 @@ "main": "dist/generator/index.js",

import 'reflect-metadata';
import {Injectable, Injector, provide} from 'angular2/core';
import {Injectable, Injector, provide} from 'angular2/src/core/di';
import {SW_PROVIDERS, WorkerScope, WorkerAdapter} from './index';
import {ServiceWorker} from './worker';
import './rxjs';

@@ -22,4 +23,2 @@

console.log('ngsw: initializing...');
Injector.resolveAndCreate([

@@ -29,4 +28,2 @@ SW_PROVIDERS,

provide(WorkerScope, {useValue: (typeof self !== 'undefined') ? self : global})
]).get(ServiceWorker);
console.log('ngsw: worker created.');
]).get(ServiceWorker);

@@ -1,3 +0,3 @@

import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Rx';
import {Injectable} from 'angular2/src/core/di';
import {Observable} from 'rxjs/Observable';

@@ -4,0 +4,0 @@ import {WorkerScope, WorkerAdapter} from './context';

@@ -1,3 +0,3 @@

import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Rx';
import {Injectable} from 'angular2/src/core/di';
import {Observable} from 'rxjs/Observable';

@@ -4,0 +4,0 @@ /**

@@ -1,3 +0,3 @@

import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Rx';
import {Injectable} from 'angular2/src/core/di';
import {Observable} from 'rxjs/Observable';
import {WorkerScope, WorkerAdapter} from './context';

@@ -12,3 +12,2 @@ import {timeoutTo} from './operator';

request(req: Request, timeout: number = null): Observable<Response> {
console.log(`ngsw: outgoing fetch(${req.method}, ${req.url})`);
let result: Observable<Response> = Observable.defer(() => Observable

@@ -15,0 +14,0 @@ .fromPromise<Response>(this

@@ -1,3 +0,1 @@

import {provide} from 'angular2/core';
import {WorkerScope, Events} from './context';

@@ -9,2 +7,4 @@ import {ManifestParser} from './manifest';

import './rxjs';
export * from './cache';

@@ -11,0 +11,0 @@ export * from './context';

import 'reflect-metadata';
import {ManifestParser, ManifestEntry} from '../src/manifest';
/*
import {ManifestParser, ManifestEntry, ManifestEntryMap} from '../src/manifest';
const SIMPLE_MANIFEST = `CACHE MANIFEST

@@ -27,12 +27,6 @@ /test/url/alpha

function urls(entries: ManifestEntry[]): string[] {
return entries.map(entry => entry.url);
function urls(entries: ManifestEntryMap): string[] {
return Object.keys(entries);
}
function grouped(name: string, entries: ManifestEntry[]): ManifestEntry[] {
return entries.filter(entry =>
entry.groupMetadata.hasOwnProperty('group') &&
entry.groupMetadata['group'] == name);
}
describe('ManifestParser', () => {

@@ -45,3 +39,3 @@ let parser: ManifestParser;

let manifest = parser.parse(SIMPLE_MANIFEST);
expect(urls(manifest.cache)).toEqual([
expect(urls(manifest.group['default'].cache)).toEqual([
'/test/url/alpha',

@@ -53,19 +47,19 @@ '/test/url/beta'

let manifest = parser.parse(FULL_MANIFEST);
expect(urls(manifest.cache)).toEqual([
let defaultGroup = manifest.group['default'];
expect(urls(defaultGroup.cache)).toEqual([
'/default',
'/cached'
]);
expect(urls(manifest.network)).toEqual(['*']);
expect(urls(manifest.fallback)).toEqual(['/from']);
expect(manifest.fallback.map(entry => entry.fallbackTo)).toEqual(['/to']);
expect(urls(defaultGroup.network)).toEqual(['*']);
expect(urls(defaultGroup.fallback)).toEqual(['/from']);
expect(Object.keys(defaultGroup.fallback).map(url => defaultGroup.fallback[url].fallbackTo)).toEqual(['/to']);
});
it('splits files into groups when requested', () => {
let manifest = parser.parse(BUNDLED_MANIFEST);
let alphaEntries = grouped('alpha', manifest.cache);
let betaEntries = grouped('beta', manifest.cache);
expect(urls(alphaEntries)).toEqual([
let defaultGroup = manifest.group['default'];
expect(urls(manifest.group['alpha'].cache)).toEqual([
'/alpha/a',
'/alpha/b'
]);
expect(urls(betaEntries)).toEqual([
expect(urls(manifest.group['beta'].cache)).toEqual([
'/beta/a',

@@ -76,2 +70,1 @@ '/beta/b'

});
*/

@@ -1,2 +0,2 @@

import {Injectable} from 'angular2/core';
import {Injectable} from 'angular2/src/core/di';
import {stringStartsWith} from './builtins';

@@ -108,3 +108,3 @@ import {SHA1} from 'jshashes';

files.sort();
group.version = (new SHA1()).hex(files.join('::'));

@@ -111,0 +111,0 @@ }

@@ -1,2 +0,2 @@

import {Observable} from 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';

@@ -3,0 +3,0 @@ export function extractBody(obs: Observable<Response>): Observable<string> {

@@ -1,2 +0,2 @@

import {Observable} from 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';

@@ -125,3 +125,3 @@ import {Manifest, ManifestEntry, ManifestParser, ManifestDelta, GroupDelta, ManifestGroup} from './manifest';

.map((key: string) => delta.current.group[key])
.flatMap<any>((group: ManifestGroup) => {
.mergeMap<any>((group: ManifestGroup) => {
// Process groups individually, in parallel.

@@ -136,3 +136,3 @@ // Check whether this specific group has an entry in the previous manifest.

.map((key: string) => group.cache[key])
.flatMap<SetupInstruction>(entry => {
.mergeMap<SetupInstruction>(entry => {
// Default is to fetch from the network.

@@ -149,6 +149,6 @@ let action: SetupInstruction = new FetchFromNetworkInstruction(entry.url, cacheFor(group));

}
// Return instructions, which will be flatMap'd and executed.
// Return instructions, which will be mergeMap'd and executed.
return Observable.of<SetupInstruction>(action);
})
.flatMap<any>(action => action.execute(cache, fetch));
.mergeMap<any>(action => action.execute(cache, fetch));
})

@@ -160,7 +160,6 @@ ))

export function cleanupCaches(cache: CacheManager): any {
/*
return ((obs: Observable<ManifestDelta>): Observable<ManifestDelta> => obs
.let<ManifestDelta>(doAsync((delta: ManifestDelta) => Observable
.from(Object.keys(delta.previous.group))
.map((name: string) => {
.mergeMap((name: string) => {
let prevCache = cacheFor(delta.previous.group[name]);

@@ -176,5 +175,4 @@ let currCache = '';

})
.ignoreElements()
)));
*/
return () => Observable.empty();
}
}

@@ -33,4 +33,22 @@ import {ServiceWorker, CACHE_INSTALLING, CACHE_ACTIVE, MANIFEST_URL} from './worker';

/hello.txt
`
`;
const BUNDLE_MANIFEST_1 = `CACHE MANIFEST
# sw.group: hello
# sw.group.version: 12345
/hello.txt
# sw.group: goodbye
# sw.group.version: 67890
/goodbye.txt
`;
const BUNDLE_MANIFEST_2 = `CACHE MANIFEST
# sw.group: hello
# sw.group.version: 54321
/hello.txt
# sw.group: goodbye
# sw.group.version: 67890
/goodbye.txt
`;
function errored(err, done) {

@@ -150,3 +168,47 @@ fail(err);

.then(done, err => errored(err, done)));
then('deletes old caches', done => Promise
.resolve(null)
.then(() => driver.caches.keys())
.then(keys => expect(keys.length).toBe(3))
.then(done, err => errored(err, done)));
});
sequence('upgrade without hashes', () => {
let driver: TestWorkerDriver = new TestWorkerDriver(ServiceWorker);
beforeAll(done => {
driver.mockUrl(MANIFEST_URL, BUNDLE_MANIFEST_1);
driver.mockUrl('/hello.txt', 'Hello world!');
driver.mockUrl('/goodbye.txt', 'Goodbye world!');
driver
.triggerInstall()
.then(() => driver.unmockAll())
.then(() => driver.triggerActivate())
.then(done, err => errored(err, done));
});
it('successfully activates', done => Promise
.resolve(null)
.then(() => expectServed(driver, '/hello.txt', 'Hello world!'))
.then(() => expectServed(driver, '/goodbye.txt', 'Goodbye world!'))
.then(done, err => errored(err, done)));
then('upgrades to new manifest', done => {
driver.refresh();
driver.mockUrl(MANIFEST_URL, BUNDLE_MANIFEST_2);
driver.mockUrl('/hello.txt', 'Hola mundo!');
driver.mockUrl('/goodbye.txt', 'Should not be reloaded from the server');
driver
.triggerInstall()
.then(() => driver.unmockAll())
.then(() => driver.triggerActivate())
.then(done, err => errored(err, done));
});
then('refreshes only the hello page', done => Promise
.resolve(null)
.then(() => expectServed(driver, '/hello.txt', 'Hola mundo!'))
.then(() => expectServed(driver, '/goodbye.txt', 'Goodbye world!'))
.then(done, err => errored(err, done)));
then('deletes old caches', done => Promise
.resolve(null)
.then(() => driver.caches.keys())
.then(keys => expect(keys.length).toBe(4))
.then(done, err => errored(err, done)));
})
sequence('dev mode', () => {

@@ -153,0 +215,0 @@ let driver: TestWorkerDriver = new TestWorkerDriver(ServiceWorker);

@@ -1,3 +0,3 @@

import {Injectable} from 'angular2/core';
import {Observable} from 'rxjs/Rx';
import {Injectable} from 'angular2/src/core/di';
import {Observable} from 'rxjs/Observable';
import {Events, InstallEvent, FetchEvent, WorkerAdapter} from './context';

@@ -30,4 +30,3 @@ import {Manifest, ManifestEntry, FallbackManifestEntry, ManifestGroup, ManifestParser, ManifestDelta} from './manifest';

execute(sw: ServiceWorker): Observable<Response> {
return sw.cache.load(this.cache, this.request)
.do(resp => console.log(`ngsw: fetch from cache: ${this.cache} got ${resp}`));
return sw.cache.load(this.cache, this.request);
}

@@ -160,3 +159,3 @@

.checkDiffs(ManifestSource.INSTALLING)
//.let(cleanupCaches(cache))
.let(cleanupCaches(cache))
.let(doAsync((delta: ManifestDelta) => cache.store(CACHE_ACTIVE, MANIFEST_URL, adapter.newResponse(delta.currentStr))))

@@ -169,3 +168,2 @@ .map((delta: ManifestDelta) => delta.current);

let request = ev.request;
console.log(`ngsw: Event - fetch(${request.method}, ${request.url})`);
ev.respondWith(this.handleFetch(request, {}).toPromise());

@@ -208,3 +206,2 @@ });

case ManifestSource.NETWORK:
console.log('ngsw - loadFreshManifest(NETWORK)');
respSource = this

@@ -215,3 +212,2 @@ .fetch

case ManifestSource.INSTALLING:
console.log('ngsw - loadFreshManifest(INSTALLING)');
respSource = this

@@ -222,3 +218,2 @@ .cache

case ManifestSource.ACTIVE:
console.log('ngsw - loadFreshManifest(ACTIVE)');
respSource = this

@@ -225,0 +220,0 @@ .cache

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc