UNPKG

@tensorflow/tfjs-node

Version:

This repository provides native TensorFlow execution in backend JavaScript applications under the Node.js runtime, accelerated by the TensorFlow C binary under the hood. It provides the same API as [TensorFlow.js](https://js.tensorflow.org/api/latest/).

80 lines (73 loc) 2.83 kB
/** * @license * Copyright 2019 Google LLC. All Rights Reserved. * 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 * * http://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. * ============================================================================= */ /** * Ensures that the GPU and CPU packages align. */ const fs = require('fs'); const cpuPackage = require('../../tfjs-node/package.json'); const gpuPackage = require('../../tfjs-node-gpu/package.json'); process.on('unhandledRejection', e => { throw e; }); /** * Ensure package.json aligns. */ const FIELDS_TO_IGNORE = [ 'name', 'scripts/install', 'scripts/test', 'scripts/prepare', 'scripts/prep', 'scripts/upload-windows-addon', 'scripts/build-npm', 'scripts/prep-gpu-windows', 'binary/package_name', 'repository/directory', ]; const cpuPackageKeys = Object.keys(cpuPackage); const gpuPackageKeys = Object.keys(gpuPackage); cpuPackageKeys.forEach((key, i) => { if (gpuPackageKeys[i] != cpuPackageKeys[i]) { throw new Error( `CPU and GPU package have different keys: ` + `${gpuPackageKeys[i]} and ${cpuPackageKeys[i]}.`); } }); if (cpuPackageKeys.length != gpuPackageKeys.length) { throw new Error(`CPU and GPU package.jsons have different top-level fields.`); } // Ensure the cpu and gpu packages have the same keys. cpuPackageKeys.forEach(key => { const cpuPackageValue = cpuPackage[key]; const gpuPackageValue = gpuPackage[key]; if (typeof cpuPackageValue !== 'object') { if (cpuPackageValue != gpuPackageValue && FIELDS_TO_IGNORE.indexOf(key) === -1) { throw new Error( `CPU package key '${key}' with value ` + `${JSON.stringify(cpuPackageValue)} does not match GPU value ` + `${JSON.stringify(gpuPackageValue)}.`); } } else { const cpuFieldKeys = Object.keys(cpuPackageValue); cpuFieldKeys.forEach(fieldKey => { const cpuFieldValue = '' + cpuPackageValue[fieldKey]; const gpuFieldValue = '' + gpuPackageValue[fieldKey]; const deepKey = `${key}/${fieldKey}`; if (cpuFieldValue !== gpuFieldValue && FIELDS_TO_IGNORE.indexOf(deepKey) === -1) { throw new Error( `CPU package key '${deepKey}' with value ` + `${JSON.stringify(cpuFieldValue)} does not match GPU value ` + `${JSON.stringify(gpuFieldValue)}.`); } }); } });