mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-24 17:35:16 +00:00
67 lines
3.0 KiB
JavaScript
67 lines
3.0 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
/*
|
||
|
Copyright 2019 Google LLC
|
||
|
|
||
|
Use of this source code is governed by an MIT-style
|
||
|
license that can be found in the LICENSE file or at
|
||
|
https://opensource.org/licenses/MIT.
|
||
|
*/
|
||
|
const joi = require('@hapi/joi');
|
||
|
|
||
|
const defaults = require('../defaults');
|
||
|
|
||
|
const regExpObject = require('../objects/reg-exp');
|
||
|
|
||
|
module.exports = {
|
||
|
babelPresetEnvTargets: joi.array().items(joi.string()).default(defaults.babelPresetEnvTargets),
|
||
|
cacheId: joi.string(),
|
||
|
cleanupOutdatedCaches: joi.boolean().default(defaults.cleanupOutdatedCaches),
|
||
|
clientsClaim: joi.boolean().default(defaults.clientsClaim),
|
||
|
directoryIndex: joi.string(),
|
||
|
disableDevLogs: joi.boolean().default(defaults.disableDevLogs),
|
||
|
ignoreURLParametersMatching: joi.array().items(regExpObject),
|
||
|
importScripts: joi.array().items(joi.string()),
|
||
|
inlineWorkboxRuntime: joi.boolean().default(defaults.inlineWorkboxRuntime),
|
||
|
navigateFallback: joi.string().default(defaults.navigateFallback),
|
||
|
navigateFallbackAllowlist: joi.array().items(regExpObject),
|
||
|
navigateFallbackBlacklist: joi.forbidden().error(new Error('navigateFallbackBlacklist has been renamed navigateFallbackDenylist.')),
|
||
|
navigateFallbackDenylist: joi.array().items(regExpObject),
|
||
|
navigateFallbackWhitelist: joi.forbidden().error(new Error('navigateFallbackWhitelist has been renamed navigateFallbackAllowlist.')),
|
||
|
navigationPreload: joi.boolean().default(defaults.navigationPreload),
|
||
|
offlineGoogleAnalytics: joi.alternatives().try(joi.boolean(), joi.object()).default(defaults.offlineGoogleAnalytics),
|
||
|
runtimeCaching: joi.array().items(joi.object().keys({
|
||
|
method: joi.string().valid('DELETE', 'GET', 'HEAD', 'PATCH', 'POST', 'PUT'),
|
||
|
urlPattern: [regExpObject, joi.string(), joi.func()],
|
||
|
handler: [joi.func(), joi.string().valid('CacheFirst', 'CacheOnly', 'NetworkFirst', 'NetworkOnly', 'StaleWhileRevalidate')],
|
||
|
options: joi.object().keys({
|
||
|
backgroundSync: joi.object().keys({
|
||
|
name: joi.string().required(),
|
||
|
options: joi.object()
|
||
|
}),
|
||
|
broadcastUpdate: joi.object().keys({
|
||
|
channelName: joi.string().required(),
|
||
|
options: joi.object()
|
||
|
}),
|
||
|
cacheableResponse: joi.object().keys({
|
||
|
statuses: joi.array().items(joi.number().min(0).max(599)),
|
||
|
headers: joi.object()
|
||
|
}).or('statuses', 'headers'),
|
||
|
cacheName: joi.string(),
|
||
|
expiration: joi.object().keys({
|
||
|
maxEntries: joi.number().min(1),
|
||
|
maxAgeSeconds: joi.number().min(1),
|
||
|
purgeOnQuotaError: joi.boolean().default(defaults.purgeOnQuotaError)
|
||
|
}).or('maxEntries', 'maxAgeSeconds'),
|
||
|
networkTimeoutSeconds: joi.number().min(1),
|
||
|
plugins: joi.array().items(joi.object()),
|
||
|
fetchOptions: joi.object(),
|
||
|
matchOptions: joi.object()
|
||
|
}).with('expiration', 'cacheName')
|
||
|
}).requiredKeys('urlPattern', 'handler')).when('navigationPreload', {
|
||
|
is: true,
|
||
|
then: joi.required()
|
||
|
}),
|
||
|
skipWaiting: joi.boolean().default(defaults.skipWaiting),
|
||
|
sourcemap: joi.boolean().default(defaults.sourcemap)
|
||
|
};
|