diff --git a/package.json b/package.json index 3b87616670f..7bb2a15553e 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "clang-format": "~1.2.4", "chalk": "~2.4.2", "shelljs": "~0.8.3", + "tslint": "^5.11.0", "ts-node": "~4.1.0", "typescript": "3.5.3" }, diff --git a/tfjs-automl/src/img_classification_test.ts b/tfjs-automl/src/img_classification_test.ts index 4c7096a407b..699bff9a258 100644 --- a/tfjs-automl/src/img_classification_test.ts +++ b/tfjs-automl/src/img_classification_test.ts @@ -17,6 +17,7 @@ import * as tf from '@tensorflow/tfjs-core'; import {Tensor3D, test_util} from '@tensorflow/tfjs-core'; +// tslint:disable-next-line:no-imports-from-dist import {BROWSER_ENVS, describeWithFlags} from '@tensorflow/tfjs-core/dist/jasmine_util'; import * as automl from './index'; diff --git a/tfjs-automl/src/test_browser.ts b/tfjs-automl/src/test_browser.ts index 27a978498b2..3bc850b060c 100644 --- a/tfjs-automl/src/test_browser.ts +++ b/tfjs-automl/src/test_browser.ts @@ -15,6 +15,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {setTestEnvs} from '@tensorflow/tfjs-core/dist/jasmine_util'; // Run browser tests againts both the cpu and webgl backends. diff --git a/tfjs-automl/src/test_node.ts b/tfjs-automl/src/test_node.ts index c5dadf988ae..6730c1e7efd 100644 --- a/tfjs-automl/src/test_node.ts +++ b/tfjs-automl/src/test_node.ts @@ -15,6 +15,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {setTestEnvs} from '@tensorflow/tfjs-core/dist/jasmine_util'; // tslint:disable-next-line:no-require-imports diff --git a/tfjs-backend-nodegl/src/run_tests.ts b/tfjs-backend-nodegl/src/run_tests.ts index 43ba7c69df9..2f181c0e8b5 100644 --- a/tfjs-backend-nodegl/src/run_tests.ts +++ b/tfjs-backend-nodegl/src/run_tests.ts @@ -16,6 +16,7 @@ */ // We import index.ts so that the Node backend gets registered. +// tslint:disable-next-line:no-imports-from-dist import * as jasmine_util from '@tensorflow/tfjs-core/dist/jasmine_util'; import * as tf from '@tensorflow/tfjs-core'; diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 9920a06e2f8..b8a0093b88c 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -17,6 +17,7 @@ import * as tf from '@tensorflow/tfjs-core'; import {test_util} from '@tensorflow/tfjs-core'; +// tslint:disable-next-line:no-imports-from-dist import {ALL_ENVS, describeWithFlags} from '@tensorflow/tfjs-core/dist/jasmine_util'; import {BackendWasm} from './index'; diff --git a/tfjs-backend-wasm/src/setup_test.ts b/tfjs-backend-wasm/src/setup_test.ts index 273ee75baad..56851a11ccd 100644 --- a/tfjs-backend-wasm/src/setup_test.ts +++ b/tfjs-backend-wasm/src/setup_test.ts @@ -15,6 +15,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {setTestEnvs} from '@tensorflow/tfjs-core/dist/jasmine_util'; setTestEnvs([{name: 'test-wasm', backendName: 'wasm', isDataSync: true}]); @@ -70,4 +71,5 @@ env.specFilter = spec => { }; // Import and run all the tests from core. +// tslint:disable-next-line:no-imports-from-dist import '@tensorflow/tfjs-core/dist/tests'; diff --git a/tfjs-backend-webgpu/src/setup_test.ts b/tfjs-backend-webgpu/src/setup_test.ts index 881586825fa..94b6ef1d546 100644 --- a/tfjs-backend-webgpu/src/setup_test.ts +++ b/tfjs-backend-webgpu/src/setup_test.ts @@ -15,6 +15,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {setTestEnvs} from '@tensorflow/tfjs-core/dist/jasmine_util'; setTestEnvs([{ @@ -119,4 +120,5 @@ env.specFilter = spec => { }; // Import and run all the tests from core. +// tslint:disable-next-line:no-imports-from-dist import '@tensorflow/tfjs-core/dist/tests'; diff --git a/tfjs-backend-webgpu/src/test_util.ts b/tfjs-backend-webgpu/src/test_util.ts index adc051ca440..46b820ee381 100644 --- a/tfjs-backend-webgpu/src/test_util.ts +++ b/tfjs-backend-webgpu/src/test_util.ts @@ -15,6 +15,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {ALL_ENVS, describeWithFlags, TestEnv} from '@tensorflow/tfjs-core/dist/jasmine_util'; export function describeWebGPU(name: string, tests: (env: TestEnv) => void) { diff --git a/tfjs-converter/scripts/test_snippets.ts b/tfjs-converter/scripts/test_snippets.ts index 87b253b4ae2..3fff8527b51 100644 --- a/tfjs-converter/scripts/test_snippets.ts +++ b/tfjs-converter/scripts/test_snippets.ts @@ -15,7 +15,8 @@ * ============================================================================= */ import * as tfc from '@tensorflow/tfjs-core'; -import {parseAndEvaluateSnippets} from '@tensorflow/tfjs-core/dist/scripts/test_snippets/util'; + +import {parseAndEvaluateSnippets} from '@tensorflow/tfjs-core/scripts/test_snippets/util'; import * as tfconv from '../src/index'; diff --git a/tfjs-core/src/backends/backend_util.ts b/tfjs-core/src/backends/backend_util.ts index 646a9f8c975..26b33d37e7d 100644 --- a/tfjs-core/src/backends/backend_util.ts +++ b/tfjs-core/src/backends/backend_util.ts @@ -28,7 +28,7 @@ export * from '../ops/axis_util'; export * from '../ops/broadcast_util'; export * from '../ops/concat_util'; export * from '../ops/conv_util'; -export {Activation} from '../ops/fused_util'; +export {Activation, FusedBatchMatMulConfig} from '../ops/fused_util'; export {BackendValues, TypedArray, upcastType, PixelData} from '../types'; export {MemoryInfo, TimingInfo} from '../engine'; diff --git a/tfjs-core/src/index.ts b/tfjs-core/src/index.ts index 4a67212d042..702a46d90c2 100644 --- a/tfjs-core/src/index.ts +++ b/tfjs-core/src/index.ts @@ -54,7 +54,7 @@ export {Optimizer} from './optimizers/optimizer'; export {RMSPropOptimizer} from './optimizers/rmsprop_optimizer'; export {SGDOptimizer} from './optimizers/sgd_optimizer'; export {Scalar, Tensor, Tensor1D, Tensor2D, Tensor3D, Tensor4D, Tensor5D, TensorBuffer, variable, Variable} from './tensor'; -export {GradSaveFunc, NamedTensorMap, TensorContainer, TensorContainerArray, TensorContainerObject} from './tensor_types'; +export {GradSaveFunc, NamedTensor, NamedTensorMap, TensorContainer, TensorContainerArray, TensorContainerObject} from './tensor_types'; export {DataType, DataTypeMap, DataValues, Rank, RecursiveArray, ShapeMap, TensorLike} from './types'; export * from './ops/ops'; diff --git a/tfjs-data/src/test_node.ts b/tfjs-data/src/test_node.ts index f1348b01e24..13f14220447 100644 --- a/tfjs-data/src/test_node.ts +++ b/tfjs-data/src/test_node.ts @@ -15,6 +15,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {setTestEnvs} from '@tensorflow/tfjs-core/dist/jasmine_util'; // tslint:disable-next-line:no-require-imports diff --git a/tfjs-data/src/util/test_utils.ts b/tfjs-data/src/util/test_utils.ts index 30f58cf5ec7..611d31b664a 100644 --- a/tfjs-data/src/util/test_utils.ts +++ b/tfjs-data/src/util/test_utils.ts @@ -16,6 +16,7 @@ * ============================================================================= */ +// tslint:disable-next-line:no-imports-from-dist import {ALL_ENVS, BROWSER_ENVS, describeWithFlags, NODE_ENVS, registerTestEnv} from '@tensorflow/tfjs-core/dist/jasmine_util'; // Provide fake video stream diff --git a/tfjs-layers/src/engine/training.ts b/tfjs-layers/src/engine/training.ts index 24fe73c6d60..7ac88ca2e00 100644 --- a/tfjs-layers/src/engine/training.ts +++ b/tfjs-layers/src/engine/training.ts @@ -11,8 +11,7 @@ /* Original Source: engine/training.py */ import * as tfc from '@tensorflow/tfjs-core'; -import {io, ModelPredictConfig as ModelPredictArgs, NamedTensorMap, Optimizer, Scalar, scalar, serialization, Tensor, Tensor1D, tensor1d, util} from '@tensorflow/tfjs-core'; -import {NamedTensor} from '@tensorflow/tfjs-core/dist/tensor_types'; +import {io, ModelPredictConfig as ModelPredictArgs, NamedTensor, NamedTensorMap, Optimizer, Scalar, scalar, serialization, Tensor, Tensor1D, tensor1d, util} from '@tensorflow/tfjs-core'; import * as K from '../backend/tfjs_backend'; import {History, ModelLoggingVerbosity} from '../base_callbacks'; diff --git a/tfjs-layers/src/models.ts b/tfjs-layers/src/models.ts index b1133575525..bf3c6dce462 100644 --- a/tfjs-layers/src/models.ts +++ b/tfjs-layers/src/models.ts @@ -10,8 +10,7 @@ /* Original source keras/models.py */ -import {dispose, io, NamedTensorMap, Optimizer, Scalar, serialization, Tensor, util} from '@tensorflow/tfjs-core'; -import {NamedTensor} from '@tensorflow/tfjs-core/dist/tensor_types'; +import {dispose, io, NamedTensor, NamedTensorMap, Optimizer, Scalar, serialization, Tensor, util} from '@tensorflow/tfjs-core'; import {getUid} from './backend/state'; import {History} from './base_callbacks'; diff --git a/tfjs-layers/src/models_test.ts b/tfjs-layers/src/models_test.ts index 7df2ca694bd..3eb06f78fbb 100644 --- a/tfjs-layers/src/models_test.ts +++ b/tfjs-layers/src/models_test.ts @@ -9,7 +9,6 @@ */ import {DataType, ENV, io, memory, ones, randomNormal, Scalar, scalar, serialization, sum, Tensor, tensor1d, tensor2d, tensor3d, train, zeros} from '@tensorflow/tfjs-core'; -import {ConfigDict} from '@tensorflow/tfjs-core/dist/serialization'; import {LayersModel} from './engine/training'; import * as tfl from './index'; @@ -534,8 +533,9 @@ describeMathCPU('modelFromJSON', () => { 'backend': 'tensorflow' }; const model = - deserialize(convertPythonicToTs(modelTopology) as ConfigDict) as - LayersModel; + deserialize( + convertPythonicToTs(modelTopology) as serialization.ConfigDict + ) as LayersModel; expect(model.name.indexOf('BarSequential123')).toEqual(0); expect(model.inputs.length).toEqual(1); diff --git a/tfjs-layers/src/utils/test_utils.ts b/tfjs-layers/src/utils/test_utils.ts index 10881efbcb5..0d534e07468 100644 --- a/tfjs-layers/src/utils/test_utils.ts +++ b/tfjs-layers/src/utils/test_utils.ts @@ -13,6 +13,7 @@ */ import {memory, Tensor, test_util, util} from '@tensorflow/tfjs-core'; +// tslint:disable-next-line:no-imports-from-dist import {ALL_ENVS, describeWithFlags, registerTestEnv} from '@tensorflow/tfjs-core/dist/jasmine_util'; import {ValueError} from '../errors'; diff --git a/tfjs-node/src/io/file_system_test.ts b/tfjs-node/src/io/file_system_test.ts index e132a85280b..dd88cf6ab82 100644 --- a/tfjs-node/src/io/file_system_test.ts +++ b/tfjs-node/src/io/file_system_test.ts @@ -17,7 +17,6 @@ import * as tfc from '@tensorflow/tfjs-core'; import * as tfl from '@tensorflow/tfjs-layers'; -import {expectArraysClose} from '@tensorflow/tfjs-core/dist/test_util'; import * as fs from 'fs'; import * as path from 'path'; import * as rimraf from 'rimraf'; @@ -224,7 +223,7 @@ describe('File system IOHandler', () => { dtype: 'float32', } ]); - expectArraysClose( + tfc.test_util.expectArraysClose( new Float32Array(modelArtifacts.weightData), new Float32Array([-1.1, -3.3, -3.3, -7.7])); done(); @@ -347,7 +346,7 @@ describe('File system IOHandler', () => { new NodeFileSystem([`${modelPath}`, `${modelManifestJSONPath}`]); handler.load() .then(modelArtifacts => { - expectArraysClose( + tfc.test_util.expectArraysClose( new Uint8Array(modelArtifacts.modelTopology as ArrayBuffer), new Uint8Array(modelData)); expect(modelArtifacts.weightSpecs).toEqual([ @@ -362,7 +361,7 @@ describe('File system IOHandler', () => { dtype: 'float32', } ]); - expectArraysClose( + tfc.test_util.expectArraysClose( new Float32Array(modelArtifacts.weightData), new Float32Array([-1.1, -3.3, -3.3, -7.7])); done(); diff --git a/tfjs-node/src/nodejs_kernel_backend.ts b/tfjs-node/src/nodejs_kernel_backend.ts index 85b946cc04b..31b02568344 100644 --- a/tfjs-node/src/nodejs_kernel_backend.ts +++ b/tfjs-node/src/nodejs_kernel_backend.ts @@ -15,19 +15,20 @@ * ============================================================================= */ -import {BackendTimingInfo, DataMover, DataType, fill, KernelBackend, ones, Rank, rsqrt, Scalar, scalar, ShapeMap, Tensor, Tensor1D, tensor1d, Tensor2D, tensor2d, Tensor3D, tensor3d, Tensor4D, tidy, util} from '@tensorflow/tfjs-core'; -import {EPSILON_FLOAT32} from '@tensorflow/tfjs-core/dist/backends/backend'; -import {Conv2DInfo, Conv3DInfo} from '@tensorflow/tfjs-core/dist/ops/conv_util'; +import {BackendTimingInfo, backend_util, DataMover, DataType, fill, KernelBackend, ones, Rank, rsqrt, Scalar, scalar, ShapeMap, Tensor, Tensor1D, tensor1d, Tensor2D, tensor2d, Tensor3D, tensor3d, Tensor4D, Tensor5D, tidy, util} from '@tensorflow/tfjs-core'; import * as tfc from '@tensorflow/tfjs-core'; -import {Activation, FusedBatchMatMulConfig} from '@tensorflow/tfjs-core/dist/ops/fused_util'; -import {Tensor5D} from '@tensorflow/tfjs-core/dist/tensor'; -import {BackendValues, upcastType} from '@tensorflow/tfjs-core/dist/types'; import {isNullOrUndefined, isArray} from 'util'; import {Int64Scalar} from './int64_tensors'; import {TensorMetadata, TFEOpAttr, TFJSBinding} from './tfjs_binding'; +type Activation = backend_util.Activation; +type BackendValues = backend_util.BackendValues; +type Conv2DInfo = backend_util.Conv2DInfo; +type Conv3DInfo = backend_util.Conv3DInfo; +type FusedBatchMatMulConfig = backend_util.FusedBatchMatMulConfig; + type TensorInfo = { shape: number[], dtype: number, @@ -37,6 +38,9 @@ type TensorInfo = { interface DataId {} +const { upcastType } = backend_util; +const EPSILON_FLOAT32 = 1e-7; + export class NodeJSKernelBackend extends KernelBackend { binding: TFJSBinding; isGPUPackage: boolean; @@ -2028,4 +2032,4 @@ export function ensureTensorflowBackend() { tfc.getBackend() === 'tensorflow', () => `Expect the current backend to be "tensorflow", but got "${ tfc.getBackend()}"`); -} \ No newline at end of file +} diff --git a/tfjs-node/src/nodejs_kernel_backend_test.ts b/tfjs-node/src/nodejs_kernel_backend_test.ts index 9d9fc990d88..c57549697ac 100644 --- a/tfjs-node/src/nodejs_kernel_backend_test.ts +++ b/tfjs-node/src/nodejs_kernel_backend_test.ts @@ -16,18 +16,17 @@ */ import * as tf from '@tensorflow/tfjs-core'; -import {Tensor5D} from '@tensorflow/tfjs-core/dist/tensor'; -import {expectArraysClose} from '@tensorflow/tfjs-core/dist/test_util'; +import {Tensor5D} from '@tensorflow/tfjs-core'; import {createTensorsTypeOpAttr, createTypeOpAttr, ensureTensorflowBackend, getTFDType, nodeBackend, NodeJSKernelBackend} from './nodejs_kernel_backend'; describe('delayed upload', () => { it('should handle data before op execution', async () => { const t = tf.tensor1d([1, 2, 3]); - expectArraysClose(await t.data(), [1, 2, 3]); + tf.test_util.expectArraysClose(await t.data(), [1, 2, 3]); const r = t.add(tf.tensor1d([4, 5, 6])); - expectArraysClose(await r.data(), [5, 7, 9]); + tf.test_util.expectArraysClose(await r.data(), [5, 7, 9]); }); it('Should not cache tensors in the tensor map for device support. ', () => { diff --git a/tfjs-node/src/run_tests.ts b/tfjs-node/src/run_tests.ts index bd581ea0274..b81d07e941e 100644 --- a/tfjs-node/src/run_tests.ts +++ b/tfjs-node/src/run_tests.ts @@ -17,6 +17,7 @@ // We import index.ts so that the Node backend gets registered. import './index'; +// tslint:disable-next-line:no-imports-from-dist import * as jasmine_util from '@tensorflow/tfjs-core/dist/jasmine_util'; import {nodeBackend} from './nodejs_kernel_backend'; diff --git a/tfjs-node/src/tfjs_binding.ts b/tfjs-node/src/tfjs_binding.ts index ddcede2abf3..67b0994e5b0 100644 --- a/tfjs-node/src/tfjs_binding.ts +++ b/tfjs-node/src/tfjs_binding.ts @@ -15,7 +15,8 @@ * ============================================================================= */ -import {BackendValues} from '@tensorflow/tfjs-core/dist/types'; +import {backend_util} from '@tensorflow/tfjs-core'; +type BackendValues = backend_util.BackendValues; export declare class TensorMetadata { id: number; diff --git a/tfjs-react-native/yarn.lock b/tfjs-react-native/yarn.lock index 62b09e270ed..c540b78dc06 100644 --- a/tfjs-react-native/yarn.lock +++ b/tfjs-react-native/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.5.1.tgz#c496b4969eea5b91da1a5919a611046360b0c51f" integrity sha512-Ssfx2uLYPnsuqIvDCuUOEZT6jh5AVy0U0mr2eHxNO2Syor1nfOrR/n4hTOFcBWc1wamDTGCqo+UHJpxURVXd2Q== -"@tensorflow/tfjs-core@^1.2.8": +"@tensorflow/tfjs-core@>=1.2.8": version "1.2.8" resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-1.2.8.tgz#d6873b88522f8cf25d34c10afd095866578d7d92" integrity sha512-lWV4vAnXAAmahXpCWBwdGGW9HO6iNw9pUeVYih7pDXeJahMk3OJs6SgjRNhwn+ldsGwRoorR0/RHg0yNLmqWxQ== diff --git a/tfjs-vis/src/show/history.ts b/tfjs-vis/src/show/history.ts index 68841db82aa..92e6b9edb8c 100644 --- a/tfjs-vis/src/show/history.ts +++ b/tfjs-vis/src/show/history.ts @@ -15,7 +15,7 @@ * ============================================================================= */ -import {Logs} from '@tensorflow/tfjs-layers/dist/logs'; +import {Logs} from '@tensorflow/tfjs-layers/src/logs'; import {linechart} from '../render/linechart'; import {getDrawArea, nextFrame} from '../render/render_utils'; diff --git a/tfjs-vis/src/show/model.ts b/tfjs-vis/src/show/model.ts index 55eb5bdd0f3..f6ff60f52cc 100644 --- a/tfjs-vis/src/show/model.ts +++ b/tfjs-vis/src/show/model.ts @@ -16,6 +16,8 @@ */ import * as tf from '@tensorflow/tfjs'; + +// tslint:disable-next-line:no-imports-from-dist import {Layer} from '@tensorflow/tfjs-layers/dist/engine/topology'; import {histogram} from '../render/histogram'; diff --git a/tslint.json b/tslint.json index d741cb53dfb..f09e1329ec1 100644 --- a/tslint.json +++ b/tslint.json @@ -1,5 +1,6 @@ { "extends": ["tslint-no-circular-imports"], + "rulesDirectory": ".tslint", "rules": { "array-type": [true, "array-simple"], "arrow-return-shorthand": true, @@ -37,6 +38,7 @@ "no-debugger": true, "no-default-export": true, "no-inferrable-types": true, + "no-imports-from-dist": true, "no-namespace": [true, "allow-declarations"], "no-reference": true, "no-require-imports": true, diff --git a/yarn.lock b/yarn.lock index 4e716debb0c..6a40182b4d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,22 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + "@types/strip-bom@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" @@ -19,6 +35,13 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -47,7 +70,12 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -chalk@^2.3.0, chalk@~2.4.2: +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +chalk@^2.0.0, chalk@^2.3.0, chalk@~2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -77,12 +105,17 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= +commander@^2.12.1: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -diff@^3.1.0: +diff@^3.1.0, diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== @@ -92,12 +125,22 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -glob@^7.0.0: +glob@^7.0.0, glob@^7.1.1: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== @@ -139,6 +182,19 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + make-error@^1.1.1: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" @@ -197,13 +253,18 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -resolve@^1.1.6: +resolve@^1.1.6, resolve@^1.3.2: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" +semver@^5.3.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + shelljs@~0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" @@ -226,6 +287,11 @@ source-map@^0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -269,6 +335,37 @@ tsconfig@^7.0.0: strip-bom "^3.0.0" strip-json-comments "^2.0.0" +tslib@^1.8.0, tslib@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + +tslint@^5.11.0: + version "5.19.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.19.0.tgz#a2cbd4a7699386da823f6b499b8394d6c47bb968" + integrity sha512-1LwwtBxfRJZnUvoS9c0uj8XQtAnyhWr9KlNvDIdB+oXyT+VpsOAaEhEgKi1HrZ8rq0ki/AAnbGSv4KM6/AfVZw== + dependencies: + "@babel/code-frame" "^7.0.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + mkdirp "^0.5.1" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.29.0" + +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + typescript@3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.3.tgz#c830f657f93f1ea846819e929092f5fe5983e977"