diff options
Diffstat (limited to 'node_modules/workbox-build/src/lib/get-file-details.js')
| -rw-r--r-- | node_modules/workbox-build/src/lib/get-file-details.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/node_modules/workbox-build/src/lib/get-file-details.js b/node_modules/workbox-build/src/lib/get-file-details.js new file mode 100644 index 00000000..afd32628 --- /dev/null +++ b/node_modules/workbox-build/src/lib/get-file-details.js @@ -0,0 +1,66 @@ +/* + Copyright 2017 Google Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +const glob = require('glob'); +const path = require('path'); + +const errors = require('./errors'); +const getFileSize = require('./get-file-size'); +const getFileHash = require('./get-file-hash'); + +module.exports = (globOptions) => { + const { + globDirectory, + globFollow, + globIgnores, + globPattern, + globStrict, + } = globOptions; + let globbedFiles; + try { + globbedFiles = glob.sync(globPattern, { + cwd: globDirectory, + follow: globFollow, + ignore: globIgnores, + strict: globStrict, + }); + } catch (err) { + throw new Error(errors['unable-to-glob-files'] + ` '${err.message}'`); + } + + if (globbedFiles.length === 0) { + throw new Error(errors['useless-glob-pattern'] + ' ' + + JSON.stringify({globDirectory, globPattern, globIgnores}, null, 2)); + } + + const fileDetails = globbedFiles.map((file) => { + const fullPath = path.join(globDirectory, file); + const fileSize = getFileSize(fullPath); + if (fileSize === null) { + return null; + } + + const fileHash = getFileHash(fullPath); + return { + file: `${path.relative(globDirectory, fullPath)}`, + hash: fileHash, + size: fileSize, + }; + }); + + // If !== null, means it's a valid file. + return fileDetails.filter((details) => details !== null); +}; |
