/* Copyright 2018 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. */ import { WorkboxError } from '../_private/WorkboxError.js'; import '../_version.js'; /* * This method throws if the supplied value is not an array. * The destructed values are required to produce a meaningful error for users. * The destructed and restructured object is so it's clear what is * needed. */ const isArray = (value, details) => { if (!Array.isArray(value)) { throw new WorkboxError('not-an-array', details); } }; const hasMethod = (object, expectedMethod, details) => { const type = typeof object[expectedMethod]; if (type !== 'function') { details['expectedMethod'] = expectedMethod; throw new WorkboxError('missing-a-method', details); } }; const isType = (object, expectedType, details) => { if (typeof object !== expectedType) { details['expectedType'] = expectedType; throw new WorkboxError('incorrect-type', details); } }; const isInstance = (object, expectedClass, details) => { if (!(object instanceof expectedClass)) { details['expectedClass'] = expectedClass; throw new WorkboxError('incorrect-class', details); } }; const isOneOf = (value, validValues, details) => { if (!validValues.includes(value)) { details['validValueDescription'] = `Valid values are ${JSON.stringify(validValues)}.`; throw new WorkboxError('invalid-value', details); } }; const isArrayOfClass = (value, expectedClass, details) => { const error = new WorkboxError('not-array-of-class', details); if (!Array.isArray(value)) { throw error; } for (const item of value) { if (!(item instanceof expectedClass)) { throw error; } } }; const finalAssertExports = process.env.NODE_ENV === 'production' ? null : { hasMethod, isArray, isInstance, isOneOf, isType, isArrayOfClass, }; export { finalAssertExports as assert };