123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import { assert } from 'workbox-core/_private/assert.js';
- import '../_version.js';
- const serializableProperties = [
- 'method',
- 'referrer',
- 'referrerPolicy',
- 'mode',
- 'credentials',
- 'cache',
- 'redirect',
- 'integrity',
- 'keepalive',
- ];
- class StorableRequest {
-
- static async fromRequest(request) {
- const requestData = {
- url: request.url,
- headers: {},
- };
-
- if (request.method !== 'GET') {
-
-
-
-
- requestData.body = await request.clone().arrayBuffer();
- }
-
- for (const [key, value] of request.headers.entries()) {
- requestData.headers[key] = value;
- }
-
- for (const prop of serializableProperties) {
- if (request[prop] !== undefined) {
- requestData[prop] = request[prop];
- }
- }
- return new StorableRequest(requestData);
- }
-
- constructor(requestData) {
- if (process.env.NODE_ENV !== 'production') {
- assert.isType(requestData, 'object', {
- moduleName: 'workbox-background-sync',
- className: 'StorableRequest',
- funcName: 'constructor',
- paramName: 'requestData',
- });
- assert.isType(requestData.url, 'string', {
- moduleName: 'workbox-background-sync',
- className: 'StorableRequest',
- funcName: 'constructor',
- paramName: 'requestData.url',
- });
- }
-
-
- if (requestData['mode'] === 'navigate') {
- requestData['mode'] = 'same-origin';
- }
- this._requestData = requestData;
- }
-
- toObject() {
- const requestData = Object.assign({}, this._requestData);
- requestData.headers = Object.assign({}, this._requestData.headers);
- if (requestData.body) {
- requestData.body = requestData.body.slice(0);
- }
- return requestData;
- }
-
- toRequest() {
- return new Request(this._requestData.url, this._requestData);
- }
-
- clone() {
- return new StorableRequest(this.toObject());
- }
- }
- export { StorableRequest };
|