From fdec54a23a045d1f0d8c1324332ca59703c55684 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:17 +0200 Subject: [PATCH 01/44] chore(npm): create TypeScript build setup --- package.json | 5 ++++- tsconfig.json | 8 ++++++++ yarn.lock | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 tsconfig.json diff --git a/package.json b/package.json index ff30104b..d1a1bac3 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "changelog": "commitlint --from=origin/master", + "build": "tsc", "lint": "eslint lib/ test/ index.js", "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.js", "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.js", @@ -57,10 +58,12 @@ "devDependencies": { "@commitlint/cli": "^12.1.4", "@commitlint/config-conventional": "^12.1.4", + "@types/node": "^15.12.5", "docdash": "^1.2.0", "eslint": "^7.29.0", "eslint-config-google": "^0.14.0", "jest": "^27.0.6", - "jsdoc": "^3.6.7" + "jsdoc": "^3.6.7", + "typescript": "^4.3.4" } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..1716ab4b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "target": "es6", + "outDir": "dist", + "module": "commonjs", + "noImplicitAny": true + } +} diff --git a/yarn.lock b/yarn.lock index 8ec41652..9b8af4fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -729,7 +729,7 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== -"@types/node@*": +"@types/node@*", "@types/node@^15.12.5": version "15.12.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.5.tgz#9a78318a45d75c9523d2396131bd3cca54b2d185" integrity sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg== @@ -3469,6 +3469,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typescript@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" + integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== + uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" From 4eb6681eb814052707d5f03df8a00e6dca2cb1ae Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:41 +0200 Subject: [PATCH 02/44] refactor(apdu): rework to TypeScript --- lib/{apdu.js => apdu.ts} | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) rename lib/{apdu.js => apdu.ts} (71%) diff --git a/lib/apdu.js b/lib/apdu.ts similarity index 71% rename from lib/apdu.js rename to lib/apdu.ts index 5b223c38..f7d4739b 100644 --- a/lib/apdu.js +++ b/lib/apdu.ts @@ -1,16 +1,17 @@ 'use strict'; -const baEnum = require('./enum'); +import * as baEnum from './enum'; +import { EncodeBuffer } from './types'; -const getDecodedType = module.exports.getDecodedType = (buffer, offset) => { +export const getDecodedType = (buffer: Buffer, offset: number) => { return buffer[offset]; }; -module.exports.setDecodedType = (buffer, offset, type) => { +export const setDecodedType = (buffer: Buffer, offset: number, type: number) => { buffer[offset] = type; }; -module.exports.getDecodedInvokeId = (buffer, offset) => { +export const getDecodedInvokeId = (buffer: Buffer, offset: number) => { const type = getDecodedType(buffer, offset); switch (type & baEnum.PDU_TYPE_MASK) { case baEnum.PduTypes.SIMPLE_ACK: @@ -26,7 +27,7 @@ module.exports.getDecodedInvokeId = (buffer, offset) => { } }; -module.exports.encodeConfirmedServiceRequest = (buffer, type, service, maxSegments, maxApdu, invokeId, sequencenumber, proposedWindowSize) => { +export const encodeConfirmedServiceRequest = (buffer: EncodeBuffer, type: number, service: number, maxSegments: number, maxApdu: number, invokeId: number, sequencenumber?: number, proposedWindowSize?: number) => { buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = maxSegments | maxApdu; buffer.buffer[buffer.offset++] = invokeId; @@ -37,7 +38,7 @@ module.exports.encodeConfirmedServiceRequest = (buffer, type, service, maxSegmen buffer.buffer[buffer.offset++] = service; }; -module.exports.decodeConfirmedServiceRequest = (buffer, offset) => { +export const decodeConfirmedServiceRequest = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const maxSegments = buffer[offset] & 0xF0; @@ -62,12 +63,12 @@ module.exports.decodeConfirmedServiceRequest = (buffer, offset) => { }; }; -module.exports.encodeUnconfirmedServiceRequest = (buffer, type, service) => { +export const encodeUnconfirmedServiceRequest = (buffer: EncodeBuffer, type: number, service: number) => { buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = service; }; -module.exports.decodeUnconfirmedServiceRequest = (buffer, offset) => { +export const decodeUnconfirmedServiceRequest = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const service = buffer[offset++]; @@ -78,13 +79,13 @@ module.exports.decodeUnconfirmedServiceRequest = (buffer, offset) => { }; }; -module.exports.encodeSimpleAck = (buffer, type, service, invokeId) => { +export const encodeSimpleAck = (buffer: EncodeBuffer, type: number, service: number, invokeId: number) => { buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = invokeId; buffer.buffer[buffer.offset++] = service; }; -module.exports.decodeSimpleAck = (buffer, offset) => { +export const decodeSimpleAck = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const invokeId = buffer[offset++]; @@ -97,7 +98,7 @@ module.exports.decodeSimpleAck = (buffer, offset) => { }; }; -module.exports.encodeComplexAck = (buffer, type, service, invokeId, sequencenumber, proposedWindowNumber) => { +export const encodeComplexAck = (buffer: EncodeBuffer, type: number, service: number, invokeId: number, sequencenumber?: number, proposedWindowNumber?: number) => { let len = 3; buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = invokeId; @@ -110,7 +111,7 @@ module.exports.encodeComplexAck = (buffer, type, service, invokeId, sequencenumb return len; }; -module.exports.decodeComplexAck = (buffer, offset) => { +export const decodeComplexAck = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const invokeId = buffer[offset++]; @@ -131,14 +132,14 @@ module.exports.decodeComplexAck = (buffer, offset) => { }; }; -module.exports.encodeSegmentAck = (buffer, type, originalInvokeId, sequencenumber, actualWindowSize) => { +export const encodeSegmentAck = (buffer: EncodeBuffer, type: number, originalInvokeId: number, sequencenumber: number, actualWindowSize: number) => { buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = originalInvokeId; buffer.buffer[buffer.offset++] = sequencenumber; buffer.buffer[buffer.offset++] = actualWindowSize; }; -module.exports.decodeSegmentAck = (buffer, offset) => { +export const decodeSegmentAck = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const originalInvokeId = buffer[offset++]; @@ -153,13 +154,13 @@ module.exports.decodeSegmentAck = (buffer, offset) => { }; }; -module.exports.encodeError = (buffer, type, service, invokeId) => { +export const encodeError = (buffer: EncodeBuffer, type: number, service: number, invokeId: number) => { buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = invokeId; buffer.buffer[buffer.offset++] = service; }; -module.exports.decodeError = (buffer, offset) => { +export const decodeError = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const invokeId = buffer[offset++]; @@ -172,13 +173,13 @@ module.exports.decodeError = (buffer, offset) => { }; }; -module.exports.encodeAbort = (buffer, type, invokeId, reason) => { +export const encodeAbort = (buffer: EncodeBuffer, type: number, invokeId: number, reason: number) => { buffer.buffer[buffer.offset++] = type; buffer.buffer[buffer.offset++] = invokeId; buffer.buffer[buffer.offset++] = reason; }; -module.exports.decodeAbort = (buffer, offset) => { +export const decodeAbort = (buffer: Buffer, offset: number) => { const orgOffset = offset; const type = buffer[offset++]; const invokeId = buffer[offset++]; From eb527d5e6fe64a788795d2e4ad01755a0232a3a9 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:43 +0200 Subject: [PATCH 03/44] refactor(bvlc): rework to TypeScript --- lib/{bvlc.js => bvlc.ts} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename lib/{bvlc.js => bvlc.ts} (88%) diff --git a/lib/bvlc.js b/lib/bvlc.ts similarity index 88% rename from lib/bvlc.js rename to lib/bvlc.ts index d6fabf6a..dc2f5426 100644 --- a/lib/bvlc.js +++ b/lib/bvlc.ts @@ -1,8 +1,8 @@ 'use strict'; -const baEnum = require('./enum'); +import * as baEnum from './enum'; -module.exports.encode = (buffer, func, msgLength) => { +export const encode = (buffer: Buffer, func: number, msgLength: number) => { buffer[0] = baEnum.BVLL_TYPE_BACNET_IP; buffer[1] = func; buffer[2] = (msgLength & 0xFF00) >> 8; @@ -10,7 +10,7 @@ module.exports.encode = (buffer, func, msgLength) => { return baEnum.BVLC_HEADER_LENGTH; }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { let len; const func = buffer[1]; const msgLength = (buffer[2] << 8) | (buffer[3] << 0); From c8d31393bf9ca4ee86388d85d8bf86c1177cf2d6 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:44 +0200 Subject: [PATCH 04/44] refactor(enum): rework to TypeScript --- lib/{enum.js => enum.ts} | 228 +++++++++++++++++++-------------------- 1 file changed, 114 insertions(+), 114 deletions(-) rename lib/{enum.js => enum.ts} (91%) diff --git a/lib/enum.js b/lib/enum.ts similarity index 91% rename from lib/enum.js rename to lib/enum.ts index 2a7e019b..d58acbf6 100644 --- a/lib/enum.js +++ b/lib/enum.ts @@ -1,22 +1,22 @@ 'use strict'; -module.exports.PDU_TYPE_MASK = 0xF0; -module.exports.ASN1_MAX_OBJECT = 0x3FF; -module.exports.ASN1_INSTANCE_BITS = 22; -module.exports.ASN1_MAX_INSTANCE = 0x3FFFFF; -module.exports.ASN1_MAX_BITSTRING_BYTES = 15; -module.exports.ASN1_ARRAY_ALL = 0xFFFFFFFF; -module.exports.ASN1_NO_PRIORITY = 0; -module.exports.ASN1_MIN_PRIORITY = 1; -module.exports.ASN1_MAX_PRIORITY = 16; -module.exports.ASN1_MAX_APPLICATION_TAG = 16; -module.exports.ASN1_MAX_OBJECT_TYPE = 1024; -module.exports.ASN1_MAX_PROPERTY_ID = 4194303; -module.exports.BVLL_TYPE_BACNET_IP = 0x81; -module.exports.BVLC_HEADER_LENGTH = 4; +export const PDU_TYPE_MASK = 0xF0; +export const ASN1_MAX_OBJECT = 0x3FF; +export const ASN1_INSTANCE_BITS = 22; +export const ASN1_MAX_INSTANCE = 0x3FFFFF; +export const ASN1_MAX_BITSTRING_BYTES = 15; +export const ASN1_ARRAY_ALL = 0xFFFFFFFF; +export const ASN1_NO_PRIORITY = 0; +export const ASN1_MIN_PRIORITY = 1; +export const ASN1_MAX_PRIORITY = 16; +export const ASN1_MAX_APPLICATION_TAG = 16; +export const ASN1_MAX_OBJECT_TYPE = 1024; +export const ASN1_MAX_PROPERTY_ID = 4194303; +export const BVLL_TYPE_BACNET_IP = 0x81; +export const BVLC_HEADER_LENGTH = 4; // ASHRE 135-2016 - 21 FORMAL DESCRIPTION OF APPLICATION PROTOCOL DATA UNITS - Enumerators -module.exports.ConfirmedServiceChoice = { +export const ConfirmedServiceChoice = { ACKNOWLEDGE_ALARM: 0, CONFIRMED_COV_NOTIFICATION: 1, CONFIRMED_EVENT_NOTIFICATION: 2, @@ -48,7 +48,7 @@ module.exports.ConfirmedServiceChoice = { CONFIRMED_COV_NOTIFICATION_MULTIPLE: 31 }; -module.exports.UnconfirmedServiceChoice = { +export const UnconfirmedServiceChoice = { I_AM: 0, I_HAVE: 1, UNCONFIRMED_COV_NOTIFICATION: 2, @@ -63,7 +63,7 @@ module.exports.UnconfirmedServiceChoice = { UNCONFIRMED_COV_NOTIFICATION_MULTIPLE: 11 }; -module.exports.AbortReason = { +export const AbortReason = { OTHER: 0, BUFFER_OVERFLOW: 1, INVALID_APDU_IN_THIS_STATE: 2, @@ -78,7 +78,7 @@ module.exports.AbortReason = { APDU_TOO_LONG: 11 }; -module.exports.RejectReason = { +export const RejectReason = { OTHER: 0, BUFFER_OVERFLOW: 1, INCONSISTENT_PARAMETERS: 2, @@ -91,7 +91,7 @@ module.exports.RejectReason = { UNRECOGNIZED_SERVICE: 9 }; -module.exports.ErrorClass = { +export const ErrorClass = { DEVICE: 0, OBJECT: 1, PROPERTY: 2, @@ -102,7 +102,7 @@ module.exports.ErrorClass = { COMMUNICATION: 7 }; -module.exports.ErrorCode = { +export const ErrorCode = { ABORT_APDU_TOO_LONG: 123, ABORT_APPLICATION_EXCEEDED_REPLY_TIME: 124, ABORT_BUFFER_OVERFLOW: 51, @@ -238,7 +238,7 @@ module.exports.ErrorCode = { WRITE_BDT_FAILED: 116 }; -module.exports.AccessAuthenticationFactorDisable = { +export const AccessAuthenticationFactorDisable = { NONE: 0, DISABLED: 1, DISABLED_LOST: 2, @@ -247,14 +247,14 @@ module.exports.AccessAuthenticationFactorDisable = { DISABLED_DESTROYED: 5 }; -module.exports.AccessCredentialDisable = { +export const AccessCredentialDisable = { NONE: 0, DISABLE: 1, DISABLE_MANUAL: 2, DISABLE_LOCKOUT: 3 }; -module.exports.AccessCredentialDisableReason = { +export const AccessCredentialDisableReason = { DISABLED: 0, DISABLED_NEEDS_PROVISIONING: 1, DISABLED_UNASSIGNED: 2, @@ -267,7 +267,7 @@ module.exports.AccessCredentialDisableReason = { DISABLED_MANUAL: 9 }; -module.exports.AccessEvent = { +export const AccessEvent = { NONE: 0, GRANTED: 1, MUSTER: 2, @@ -324,19 +324,19 @@ module.exports.AccessEvent = { DENIED_OTHER: 164 }; -module.exports.AccessPassbackMode = { +export const AccessPassbackMode = { PASSBACK_OFF: 0, HARD_PASSBACK: 1, SOFT_PASSBACK: 2 }; -module.exports.AccessUserType = { +export const AccessUserType = { ASSET: 0, GROUP: 1, PERSON: 2 }; -module.exports.AccessZoneOccupancyState = { +export const AccessZoneOccupancyState = { NORMAL: 0, BELOW_LOWER_LIMIT: 1, AT_LOWER_LIMIT: 2, @@ -346,12 +346,12 @@ module.exports.AccessZoneOccupancyState = { NOT_SUPPORTED: 6 }; -module.exports.Action = { +export const Action = { DIRECT: 0, REVERSE: 1 }; -module.exports.AuthenticationFactorType = { +export const AuthenticationFactorType = { UNDEFINED: 0, ERROR: 1, CUSTOM: 2, @@ -379,7 +379,7 @@ module.exports.AuthenticationFactorType = { USER_PASSWORD: 24 }; -module.exports.AuthenticationStatus = { +export const AuthenticationStatus = { NOT_READY: 0, READY: 1, DISABLED: 2, WAITING_FOR_AUTHENTICATION_FACTOR: 3, @@ -388,7 +388,7 @@ module.exports.AuthenticationStatus = { IN_PROGRESS: 6 }; -module.exports.AuthorizationExemption = { +export const AuthorizationExemption = { PASSBACK: 0, OCCUPANCY_CHECK: 1, ACCESS_RIGHTS: 2, @@ -398,7 +398,7 @@ module.exports.AuthorizationExemption = { AUTHORIZATION_DELAY: 6 }; -module.exports.AuthorizationMode = { +export const AuthorizationMode = { AUTHORIZE: 0, GRANT_ACTIVE: 1, DENY_ALL: 2, @@ -407,7 +407,7 @@ module.exports.AuthorizationMode = { NONE: 5 }; -module.exports.BackupState = { +export const BackupState = { IDLE: 0, PREPARING_FOR_BACKUP: 1, PREPARING_FOR_RESTORE: 2, @@ -417,7 +417,7 @@ module.exports.BackupState = { RESTORE_FAILURE: 6 }; -module.exports.BinaryLightingPV = { +export const BinaryLightingPV = { OFF: 0, ON: 1, WARN: 2, @@ -426,12 +426,12 @@ module.exports.BinaryLightingPV = { STOP: 5 }; -module.exports.BinaryPV = { +export const BinaryPV = { INACTIVE: 0, ACTIVE: 1 }; -module.exports.DeviceStatus = { +export const DeviceStatus = { OPERATIONAL: 0, OPERATIONAL_READ_ONLY: 1, DOWNLOAD_REQUIRED: 2, @@ -440,7 +440,7 @@ module.exports.DeviceStatus = { BACKUP_IN_PROGRESS: 5 }; -module.exports.DoorAlarmState = { +export const DoorAlarmState = { NORMAL: 0, ALARM: 1, DOOR_OPEN_TOO_LONG: 2, @@ -452,13 +452,13 @@ module.exports.DoorAlarmState = { EGRESS_OPEN: 8 }; -module.exports.DoorSecuredStatus = { +export const DoorSecuredStatus = { SECURED: 0, UNSECURED: 1, UNKNOWN: 2 }; -module.exports.DoorStatus = { +export const DoorStatus = { CLOSED: 0, OPENED: 1, UNKNOWN: 2, @@ -471,14 +471,14 @@ module.exports.DoorStatus = { LIMITED_OPENED: 9 }; -module.exports.DoorValue = { +export const DoorValue = { LOCK: 0, UNLOCK: 1, PULSE_UNLOCK: 2, EXTENDED_PULSE_UNLOCK: 3 }; -module.exports.EngineeringUnits = { +export const EngineeringUnits = { METERS_PER_SECOND_PER_SECOND: 166, SQUARE_METERS: 0, SQUARE_CENTIMETERS: 116, @@ -743,7 +743,7 @@ module.exports.EngineeringUnits = { MINUTES_PER_DEGREE_KELVIN: 236 }; -module.exports.EscalatorFault = { +export const EscalatorFault = { CONTROLLER_FAULT: 0, DRIVE_AND_MOTOR_FAULT: 1, MECHANICAL_COMPONENT_FAULT: 2, @@ -755,7 +755,7 @@ module.exports.EscalatorFault = { COMB_PLATE_FAULT: 8 }; -module.exports.EscalatorMode = { +export const EscalatorMode = { UNKNOWN: 0, STOP: 1, UP: 2, @@ -764,7 +764,7 @@ module.exports.EscalatorMode = { OUT_OF_SERVICE: 5 }; -module.exports.EscalatorOperationDirection = { +export const EscalatorOperationDirection = { UNKNOWN: 0, STOPPED: 1, UP_RATED_SPEED: 2, @@ -773,7 +773,7 @@ module.exports.EscalatorOperationDirection = { DOWN_REDUCED_SPEED: 5 }; -module.exports.EventState = { +export const EventState = { NORMAL: 0, FAULT: 1, OFFNORMAL: 2, @@ -782,7 +782,7 @@ module.exports.EventState = { LIFE_SAFETY_ALARM: 5 }; -module.exports.EventType = { +export const EventType = { CHANGE_OF_BITSTRING: 0, CHANGE_OF_STATE: 1, CHANGE_OF_VALUE: 2, @@ -806,7 +806,7 @@ module.exports.EventType = { CHANGE_OF_TIMER: 22 }; -module.exports.FaultType = { +export const FaultType = { NONE: 0, FAULT_CHARACTERSTRING: 1, FAULT_EXTENDED: 2, @@ -817,18 +817,18 @@ module.exports.FaultType = { FAULT_LISTED: 7 }; -module.exports.FileAccessMethod = { +export const FileAccessMethod = { RECORD_ACCESS: 0, STREAM_ACCESS: 1 }; -module.exports.IPMode = { +export const IPMode = { NORMAL: 0, FOREIGN: 1, BBMD: 2 }; -module.exports.LifeSafetyMode = { +export const LifeSafetyMode = { OFF: 0, ON: 1, TEST: 2, @@ -846,7 +846,7 @@ module.exports.LifeSafetyMode = { DEFAULT: 14 }; -module.exports.LifeSafetyOperation = { +export const LifeSafetyOperation = { NONE: 0, SILENCE: 1, SILENCE_AUDIBLE: 2, @@ -859,7 +859,7 @@ module.exports.LifeSafetyOperation = { UNSILENCE_VISUAL: 9 }; -module.exports.LifeSafetyState = { +export const LifeSafetyState = { QUIET: 0, PRE_ALARM: 1, ALARM: 2, @@ -886,7 +886,7 @@ module.exports.LifeSafetyState = { TEST_SUPERVISORY: 23 }; -module.exports.LiftCarDirection = { +export const LiftCarDirection = { UNKNOWN: 0, NONE: 1, STOPPED: 2, @@ -895,13 +895,13 @@ module.exports.LiftCarDirection = { UP_AND_DOWN: 5 }; -module.exports.LiftCarDoorCommand = { +export const LiftCarDoorCommand = { NONE: 0, OPEN: 1, CLOSE: 2 }; -module.exports.LiftCarDriveStatus = { +export const LiftCarDriveStatus = { UNKNOWN: 0, STATIONARY: 1, BRAKING: 2, @@ -914,7 +914,7 @@ module.exports.LiftCarDriveStatus = { MULTI_FLOOR_JUMP: 9 }; -module.exports.LiftCarMode = { +export const LiftCarMode = { UNKNOWN: 0, NORMAL: 1, VIP: 2, @@ -931,7 +931,7 @@ module.exports.LiftCarMode = { OCCUPANT_EVACUATION: 13 }; -module.exports.LiftFault = { +export const LiftFault = { CONTROLLER_FAULT: 0, DRIVE_AND_MOTOR_FAULT: 1, GOVERNOR_AND_SAFETY_GEAR_FAULT: 2, @@ -951,7 +951,7 @@ module.exports.LiftFault = { LOAD_MEASUREMENT_FAULT: 16 }; -module.exports.LiftGroupMode = { +export const LiftGroupMode = { UNKNOWN: 0, NORMAL: 1, DOWN_PEAK: 2, @@ -961,7 +961,7 @@ module.exports.LiftGroupMode = { UP_PEAK: 6 }; -module.exports.LightingInProgress = { +export const LightingInProgress = { IDLE: 0, FADE_ACTIVE: 1, RAMP_ACTIVE: 2, @@ -969,7 +969,7 @@ module.exports.LightingInProgress = { OTHER: 4 }; -module.exports.LightingOperation = { +export const LightingOperation = { NONE: 0, FADE_TO: 1, RAMP_TO: 2, @@ -983,13 +983,13 @@ module.exports.LightingOperation = { STOP: 10 }; -module.exports.LightingTransition = { +export const LightingTransition = { NONE: 0, FADE: 1, RAMP: 2 }; -module.exports.LockStatus = { +export const LockStatus = { LOCKED: 0, UNLOCKED: 1, LOCK_FAULT: 2, @@ -997,27 +997,27 @@ module.exports.LockStatus = { UNKNOWN: 4 }; -module.exports.LoggingType = { +export const LoggingType = { POLLED: 0, COV: 1, TRIGGERED: 2 }; -module.exports.Maintenance = { +export const Maintenance = { NONE: 0, PERIODIC_TEST: 1, NEED_SERVICE_OPERATIONAL: 2, NEED_SERVICE_INOPERATIVE: 3 }; -module.exports.NetworkNumberQuality = { +export const NetworkNumberQuality = { UNKNOWN: 0, LEARNED: 1, LEARNED_CONFIGURED: 2, CONFIGURED: 3 }; -module.exports.NetworkPortCommand = { +export const NetworkPortCommand = { IDLE: 0, DISCARD_CHANGES: 1, RENEW_FD_REGISTRATION: 2, @@ -1028,7 +1028,7 @@ module.exports.NetworkPortCommand = { RESTART_PORT: 7 }; -module.exports.NetworkType = { +export const NetworkType = { ETHERNET: 0, ARCNET: 1, MSTP: 2, @@ -1041,7 +1041,7 @@ module.exports.NetworkType = { SERIAL: 10 }; -module.exports.NodeType = { +export const NodeType = { UNKNOWN: 0, SYSTEM: 1, NETWORK: 2, @@ -1066,13 +1066,13 @@ module.exports.NodeType = { ZONE: 21 }; -module.exports.NotifyType = { +export const NotifyType = { ALARM: 0, EVENT: 1, ACK_NOTIFICATION: 2 }; -module.exports.ObjectType = { +export const ObjectType = { ACCESS_CREDENTIAL: 32, ACCESS_DOOR: 30, ACCESS_POINT: 33, @@ -1135,12 +1135,12 @@ module.exports.ObjectType = { TREND_LOG_MULTIPLE: 27 }; -module.exports.Polarity = { +export const Polarity = { NORMAL: 0, REVERSE: 1 }; -module.exports.ProgramError = { +export const ProgramError = { NORMAL: 0, LOAD_FAILED: 1, INTERNAL: 2, @@ -1148,7 +1148,7 @@ module.exports.ProgramError = { OTHER: 4 }; -module.exports.ProgramRequest = { +export const ProgramRequest = { READY: 0, LOAD: 1, RUN: 2, @@ -1157,7 +1157,7 @@ module.exports.ProgramRequest = { UNLOAD: 5 }; -module.exports.ProgramState = { +export const ProgramState = { IDLE: 0, LOADING: 1, RUNNING: 2, @@ -1166,7 +1166,7 @@ module.exports.ProgramState = { UNLOADING: 5 }; -module.exports.PropertyIdentifier = { +export const PropertyIdentifier = { ABSENTEE_LIMIT: 244, ACCEPTED_MODES: 175, ACCESS_ALARM_EVENTS: 245, @@ -1624,14 +1624,14 @@ module.exports.PropertyIdentifier = { ZONE_TO: 321 }; -module.exports.ProtocolLevel = { +export const ProtocolLevel = { PHYSICAL: 0, PROTOCOL: 1, BACNET_APPLICATION: 2, NON_BACNET_APPLICATION: 3 }; -module.exports.Relationship = { +export const Relationship = { UNKNOWN: 0, DEFAULT: 1, CONTAINS: 2, @@ -1664,7 +1664,7 @@ module.exports.Relationship = { RECEIVES_STEAM: 29 }; -module.exports.Reliability = { +export const Reliability = { NO_FAULT_DETECTED: 0, NO_SENSOR: 1, OVER_RANGE: 2, @@ -1691,7 +1691,7 @@ module.exports.Reliability = { REFERENCED_OBJECT_FAULT: 24 }; -module.exports.RestartReason = { +export const RestartReason = { UNKNOWN: 0, COLDSTART: 1, WARMSTART: 2, @@ -1703,7 +1703,7 @@ module.exports.RestartReason = { ACTIVATE_CHANGES: 8 }; -module.exports.SecurityLevel = { +export const SecurityLevel = { INCAPABLE: 0, PLAIN: 1, SIGNED: 2, @@ -1712,41 +1712,41 @@ module.exports.SecurityLevel = { ENCRYPTED_END_TO_END: 5 }; -module.exports.SecurityPolicy = { +export const SecurityPolicy = { PLAIN_NON_TRUSTED: 0, PLAIN_TRUSTED: 1, SIGNED_TRUSTED: 2, ENCRYPTED_TRUSTED: 3 }; -module.exports.Segmentation = { +export const Segmentation = { SEGMENTED_BOTH: 0, SEGMENTED_TRANSMIT: 1, SEGMENTED_RECEIVE: 2, NO_SEGMENTATION: 3 }; -module.exports.ShedState = { +export const ShedState = { SHED_INACTIVE: 0, SHED_REQUEST_PENDING: 1, SHED_COMPLIANT: 2, SHED_NON_COMPLIANT: 3 }; -module.exports.SilencedState = { +export const SilencedState = { UNSILENCED: 0, AUDIBLE_SILENCED: 1, VISIBLE_SILENCED: 2, ALL_SILENCED: 3 }; -module.exports.TimerState = { +export const TimerState = { IDLE: 0, RUNNING: 1, EXPIRED: 2 }; -module.exports.TimerTransition = { +export const TimerTransition = { NONE: 0, IDLE_TO_RUNNING: 1, RUNNING_TO_IDLE: 2, @@ -1757,7 +1757,7 @@ module.exports.TimerTransition = { EXPIRED_TO_RUNNING: 7 }; -module.exports.VTClass = { +export const VTClass = { DEFAULT_TERMINAL: 0, ANSI_X3_64: 1, DEC_VT52: 2, @@ -1767,7 +1767,7 @@ module.exports.VTClass = { IBM_3130: 6 }; -module.exports.WriteStatus = { +export const WriteStatus = { IDLE: 0, IN_PROGRESS: 1, SUCCESSFUL: 2, @@ -1775,7 +1775,7 @@ module.exports.WriteStatus = { }; // ASHRE 135-2016 - 21 FORMAL DESCRIPTION OF APPLICATION PROTOCOL DATA UNITS - Bitstrings -module.exports.DaysOfWeek = { +export const DaysOfWeek = { MONDAY: 0, TUESDAY: 1, WEDNESDAY: 2, @@ -1785,24 +1785,24 @@ module.exports.DaysOfWeek = { SUNDAY: 6 }; -module.exports.EventTransitionBits = { +export const EventTransitionBits = { TO_OFFNORMAL: 0, TO_FAULT: 1, TO_NORMAL: 2 }; -module.exports.LimitEnable = { +export const LimitEnable = { LOW_LIMIT_ENABLE: 0, HIGH_LIMIT_ENABLE: 1 }; -module.exports.LogStatus = { +export const LogStatus = { LOG_DISABLED: 0, BUFFER_PURGED: 1, LOG_INTERRUPTED: 2 }; -module.exports.ObjectTypesSupported = { +export const ObjectTypesSupported = { ANALOG_INPUT: 0, ANALOG_OUTPUT: 1, ANALOG_VALUE: 2, @@ -1865,13 +1865,13 @@ module.exports.ObjectTypesSupported = { LIFT: 59 }; -module.exports.ResultFlags = { +export const ResultFlags = { FIRST_ITEM: 0, LAST_ITEM: 1, MORE_ITEMS: 2 }; -module.exports.ServicesSupported = { +export const ServicesSupported = { ACKNOWLEDGE_ALARM: 0, CONFIRMED_COV_NOTIFICATION: 1, CONFIRMED_EVENT_NOTIFICATION: 2, @@ -1918,7 +1918,7 @@ module.exports.ServicesSupported = { UNCONFIRMED_COV_NOTIFICATION_MULTIPLE: 43 }; -module.exports.StatusFlags = { +export const StatusFlags = { IN_ALARM: 0, FAULT: 1, OVERRIDDEN: 2, @@ -1930,7 +1930,7 @@ module.exports.StatusFlags = { * @readonly * @enum {ApplicationTags} */ -module.exports.ApplicationTags = { +export const ApplicationTags = { NULL: 0, BOOLEAN: 1, UNSIGNED_INTEGER: 2, @@ -1969,7 +1969,7 @@ module.exports.ApplicationTags = { }; // ASHRE 135-2016 - J.2.1.1 BVLC-Result: Format - Enumerators -module.exports.BvlcResultFormat = { +export const BvlcResultFormat = { SUCCESSFUL_COMPLETION: 0x0000, WRITE_BROADCAST_DISTRIBUTION_TABLE_NAK: 0x0010, READ_BROADCAST_DISTRIBUTION_TABLE_NAK: 0x0020, @@ -1980,7 +1980,7 @@ module.exports.BvlcResultFormat = { }; // ASHRE 135-2016 - J.2.1 BVLC-Result: Purpose - Enumerators -module.exports.BvlcResultPurpose = { +export const BvlcResultPurpose = { BVLC_RESULT: 0x00, WRITE_BROADCAST_DISTRIBUTION_TABLE: 0x01, READ_BROADCAST_DISTRIBUTION_TABLE: 0x02, @@ -1997,7 +1997,7 @@ module.exports.BvlcResultPurpose = { }; // ASHRE 135-2016 - 20.2.9 Encoding of a Character String Value - Enumerators -module.exports.CharacterStringEncoding = { +export const CharacterStringEncoding = { UTF_8: 0, MICROSOFT_DBCS: 1, JIS_X_0208: 2, @@ -2007,7 +2007,7 @@ module.exports.CharacterStringEncoding = { }; // ASHRE 135-2016 - 13.3.3 CHANGE_OF_VALUE Event Algorithm - Internal -module.exports.CovTypes = { +export const CovTypes = { REAL: 0, BIT_STRING: 1 }; @@ -2017,7 +2017,7 @@ module.exports.CovTypes = { * @readonly * @enum {EnableDisable} */ -module.exports.EnableDisable = { +export const EnableDisable = { ENABLE: 0, DISABLE: 1, DISABLE_INITIATION: 2 @@ -2028,7 +2028,7 @@ module.exports.EnableDisable = { * @readonly * @enum {MaxApduLengthAccepted} */ -module.exports.MaxApduLengthAccepted = { +export const MaxApduLengthAccepted = { OCTETS_50: 0b0000, OCTETS_128: 0b0001, OCTETS_206: 0b0010, @@ -2042,7 +2042,7 @@ module.exports.MaxApduLengthAccepted = { * @readonly * @enum {MaxSegmentsAccepted} */ -module.exports.MaxSegmentsAccepted = { +export const MaxSegmentsAccepted = { SEGMENTS_0: (0b000 << 4), SEGMENTS_2: (0b001 << 4), SEGMENTS_4: (0b010 << 4), @@ -2054,7 +2054,7 @@ module.exports.MaxSegmentsAccepted = { }; // ASHRE 135-2016 - 6.2.4 Network Layer Message Type - Enumerators -module.exports.NetworkLayerMessageType = { +export const NetworkLayerMessageType = { WHO_IS_ROUTER_TO_NETWORK: 0x00, I_AM_ROUTER_TO_NETWORK: 0x01, I_COULD_BE_ROUTER_TO_NETWORK: 0x02, @@ -2078,7 +2078,7 @@ module.exports.NetworkLayerMessageType = { }; // ASHRE 135-2016 - 6.2.2 Network Layer Protocol Control Information - Enumerators -module.exports.NpduControlBits = { +export const NpduControlBits = { EXPECTING_REPLY: (1 << 2), SOURCE_SPECIFIED: (1 << 3), DESTINATION_SPECIFIED: (1 << 5), @@ -2086,7 +2086,7 @@ module.exports.NpduControlBits = { }; // ASHRE 135-2016 - 6.2.2 Network Layer Protocol Control Information - Enumerators -module.exports.NpduControlPriority = { +export const NpduControlPriority = { NORMAL_MESSAGE: 0b00, URGENT_MESSAGE: 0b01, CRITICAL_EQUIPMENT_MESSAGE: 0b10, @@ -2094,20 +2094,20 @@ module.exports.NpduControlPriority = { }; // ASHRE 135-2016 - 20.1.2.11 Format of the BACnet-Confirmed-Request-PDU - Enumerators -module.exports.PduConReqBits = { +export const PduConReqBits = { SEGMENTED_RESPONSE_ACCEPTED: (1 << 1), MORE_FOLLOWS: (1 << 2), SEGMENTED_MESSAGE: (1 << 3) }; // ASHRE 135-2016 - 20.1.6.6 Format of the BACnet-SegmentACK-PDU - Enumerators -module.exports.PduSegAckBits = { +export const PduSegAckBits = { SERVER: (1 << 0), NEGATIVE_ACK: (1 << 1) }; // ASHRE 135-2016 - 21 FORMAL DESCRIPTION OF APPLICATION PROTOCOL DATA UNITS - Enumerators -module.exports.PduTypes = { +export const PduTypes = { CONFIRMED_REQUEST: (0 << 4), UNCONFIRMED_REQUEST: (1 << 4), SIMPLE_ACK: (2 << 4), @@ -2119,7 +2119,7 @@ module.exports.PduTypes = { }; // ASHRE 135-2016 - 21 FORMAL DESCRIPTION OF APPLICATION PROTOCOL DATA UNITS - Enumerators -module.exports.PropertyStates = { +export const PropertyStates = { BOOLEAN_VALUE: 0, BINARY_VALUE: 1, EVENT_TYPE: 2, @@ -2181,7 +2181,7 @@ module.exports.PropertyStates = { }; // ASHRE 135-2016 - 15.8.1.1.4 Range - Internal -module.exports.ReadRangeType = { +export const ReadRangeType = { BY_POSITION: 0, BY_SEQUENCE_NUMBER: 1, BY_TIME_REFERENCE_TIME_COUNT: 2 @@ -2192,7 +2192,7 @@ module.exports.ReadRangeType = { * @readonly * @enum {ReinitializedState} */ -module.exports.ReinitializedState = { +export const ReinitializedState = { COLDSTART: 0, WARMSTART: 1, STARTBACKUP: 2, @@ -2204,7 +2204,7 @@ module.exports.ReinitializedState = { }; // ASHRE 135-2016 - 21 FORMAL DESCRIPTION OF APPLICATION PROTOCOL DATA UNITS - Internal -module.exports.TimeStamp = { +export const TimeStamp = { TIME: 0, SEQUENCE_NUMBER: 1, DATETIME: 2 From 15da097edee360a51542b37e8620bab1847d5e44 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:45 +0200 Subject: [PATCH 05/44] refactor(transport): rework to TypeScript --- lib/{transport.js => transport.ts} | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) rename lib/{transport.js => transport.ts} (65%) diff --git a/lib/transport.js b/lib/transport.ts similarity index 65% rename from lib/transport.js rename to lib/transport.ts index 88271726..5b84ab50 100644 --- a/lib/transport.js +++ b/lib/transport.ts @@ -1,10 +1,15 @@ 'use strict'; -const createSocket = require('dgram').createSocket; -const EventEmitter = require('events').EventEmitter; +import { createSocket, Socket } from 'dgram'; +import { EventEmitter } from 'events'; -class Transport extends EventEmitter { - constructor(settings) { +import { TransportSettings } from './types'; + +export class Transport extends EventEmitter { + private _settings: TransportSettings; + private _server: Socket; + + constructor(settings: TransportSettings) { super(); this._settings = settings; this._server = createSocket({type: 'udp4', reuseAddr: true}); @@ -20,7 +25,7 @@ class Transport extends EventEmitter { return 1482; } - send(buffer, offset, receiver) { + send(buffer: Buffer, offset: number, receiver: string) { this._server.send(buffer, 0, offset, this._settings.port, receiver); } @@ -34,4 +39,3 @@ class Transport extends EventEmitter { this._server.close(); } } -module.exports = Transport; From f0eea34c72d8ebb8ef2bc1ec986906fb04c0af88 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:46 +0200 Subject: [PATCH 06/44] refactor(npdu): rework to TypeScript --- lib/{npdu.js => npdu.ts} | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) rename lib/{npdu.js => npdu.ts} (80%) diff --git a/lib/npdu.js b/lib/npdu.ts similarity index 80% rename from lib/npdu.js rename to lib/npdu.ts index 369a9e73..30598e85 100644 --- a/lib/npdu.js +++ b/lib/npdu.ts @@ -1,6 +1,7 @@ 'use strict'; -const baEnum = require('./enum'); +import * as baEnum from './enum'; +import { EncodeBuffer, BACNetAddress } from './types'; const BACNET_PROTOCOL_VERSION = 1; const BacnetAddressTypes = { @@ -8,9 +9,9 @@ const BacnetAddressTypes = { IP: 1 }; -const decodeTarget = (buffer, offset) => { +const decodeTarget = (buffer: Buffer, offset: number) => { let len = 0; - const target = {type: BacnetAddressTypes.NONE, net: (buffer[offset + len++] << 8) | (buffer[offset + len++] << 0)}; + const target: BACNetAddress = {type: BacnetAddressTypes.NONE, net: (buffer[offset + len++] << 8) | (buffer[offset + len++] << 0)}; const adrLen = buffer[offset + len++]; if (adrLen > 0) { target.adr = []; @@ -24,7 +25,7 @@ const decodeTarget = (buffer, offset) => { }; }; -const encodeTarget = (buffer, target) => { +const encodeTarget = (buffer: EncodeBuffer, target: BACNetAddress) => { buffer.buffer[buffer.offset++] = (target.net & 0xFF00) >> 8; buffer.buffer[buffer.offset++] = (target.net & 0x00FF) >> 0; if (target.net === 0xFFFF || !target.adr) { @@ -39,22 +40,22 @@ const encodeTarget = (buffer, target) => { } }; -module.exports.decodeFunction = (buffer, offset) => { +export const decodeFunction = (buffer: Buffer, offset: number) => { if (buffer[offset + 0] !== BACNET_PROTOCOL_VERSION) return; return buffer[offset + 1]; }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { const orgOffset = offset; offset++; const funct = buffer[offset++]; - let destination; + let destination: BACNetAddress; if (funct & baEnum.NpduControlBits.DESTINATION_SPECIFIED) { const tmpDestination = decodeTarget(buffer, offset); offset += tmpDestination.len; destination = tmpDestination.target; } - let source; + let source: BACNetAddress; if (funct & baEnum.NpduControlBits.SOURCE_SPECIFIED) { const tmpSource = decodeTarget(buffer, offset); offset += tmpSource.len; @@ -86,7 +87,7 @@ module.exports.decode = (buffer, offset) => { }; }; -module.exports.encode = (buffer, funct, destination, source, hopCount, networkMsgType, vendorId) => { +export const encode = (buffer: EncodeBuffer, funct: number, destination?: any, source?: BACNetAddress, hopCount?: number, networkMsgType?: number, vendorId?: number) => { const hasDestination = destination && destination.net > 0; const hasSource = source && source.net > 0 && source.net !== 0xFFFF; From b3ec39b3fd5c58ac9ae187e248faeeb6f19bd17a Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:46 +0200 Subject: [PATCH 07/44] refactor(asn1): rework to TypeScript --- lib/{asn1.js => asn1.ts} | 448 +++++++++++++++++++-------------------- lib/types.ts | 93 ++++++++ 2 files changed, 314 insertions(+), 227 deletions(-) rename lib/{asn1.js => asn1.ts} (75%) create mode 100644 lib/types.ts diff --git a/lib/asn1.js b/lib/asn1.ts similarity index 75% rename from lib/asn1.js rename to lib/asn1.ts index dc944963..25411abd 100644 --- a/lib/asn1.js +++ b/lib/asn1.ts @@ -1,30 +1,40 @@ 'use strict'; -const iconv = require('iconv-lite'); -const baEnum = require('./enum'); - -const getBuffer = () => { - return { - buffer: Buffer.alloc(1472), - offset: 0 - }; -}; - -const getSignedLength = (value) => { +import * as iconv from 'iconv-lite'; + +import * as baEnum from './enum'; +import { + EncodeBuffer, + BACNetCovSubscription, + BACNetReadAccessSpecification, + BACNetBitString, + BACNetAppData, + BACNetPropertyState, + BACNetDevObjRef, + BACNetObjectID, + BACNetPropertyID +} from './types'; + +const getBuffer = () => ({ + buffer: Buffer.alloc(1472), + offset: 0 +}); + +const getSignedLength = (value: number) => { if ((value >= -128) && (value < 128)) return 1; else if ((value >= -32768) && (value < 32768)) return 2; else if ((value > -8388608) && (value < 8388608)) return 3; else return 4; }; -const getUnsignedLength = (value) => { +const getUnsignedLength = (value: number) => { if (value < 0x100) return 1; else if (value < 0x10000) return 2; else if (value < 0x1000000) return 3; else return 4; }; -const getEncodingType = (encoding, decodingBuffer, decodingOffset) => { +const getEncodingType = (encoding: number, decodingBuffer?: Buffer, decodingOffset?: number) => { switch (encoding) { case baEnum.CharacterStringEncoding.UTF_8: return 'utf8'; @@ -46,51 +56,49 @@ const getEncodingType = (encoding, decodingBuffer, decodingOffset) => { } }; -const encodeUnsigned = (buffer, value, length) => { - buffer.buffer.writeUIntBE(value, buffer.offset, length, true); +const encodeUnsigned = (buffer: EncodeBuffer, value: number, length: number) => { + buffer.buffer.writeUIntBE(value, buffer.offset, length); buffer.offset += length; }; -const encodeBacnetUnsigned = (buffer, value) => { +const encodeBacnetUnsigned = (buffer: EncodeBuffer, value: number) => { encodeUnsigned(buffer, value, getUnsignedLength(value)); }; -const encodeSigned = (buffer, value, length) => { - buffer.buffer.writeIntBE(value, buffer.offset, length, true); +const encodeSigned = (buffer: EncodeBuffer, value: number, length: number) => { + buffer.buffer.writeIntBE(value, buffer.offset, length); buffer.offset += length; }; -const encodeBacnetSigned = (buffer, value) => { +const encodeBacnetSigned = (buffer: EncodeBuffer, value: number) => { encodeSigned(buffer, value, getSignedLength(value)); }; -const encodeBacnetReal = (buffer, value) => { - buffer.buffer.writeFloatBE(value, buffer.offset, true); +const encodeBacnetReal = (buffer: EncodeBuffer, value: number) => { + buffer.buffer.writeFloatBE(value, buffer.offset); buffer.offset += 4; }; -const encodeBacnetDouble = (buffer, value) => { - buffer.buffer.writeDoubleBE(value, buffer.offset, true); +const encodeBacnetDouble = (buffer: EncodeBuffer, value: number) => { + buffer.buffer.writeDoubleBE(value, buffer.offset); buffer.offset += 8; }; -const decodeUnsigned = module.exports.decodeUnsigned = (buffer, offset, length) => { - return { - len: length, - value: buffer.readUIntBE(offset, length, true) - }; -}; +export const decodeUnsigned = (buffer: Buffer, offset: number, length: number) => ({ + len: length, + value: buffer.readUIntBE(offset, length) +}); -const decodeEnumerated = module.exports.decodeEnumerated = (buffer, offset, lenValue) => { +export const decodeEnumerated = (buffer: Buffer, offset: number, lenValue: number) => { return decodeUnsigned(buffer, offset, lenValue); }; -const encodeBacnetObjectId = module.exports.encodeBacnetObjectId = (buffer, objectType, instance) => { +export const encodeBacnetObjectId = (buffer: EncodeBuffer, objectType: number, instance: number) => { const value = (((objectType & baEnum.ASN1_MAX_OBJECT) << baEnum.ASN1_INSTANCE_BITS) | (instance & baEnum.ASN1_MAX_INSTANCE)) >>> 0; encodeUnsigned(buffer, value, 4); }; -const encodeTag = module.exports.encodeTag = (buffer, tagNumber, contextSpecific, lenValueType) => { +export const encodeTag = (buffer: EncodeBuffer, tagNumber: number, contextSpecific: boolean, lenValueType: number) => { let len = 1; const tmp = new Array(3); tmp[0] = 0; @@ -128,45 +136,45 @@ const encodeTag = module.exports.encodeTag = (buffer, tagNumber, contextSpecific } }; -const encodeBacnetEnumerated = (buffer, value) => { +const encodeBacnetEnumerated = (buffer: EncodeBuffer, value: number) => { encodeBacnetUnsigned(buffer, value); }; -const isExtendedTagNumber = (x) => { +const isExtendedTagNumber = (x: number) => { return (x & 0xF0) === 0xF0; }; -const isExtendedValue = (x) => { +const isExtendedValue = (x: number) => { return (x & 0x07) === 5; }; -const isContextSpecific = (x) => { +const isContextSpecific = (x: number) => { return (x & 0x8) === 0x8; }; -const isOpeningTag = (x) => { +const isOpeningTag = (x: number) => { return (x & 0x07) === 6; }; -const isClosingTag = (x) => { +const isClosingTag = (x: number) => { return (x & 0x07) === 7; }; -const encodeContextReal = module.exports.encodeContextReal = (buffer, tagNumber, value) => { +export const encodeContextReal = (buffer: EncodeBuffer, tagNumber: number, value: number) => { encodeTag(buffer, tagNumber, true, 4); encodeBacnetReal(buffer, value); }; -const encodeContextUnsigned = module.exports.encodeContextUnsigned = (buffer, tagNumber, value) => { +export const encodeContextUnsigned = (buffer: EncodeBuffer, tagNumber: number, value: number) => { encodeTag(buffer, tagNumber, true, getUnsignedLength(value)); encodeBacnetUnsigned(buffer, value); }; -const encodeContextEnumerated = module.exports.encodeContextEnumerated = (buffer, tagNumber, value) => { +export const encodeContextEnumerated = (buffer: EncodeBuffer, tagNumber: number, value: number) => { encodeContextUnsigned(buffer, tagNumber, value); }; -const encodeOctetString = (buffer, octetString, octetOffset, octetCount) => { +const encodeOctetString = (buffer: EncodeBuffer, octetString: number[], octetOffset: number, octetCount: number) => { if (octetString) { for (let i = octetOffset; i < (octetOffset + octetCount); i++) { buffer.buffer[buffer.offset++] = octetString[i]; @@ -174,30 +182,30 @@ const encodeOctetString = (buffer, octetString, octetOffset, octetCount) => { } }; -const encodeApplicationOctetString = module.exports.encodeApplicationOctetString = (buffer, octetString, octetOffset, octetCount) => { +export const encodeApplicationOctetString = (buffer: EncodeBuffer, octetString: number[], octetOffset: number, octetCount: number) => { encodeTag(buffer, baEnum.ApplicationTags.OCTET_STRING, false, octetCount); encodeOctetString(buffer, octetString, octetOffset, octetCount); }; -const encodeApplicationNull = (buffer) => { +const encodeApplicationNull = (buffer: EncodeBuffer) => { buffer.buffer[buffer.offset++] = baEnum.ApplicationTags.NULL; }; -const encodeApplicationBoolean = module.exports.encodeApplicationBoolean = (buffer, booleanValue) => { +export const encodeApplicationBoolean = (buffer: EncodeBuffer, booleanValue: boolean) => { encodeTag(buffer, baEnum.ApplicationTags.BOOLEAN, false, booleanValue ? 1 : 0); }; -const encodeApplicationReal = (buffer, value) => { +const encodeApplicationReal = (buffer: EncodeBuffer, value: number) => { encodeTag(buffer, baEnum.ApplicationTags.REAL, false, 4); encodeBacnetReal(buffer, value); }; -const encodeApplicationDouble = (buffer, value) => { +const encodeApplicationDouble = (buffer: EncodeBuffer, value: number) => { encodeTag(buffer, baEnum.ApplicationTags.DOUBLE, false, 8); encodeBacnetDouble(buffer, value); }; -const bitstringBytesUsed = (bitString) => { +const bitstringBytesUsed = (bitString: BACNetBitString) => { let len = 0; if (bitString.bitsUsed > 0) { const lastBit = bitString.bitsUsed - 1; @@ -207,7 +215,7 @@ const bitstringBytesUsed = (bitString) => { return len; }; -const encodeApplicationObjectId = module.exports.encodeApplicationObjectId = (buffer, objectType, instance) => { +export const encodeApplicationObjectId = (buffer: EncodeBuffer, objectType: number, instance: number) => { const tmp = getBuffer(); encodeBacnetObjectId(tmp, objectType, instance); encodeTag(buffer, baEnum.ApplicationTags.OBJECTIDENTIFIER, false, tmp.offset); @@ -215,7 +223,7 @@ const encodeApplicationObjectId = module.exports.encodeApplicationObjectId = (bu buffer.offset += tmp.offset; }; -const encodeApplicationUnsigned = module.exports.encodeApplicationUnsigned = (buffer, value) => { +export const encodeApplicationUnsigned = (buffer: EncodeBuffer, value: number) => { const tmp = getBuffer(); encodeBacnetUnsigned(tmp, value); encodeTag(buffer, baEnum.ApplicationTags.UNSIGNED_INTEGER, false, tmp.offset); @@ -223,7 +231,7 @@ const encodeApplicationUnsigned = module.exports.encodeApplicationUnsigned = (bu buffer.offset += tmp.offset; }; -const encodeApplicationEnumerated = module.exports.encodeApplicationEnumerated = (buffer, value) => { +export const encodeApplicationEnumerated = (buffer: EncodeBuffer, value: number) => { const tmp = getBuffer(); encodeBacnetEnumerated(tmp, value); encodeTag(buffer, baEnum.ApplicationTags.ENUMERATED, false, tmp.offset); @@ -231,7 +239,7 @@ const encodeApplicationEnumerated = module.exports.encodeApplicationEnumerated = buffer.offset += tmp.offset; }; -const encodeApplicationSigned = module.exports.encodeApplicationSigned = (buffer, value) => { +export const encodeApplicationSigned = (buffer: EncodeBuffer, value: number) => { const tmp = getBuffer(); encodeBacnetSigned(tmp, value); encodeTag(buffer, baEnum.ApplicationTags.SIGNED_INTEGER, false, tmp.offset); @@ -239,7 +247,7 @@ const encodeApplicationSigned = module.exports.encodeApplicationSigned = (buffer buffer.offset += tmp.offset; }; -const byteReverseBits = (inByte) => { +const byteReverseBits = (inByte: number) => { let outByte = 0; if ((inByte & 1) > 0) { outByte |= 0x80; @@ -268,7 +276,7 @@ const byteReverseBits = (inByte) => { return outByte; }; -const bitstringOctet = (bitString, octetIndex) => { +const bitstringOctet = (bitString: BACNetBitString, octetIndex: number) => { let octet = 0; if (bitString.value) { if (octetIndex < baEnum.ASN1_MAX_BITSTRING_BYTES) { @@ -278,7 +286,7 @@ const bitstringOctet = (bitString, octetIndex) => { return octet; }; -const encodeBitstring = (buffer, bitString) => { +const encodeBitstring = (buffer: EncodeBuffer, bitString: BACNetBitString) => { if (bitString.bitsUsed === 0) { buffer.buffer[buffer.offset++] = 0; } else { @@ -291,14 +299,14 @@ const encodeBitstring = (buffer, bitString) => { } }; -const encodeApplicationBitstring = module.exports.encodeApplicationBitstring = (buffer, bitString) => { +export const encodeApplicationBitstring = (buffer: EncodeBuffer, bitString: BACNetBitString) => { let bitStringEncodedLength = 1; bitStringEncodedLength += bitstringBytesUsed(bitString); encodeTag(buffer, baEnum.ApplicationTags.BIT_STRING, false, bitStringEncodedLength); encodeBitstring(buffer, bitString); }; -const encodeBacnetDate = (buffer, value) => { +const encodeBacnetDate = (buffer: EncodeBuffer, value: Date) => { if (value === new Date(1, 1, 1)) { buffer.buffer[buffer.offset++] = 0xFF; buffer.buffer[buffer.offset++] = 0xFF; @@ -318,36 +326,36 @@ const encodeBacnetDate = (buffer, value) => { buffer.buffer[buffer.offset++] = (value.getDay() === 0) ? 7 : value.getDay(); }; -const encodeApplicationDate = module.exports.encodeApplicationDate = (buffer, value) => { +export const encodeApplicationDate = (buffer: EncodeBuffer, value: Date) => { encodeTag(buffer, baEnum.ApplicationTags.DATE, false, 4); encodeBacnetDate(buffer, value); }; -const encodeBacnetTime = (buffer, value) => { +const encodeBacnetTime = (buffer: EncodeBuffer, value: Date) => { buffer.buffer[buffer.offset++] = value.getHours(); buffer.buffer[buffer.offset++] = value.getMinutes(); buffer.buffer[buffer.offset++] = value.getSeconds(); buffer.buffer[buffer.offset++] = value.getMilliseconds() / 10; }; -const encodeApplicationTime = module.exports.encodeApplicationTime = (buffer, value) => { +export const encodeApplicationTime = (buffer: EncodeBuffer, value: Date) => { encodeTag(buffer, baEnum.ApplicationTags.TIME, false, 4); encodeBacnetTime(buffer, value); }; -const bacappEncodeDatetime = (buffer, value) => { +const bacappEncodeDatetime = (buffer: EncodeBuffer, value: Date) => { if (value !== new Date(1, 1, 1)) { encodeApplicationDate(buffer, value); encodeApplicationTime(buffer, value); } }; -const encodeContextObjectId = module.exports.encodeContextObjectId = (buffer, tagNumber, objectType, instance) => { +export const encodeContextObjectId = (buffer: EncodeBuffer, tagNumber: number, objectType: number, instance: number) => { encodeTag(buffer, tagNumber, true, 4); encodeBacnetObjectId(buffer, objectType, instance); }; -const encodeOpeningTag = module.exports.encodeOpeningTag = (buffer, tagNumber) => { +export const encodeOpeningTag = (buffer: EncodeBuffer, tagNumber: number) => { let len = 1; const tmp = new Array(2); tmp[0] = 0x8; @@ -363,7 +371,7 @@ const encodeOpeningTag = module.exports.encodeOpeningTag = (buffer, tagNumber) = buffer.offset += len; }; -const encodeClosingTag = module.exports.encodeClosingTag = (buffer, tagNumber) => { +export const encodeClosingTag = (buffer: EncodeBuffer, tagNumber: number) => { let len = 1; const tmp = new Array(2); tmp[0] = 0x8; @@ -379,7 +387,7 @@ const encodeClosingTag = module.exports.encodeClosingTag = (buffer, tagNumber) = buffer.offset += len; }; -const encodeReadAccessSpecification = module.exports.encodeReadAccessSpecification = (buffer, value) => { +export const encodeReadAccessSpecification = (buffer: EncodeBuffer, value: BACNetReadAccessSpecification) => { encodeContextObjectId(buffer, 0, value.objectId.type, value.objectId.instance); encodeOpeningTag(buffer, 1); value.properties.forEach((p) => { @@ -391,19 +399,19 @@ const encodeReadAccessSpecification = module.exports.encodeReadAccessSpecificati encodeClosingTag(buffer, 1); }; -const encodeContextBoolean = module.exports.encodeContextBoolean = (buffer, tagNumber, booleanValue) => { +export const encodeContextBoolean = (buffer: EncodeBuffer, tagNumber: number, booleanValue: boolean) => { encodeTag(buffer, tagNumber, true, 1); - buffer.buffer.writeUInt8(booleanValue ? 1 : 0, buffer.offset, true); + buffer.buffer.writeUInt8(booleanValue ? 1 : 0, buffer.offset); buffer.offset += 1; }; -const encodeCovSubscription = (buffer, value) => { +const encodeCovSubscription = (buffer: EncodeBuffer, value: BACNetCovSubscription) => { encodeOpeningTag(buffer, 0); encodeOpeningTag(buffer, 0); encodeOpeningTag(buffer, 1); encodeApplicationUnsigned(buffer, value.recipient.network); if (value.recipient.network === 0xFFFF) { - encodeApplicationOctetString(buffer, 0, 0, 0); + encodeApplicationOctetString(buffer, [0], 0, 0); } else { encodeApplicationOctetString(buffer, value.recipient.address, 0, value.recipient.address.length); } @@ -425,7 +433,7 @@ const encodeCovSubscription = (buffer, value) => { } }; -const bacappEncodeApplicationData = module.exports.bacappEncodeApplicationData = (buffer, value) => { +export const bacappEncodeApplicationData = (buffer: EncodeBuffer, value: BACNetAppData) => { if (value.value === null) { value.type = baEnum.ApplicationTags.NULL; } @@ -473,7 +481,7 @@ const bacappEncodeApplicationData = module.exports.bacappEncodeApplicationData = bacappEncodeDatetime(buffer, value.value); break; case baEnum.ApplicationTags.OBJECTIDENTIFIER: - encodeApplicationObjectId(buffer, (value.value).type, (value.value).instance); + encodeApplicationObjectId(buffer, value.value.type, value.value.instance); break; case baEnum.ApplicationTags.COV_SUBSCRIPTION: encodeCovSubscription(buffer, value.value); @@ -489,7 +497,7 @@ const bacappEncodeApplicationData = module.exports.bacappEncodeApplicationData = } }; -const bacappEncodeDeviceObjPropertyRef = (buffer, value) => { +const bacappEncodeDeviceObjPropertyRef = (buffer: EncodeBuffer, value: BACNetDevObjRef) => { encodeContextObjectId(buffer, 0, value.objectId.type, value.objectId.instance); encodeContextEnumerated(buffer, 1, value.id); if (value.arrayIndex !== baEnum.ASN1_ARRAY_ALL) { @@ -500,13 +508,13 @@ const bacappEncodeDeviceObjPropertyRef = (buffer, value) => { } }; -module.exports.bacappEncodeContextDeviceObjPropertyRef = (buffer, tagNumber, value) => { +export const bacappEncodeContextDeviceObjPropertyRef = (buffer: EncodeBuffer, tagNumber: number, value: BACNetDevObjRef) => { encodeOpeningTag(buffer, tagNumber); bacappEncodeDeviceObjPropertyRef(buffer, value); encodeClosingTag(buffer, tagNumber); }; -module.exports.bacappEncodePropertyState = (buffer, value) => { +export const bacappEncodePropertyState = (buffer: EncodeBuffer, value: BACNetPropertyState) => { switch (value.type) { case baEnum.PropertyStates.BOOLEAN_VALUE: encodeContextBoolean(buffer, 0, value.state === 1 ? true : false); @@ -555,24 +563,23 @@ module.exports.bacappEncodePropertyState = (buffer, value) => { } }; -module.exports.encodeContextBitstring = (buffer, tagNumber, bitString) => { - let bitStringEncodedLength = 1; - bitStringEncodedLength += bitstringBytesUsed(bitString); +export const encodeContextBitstring = (buffer: EncodeBuffer, tagNumber: number, bitString: BACNetBitString) => { + const bitStringEncodedLength = bitstringBytesUsed(bitString) + 1; encodeTag(buffer, tagNumber, true, bitStringEncodedLength); encodeBitstring(buffer, bitString); }; -module.exports.encodeContextSigned = (buffer, tagNumber, value) => { +export const encodeContextSigned = (buffer: EncodeBuffer, tagNumber: number, value: number) => { encodeTag(buffer, tagNumber, true, getSignedLength(value)); encodeBacnetSigned(buffer, value); }; -const encodeContextTime = (buffer, tagNumber, value) => { +const encodeContextTime = (buffer: EncodeBuffer, tagNumber: number, value: Date) => { encodeTag(buffer, tagNumber, true, 4); encodeBacnetTime(buffer, value); }; -const bacappEncodeContextDatetime = (buffer, tagNumber, value) => { +const bacappEncodeContextDatetime = (buffer: EncodeBuffer, tagNumber: number, value: Date) => { if (value !== new Date(1, 1, 1)) { encodeOpeningTag(buffer, tagNumber); bacappEncodeDatetime(buffer, value); @@ -580,9 +587,9 @@ const bacappEncodeContextDatetime = (buffer, tagNumber, value) => { } }; -const decodeTagNumber = module.exports.decodeTagNumber = (buffer, offset) => { +export const decodeTagNumber = (buffer: Buffer, offset: number) => { let len = 1; - let tagNumber; + let tagNumber: number; if (isExtendedTagNumber(buffer[offset])) { tagNumber = buffer[offset + 1]; len++; @@ -595,30 +602,30 @@ const decodeTagNumber = module.exports.decodeTagNumber = (buffer, offset) => { }; }; -const decodeIsContextTag = module.exports.decodeIsContextTag = (buffer, offset, tagNumber) => { +export const decodeIsContextTag = (buffer: Buffer, offset: number, tagNumber: number) => { const result = decodeTagNumber(buffer, offset); return isContextSpecific(buffer[offset]) && result.tagNumber === tagNumber; }; -const decodeIsOpeningTagNumber = module.exports.decodeIsOpeningTagNumber = (buffer, offset, tagNumber) => { +export const decodeIsOpeningTagNumber = (buffer: Buffer, offset: number, tagNumber: number) => { const result = decodeTagNumber(buffer, offset); return isOpeningTag(buffer[offset]) && result.tagNumber === tagNumber; }; -const decodeIsClosingTagNumber = module.exports.decodeIsClosingTagNumber = (buffer, offset, tagNumber) => { +export const decodeIsClosingTagNumber = (buffer: Buffer, offset: number, tagNumber: number) => { const result = decodeTagNumber(buffer, offset); return isClosingTag(buffer[offset]) && result.tagNumber === tagNumber; }; -module.exports.decodeIsClosingTag = (buffer, offset) => { +export const decodeIsClosingTag = (buffer: Buffer, offset: number) => { return (buffer[offset] & 0x07) === 7; }; -module.exports.decodeIsOpeningTag = (buffer, offset) => { +export const decodeIsOpeningTag = (buffer: Buffer, offset: number) => { return (buffer[offset] & 0x07) === 6; }; -const decodeObjectId = module.exports.decodeObjectId = (buffer, offset) => { +export const decodeObjectId = (buffer: Buffer, offset: number) => { const result = decodeUnsigned(buffer, offset, 4); const objectType = (result.value >> baEnum.ASN1_INSTANCE_BITS) & baEnum.ASN1_MAX_OBJECT; const instance = result.value & baEnum.ASN1_MAX_INSTANCE; @@ -629,7 +636,7 @@ const decodeObjectId = module.exports.decodeObjectId = (buffer, offset) => { }; }; -const decodeObjectIdSafe = (buffer, offset, lenValue) => { +const decodeObjectIdSafe = (buffer: Buffer, offset: number, lenValue: number) => { if (lenValue !== 4) { return { len: 0, @@ -641,19 +648,19 @@ const decodeObjectIdSafe = (buffer, offset, lenValue) => { } }; -const decodeTagNumberAndValue = module.exports.decodeTagNumberAndValue = (buffer, offset) => { - let value; - let result = decodeTagNumber(buffer, offset); - let len = result.len; +export const decodeTagNumberAndValue = (buffer: Buffer, offset: number) => { + let value: number; + let tag = decodeTagNumber(buffer, offset); + let len = tag.len; if (isExtendedValue(buffer[offset])) { if (buffer[offset + len] === 255) { len++; - result = decodeUnsigned(buffer, offset + len, 4); + const result = decodeUnsigned(buffer, offset + len, 4); len += result.len; value = result.value; } else if (buffer[offset + len] === 254) { len++; - result = decodeUnsigned(buffer, offset + len, 2); + const result = decodeUnsigned(buffer, offset + len, 2); len += result.len; value = result.value; } else { @@ -669,19 +676,19 @@ const decodeTagNumberAndValue = module.exports.decodeTagNumberAndValue = (buffer } return { len: len, - tagNumber: result.tagNumber, + tagNumber: tag.tagNumber, value: value }; }; -const bacappDecodeApplicationData = module.exports.bacappDecodeApplicationData = (buffer, offset, maxOffset, objectType, propertyId) => { +export const bacappDecodeApplicationData = (buffer: Buffer, offset: number, maxOffset: number, objectType: number, propertyId: number): any => { if (!isContextSpecific(buffer[offset])) { - let result = decodeTagNumberAndValue(buffer, offset); - if (result) { - const len = result.len; - result = bacappDecodeData(buffer, offset + len, maxOffset, result.tagNumber, result.value); + const tag = decodeTagNumberAndValue(buffer, offset); + if (tag) { + const len = tag.len; + const result = bacappDecodeData(buffer, offset + len, maxOffset, tag.tagNumber, tag.value); if (!result) return; - const resObj = { + const resObj: any = { len: len + result.len, type: result.type, value: result.value @@ -695,7 +702,15 @@ const bacappDecodeApplicationData = module.exports.bacappDecodeApplicationData = } }; -const encodeReadAccessResult = module.exports.encodeReadAccessResult = (buffer, value) => { +interface BACNetReadAccessResult { + objectId: BACNetObjectID; + values: { + property: BACNetPropertyID; + value: any[]; + }[]; +}; + +export const encodeReadAccessResult = (buffer: EncodeBuffer, value: BACNetReadAccessResult) => { encodeContextObjectId(buffer, 0, value.objectId.type, value.objectId.instance); encodeOpeningTag(buffer, 1); value.values.forEach((item) => { @@ -710,32 +725,30 @@ const encodeReadAccessResult = module.exports.encodeReadAccessResult = (buffer, encodeClosingTag(buffer, 5); } else { encodeOpeningTag(buffer, 4); - item.value.forEach((subItem) => { - bacappEncodeApplicationData(buffer, subItem); - }); + item.value.forEach((subItem) => bacappEncodeApplicationData(buffer, subItem)); encodeClosingTag(buffer, 4); } }); encodeClosingTag(buffer, 1); }; -const decodeReadAccessResult = module.exports.decodeReadAccessResult = (buffer, offset, apduLen) => { +export const decodeReadAccessResult = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; + const value: any = {}; if (!decodeIsContextTag(buffer, offset + len, 0)) return; len++; - let result = decodeObjectId(buffer, offset + len); + let result: any = decodeObjectId(buffer, offset + len); value.objectId = { type: result.objectType, instance: result.instance }; len += result.len; - if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) return -1; + if (!decodeIsOpeningTagNumber(buffer, offset + len, 1)) return; len++; const values = []; while ((apduLen - len) > 0) { - const newEntry = {}; + const newEntry: any = {}; if (decodeIsClosingTagNumber(buffer, offset + len, 1)) { len++; break; @@ -764,7 +777,7 @@ const decodeReadAccessResult = module.exports.decodeReadAccessResult = (buffer, const localResult = bacappDecodeApplicationData(buffer, offset + len, apduLen + offset - 1, value.objectId.type, newEntry.id); if (!localResult) return; len += localResult.len; - const resObj = { + const resObj: {value: any, type: number, encoding?: number} = { value: localResult.value, type: localResult.type }; @@ -773,19 +786,17 @@ const decodeReadAccessResult = module.exports.decodeReadAccessResult = (buffer, localValues.push(resObj); } if (!decodeIsClosingTagNumber(buffer, offset + len, 4)) return; - if ((localValues.count === 2) && (localValues[0].type === baEnum.ApplicationTags.DATE) && (localValues[1].type === baEnum.ApplicationTags.TIME)) { + if ((localValues.length === 2) && (localValues[0].type === baEnum.ApplicationTags.DATE) && (localValues[1].type === baEnum.ApplicationTags.TIME)) { const date = localValues[0].value; const time = localValues[1].value; const bdatetime = new Date(date.year, date.month, date.day, time.hour, time.minute, time.second, time.millisecond); - newEntry.value = [ - {type: baEnum.ApplicationTags.DATETIME, value: bdatetime} - ]; + newEntry.value = [{type: baEnum.ApplicationTags.DATETIME, value: bdatetime}]; } else { newEntry.value = localValues; } len++; } else if (result.tagNumber === 5) { - const err = {}; + const err: any = {}; result = decodeTagNumberAndValue(buffer, offset + len); len += result.len; result = decodeEnumerated(buffer, offset + len, result.value); @@ -812,21 +823,17 @@ const decodeReadAccessResult = module.exports.decodeReadAccessResult = (buffer, }; }; -const decodeSigned = module.exports.decodeSigned = (buffer, offset, length) => { - return { - len: length, - value: buffer.readIntBE(offset, length, true) - }; -}; +export const decodeSigned = (buffer: Buffer, offset: number, length: number) => ({ + len: length, + value: buffer.readIntBE(offset, length) +}); -const decodeReal = module.exports.decodeReal = (buffer, offset) => { - return { - len: 4, - value: buffer.readFloatBE(offset, true) - }; -}; +export const decodeReal = (buffer: Buffer, offset: number) => ({ + len: 4, + value: buffer.readFloatBE(offset) +}); -const decodeRealSafe = (buffer, offset, lenValue) => { +const decodeRealSafe = (buffer: Buffer, offset: number, lenValue: number) => { if (lenValue !== 4) { return { len: lenValue, @@ -837,14 +844,12 @@ const decodeRealSafe = (buffer, offset, lenValue) => { } }; -const decodeDouble = (buffer, offset) => { - return { - len: 8, - value: buffer.readDoubleBE(offset, true) - }; -}; +const decodeDouble = (buffer: Buffer, offset: number) => ({ + len: 8, + value: buffer.readDoubleBE(offset) +}); -const decodeDoubleSafe = (buffer, offset, lenValue) => { +const decodeDoubleSafe = (buffer: Buffer, offset: number, lenValue: number) => { if (lenValue !== 8) { return { len: lenValue, @@ -855,7 +860,7 @@ const decodeDoubleSafe = (buffer, offset, lenValue) => { } }; -const decodeOctetString = module.exports.decodeOctetString = (buffer, offset, maxLength, octetStringOffset, octetStringLength) => { +export const decodeOctetString = (buffer: Buffer, offset: number, maxLength: number, octetStringOffset: number, octetStringLength: number) => { const octetString = []; for (let i = octetStringOffset; i < (octetStringOffset + octetStringLength); i++) { octetString.push(buffer[offset + i]); @@ -866,7 +871,7 @@ const decodeOctetString = module.exports.decodeOctetString = (buffer, offset, ma }; }; -const multiCharsetCharacterstringDecode = (buffer, offset, maxLength, encoding, length) => { +const multiCharsetCharacterstringDecode = (buffer: Buffer, offset: number, maxLength: number, encoding: number, length: number) => { const stringBuf = Buffer.alloc(length); buffer.copy(stringBuf, 0, offset, offset + length); return { @@ -876,19 +881,18 @@ const multiCharsetCharacterstringDecode = (buffer, offset, maxLength, encoding, }; }; -const decodeCharacterString = module.exports.decodeCharacterString = (buffer, offset, maxLength, lenValue) => { +export const decodeCharacterString = (buffer: Buffer, offset: number, maxLength: number, lenValue: number) => { return multiCharsetCharacterstringDecode(buffer, offset + 1, maxLength, buffer[offset], lenValue - 1); }; -const bitstringSetBitsUsed = (bitString, bytesUsed, unusedBits) => { +const bitstringSetBitsUsed = (bitString: BACNetBitString, bytesUsed: number, unusedBits: number) => { bitString.bitsUsed = bytesUsed * 8; bitString.bitsUsed -= unusedBits; }; -const decodeBitstring = module.exports.decodeBitstring = (buffer, offset, lenValue) => { +export const decodeBitstring = (buffer: Buffer, offset: number, lenValue: number) => { let len = 0; - const bitString = {}; - bitString.value = []; + const bitString: {value: number[], bitsUsed: 0} = {value: [], bitsUsed: 0}; if (lenValue > 0) { const bytesUsed = lenValue - 1; if (bytesUsed <= baEnum.ASN1_MAX_BITSTRING_BYTES) { @@ -906,8 +910,8 @@ const decodeBitstring = module.exports.decodeBitstring = (buffer, offset, lenVal }; }; -const decodeDate = module.exports.decodeDate = (buffer, offset) => { - let date; +export const decodeDate = (buffer: Buffer, offset: number) => { + let date: Date; const year = buffer[offset] + 1900; const month = buffer[offset + 1]; const day = buffer[offset + 2]; @@ -923,7 +927,7 @@ const decodeDate = module.exports.decodeDate = (buffer, offset) => { }; }; -const decodeDateSafe = (buffer, offset, lenValue) => { +const decodeDateSafe = (buffer: Buffer, offset: number, lenValue: number) => { if (lenValue !== 4) { return { len: lenValue, @@ -934,21 +938,19 @@ const decodeDateSafe = (buffer, offset, lenValue) => { } }; -const decodeApplicationDate = module.exports.decodeApplicationDate = (buffer, offset) => { +export const decodeApplicationDate = (buffer: Buffer, offset: number) => { const result = decodeTagNumber(buffer, offset); if (result.tagNumber === baEnum.ApplicationTags.DATE) { const value = decodeDate(buffer, offset + 1); return { len: value.len + 1, - value: value + value: value.value }; - } else { - return; } }; -const decodeBacnetTime = module.exports.decodeBacnetTime = (buffer, offset) => { - let value; +export const decodeBacnetTime = (buffer: Buffer, offset: number) => { + let value: Date; const hour = buffer[offset + 0]; const min = buffer[offset + 1]; const sec = buffer[offset + 2]; @@ -965,45 +967,42 @@ const decodeBacnetTime = module.exports.decodeBacnetTime = (buffer, offset) => { }; }; -const decodeBacnetTimeSafe = (buffer, offset, lenValue) => { - if (lenValue !== 4) { - return { - len: lenValue, - value: new Date(1, 1, 1) - }; +const decodeBacnetTimeSafe = (buffer: Buffer, offset: number, len: number) => { + if (len !== 4) { + return { len, value: new Date(1, 1, 1) }; } else { return decodeBacnetTime(buffer, offset); } }; -const decodeApplicationTime = module.exports.decodeApplicationTime = (buffer, offset) => { +export const decodeApplicationTime = (buffer: Buffer, offset: number) => { const result = decodeTagNumber(buffer, offset); if (result.tagNumber === baEnum.ApplicationTags.TIME) { const value = decodeBacnetTime(buffer, offset + 1); return { len: value.len + 1, - value: value + value: value.value }; - } else { - return; } }; -const decodeBacnetDatetime = (buffer, offset) => { +const decodeBacnetDatetime = (buffer: Buffer, offset: number) => { let len = 0; - const date = decodeApplicationDate(buffer, offset + len); - len += date.len; - const time = decodeApplicationTime(buffer, offset + len); - len += time.len; + const rawDate = decodeApplicationDate(buffer, offset + len); + len += rawDate.len; + const date = rawDate.value; + const rawTime = decodeApplicationTime(buffer, offset + len); + len += rawTime.len; + const time = rawTime.value; return { len: len, - value: new Date(date.year, date.month, date.day, time.hour, time.minute, time.second, time.millisecond) + value: new Date(date.getFullYear(), date.getMonth(), date.getDay(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()) }; }; -const bacappDecodeData = (buffer, offset, maxLength, tagDataType, lenValueType) => { - let result; - const value = { +const bacappDecodeData = (buffer: Buffer, offset: number, maxLength: number, tagDataType: number, lenValueType: number) => { + let result: any; + const value: any = { len: 0, type: tagDataType }; @@ -1076,7 +1075,7 @@ const bacappDecodeData = (buffer, offset, maxLength, tagDataType, lenValueType) return value; }; -const bacappContextTagType = (property, tagNumber) => { +const bacappContextTagType = (property: number, tagNumber: number) => { let tag = 0; switch (property) { case baEnum.PropertyIdentifier.ACTUAL_SHED_LEVEL: @@ -1196,9 +1195,9 @@ const bacappContextTagType = (property, tagNumber) => { return tag; }; -const decodeDeviceObjPropertyRef = (buffer, offset) => { +const decodeDeviceObjPropertyRef = (buffer: Buffer, offset: number) => { let len = 0; - let arrayIndex = baEnum.ASN1_ARRAY_ALL; + let arrayIndex: any = baEnum.ASN1_ARRAY_ALL; if (!decodeIsContextTag(buffer, offset + len, 0)) return; len++; let objectId = decodeObjectId(buffer, offset + len); @@ -1211,6 +1210,7 @@ const decodeDeviceObjPropertyRef = (buffer, offset) => { result = decodeTagNumberAndValue(buffer, offset + len); if (result.tagNumber === 2) { len += result.len; + // FIXME: This doesn't seem to be used arrayIndex = decodeUnsigned(buffer, offset + len, result.value); len += arrayIndex.len; } @@ -1230,12 +1230,12 @@ const decodeDeviceObjPropertyRef = (buffer, offset) => { }; }; -const decodeReadAccessSpecification = module.exports.decodeReadAccessSpecification = (buffer, offset, apduLen) => { +export const decodeReadAccessSpecification = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; + const value: any = {}; if (!decodeIsContextTag(buffer, offset + len, 0)) return; len++; - let decodedValue = decodeObjectId(buffer, offset + len); + let decodedValue: any = decodeObjectId(buffer, offset + len); value.objectId = { type: decodedValue.objectType, instance: decodedValue.instance @@ -1245,7 +1245,7 @@ const decodeReadAccessSpecification = module.exports.decodeReadAccessSpecificati len++; const propertyIdAndArrayIndex = []; while ((apduLen - len) > 1 && !decodeIsClosingTagNumber(buffer, offset + len, 1)) { - const propertyRef = {}; + const propertyRef: any = {}; if (!isContextSpecific(buffer[offset + len])) return; const result = decodeTagNumberAndValue(buffer, offset + len); len += result.len; @@ -1276,11 +1276,11 @@ const decodeReadAccessSpecification = module.exports.decodeReadAccessSpecificati }; }; -const decodeCovSubscription = (buffer, offset, apduLen) => { +const decodeCovSubscription = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; - let result; - let decodedValue; + const value: any = {}; + let result: any ; + let decodedValue: any ; value.recipient = {}; if (!decodeIsOpeningTagNumber(buffer, offset + len, 0)) return; len++; @@ -1366,17 +1366,15 @@ const decodeCovSubscription = (buffer, offset, apduLen) => { }; }; -const decodeCalendarDate = (buffer, offset) => { - return { - len: 4, - year: buffer[offset], - month: buffer[offset + 1], - day: buffer[offset + 2], - wday: buffer[offset + 3] - }; -}; +const decodeCalendarDate = (buffer: Buffer, offset: number) => ({ + len: 4, + year: buffer[offset], + month: buffer[offset + 1], + day: buffer[offset + 2], + wday: buffer[offset + 3] +}); -const decodeCalendarDateRange = (buffer, offset) => { +const decodeCalendarDateRange = (buffer: Buffer, offset: number) => { let len = 1; const startDate = decodeDate(buffer, offset + len); len += startDate.len + 1; @@ -1389,39 +1387,36 @@ const decodeCalendarDateRange = (buffer, offset) => { }; }; -const decodeCalendarWeekDay = (buffer, offset) => { - return { - len: 3, - month: buffer[offset], - week: buffer[offset + 1], - wday: buffer[offset + 2] - }; -}; +const decodeCalendarWeekDay = (buffer: Buffer, offset: number) => ({ + len: 3, + month: buffer[offset], + week: buffer[offset + 1], + wday: buffer[offset + 2] +}); -const decodeCalendar = (buffer, offset, apduLen) => { +const decodeCalendar = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; const entries = []; - let decodedValue; while (len < apduLen) { const result = decodeTagNumber(buffer, offset + len); len += result.len; switch (result.tagNumber) { - case 0: - decodedValue = decodeCalendarDate(buffer, offset + len); + case 0: { + const decodedValue = decodeCalendarDate(buffer, offset + len); len += decodedValue.len; entries.push(decodedValue); break; - case 1: - decodedValue = decodeCalendarDateRange(buffer, offset + len); + } case 1: { + const decodedValue = decodeCalendarDateRange(buffer, offset + len); len += decodedValue.len; entries.push(decodedValue); break; - case 2: - decodedValue = decodeCalendarWeekDay(buffer, offset + len); + } case 2: { + const decodedValue = decodeCalendarWeekDay(buffer, offset + len); len += decodedValue.len; entries.push(decodedValue); break; - default: + } default: return { len: len - 1, value: entries @@ -1430,12 +1425,11 @@ const decodeCalendar = (buffer, offset, apduLen) => { } }; -const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectType, propertyId) => { +const bacappDecodeContextApplicationData = (buffer: Buffer, offset: number, maxOffset: number, objectType: number, propertyId: number) => { let len = 0; - let result; if (isContextSpecific(buffer[offset])) { if (propertyId === baEnum.PropertyIdentifier.LIST_OF_GROUP_MEMBERS) { - result = decodeReadAccessSpecification(buffer, offset, maxOffset); + const result = decodeReadAccessSpecification(buffer, offset, maxOffset); if (!result) return; return { type: baEnum.ApplicationTags.READ_ACCESS_SPECIFICATION, @@ -1443,7 +1437,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp len: result.len }; } else if (propertyId === baEnum.PropertyIdentifier.ACTIVE_COV_SUBSCRIPTIONS) { - result = decodeCovSubscription(buffer, offset, maxOffset); + const result = decodeCovSubscription(buffer, offset, maxOffset); if (!result) return; return { type: baEnum.ApplicationTags.COV_SUBSCRIPTION, @@ -1451,7 +1445,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp len: result.len }; } else if (objectType === baEnum.ObjectType.GROUP && propertyId === baEnum.PropertyIdentifier.PRESENT_VALUE) { - result = decodeReadAccessResult(buffer, offset, maxOffset); + const result = decodeReadAccessResult(buffer, offset, maxOffset); if (!result) return; return { type: baEnum.ApplicationTags.READ_ACCESS_RESULT, @@ -1459,7 +1453,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp len: result.len }; } else if (propertyId === baEnum.PropertyIdentifier.LIST_OF_OBJECT_PROPERTY_REFERENCES || propertyId === baEnum.PropertyIdentifier.LOG_DEVICE_OBJECT_PROPERTY || propertyId === baEnum.PropertyIdentifier.OBJECT_PROPERTY_REFERENCE) { - result = decodeDeviceObjPropertyRef(buffer, offset, maxOffset); + const result = decodeDeviceObjPropertyRef(buffer, offset); if (!result) return; return { type: baEnum.ApplicationTags.OBJECT_PROPERTY_REFERENCE, @@ -1467,7 +1461,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp len: result.len }; } else if (propertyId === baEnum.PropertyIdentifier.DATE_LIST) { - result = decodeCalendar(buffer, offset, maxOffset); + const result = decodeCalendar(buffer, offset, maxOffset); if (!result) return; return { type: baEnum.ApplicationTags.CONTEXT_SPECIFIC_DECODED, @@ -1511,7 +1505,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp if (!subResult) return; if (subResult.value === 0) { len += subResult.len; - result = bacappDecodeApplicationData(buffer, offset + len, maxOffset, baEnum.ASN1_MAX_OBJECT_TYPE, baEnum.ASN1_MAX_PROPERTY_ID); + const result = bacappDecodeApplicationData(buffer, offset + len, maxOffset, baEnum.ASN1_MAX_OBJECT_TYPE, baEnum.ASN1_MAX_PROPERTY_ID); if (!result) return; list.push(result); len += result.len; @@ -1523,7 +1517,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp const bacappResult = bacappDecodeData(buffer, offset + len + subResult.len, maxOffset, subResult.tagNumber, subResult.value); if (!bacappResult) return; if (bacappResult.len === subResult.value) { - const resObj = { + const resObj: {value: any, type: number, encoding?: number} = { value: bacappResult.value, type: bacappResult.type }; @@ -1561,7 +1555,7 @@ const bacappDecodeContextApplicationData = (buffer, offset, maxOffset, objectTyp } }; -const bacappEncodeTimestamp = module.exports.bacappEncodeTimestamp = (buffer, value) => { +export const bacappEncodeTimestamp = (buffer: EncodeBuffer, value: {type: number, value: any}) => { switch (value.type) { case baEnum.TimeStamp.TIME: encodeContextTime(buffer, 0, value.value); @@ -1577,13 +1571,13 @@ const bacappEncodeTimestamp = module.exports.bacappEncodeTimestamp = (buffer, va } }; -module.exports.bacappEncodeContextTimestamp = (buffer, tagNumber, value) => { +export const bacappEncodeContextTimestamp = (buffer: EncodeBuffer, tagNumber: number, value: {type: number, value: any}) => { encodeOpeningTag(buffer, tagNumber); bacappEncodeTimestamp(buffer, value); encodeClosingTag(buffer, tagNumber); }; -module.exports.decodeContextCharacterString = (buffer, offset, maxLength, tagNumber) => { +export const decodeContextCharacterString = (buffer: Buffer, offset: number, maxLength: number, tagNumber: number) => { let len = 0; if (!decodeIsContextTag(buffer, offset + len, tagNumber)) return; const result = decodeTagNumberAndValue(buffer, offset + len); @@ -1598,7 +1592,7 @@ module.exports.decodeContextCharacterString = (buffer, offset, maxLength, tagNum }; }; -const decodeIsContextTagWithLength = (buffer, offset, tagNumber) => { +const decodeIsContextTagWithLength = (buffer: Buffer, offset: number, tagNumber: number) => { const result = decodeTagNumber(buffer, offset); return { len: result.len, @@ -1606,7 +1600,7 @@ const decodeIsContextTagWithLength = (buffer, offset, tagNumber) => { }; }; -module.exports.decodeContextObjectId = (buffer, offset, tagNumber) => { +export const decodeContextObjectId = (buffer: Buffer, offset: number, tagNumber: number) => { const result = decodeIsContextTagWithLength(buffer, offset, tagNumber); if (!result.value) return; const decodedValue = decodeObjectId(buffer, offset + result.len); @@ -1614,14 +1608,14 @@ module.exports.decodeContextObjectId = (buffer, offset, tagNumber) => { return decodedValue; }; -const encodeBacnetCharacterString = (buffer, value, encoding) => { +const encodeBacnetCharacterString = (buffer: EncodeBuffer, value: string, encoding?: number) => { encoding = encoding || baEnum.CharacterStringEncoding.UTF_8; buffer.buffer[buffer.offset++] = encoding; const bufEncoded = iconv.encode(value, getEncodingType(encoding)); buffer.offset += bufEncoded.copy(buffer.buffer, buffer.offset); }; -const encodeApplicationCharacterString = module.exports.encodeApplicationCharacterString = (buffer, value, encoding) => { +export const encodeApplicationCharacterString = (buffer: EncodeBuffer, value: string, encoding?: number) => { const tmp = getBuffer(); encodeBacnetCharacterString(tmp, value, encoding); encodeTag(buffer, baEnum.ApplicationTags.CHARACTER_STRING, false, tmp.offset); @@ -1629,7 +1623,7 @@ const encodeApplicationCharacterString = module.exports.encodeApplicationCharact buffer.offset += tmp.offset; }; -module.exports.encodeContextCharacterString = (buffer, tagNumber, value, encoding) => { +export const encodeContextCharacterString = (buffer: EncodeBuffer, tagNumber: number, value: string, encoding?: number) => { const tmp = getBuffer(); encodeBacnetCharacterString(tmp, value, encoding); encodeTag(buffer, tagNumber, true, tmp.offset); diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 00000000..8c14ca73 --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,93 @@ +export interface EncodeBuffer { + buffer: Buffer; + offset: number; +} + +export interface BACNetAddress { + type?: number; + net?: number; + adr?: number[]; +} + +export interface TransportSettings { + port?: number; + interface?: string; + broadcastAddress?: string; +} + +export interface BACNetObjectID { + type: number; + instance: number; +} + +export interface BACNetPropertyID { + id: number; + index: number; +} + +export interface BACNetReadAccessSpecification { + objectId: BACNetObjectID; + properties: BACNetPropertyID[]; +} + +export interface BACNetBitString { + bitsUsed: number; + value: number[]; +} + +export interface BACNetCovSubscription { + recipient: { + network: number; + address: number[]; + }; + subscriptionProcessId: number; + monitoredObjectId: BACNetObjectID; + monitoredProperty: BACNetPropertyID; + issueConfirmedNotifications: boolean; + timeRemaining: number; + covIncrement: number; +} + +export interface BACNetAlarm { + objectId: BACNetObjectID; + alarmState: number; + acknowledgedTransitions: BACNetBitString; +} + +export interface BACNetEvent { + objectId: BACNetObjectID; + eventState: number; + acknowledgedTransitions: BACNetBitString; + eventTimeStamps: Date[]; + notifyType: number; + eventEnable: BACNetBitString; + eventPriorities: number[]; +} + +export interface BACNetDevObjRef { + id: number; + arrayIndex: number; + objectId: BACNetObjectID; + deviceIndentifier: BACNetObjectID; +} + +export interface BACNetAppData { + type: number; + value: any; + encoding?: number; +} + +export interface BACNetPropertyState { + type: number; + state: number; +} + +export interface BACNetEventInformation { + objectId: BACNetObjectID; + eventState: number; + acknowledgedTransitions: BACNetBitString; + eventTimeStamps: any[]; + notifyType: number; + eventEnable: BACNetBitString; + eventPriorities: number[]; +} From 6765d13d68c0b71cd12f29318d14ab172da7dcf1 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:47 +0200 Subject: [PATCH 08/44] refactor(add-list-element): rework to TypeScript --- ...dd-list-element.js => add-list-element.ts} | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) rename lib/services/{add-list-element.js => add-list-element.ts} (74%) diff --git a/lib/services/add-list-element.js b/lib/services/add-list-element.ts similarity index 74% rename from lib/services/add-list-element.js rename to lib/services/add-list-element.ts index 6eaff0b1..40288cff 100644 --- a/lib/services/add-list-element.js +++ b/lib/services/add-list-element.ts @@ -1,26 +1,25 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, objectId, propertyId, arrayIndex, values) => { +export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, propertyId: number, arrayIndex: number, values: any) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); baAsn1.encodeContextEnumerated(buffer, 1, propertyId); if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) { baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex); } baAsn1.encodeOpeningTag(buffer, 3); - values.forEach((value) => { - baAsn1.bacappEncodeApplicationData(buffer, value); - }); + values.forEach((value: any) => baAsn1.bacappEncodeApplicationData(buffer, value)); baAsn1.encodeClosingTag(buffer, 3); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const value = {}; + let result: any; + let decodedValue: any; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); @@ -30,15 +29,13 @@ module.exports.decode = (buffer, offset, apduLen) => { len += result.len; decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value); len += decodedValue.len; - value.property = {id: decodedValue.value}; + value.property = {id: decodedValue.value, index: baEnum.ASN1_ARRAY_ALL}; if (len < apduLen && baAsn1.decodeIsContextTag(buffer, offset + len, 2)) { result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value); len += decodedValue.len; value.property.index = decodedValue.value; - } else { - value.property.index = baEnum.ASN1_ARRAY_ALL; } const values = []; if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 3)) return; From a5db5124c7581b58f726d27a0ac1b7345ca5757e Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:48 +0200 Subject: [PATCH 09/44] refactor(alarm-acknowledge): rework to TypeScript --- ...rm-acknowledge.js => alarm-acknowledge.ts} | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) rename lib/services/{alarm-acknowledge.js => alarm-acknowledge.ts} (73%) diff --git a/lib/services/alarm-acknowledge.js b/lib/services/alarm-acknowledge.ts similarity index 73% rename from lib/services/alarm-acknowledge.js rename to lib/services/alarm-acknowledge.ts index 3b9ba219..8708a913 100644 --- a/lib/services/alarm-acknowledge.js +++ b/lib/services/alarm-acknowledge.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, ackProcessId, eventObjectId, eventStateAcknowledged, ackSource, eventTimeStamp, ackTimeStamp) => { +export const encode = (buffer: EncodeBuffer, ackProcessId: number, eventObjectId: BACNetObjectID, eventStateAcknowledged: number, ackSource: string, eventTimeStamp: any, ackTimeStamp: any) => { baAsn1.encodeContextUnsigned(buffer, 0, ackProcessId); baAsn1.encodeContextObjectId(buffer, 1, eventObjectId.type, eventObjectId.instance); baAsn1.encodeContextEnumerated(buffer, 2, eventStateAcknowledged); @@ -12,13 +13,11 @@ module.exports.encode = (buffer, ackProcessId, eventObjectId, eventStateAcknowle baAsn1.bacappEncodeContextTimestamp(buffer, 5, ackTimeStamp); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; - let result; - let decodedValue; - let date; - let time; + const value: any = {}; + let result: any; + let decodedValue: any; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value); @@ -39,7 +38,7 @@ module.exports.decode = (buffer, offset, apduLen) => { result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber === baEnum.TimeStamp.TIME) { - decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len, result.value); + decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len); len += decodedValue.len; value.eventTimeStamp = decodedValue.value; } else if (result.tagNumber === baEnum.TimeStamp.SEQUENCE_NUMBER) { @@ -47,12 +46,12 @@ module.exports.decode = (buffer, offset, apduLen) => { len += decodedValue.len; value.eventTimeStamp = decodedValue.value; } else if (result.tagNumber === baEnum.TimeStamp.DATETIME) { - date = baAsn1.decodeApplicationDate(buffer, offset + len); - len += date.len; - date = date.value.value; - time = baAsn1.decodeApplicationTime(buffer, offset + len); - len += time.len; - time = time.value.value; + const dateRaw = baAsn1.decodeApplicationDate(buffer, offset + len); + len += dateRaw.len; + const date = dateRaw.value; + const timeRaw = baAsn1.decodeApplicationTime(buffer, offset + len); + len += timeRaw.len; + const time = timeRaw.value; value.eventTimeStamp = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); len++; } @@ -67,7 +66,7 @@ module.exports.decode = (buffer, offset, apduLen) => { result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber === baEnum.TimeStamp.TIME) { - decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len, result.value); + decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len); len += decodedValue.len; value.acknowledgeTimeStamp = decodedValue.value; } else if (result.tagNumber === baEnum.TimeStamp.SEQUENCE_NUMBER) { @@ -75,12 +74,12 @@ module.exports.decode = (buffer, offset, apduLen) => { len += decodedValue.len; value.acknowledgeTimeStamp = decodedValue.value; } else if (result.tagNumber === baEnum.TimeStamp.DATETIME) { - date = baAsn1.decodeApplicationDate(buffer, offset + len); - len += date.len; - date = date.value.value; - time = baAsn1.decodeApplicationTime(buffer, offset + len); - len += time.len; - time = time.value.value; + const dateRaw = baAsn1.decodeApplicationDate(buffer, offset + len); + len += dateRaw.len; + const date = dateRaw.value; + const timeRaw = baAsn1.decodeApplicationTime(buffer, offset + len); + len += timeRaw.len; + const time = timeRaw.value; value.acknowledgeTimeStamp = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); len++; } From 46fd0b6ca02ef69ba8aba1ad2ae821e02805362c Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:48 +0200 Subject: [PATCH 10/44] refactor(alarm-summary): rework to TypeScript --- .../{alarm-summary.js => alarm-summary.ts} | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) rename lib/services/{alarm-summary.js => alarm-summary.ts} (77%) diff --git a/lib/services/alarm-summary.js b/lib/services/alarm-summary.ts similarity index 77% rename from lib/services/alarm-summary.js rename to lib/services/alarm-summary.ts index adc6ac97..2ceead11 100644 --- a/lib/services/alarm-summary.js +++ b/lib/services/alarm-summary.ts @@ -1,8 +1,9 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer, BACNetAlarm } from '../types'; -module.exports.encode = (buffer, alarms) => { +export const encode = (buffer: EncodeBuffer, alarms: BACNetAlarm[]) => { alarms.forEach((alarm) => { baAsn1.encodeContextObjectId(buffer, 12, alarm.objectId.type, alarm.objectId.instance); baAsn1.encodeContextEnumerated(buffer, 9, alarm.alarmState); @@ -10,13 +11,13 @@ module.exports.encode = (buffer, alarms) => { }); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const alarms = []; + let result: any; + let decodedValue: any; + const alarms: BACNetAlarm[] = []; while ((apduLen - 3 - len) > 0) { - const value = {}; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); From 682f152f250371d02d685c01afe4dc93a73603b9 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:49 +0200 Subject: [PATCH 11/44] refactor(atomic-read-file): rework to TypeScript --- ...tomic-read-file.js => atomic-read-file.ts} | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) rename lib/services/{atomic-read-file.js => atomic-read-file.ts} (87%) diff --git a/lib/services/atomic-read-file.js b/lib/services/atomic-read-file.ts similarity index 87% rename from lib/services/atomic-read-file.js rename to lib/services/atomic-read-file.ts index f9be2246..c7025e45 100644 --- a/lib/services/atomic-read-file.js +++ b/lib/services/atomic-read-file.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, isStream, objectId, position, count) => { +export const encode = (buffer: EncodeBuffer, isStream: boolean, objectId: BACNetObjectID, position: number, count: number) => { baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); if (isStream) { baAsn1.encodeOpeningTag(buffer, 0); @@ -18,7 +19,7 @@ module.exports.encode = (buffer, isStream, objectId, position, count) => { } }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { let len = 0; let result; let decodedValue; @@ -78,7 +79,7 @@ module.exports.decode = (buffer, offset) => { }; }; -module.exports.encodeAcknowledge = (buffer, isStream, endOfFile, position, blockCount, blocks, counts) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, isStream: boolean, endOfFile: boolean, position: number, blockCount: number, blocks: number[][], counts: number[]) => { baAsn1.encodeApplicationBoolean(buffer, endOfFile); if (isStream) { baAsn1.encodeOpeningTag(buffer, 0); @@ -96,13 +97,13 @@ module.exports.encodeAcknowledge = (buffer, isStream, endOfFile, position, block } }; -module.exports.decodeAcknowledge = (buffer, offset) => { +export const decodeAcknowledge = (buffer: Buffer, offset: number) => { let len = 0; - let result; - let decodedValue; - let isStream; - let position; - let targetBuffer; + let result: any; + let decodedValue: any; + let isStream: boolean; + let position: number; + let targetBuffer: Buffer; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== baEnum.ApplicationTags.BOOLEAN) return; From fdcc7dc16788ba70a6b2f1bd6d5811fb0d6f6884 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:50 +0200 Subject: [PATCH 12/44] refactor(atomic-write-file): rework to TypeScript --- ...mic-write-file.js => atomic-write-file.ts} | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) rename lib/services/{atomic-write-file.js => atomic-write-file.ts} (86%) diff --git a/lib/services/atomic-write-file.js b/lib/services/atomic-write-file.ts similarity index 86% rename from lib/services/atomic-write-file.js rename to lib/services/atomic-write-file.ts index 62adf99d..59d71591 100644 --- a/lib/services/atomic-write-file.js +++ b/lib/services/atomic-write-file.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { BACNetObjectID, EncodeBuffer } from '../types'; -module.exports.encode = (buffer, isStream, objectId, position, blocks) => { +export const encode = (buffer: EncodeBuffer, isStream: boolean, objectId: BACNetObjectID, position: number, blocks: number[][]) => { baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); if (isStream) { baAsn1.encodeOpeningTag(buffer, 0); @@ -21,14 +22,14 @@ module.exports.encode = (buffer, isStream, objectId, position, blocks) => { } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - let isStream; - let position; + let result: any; + let decodedValue: any; + let isStream: boolean; + let position: number; const blocks = []; - let blockCount; + let blockCount: number; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== baEnum.ApplicationTags.OBJECTIDENTIFIER) return; @@ -89,7 +90,7 @@ module.exports.decode = (buffer, offset, apduLen) => { }; }; -module.exports.encodeAcknowledge = (buffer, isStream, position) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, isStream: boolean, position: number) => { if (isStream) { baAsn1.encodeContextSigned(buffer, 0, position); } else { @@ -97,7 +98,7 @@ module.exports.encodeAcknowledge = (buffer, isStream, position) => { } }; -module.exports.decodeAcknowledge = (buffer, offset) => { +export const decodeAcknowledge = (buffer: Buffer, offset: number) => { let len = 0; let isStream = false; let position = 0; From 32faf500eeccc6ce18b1cb77363122b68e5c96af Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:50 +0200 Subject: [PATCH 13/44] refactor(cov-notification): rework to TypeScript --- lib/services/{cov-notify.js => cov-notify.ts} | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) rename lib/services/{cov-notify.js => cov-notify.ts} (88%) diff --git a/lib/services/cov-notify.js b/lib/services/cov-notify.ts similarity index 88% rename from lib/services/cov-notify.js rename to lib/services/cov-notify.ts index fc243169..b7fa5619 100644 --- a/lib/services/cov-notify.js +++ b/lib/services/cov-notify.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, subscriberProcessId, initiatingDeviceId, monitoredObjectId, timeRemaining, values) => { +export const encode = (buffer: EncodeBuffer, subscriberProcessId: number, initiatingDeviceId: number, monitoredObjectId: BACNetObjectID, timeRemaining: number, values: any[]) => { baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId); baAsn1.encodeContextObjectId(buffer, 1, baEnum.ObjectType.DEVICE, initiatingDeviceId); baAsn1.encodeContextObjectId(buffer, 2, monitoredObjectId.type, monitoredObjectId.instance); @@ -15,9 +16,7 @@ module.exports.encode = (buffer, subscriberProcessId, initiatingDeviceId, monito baAsn1.encodeContextUnsigned(buffer, 1, value.property.index); } baAsn1.encodeOpeningTag(buffer, 2); - value.value.forEach((v) => { - baAsn1.bacappEncodeApplicationData(buffer, v); - }); + value.value.forEach((v: any) => baAsn1.bacappEncodeApplicationData(buffer, v)); baAsn1.encodeClosingTag(buffer, 2); if (value.priority === baEnum.ASN1_NO_PRIORITY) { baAsn1.encodeContextUnsigned(buffer, 3, value.priority); @@ -27,10 +26,10 @@ module.exports.encode = (buffer, subscriberProcessId, initiatingDeviceId, monito baAsn1.encodeClosingTag(buffer, 4); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; + let result: any; + let decodedValue: any; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; @@ -59,7 +58,7 @@ module.exports.decode = (buffer, offset, apduLen) => { len++; const values = []; while ((apduLen - len) > 1 && !baAsn1.decodeIsClosingTagNumber(buffer, offset + len, 4)) { - const newEntry = {}; + const newEntry: any = {}; newEntry.property = {}; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); From 4d9e060aab72b3fb20d2fec93a1ac9b43647e972 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:51 +0200 Subject: [PATCH 14/44] refactor(create-object): rework to TypeScript --- .../{create-object.js => create-object.ts} | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) rename lib/services/{create-object.js => create-object.ts} (84%) diff --git a/lib/services/create-object.js b/lib/services/create-object.ts similarity index 84% rename from lib/services/create-object.js rename to lib/services/create-object.ts index e5a3d3e5..ec563a03 100644 --- a/lib/services/create-object.js +++ b/lib/services/create-object.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, objectId, values) => { +export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, values: any[]) => { baAsn1.encodeOpeningTag(buffer, 0); baAsn1.encodeContextObjectId(buffer, 1, objectId.type, objectId.instance); baAsn1.encodeClosingTag(buffer, 0); @@ -14,7 +15,7 @@ module.exports.encode = (buffer, objectId, values) => { baAsn1.encodeContextUnsigned(buffer, 1, propertyValue.property.index); } baAsn1.encodeOpeningTag(buffer, 2); - propertyValue.value.forEach((value) => { + propertyValue.value.forEach((value: any) => { baAsn1.bacappEncodeApplicationData(buffer, value); }); baAsn1.encodeClosingTag(buffer, 2); @@ -25,11 +26,11 @@ module.exports.encode = (buffer, objectId, values) => { baAsn1.encodeClosingTag(buffer, 1); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - let objectId; + let result: any; + let decodedValue: any; + let objectId: {type: number, instance: number}; const valueList = []; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; @@ -48,7 +49,7 @@ module.exports.decode = (buffer, offset, apduLen) => { if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 1)) return; len++; while ((apduLen - len) > 1) { - const newEntry = {}; + const newEntry: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== 0) return; @@ -91,6 +92,6 @@ module.exports.decode = (buffer, offset, apduLen) => { }; }; -module.exports.encodeAcknowledge = (buffer, objectId) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, objectId: BACNetObjectID) => { baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); }; From 1ea6c50c00ef59437d58d91fb8715c9f666fa8eb Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:52 +0200 Subject: [PATCH 15/44] refactor(delete-object): rework to TypeScript --- lib/services/{delete-object.js => delete-object.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{delete-object.js => delete-object.ts} (59%) diff --git a/lib/services/delete-object.js b/lib/services/delete-object.ts similarity index 59% rename from lib/services/delete-object.js rename to lib/services/delete-object.ts index 029a1c15..99f2d866 100644 --- a/lib/services/delete-object.js +++ b/lib/services/delete-object.ts @@ -1,8 +1,13 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.decode = (buffer, offset, apduLen) => { +export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID) => { + baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); +}; + +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { const result = baAsn1.decodeTagNumberAndValue(buffer, offset); if (result.tagNumber !== 12) return; let len = 1; @@ -12,7 +17,3 @@ module.exports.decode = (buffer, offset, apduLen) => { value.len = len; return value; }; - -module.exports.encode = (buffer, objectId) => { - baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); -}; From d211f9f24f01e92cc424357e606a84979b7a5a02 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:52 +0200 Subject: [PATCH 16/44] refactor(device-communiction-control): rework to TypeScript --- ...n-control.js => device-communication-control.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{device-communication-control.js => device-communication-control.ts} (79%) diff --git a/lib/services/device-communication-control.js b/lib/services/device-communication-control.ts similarity index 79% rename from lib/services/device-communication-control.js rename to lib/services/device-communication-control.ts index f4f0183b..ee81195b 100644 --- a/lib/services/device-communication-control.js +++ b/lib/services/device-communication-control.ts @@ -1,8 +1,9 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, timeDuration, enableDisable, password) => { +export const encode = (buffer: EncodeBuffer, timeDuration: number, enableDisable: number, password: string) => { if (timeDuration > 0) { baAsn1.encodeContextUnsigned(buffer, 0, timeDuration); } @@ -12,11 +13,11 @@ module.exports.encode = (buffer, timeDuration, enableDisable, password) => { } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; - let decodedValue; - let result; + const value: any = {}; + let decodedValue: any; + let result: any; if (baAsn1.decodeIsContextTag(buffer, offset + len, 0)) { result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; From f54fd0524098cfb571e793b32a0a9e976a39f570 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:53 +0200 Subject: [PATCH 17/44] refactor(error): rework to TypeScript --- lib/services/{error.js => error.ts} | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) rename lib/services/{error.js => error.ts} (72%) diff --git a/lib/services/error.js b/lib/services/error.ts similarity index 72% rename from lib/services/error.js rename to lib/services/error.ts index 564f6920..fcd7f216 100644 --- a/lib/services/error.js +++ b/lib/services/error.ts @@ -1,15 +1,16 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, errorClass, errorCode) => { +export const encode = (buffer: EncodeBuffer, errorClass: number, errorCode: number) => { baAsn1.encodeApplicationEnumerated(buffer, errorClass); baAsn1.encodeApplicationEnumerated(buffer, errorCode); }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { const orgOffset = offset; - let result; + let result: any; result = baAsn1.decodeTagNumberAndValue(buffer, offset); offset += result.len; const errorClass = baAsn1.decodeEnumerated(buffer, offset, result.value); From be191551f11a7da9e8cf2232345a2064563f3887 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:54 +0200 Subject: [PATCH 18/44] refactor(event-information): rework to TypeScript --- ...nt-information.js => event-information.ts} | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) rename lib/services/{event-information.js => event-information.ts} (88%) diff --git a/lib/services/event-information.js b/lib/services/event-information.ts similarity index 88% rename from lib/services/event-information.js rename to lib/services/event-information.ts index 6d18a49a..75930305 100644 --- a/lib/services/event-information.js +++ b/lib/services/event-information.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetEvent } from '../types'; -module.exports.encode = (buffer, events, moreEvents) => { +export const encode = (buffer: EncodeBuffer, events: BACNetEvent[], moreEvents: boolean) => { baAsn1.encodeOpeningTag(buffer, 0); events.forEach((event) => { baAsn1.encodeContextObjectId(buffer, 0, event.objectId.type, event.objectId.instance); @@ -27,14 +28,14 @@ module.exports.encode = (buffer, events, moreEvents) => { baAsn1.encodeContextBoolean(buffer, 1, moreEvents); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; + let result: any; + let decodedValue: any; len++; const alarms = []; while ((apduLen - 3 - len) > 0) { - const value = {}; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); @@ -57,10 +58,10 @@ module.exports.decode = (buffer, offset, apduLen) => { if (result.tagNumber !== baEnum.ApplicationTags.NULL) { decodedValue = baAsn1.decodeApplicationDate(buffer, offset + len); len += decodedValue.len; - const date = decodedValue.value.value; + const date = decodedValue.value; decodedValue = baAsn1.decodeApplicationTime(buffer, offset + len); len += decodedValue.len; - const time = decodedValue.value.value; + const time = decodedValue.value; value.eventTimeStamps[i] = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); } else { len += result.value; From 3ba8b16e156fbc0eb7fca16df87fbd9c0d1f56d6 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:54 +0200 Subject: [PATCH 19/44] refactor(event-notify-data): rework to TypeScript --- ...nt-notify-data.js => event-notify-data.ts} | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) rename lib/services/{event-notify-data.js => event-notify-data.ts} (96%) diff --git a/lib/services/event-notify-data.js b/lib/services/event-notify-data.ts similarity index 96% rename from lib/services/event-notify-data.js rename to lib/services/event-notify-data.ts index 9807604b..6bdf1256 100644 --- a/lib/services/event-notify-data.js +++ b/lib/services/event-notify-data.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, data) => { +export const encode = (buffer: EncodeBuffer, data: any) => { baAsn1.encodeContextUnsigned(buffer, 0, data.processId); baAsn1.encodeContextObjectId(buffer, 1, data.initiatingObjectId.type, data.initiatingObjectId.instance); baAsn1.encodeContextObjectId(buffer, 2, data.eventObjectId.type, data.eventObjectId.instance); @@ -114,11 +115,11 @@ module.exports.encode = (buffer, data) => { } }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { let len = 0; - let result; - let decodedValue; - const eventData = {}; + let result: any; + let decodedValue: any; + const eventData: any = {}; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; @@ -141,10 +142,10 @@ module.exports.decode = (buffer, offset) => { len += 2; decodedValue = baAsn1.decodeApplicationDate(buffer, offset + len); len += decodedValue.len; - const date = decodedValue.value.value; + const date = decodedValue.value; decodedValue = baAsn1.decodeApplicationTime(buffer, offset + len); len += decodedValue.len; - const time = decodedValue.value.value; + const time = decodedValue.value; eventData.timeStamp = {}; eventData.timeStamp = new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); len += 2; From 45760c9ad6f6aa85a029e1f7bdddaf6eaaefa342 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:55 +0200 Subject: [PATCH 20/44] refactor(get-enrollment-summary): rework to TypeScript --- ...t-summary.js => get-enrollment-summary.ts} | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) rename lib/services/{get-enrollment-summary.js => get-enrollment-summary.ts} (89%) diff --git a/lib/services/get-enrollment-summary.js b/lib/services/get-enrollment-summary.ts similarity index 89% rename from lib/services/get-enrollment-summary.js rename to lib/services/get-enrollment-summary.ts index 1d4e3dd4..b754eb70 100644 --- a/lib/services/get-enrollment-summary.js +++ b/lib/services/get-enrollment-summary.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, acknowledgmentFilter, enrollmentFilter, eventStateFilter, eventTypeFilter, priorityFilter, notificationClassFilter) => { +export const encode = (buffer: EncodeBuffer, acknowledgmentFilter: number, enrollmentFilter?: any, eventStateFilter?: number, eventTypeFilter?: number, priorityFilter?: any, notificationClassFilter?: number) => { baAsn1.encodeContextEnumerated(buffer, 0, acknowledgmentFilter); if (enrollmentFilter) { baAsn1.encodeOpeningTag(buffer, 1); @@ -36,11 +37,11 @@ module.exports.encode = (buffer, acknowledgmentFilter, enrollmentFilter, eventSt } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const value = {}; + let result: any; + let decodedValue: any; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value); @@ -110,7 +111,7 @@ module.exports.decode = (buffer, offset, apduLen) => { return value; }; -module.exports.encodeAcknowledge = (buffer, enrollmentSummaries) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, enrollmentSummaries: any[]) => { enrollmentSummaries.forEach((enrollmentSummary) => { baAsn1.encodeApplicationObjectId(buffer, enrollmentSummary.objectId.type, enrollmentSummary.objectId.instance); baAsn1.encodeApplicationEnumerated(buffer, enrollmentSummary.eventType); @@ -120,12 +121,12 @@ module.exports.encodeAcknowledge = (buffer, enrollmentSummaries) => { }); }; -module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { +export const decodeAcknowledge = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; + let result: any; const enrollmentSummaries = []; while ((apduLen - len) > 0) { - const enrollmentSummary = {}; + const enrollmentSummary: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== baEnum.ApplicationTags.OBJECTIDENTIFIER) return; From f8e4d9b5f44a200b22dbdd6bb5aa7c049d1230d3 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:55 +0200 Subject: [PATCH 21/44] refactor(get-event-information): rework to TypeScript --- ...nformation.js => get-event-information.ts} | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) rename lib/services/{get-event-information.js => get-event-information.ts} (82%) diff --git a/lib/services/get-event-information.js b/lib/services/get-event-information.ts similarity index 82% rename from lib/services/get-event-information.js rename to lib/services/get-event-information.ts index 09afbb4c..e11eee1e 100644 --- a/lib/services/get-event-information.js +++ b/lib/services/get-event-information.ts @@ -1,25 +1,23 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID, BACNetEventInformation } from '../types'; -module.exports.encode = (buffer, lastReceivedObjectId) => { +export const encode = (buffer: EncodeBuffer, lastReceivedObjectId: BACNetObjectID) => { baAsn1.encodeContextObjectId(buffer, 0, lastReceivedObjectId.type, lastReceivedObjectId.instance); }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { let len = 0; - const value = {}; const result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; const decodedValue = baAsn1.decodeObjectId(buffer, offset + len); len += decodedValue.len; - value.lastReceivedObjectId = {type: decodedValue.objectType, instance: decodedValue.instance}; - value.len = len; - return value; + return {len, lastReceivedObjectId: {type: decodedValue.objectType, instance: decodedValue.instance}}; }; -module.exports.encodeAcknowledge = (buffer, events, moreEvents) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, events: BACNetEventInformation[], moreEvents: boolean) => { baAsn1.encodeOpeningTag(buffer, 0); events.forEach((eventData) => { baAsn1.encodeContextObjectId(buffer, 0, eventData.objectId.type, eventData.objectId.instance); @@ -42,16 +40,16 @@ module.exports.encodeAcknowledge = (buffer, events, moreEvents) => { baAsn1.encodeContextBoolean(buffer, 1, moreEvents); }; -module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { +export const decodeAcknowledge = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const value = {}; + let result: any; + let decodedValue: any; + const value: any = {}; if (!baAsn1.decodeIsOpeningTagNumber(buffer, offset + len, 0)) return; len++; value.events = []; while ((apduLen - len) > 3) { - const event = {}; + const event: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); @@ -74,7 +72,7 @@ module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber === baEnum.TimeStamp.TIME) { - decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len, result.value); + decodedValue = baAsn1.decodeBacnetTime(buffer, offset + len); len += decodedValue.len; event.eventTimeStamps[i] = {value: decodedValue.value, type: baEnum.TimeStamp.TIME}; } else if (result.tagNumber === baEnum.TimeStamp.SEQUENCE_NUMBER) { @@ -82,12 +80,12 @@ module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { len += decodedValue.len; event.eventTimeStamps[i] = {value: decodedValue.value, type: baEnum.TimeStamp.SEQUENCE_NUMBER}; } else if (result.tagNumber === baEnum.TimeStamp.DATETIME) { - let date = baAsn1.decodeApplicationDate(buffer, offset + len); - len += date.len; - date = date.value.value; - let time = baAsn1.decodeApplicationTime(buffer, offset + len); - len += time.len; - time = time.value.value; + const dateRaw = baAsn1.decodeApplicationDate(buffer, offset + len); + len += dateRaw.len; + const date = dateRaw.value; + const timeRaw = baAsn1.decodeApplicationTime(buffer, offset + len); + len += timeRaw.len; + const time = timeRaw.value; event.eventTimeStamps[i] = {value: new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()), type: baEnum.TimeStamp.DATETIME}; len++; } From b1e3fc1f552ff59fbf9efb6a8226619a5888d30c Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:56 +0200 Subject: [PATCH 22/44] refactor(i-am-broadcast): rework to TypeScript --- .../{i-am-broadcast.js => i-am-broadcast.ts} | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) rename lib/services/{i-am-broadcast.js => i-am-broadcast.ts} (85%) diff --git a/lib/services/i-am-broadcast.js b/lib/services/i-am-broadcast.ts similarity index 85% rename from lib/services/i-am-broadcast.js rename to lib/services/i-am-broadcast.ts index 87e8a346..f43f372d 100644 --- a/lib/services/i-am-broadcast.js +++ b/lib/services/i-am-broadcast.ts @@ -1,17 +1,19 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import { EncodeBuffer } from "../types"; -module.exports.encode = (buffer, deviceId, maxApdu, segmentation, vendorId) => { +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; + +export const encode = (buffer: EncodeBuffer, deviceId: number, maxApdu: number, segmentation: number, vendorId: number) => { baAsn1.encodeApplicationObjectId(buffer, baEnum.ObjectType.DEVICE, deviceId); baAsn1.encodeApplicationUnsigned(buffer, maxApdu); baAsn1.encodeApplicationEnumerated(buffer, segmentation); baAsn1.encodeApplicationUnsigned(buffer, vendorId); }; -module.exports.decode = (buffer, offset) => { - let result; +export const decode = (buffer: Buffer, offset: number) => { + let result: any; let apduLen = 0; const orgOffset = offset; result = baAsn1.decodeTagNumberAndValue(buffer, offset + apduLen); From 851c26d1e2e73fc380199f7248fbf0b22becc6bd Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:57 +0200 Subject: [PATCH 23/44] refactor(i-have-broadcast): rework to TypeScript --- .../{i-have-broadcast.js => i-have-broadcast.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{i-have-broadcast.js => i-have-broadcast.ts} (74%) diff --git a/lib/services/i-have-broadcast.js b/lib/services/i-have-broadcast.ts similarity index 74% rename from lib/services/i-have-broadcast.js rename to lib/services/i-have-broadcast.ts index 1067a7cc..153f196f 100644 --- a/lib/services/i-have-broadcast.js +++ b/lib/services/i-have-broadcast.ts @@ -1,18 +1,19 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, deviceId, objectId, objectName) => { +export const encode = (buffer: EncodeBuffer, deviceId: BACNetObjectID, objectId: BACNetObjectID, objectName: string) => { baAsn1.encodeApplicationObjectId(buffer, deviceId.type, deviceId.instance); baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); baAsn1.encodeApplicationCharacterString(buffer, objectName); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const value = {}; + let result: any; + let decodedValue: any; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); From 6dc940d25da2e4879edc1727f8631d8e5d0c10ad Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:57 +0200 Subject: [PATCH 24/44] refactor(live-safety-operation): rework to TypeScript --- ...safety-operation.js => life-safety-operation.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{life-safety-operation.js => life-safety-operation.ts} (77%) diff --git a/lib/services/life-safety-operation.js b/lib/services/life-safety-operation.ts similarity index 77% rename from lib/services/life-safety-operation.js rename to lib/services/life-safety-operation.ts index 17104a92..1ee4d8b8 100644 --- a/lib/services/life-safety-operation.js +++ b/lib/services/life-safety-operation.ts @@ -1,19 +1,20 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, processId, requestingSource, operation, targetObjectId) => { +export const encode = (buffer: EncodeBuffer, processId: number, requestingSource: string, operation: number, targetObjectId: BACNetObjectID) => { baAsn1.encodeContextUnsigned(buffer, 0, processId); baAsn1.encodeContextCharacterString(buffer, 1, requestingSource); baAsn1.encodeContextEnumerated(buffer, 2, operation); baAsn1.encodeContextObjectId(buffer, 3, targetObjectId.type, targetObjectId.instance); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const value = {}; + let result: any; + let decodedValue: any; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value); From a73abce1968519b2ba109fa95d33388cabd450b1 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:58 +0200 Subject: [PATCH 25/44] refactor(private-transfer): rework to TypeScript --- .../{private-transfer.js => private-transfer.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{private-transfer.js => private-transfer.ts} (77%) diff --git a/lib/services/private-transfer.js b/lib/services/private-transfer.ts similarity index 77% rename from lib/services/private-transfer.js rename to lib/services/private-transfer.ts index 636af85b..b9f60839 100644 --- a/lib/services/private-transfer.js +++ b/lib/services/private-transfer.ts @@ -1,8 +1,9 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, vendorId, serviceNumber, data) => { +export const encode = (buffer: EncodeBuffer, vendorId: number, serviceNumber: number, data: number[]) => { baAsn1.encodeContextUnsigned(buffer, 0, vendorId); baAsn1.encodeContextUnsigned(buffer, 1, serviceNumber); baAsn1.encodeOpeningTag(buffer, 2); @@ -12,11 +13,11 @@ module.exports.encode = (buffer, vendorId, serviceNumber, data) => { baAsn1.encodeClosingTag(buffer, 2); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - const value = {}; + let result: any; + let decodedValue: any; + const value: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; decodedValue = baAsn1.decodeUnsigned(buffer, offset + len, result.value); From ac222350ec4693409c525033cd39bd1449c28a1e Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:59 +0200 Subject: [PATCH 26/44] refactor(read-property-multiple): rework to TypeScript --- ...-multiple.js => read-property-multiple.ts} | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) rename lib/services/{read-property-multiple.js => read-property-multiple.ts} (53%) diff --git a/lib/services/read-property-multiple.js b/lib/services/read-property-multiple.ts similarity index 53% rename from lib/services/read-property-multiple.js rename to lib/services/read-property-multiple.ts index 6d45f2e0..44fec341 100644 --- a/lib/services/read-property-multiple.js +++ b/lib/services/read-property-multiple.ts @@ -1,14 +1,13 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, properties) => { - properties.forEach((value) => { - baAsn1.encodeReadAccessSpecification(buffer, value); - }); +export const encode = (buffer: EncodeBuffer, properties: any[]) => { + properties.forEach((value) => baAsn1.encodeReadAccessSpecification(buffer, value)); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; const values = []; while ((apduLen - len) > 0) { @@ -23,13 +22,11 @@ module.exports.decode = (buffer, offset, apduLen) => { }; }; -module.exports.encodeAcknowledge = (buffer, values) => { - values.forEach((value) => { - baAsn1.encodeReadAccessResult(buffer, value); - }); +export const encodeAcknowledge = (buffer: EncodeBuffer, values: any[]) => { + values.forEach((value) => baAsn1.encodeReadAccessResult(buffer, value)); }; -module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { +export const decodeAcknowledge = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; const values = []; while ((apduLen - len) > 0) { From 511d1efe52ca0a1aae81d028de341d0009301dad Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:17:59 +0200 Subject: [PATCH 27/44] refactor(read-property): rework to TypeScript --- .../{read-property.js => read-property.ts} | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) rename lib/services/{read-property.js => read-property.ts} (79%) diff --git a/lib/services/read-property.js b/lib/services/read-property.ts similarity index 79% rename from lib/services/read-property.js rename to lib/services/read-property.ts index c427b7aa..4dfd63c3 100644 --- a/lib/services/read-property.js +++ b/lib/services/read-property.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, objectType, objectInstance, propertyId, arrayIndex) => { +export const encode = (buffer: EncodeBuffer, objectType: number, objectInstance: number, propertyId: number, arrayIndex: number) => { if (objectType <= baEnum.ASN1_MAX_OBJECT) { baAsn1.encodeContextObjectId(buffer, 0, objectType, objectInstance); } @@ -15,17 +16,17 @@ module.exports.encode = (buffer, objectType, objectInstance, propertyId, arrayIn } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; + let result: any; + let decodedValue: any; if (apduLen < 7) return; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; len++; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); len += decodedValue.len; const objectId = {type: decodedValue.objectType, instance: decodedValue.instance}; - const property = {}; + const property: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== 1) return; @@ -52,24 +53,22 @@ module.exports.decode = (buffer, offset, apduLen) => { }; }; -module.exports.encodeAcknowledge = (buffer, objectId, propertyId, arrayIndex, values) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, objectId: BACNetObjectID, propertyId: number, arrayIndex: number, values: any[]) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); baAsn1.encodeContextEnumerated(buffer, 1, propertyId); if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) { baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex); } baAsn1.encodeOpeningTag(buffer, 3); - values.forEach((value) => { - baAsn1.bacappEncodeApplicationData(buffer, value); - }); + values.forEach((value) => baAsn1.bacappEncodeApplicationData(buffer, value)); baAsn1.encodeClosingTag(buffer, 3); }; -module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { - let result; - let decodedValue; - const objectId = {}; - const property = {}; +export const decodeAcknowledge = (buffer: Buffer, offset: number, apduLen: number) => { + let result: any; + let decodedValue: any; + const objectId: any = {}; + const property: any = {}; if (!baAsn1.decodeIsContextTag(buffer, offset, 0)) return; let len = 1; result = baAsn1.decodeObjectId(buffer, offset + len); From aa9dd999a019ffa870c2e8ec327434341c24579e Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:01 +0200 Subject: [PATCH 28/44] refactor(read-range): rework to TypeScript --- lib/services/{read-range.js => read-range.ts} | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) rename lib/services/{read-range.js => read-range.ts} (85%) diff --git a/lib/services/read-range.js b/lib/services/read-range.ts similarity index 85% rename from lib/services/read-range.js rename to lib/services/read-range.ts index 3762882f..7630097e 100644 --- a/lib/services/read-range.js +++ b/lib/services/read-range.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID, BACNetBitString } from '../types'; -module.exports.encode = (buffer, objectId, propertyId, arrayIndex, requestType, position, time, count) => { +export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, propertyId: number, arrayIndex: number, requestType: number, position: number, time: Date, count: number) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); baAsn1.encodeContextEnumerated(buffer, 1, propertyId); if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) { @@ -34,20 +35,20 @@ module.exports.encode = (buffer, objectId, propertyId, arrayIndex, requestType, } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; - let requestType; - let position; - let time; - let count; + let result: any; + let decodedValue: any; + let requestType: number; + let position: number; + let time: Date; + let count: number; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; len++; - decodedValue = baAsn1.decodeObjectId(buffer, offset + len, 0); + decodedValue = baAsn1.decodeObjectId(buffer, offset + len); len += decodedValue.len; const objectId = {type: decodedValue.objectType, instance: decodedValue.instance}; - const property = {}; + const property: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== 1) return; @@ -97,10 +98,10 @@ module.exports.decode = (buffer, offset, apduLen) => { requestType = baEnum.ReadRangeType.BY_TIME_REFERENCE_TIME_COUNT; decodedValue = baAsn1.decodeApplicationDate(buffer, offset + len); len += decodedValue.len; - const tmpDate = decodedValue.value.value; + const tmpDate = decodedValue.value; decodedValue = baAsn1.decodeApplicationTime(buffer, offset + len); len += decodedValue.len; - const tmpTime = decodedValue.value.value; + const tmpTime = decodedValue.value; time = new Date(tmpDate.getYear(), tmpDate.getMonth(), tmpDate.getDate(), tmpTime.getHours(), tmpTime.getMinutes(), tmpTime.getSeconds(), tmpTime.getMilliseconds()); result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; @@ -125,7 +126,7 @@ module.exports.decode = (buffer, offset, apduLen) => { }; }; -module.exports.encodeAcknowledge = (buffer, objectId, propertyId, arrayIndex, resultFlags, itemCount, applicationData, requestType, firstSequence) => { +export const encodeAcknowledge = (buffer: EncodeBuffer, objectId: BACNetObjectID, propertyId: number, arrayIndex: number, resultFlags: BACNetBitString, itemCount: number, applicationData: Buffer, requestType: number, firstSequence: number) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); baAsn1.encodeContextEnumerated(buffer, 1, propertyId); if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) { @@ -144,16 +145,16 @@ module.exports.encodeAcknowledge = (buffer, objectId, propertyId, arrayIndex, re } }; -module.exports.decodeAcknowledge = (buffer, offset, apduLen) => { +export const decodeAcknowledge = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; + let result: any; + let decodedValue: any; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; len++; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); len += decodedValue.len; const objectId = {type: decodedValue.objectType, instance: decodedValue.instance}; - const property = {index: baEnum.ASN1_ARRAY_ALL}; + const property: any = {index: baEnum.ASN1_ARRAY_ALL}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== 1) return; From 2957ca7b2162435f403fa98fcee66cea8d2fb5a0 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:02 +0200 Subject: [PATCH 29/44] refactor(reinitialize-device): rework to TypeScript --- ...einitialize-device.js => reinitialize-device.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{reinitialize-device.js => reinitialize-device.ts} (68%) diff --git a/lib/services/reinitialize-device.js b/lib/services/reinitialize-device.ts similarity index 68% rename from lib/services/reinitialize-device.js rename to lib/services/reinitialize-device.ts index be41c911..62e1518c 100644 --- a/lib/services/reinitialize-device.js +++ b/lib/services/reinitialize-device.ts @@ -1,22 +1,23 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, state, password) => { +export const encode = (buffer: EncodeBuffer, state: number, password: string) => { baAsn1.encodeContextEnumerated(buffer, 0, state); if (password && password !== '') { baAsn1.encodeContextCharacterString(buffer, 1, password); } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; - let result; + const value: any = {}; + let result: any; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; - let decodedValue = baAsn1.decodeEnumerated(buffer, offset + len, result.value); + let decodedValue: any = baAsn1.decodeEnumerated(buffer, offset + len, result.value); value.state = decodedValue.value; len += decodedValue.len; if (len < apduLen) { From 0debc928ec6897d39fb5a88f28250649acb3191c Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:03 +0200 Subject: [PATCH 30/44] refactor(subscribe-cov): rework to TypeScript --- lib/services/{subscribe-cov.js => subscribe-cov.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{subscribe-cov.js => subscribe-cov.ts} (80%) diff --git a/lib/services/subscribe-cov.js b/lib/services/subscribe-cov.ts similarity index 80% rename from lib/services/subscribe-cov.js rename to lib/services/subscribe-cov.ts index eb51bb42..bd472417 100644 --- a/lib/services/subscribe-cov.js +++ b/lib/services/subscribe-cov.ts @@ -1,8 +1,9 @@ 'use strict'; -const baAsn1 = require('../asn1'); +import * as baAsn1 from '../asn1'; +import { EncodeBuffer, BACNetObjectID } from '../types'; -module.exports.encode = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime) => { +export const encode = (buffer: EncodeBuffer, subscriberProcessId: number, monitoredObjectId: BACNetObjectID, cancellationRequest: boolean, issueConfirmedNotifications: boolean, lifetime: number) => { baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId); baAsn1.encodeContextObjectId(buffer, 1, monitoredObjectId.type, monitoredObjectId.instance); if (!cancellationRequest) { @@ -11,11 +12,11 @@ module.exports.encode = (buffer, subscriberProcessId, monitoredObjectId, cancell } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; - let result; - let decodedValue; + const value: any = {}; + let result: any; + let decodedValue: any; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; From cb2467cf8744480da02e5c00759c12facec886fb Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:03 +0200 Subject: [PATCH 31/44] refactor(subscribe-property): rework to TypeScript --- ...ubscribe-property.js => subscribe-property.ts} | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) rename lib/services/{subscribe-property.js => subscribe-property.ts} (85%) diff --git a/lib/services/subscribe-property.js b/lib/services/subscribe-property.ts similarity index 85% rename from lib/services/subscribe-property.js rename to lib/services/subscribe-property.ts index bd792d34..3e1b2639 100644 --- a/lib/services/subscribe-property.js +++ b/lib/services/subscribe-property.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID, BACNetPropertyID } from '../types'; -module.exports.encode = (buffer, subscriberProcessId, monitoredObjectId, cancellationRequest, issueConfirmedNotifications, lifetime, monitoredProperty, covIncrementPresent, covIncrement) => { +export const encode = (buffer: EncodeBuffer, subscriberProcessId: number, monitoredObjectId: BACNetObjectID, cancellationRequest: boolean, issueConfirmedNotifications: boolean, lifetime: number, monitoredProperty: BACNetPropertyID, covIncrementPresent: boolean, covIncrement: number) => { baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId); baAsn1.encodeContextObjectId(buffer, 1, monitoredObjectId.type, monitoredObjectId.instance); if (!cancellationRequest) { @@ -21,11 +22,11 @@ module.exports.encode = (buffer, subscriberProcessId, monitoredObjectId, cancell } }; -module.exports.decode = (buffer, offset) => { +export const decode = (buffer: Buffer, offset: number) => { let len = 0; - const value = {}; - let result; - let decodedValue; + const value: any = {}; + let result: any; + let decodedValue: any; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; From 51002338656767d85f87a2d9af04951c1058d10e Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:04 +0200 Subject: [PATCH 32/44] refactor(time-sync): rework to TypeScript --- lib/services/{time-sync.js => time-sync.ts} | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) rename lib/services/{time-sync.js => time-sync.ts} (75%) diff --git a/lib/services/time-sync.js b/lib/services/time-sync.ts similarity index 75% rename from lib/services/time-sync.js rename to lib/services/time-sync.ts index cf7f27f4..4274cc4f 100644 --- a/lib/services/time-sync.js +++ b/lib/services/time-sync.ts @@ -1,16 +1,17 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, time) => { +export const encode = (buffer: EncodeBuffer, time: Date) => { baAsn1.encodeApplicationDate(buffer, time); baAsn1.encodeApplicationTime(buffer, time); }; -module.exports.decode = (buffer, offset, length) => { +export const decode = (buffer: Buffer, offset: number, length: number) => { let len = 0; - let result; + let result: any; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== baEnum.ApplicationTags.DATE) return; From 620e56988cbd65562c9900a1019d1be96ad8dca4 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:04 +0200 Subject: [PATCH 33/44] refactor(who-has): rework to TypeScript --- lib/services/{who-has.js => who-has.ts} | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) rename lib/services/{who-has.js => who-has.ts} (81%) diff --git a/lib/services/who-has.js b/lib/services/who-has.ts similarity index 81% rename from lib/services/who-has.js rename to lib/services/who-has.ts index fcf58a3e..461570e4 100644 --- a/lib/services/who-has.js +++ b/lib/services/who-has.ts @@ -1,9 +1,10 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { BACNetObjectID, EncodeBuffer } from '../types'; -module.exports.encode = (buffer, lowLimit, highLimit, objectId, objectName) => { +export const encode = (buffer: EncodeBuffer, lowLimit: number, highLimit: number, objectId: BACNetObjectID, objectName: string) => { if ((lowLimit >= 0) && (lowLimit <= baEnum.ASN1_MAX_INSTANCE) && (highLimit >= 0) && (highLimit <= baEnum.ASN1_MAX_INSTANCE)) { baAsn1.encodeContextUnsigned(buffer, 0, lowLimit); baAsn1.encodeContextUnsigned(buffer, 1, highLimit); @@ -15,10 +16,10 @@ module.exports.encode = (buffer, lowLimit, highLimit, objectId, objectName) => { } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; - let decodedValue; + const value: any = {}; + let decodedValue: any; let result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber === 0) { From b291a7d08d6fb391cea6b81780848e6eb18ebe99 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:05 +0200 Subject: [PATCH 34/44] refactor(who-is): rework to TypeScript --- lib/services/{who-is.js => who-is.ts} | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) rename lib/services/{who-is.js => who-is.ts} (78%) diff --git a/lib/services/who-is.js b/lib/services/who-is.ts similarity index 78% rename from lib/services/who-is.js rename to lib/services/who-is.ts index 88778507..b4448fc5 100644 --- a/lib/services/who-is.js +++ b/lib/services/who-is.ts @@ -1,18 +1,19 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer } from '../types'; -module.exports.encode = (buffer, lowLimit, highLimit) => { +export const encode = (buffer: EncodeBuffer, lowLimit: number, highLimit: number) => { if ((lowLimit >= 0) && (lowLimit <= baEnum.ASN1_MAX_INSTANCE) && (highLimit >= 0) && (highLimit <= baEnum.ASN1_MAX_INSTANCE)) { baAsn1.encodeContextUnsigned(buffer, 0, lowLimit); baAsn1.encodeContextUnsigned(buffer, 1, highLimit); } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = {}; + const value: any = {}; if (apduLen <= 0) return {}; let result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; From 98533131a8541ab5e0c278efb679c7464da655d0 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:06 +0200 Subject: [PATCH 35/44] refactor(write-property-multiple): rework to TypeScript --- ...multiple.js => write-property-multiple.ts} | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) rename lib/services/{write-property-multiple.js => write-property-multiple.ts} (80%) diff --git a/lib/services/write-property-multiple.js b/lib/services/write-property-multiple.ts similarity index 80% rename from lib/services/write-property-multiple.js rename to lib/services/write-property-multiple.ts index a84d0a4c..5de871fd 100644 --- a/lib/services/write-property-multiple.js +++ b/lib/services/write-property-multiple.ts @@ -1,9 +1,16 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetObjectID, BACNetPropertyID, BACNetAppData } from '../types'; -const encode = module.exports.encode = (buffer, objectId, values) => { +interface BACNETWPM { + property: BACNetPropertyID; + value: BACNetAppData[]; + priority: number; +} + +export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, values: BACNETWPM[]) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); baAsn1.encodeOpeningTag(buffer, 1); values.forEach((pValue) => { @@ -12,9 +19,7 @@ const encode = module.exports.encode = (buffer, objectId, values) => { baAsn1.encodeContextUnsigned(buffer, 1, pValue.property.index); } baAsn1.encodeOpeningTag(buffer, 2); - pValue.value.forEach((value) => { - baAsn1.bacappEncodeApplicationData(buffer, value); - }); + pValue.value.forEach((value) => baAsn1.bacappEncodeApplicationData(buffer, value)); baAsn1.encodeClosingTag(buffer, 2); if (pValue.priority !== baEnum.ASN1_NO_PRIORITY) { baAsn1.encodeContextUnsigned(buffer, 3, pValue.priority); @@ -23,10 +28,10 @@ const encode = module.exports.encode = (buffer, objectId, values) => { baAsn1.encodeClosingTag(buffer, 1); }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - let result; - let decodedValue; + let result: any; + let decodedValue: any; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if ((result.tagNumber !== 0) || (apduLen <= len)) return; @@ -42,7 +47,7 @@ module.exports.decode = (buffer, offset, apduLen) => { len++; const _values = []; while ((apduLen - len) > 1) { - const newEntry = {}; + const newEntry: any = {}; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; if (result.tagNumber !== 0) return; @@ -93,8 +98,6 @@ module.exports.decode = (buffer, offset, apduLen) => { }; }; -module.exports.encodeObject = (buffer, values) => { - values.forEach((object) => { - encode(buffer, object.objectId, object.values); - }); +export const encodeObject = (buffer: EncodeBuffer, values: any[]) => { + values.forEach((object) => encode(buffer, object.objectId, object.values)); }; From 2b4d15d366d28f5b61412f58f3779b70de610399 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:07 +0200 Subject: [PATCH 36/44] refactor(write-property): rework to TypeScript --- .../{write-property.js => write-property.ts} | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) rename lib/services/{write-property.js => write-property.ts} (82%) diff --git a/lib/services/write-property.js b/lib/services/write-property.ts similarity index 82% rename from lib/services/write-property.js rename to lib/services/write-property.ts index 5da9de55..88bef212 100644 --- a/lib/services/write-property.js +++ b/lib/services/write-property.ts @@ -1,31 +1,30 @@ 'use strict'; -const baAsn1 = require('../asn1'); -const baEnum = require('../enum'); +import * as baAsn1 from '../asn1'; +import * as baEnum from '../enum'; +import { EncodeBuffer, BACNetAppData } from '../types'; -module.exports.encode = (buffer, objectType, objectInstance, propertyId, arrayIndex, priority, values) => { +export const encode = (buffer: EncodeBuffer, objectType: number, objectInstance: number, propertyId: number, arrayIndex: number, priority: number, values: BACNetAppData[]) => { baAsn1.encodeContextObjectId(buffer, 0, objectType, objectInstance); baAsn1.encodeContextEnumerated(buffer, 1, propertyId); if (arrayIndex !== baEnum.ASN1_ARRAY_ALL) { baAsn1.encodeContextUnsigned(buffer, 2, arrayIndex); } baAsn1.encodeOpeningTag(buffer, 3); - values.forEach((value) => { - baAsn1.bacappEncodeApplicationData(buffer, value); - }); + values.forEach((value) => baAsn1.bacappEncodeApplicationData(buffer, value)); baAsn1.encodeClosingTag(buffer, 3); if (priority !== baEnum.ASN1_NO_PRIORITY) { baAsn1.encodeContextUnsigned(buffer, 4, priority); } }; -module.exports.decode = (buffer, offset, apduLen) => { +export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; - const value = { + const value: any = { property: {} }; - let decodedValue; - let result; + let decodedValue: any; + let result: any; if (!baAsn1.decodeIsContextTag(buffer, offset + len, 0)) return; len++; decodedValue = baAsn1.decodeObjectId(buffer, offset + len); From bf6c135fb0984e19bc6e9a4cf6a91c0706000904 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Fri, 2 Jul 2021 13:18:07 +0200 Subject: [PATCH 37/44] refactor(client): rework to TypeScript --- index.js => index.ts | 0 lib/{client.js => client.ts} | 217 ++++++++++++++++++----------------- lib/services/index.js | 31 ----- lib/services/index.ts | 31 +++++ 4 files changed, 140 insertions(+), 139 deletions(-) rename index.js => index.ts (100%) rename lib/{client.js => client.ts} (89%) delete mode 100644 lib/services/index.js create mode 100644 lib/services/index.ts diff --git a/index.js b/index.ts similarity index 100% rename from index.js rename to index.ts diff --git a/lib/client.js b/lib/client.ts similarity index 89% rename from lib/client.js rename to lib/client.ts index 58e6607f..dcebab28 100644 --- a/lib/client.js +++ b/lib/client.ts @@ -1,17 +1,18 @@ 'use strict'; // Util Modules -const EventEmitter = require('events').EventEmitter; +import { EventEmitter } from 'events'; const debug = require('debug')('bacstack'); // Local Modules -const baTransport = require('./transport'); -const baServices = require('./services'); -const baAsn1 = require('./asn1'); -const baApdu = require('./apdu'); -const baNpdu = require('./npdu'); -const baBvlc = require('./bvlc'); -const baEnum = require('./enum'); +import { Transport as baTransport } from './transport'; +import * as baServices from './services'; +import * as baAsn1 from './asn1'; +import * as baApdu from './apdu'; +import * as baNpdu from './npdu'; +import * as baBvlc from './bvlc'; +import * as baEnum from './enum'; +import { BACNetObjectID, BACNetPropertyID, BACNetAppData } from './types'; const DEFAULT_HOP_COUNT = 0xFF; const BVLC_HEADER_LENGTH = 4; @@ -34,17 +35,20 @@ const BVLC_HEADER_LENGTH = 4; * apduTimeout: 6000 // Wait twice as long for response * }); */ -class Client extends EventEmitter { - constructor(options) { - super(); +export class Client extends EventEmitter { + private _settings: any; + private _transport: baTransport; - options = options || {}; + private _invokeCounter = 1; + private _invokeStore: any = {}; - this._invokeCounter = 1; - this._invokeStore = {}; + private _lastSequenceNumber = 0; + private _segmentStore: any[] = []; - this._lastSequenceNumber = 0; - this._segmentStore = []; + constructor(options: any) { + super(); + + options = options || {}; this._settings = { port: options.port || 47808, @@ -67,31 +71,31 @@ class Client extends EventEmitter { } // Helper utils - _getInvokeId() { + private _getInvokeId() { const id = this._invokeCounter++; if (id >= 256) this._invokeCounter = 1; return id - 1; } - _invokeCallback(id, err, result) { + private _invokeCallback(id: number, err: Error, result?: any) { const callback = this._invokeStore[id]; if (callback) return callback(err, result); debug('InvokeId ', id, ' not found -> drop package'); } - _addCallback(id, callback) { + private _addCallback(id: number, callback: (err: Error, data?: any) => void) { const timeout = setTimeout(() => { delete this._invokeStore[id]; callback(new Error('ERR_TIMEOUT')); }, this._settings.apduTimeout); - this._invokeStore[id] = (err, data) => { + this._invokeStore[id] = (err: Error, data: any) => { clearTimeout(timeout); delete this._invokeStore[id]; callback(err, data); }; } - _getBuffer() { + private _getBuffer() { return { buffer: Buffer.alloc(this._transport.getMaxPayload()), offset: BVLC_HEADER_LENGTH @@ -99,17 +103,17 @@ class Client extends EventEmitter { } // Service Handlers - _processError(invokeId, buffer, offset, length) { - const result = baServices.error.decode(buffer, offset, length); + private _processError(invokeId: number, buffer: Buffer, offset: number, length: number) { + const result = baServices.error.decode(buffer, offset); if (!result) return debug('Couldn`t decode Error'); this._invokeCallback(invokeId, new Error('BacnetError - Class:' + result.class + ' - Code:' + result.code)); } - _processAbort(invokeId, reason) { + private _processAbort(invokeId: number, reason: number) { this._invokeCallback(invokeId, new Error('BacnetAbort - Reason:' + reason)); } - _segmentAckResponse(receiver, negative, server, originalInvokeId, sequencenumber, actualWindowSize) { + private _segmentAckResponse(receiver: string, negative: boolean, server: boolean, originalInvokeId: number, sequencenumber: number, actualWindowSize: number) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, receiver, null, DEFAULT_HOP_COUNT, baEnum.NetworkLayerMessageType.WHO_IS_ROUTER_TO_NETWORK, 0); baApdu.encodeSegmentAck(buffer, baEnum.PduTypes.SEGMENT_ACK | (negative ? baEnum.PduSegAckBits.NEGATIVE_ACK : 0) | (server ? baEnum.PduSegAckBits.SERVER : 0), originalInvokeId, sequencenumber, actualWindowSize); @@ -117,7 +121,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, receiver); } - _performDefaultSegmentHandling(sender, adr, type, service, invokeId, maxSegments, maxApdu, sequencenumber, first, moreFollows, buffer, offset, length) { + private _performDefaultSegmentHandling(sender: any, adr: string, type: number, service: number, invokeId: number, maxSegments: number, maxApdu: number, sequencenumber: number, first: boolean, moreFollows: number, buffer: Buffer, offset: number, length: number) { if (first) { this._segmentStore = []; type &= ~baEnum.PduConReqBits.SEGMENTED_MESSAGE; @@ -145,7 +149,7 @@ class Client extends EventEmitter { } } - _processSegment(receiver, type, service, invokeId, maxSegments, maxApdu, server, sequencenumber, proposedWindowNumber, buffer, offset, length) { + private _processSegment(receiver: string, type: number, service: number, invokeId: number, maxSegments: number, maxApdu: number, server: boolean, sequencenumber: number, proposedWindowNumber: number, buffer: Buffer, offset: number, length: number) { let first = false; if (sequencenumber === 0 && this._lastSequenceNumber === 0) { first = true; @@ -165,97 +169,96 @@ class Client extends EventEmitter { this._performDefaultSegmentHandling(this, receiver, type, service, invokeId, maxSegments, maxApdu, sequencenumber, first, moreFollows, buffer, offset, length); } - _processConfirmedServiceRequest(address, type, service, maxSegments, maxApdu, invokeId, buffer, offset, length) { - let result; + private _processConfirmedServiceRequest(address: string, type: number, service: number, maxSegments: number, maxApdu: number, invokeId: number, buffer: Buffer, offset: number, length: number) { debug('Handle this._processConfirmedServiceRequest'); if (service === baEnum.ConfirmedServiceChoice.READ_PROPERTY) { - result = baServices.readProperty.decode(buffer, offset, length); + const result = baServices.readProperty.decode(buffer, offset, length); if (!result) return debug('Received invalid readProperty message'); this.emit('readProperty', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.WRITE_PROPERTY) { - result = baServices.writeProperty.decode(buffer, offset, length); + const result = baServices.writeProperty.decode(buffer, offset, length); if (!result) return debug('Received invalid writeProperty message'); this.emit('writeProperty', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.READ_PROPERTY_MULTIPLE) { - result = baServices.readPropertyMultiple.decode(buffer, offset, length); + const result = baServices.readPropertyMultiple.decode(buffer, offset, length); if (!result) return debug('Received invalid readPropertyMultiple message'); this.emit('readPropertyMultiple', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.WRITE_PROPERTY_MULTIPLE) { - result = baServices.writePropertyMultiple.decode(buffer, offset, length); + const result = baServices.writePropertyMultiple.decode(buffer, offset, length); if (!result) return debug('Received invalid writePropertyMultiple message'); this.emit('writePropertyMultiple', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.CONFIRMED_COV_NOTIFICATION) { - result = baServices.covNotify.decode(buffer, offset, length); + const result = baServices.covNotify.decode(buffer, offset, length); if (!result) return debug('Received invalid covNotify message'); this.emit('covNotify', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.ATOMIC_WRITE_FILE) { - result = baServices.atomicWriteFile.decode(buffer, offset, length); + const result = baServices.atomicWriteFile.decode(buffer, offset, length); if (!result) return debug('Received invalid atomicWriteFile message'); this.emit('atomicWriteFile', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.ATOMIC_READ_FILE) { - result = baServices.atomicReadFile.decode(buffer, offset, length); + const result = baServices.atomicReadFile.decode(buffer, offset); if (!result) return debug('Received invalid atomicReadFile message'); this.emit('atomicReadFile', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.SUBSCRIBE_COV) { - result = baServices.subscribeCov.decode(buffer, offset, length); + const result = baServices.subscribeCov.decode(buffer, offset, length); if (!result) return debug('Received invalid subscribeCOV message'); this.emit('subscribeCOV', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.SUBSCRIBE_COV_PROPERTY) { - result = baServices.subscribeProperty.decode(buffer, offset, length); + const result = baServices.subscribeProperty.decode(buffer, offset); if (!result) return debug('Received invalid subscribeProperty message'); this.emit('subscribeProperty', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.DEVICE_COMMUNICATION_CONTROL) { - result = baServices.deviceCommunicationControl.decode(buffer, offset, length); + const result = baServices.deviceCommunicationControl.decode(buffer, offset, length); if (!result) return debug('Received invalid deviceCommunicationControl message'); this.emit('deviceCommunicationControl', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.REINITIALIZE_DEVICE) { - result = baServices.reinitializeDevice.decode(buffer, offset, length); + const result = baServices.reinitializeDevice.decode(buffer, offset, length); if (!result) return debug('Received invalid reinitializeDevice message'); this.emit('reinitializeDevice', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.CONFIRMED_EVENT_NOTIFICATION) { - result = baServices.eventNotifyData.decode(buffer, offset, length); + const result = baServices.eventNotifyData.decode(buffer, offset); if (!result) return debug('Received invalid eventNotifyData message'); this.emit('eventNotifyData', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.READ_RANGE) { - result = baServices.readRange.decode(buffer, offset, length); + const result = baServices.readRange.decode(buffer, offset, length); if (!result) return debug('Received invalid readRange message'); this.emit('readRange', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.CREATE_OBJECT) { - result = baServices.createObject.decode(buffer, offset, length); + const result = baServices.createObject.decode(buffer, offset, length); if (!result) return debug('Received invalid createObject message'); this.emit('createObject', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.DELETE_OBJECT) { - result = baServices.deleteObject.decode(buffer, offset, length); + const result = baServices.deleteObject.decode(buffer, offset, length); if (!result) return debug('Received invalid deleteObject message'); this.emit('deleteObject', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.ACKNOWLEDGE_ALARM) { - result = baServices.alarmAcknowledge.decode(buffer, offset, length); + const result = baServices.alarmAcknowledge.decode(buffer, offset, length); if (!result) return debug('Received invalid alarmAcknowledge message'); this.emit('alarmAcknowledge', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.GET_ALARM_SUMMARY) { this.emit('getAlarmSummary', {address: address, invokeId: invokeId}); } else if (service === baEnum.ConfirmedServiceChoice.GET_ENROLLMENT_SUMMARY) { - result = baServices.getEnrollmentSummary.decode(buffer, offset, length); + const result = baServices.getEnrollmentSummary.decode(buffer, offset, length); if (!result) return debug('Received invalid getEntrollmentSummary message'); this.emit('getEntrollmentSummary', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.GET_EVENT_INFORMATION) { - result = baServices.getEventInformation.decode(buffer, offset, length); + const result = baServices.getEventInformation.decode(buffer, offset); if (!result) return debug('Received invalid getEventInformation message'); this.emit('getEventInformation', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.LIFE_SAFETY_OPERATION) { - result = baServices.lifeSafetyOperation.decode(buffer, offset, length); + const result = baServices.lifeSafetyOperation.decode(buffer, offset, length); if (!result) return debug('Received invalid lifeSafetyOperation message'); this.emit('lifeSafetyOperation', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.ADD_LIST_ELEMENT) { - result = baServices.addListElement.decode(buffer, offset, length); + const result = baServices.addListElement.decode(buffer, offset, length); if (!result) return debug('Received invalid addListElement message'); this.emit('addListElement', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.REMOVE_LIST_ELEMENT) { - result = baServices.addListElement.decode(buffer, offset, length); + const result = baServices.addListElement.decode(buffer, offset, length); if (!result) return debug('Received invalid removeListElement message'); this.emit('removeListElement', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.CONFIRMED_PRIVATE_TRANSFER) { - result = baServices.privateTransfer.decode(buffer, offset, length); + const result = baServices.privateTransfer.decode(buffer, offset, length); if (!result) return debug('Received invalid privateTransfer message'); this.emit('privateTransfer', {address: address, invokeId: invokeId, request: result}); } else { @@ -263,11 +266,10 @@ class Client extends EventEmitter { } } - _processUnconfirmedServiceRequest(address, type, service, buffer, offset, length) { - let result; + private _processUnconfirmedServiceRequest(address: string, type: number, service: number, buffer: Buffer, offset: number, length: number) { debug('Handle this._processUnconfirmedServiceRequest'); if (service === baEnum.UnconfirmedServiceChoice.I_AM) { - result = baServices.iAmBroadcast.decode(buffer, offset); + const result = baServices.iAmBroadcast.decode(buffer, offset); if (!result) return debug('Received invalid iAm message'); /** @@ -289,7 +291,7 @@ class Client extends EventEmitter { */ this.emit('iAm', {address: address, deviceId: result.deviceId, maxApdu: result.maxApdu, segmentation: result.segmentation, vendorId: result.vendorId}); } else if (service === baEnum.UnconfirmedServiceChoice.WHO_IS) { - result = baServices.whoIs.decode(buffer, offset, length); + const result = baServices.whoIs.decode(buffer, offset, length); if (!result) return debug('Received invalid WhoIs message'); /** @@ -309,15 +311,15 @@ class Client extends EventEmitter { */ this.emit('whoIs', {address: address, lowLimit: result.lowLimit, highLimit: result.highLimit}); } else if (service === baEnum.UnconfirmedServiceChoice.WHO_HAS) { - result = baServices.whoHas.decode(buffer, offset, length); + const result = baServices.whoHas.decode(buffer, offset, length); if (!result) return debug('Received invalid WhoHas message'); this.emit('whoHas', {address: address, lowLimit: result.lowLimit, highLimit: result.highLimit, objectId: result.objectId, objectName: result.objectName}); } else if (service === baEnum.UnconfirmedServiceChoice.UNCONFIRMED_COV_NOTIFICATION) { - result = baServices.covNotify.decode(buffer, offset, length); + const result = baServices.covNotify.decode(buffer, offset, length); if (!result) return debug('Received invalid covNotifyUnconfirmed message'); this.emit('covNotifyUnconfirmed', {address: address, request: result}); } else if (service === baEnum.UnconfirmedServiceChoice.TIME_SYNCHRONIZATION) { - result = baServices.timeSync.decode(buffer, offset, length); + const result = baServices.timeSync.decode(buffer, offset, length); if (!result) return debug('Received invalid TimeSync message'); /** @@ -331,12 +333,12 @@ class Client extends EventEmitter { * const client = new bacnet(); * * client.on('timeSync', (request) => { - * console.log('address: ', device.address, ' - dateTime: ', device.dateTime); + * console.log('address: ', request.address, ' - dateTime: ', request.dateTime); * }); */ - this.emit('timeSync', {address: address, dateTime: result.dateTime}); + this.emit('timeSync', {address: address, dateTime: result.value}); } else if (service === baEnum.UnconfirmedServiceChoice.UTC_TIME_SYNCHRONIZATION) { - result = baServices.timeSync.decode(buffer, offset, length); + const result = baServices.timeSync.decode(buffer, offset, length); if (!result) return debug('Received invalid TimeSyncUTC message'); /** @@ -350,20 +352,20 @@ class Client extends EventEmitter { * const client = new bacnet(); * * client.on('timeSyncUTC', (request) => { - * console.log('address: ', device.address, ' - dateTime: ', device.dateTime); + * console.log('address: ', request.address, ' - dateTime: ', request.dateTime); * }); */ - this.emit('timeSyncUTC', {address: address, dateTime: result.dateTime}); + this.emit('timeSyncUTC', {address: address, dateTime: result.value}); } else if (service === baEnum.UnconfirmedServiceChoice.UNCONFIRMED_EVENT_NOTIFICATION) { - result = baServices.eventNotifyData.decode(buffer, offset, length); + const result = baServices.eventNotifyData.decode(buffer, offset); if (!result) return debug('Received invalid EventNotify message'); this.emit('eventNotify', {address: address, eventData: result.eventData}); } else if (service === baEnum.UnconfirmedServiceChoice.I_HAVE) { - result = baServices.iHaveBroadcast.decode(buffer, offset, length); + const result = baServices.iHaveBroadcast.decode(buffer, offset, length); if (!result) return debug('Received invalid ihaveBroadcast message'); this.emit('ihaveBroadcast', {address: address, eventData: result.eventData}); } else if (service === baEnum.UnconfirmedServiceChoice.UNCONFIRMED_PRIVATE_TRANSFER) { - result = baServices.privateTransfer.decode(buffer, offset, length); + const result = baServices.privateTransfer.decode(buffer, offset, length); if (!result) return debug('Received invalid privateTransfer message'); this.emit('privateTransfer', {address: address, eventData: result.eventData}); } else { @@ -371,7 +373,7 @@ class Client extends EventEmitter { } } - _handlePdu(address, type, buffer, offset, length) { + private _handlePdu(address: string, type: number, buffer: Buffer, offset: number, length: number) { let result; // Handle different PDU types switch (type & baEnum.PDU_TYPE_MASK) { @@ -421,7 +423,7 @@ class Client extends EventEmitter { } } - _handleNpdu(buffer, offset, msgLength, remoteAddress) { + private _handleNpdu(buffer: Buffer, offset: number, msgLength: number, remoteAddress: string) { // Check data length if (msgLength <= 0) return debug('No NPDU data -> Drop package'); // Parse baNpdu header @@ -437,9 +439,9 @@ class Client extends EventEmitter { this._handlePdu(remoteAddress, apduType, buffer, offset, msgLength); } - _receiveData(buffer, remoteAddress) { + private _receiveData(buffer: Buffer, remoteAddress: string) { // Check data length - if (buffer.length < baBvlc.BVLC_HEADER_LENGTH) return debug('Received invalid data -> Drop package'); + if (buffer.length < baEnum.BVLC_HEADER_LENGTH) return debug('Received invalid data -> Drop package'); // Parse BVLC header const result = baBvlc.decode(buffer, 0); if (!result) return debug('Received invalid BVLC header -> Drop package'); @@ -451,7 +453,7 @@ class Client extends EventEmitter { } } - _receiveError(err) { + private _receiveError(err: Error) { /** * @event bacstack.error * @param {error} err - The error object thrown by the underlying transport layer. @@ -481,7 +483,7 @@ class Client extends EventEmitter { * * client.whoIs(); */ - whoIs(options) { + whoIs(options?: {lowLimit?: number, highLimit?: number, address?: string}) { options = options || {}; const settings = { lowLimit: options.lowLimit, @@ -508,7 +510,7 @@ class Client extends EventEmitter { * * client.timeSync('192.168.1.43', new Date()); */ - timeSync(address, dateTime) { + timeSync(address: string, dateTime: Date) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, address); baApdu.encodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.TIME_SYNCHRONIZATION); @@ -529,7 +531,7 @@ class Client extends EventEmitter { * * client.timeSyncUTC('192.168.1.43', new Date()); */ - timeSyncUTC(address, dateTime) { + timeSyncUTC(address: string, dateTime: Date) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, address); baApdu.encodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.UTC_TIME_SYNCHRONIZATION); @@ -561,7 +563,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - readProperty(address, objectId, propertyId, options, next) { + readProperty(address: string, objectId: BACNetObjectID, propertyId: number, options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -612,7 +614,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - writeProperty(address, objectId, propertyId, values, options, next) { + writeProperty(address: string, objectId: BACNetObjectID, propertyId: number, values: BACNetAppData[], options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -656,7 +658,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - readPropertyMultiple(address, propertiesArray, options, next) { + readPropertyMultiple(address: string, propertiesArray: any[], options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -712,7 +714,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - writePropertyMultiple(address, values, options, next) { + writePropertyMultiple(address: string, values: any[], options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -748,7 +750,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - deviceCommunicationControl(address, timeDuration, enableDisable, options, next) { + deviceCommunicationControl(address: string, timeDuration: number, enableDisable: number, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -784,7 +786,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - reinitializeDevice(address, state, options, next) { + reinitializeDevice(address: string, state: number, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -823,7 +825,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - writeFile(address, objectId, position, fileBuffer, options, next) { + writeFile(address: string, objectId: BACNetObjectID, position: number, fileBuffer: number[][], options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -838,7 +840,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, address); this._addCallback(settings.invokeId, (err, data) => { if (err) return next(err); - const result = baServices.atomicWriteFile.decodeAcknowledge(data.buffer, data.offset, data.length); + const result = baServices.atomicWriteFile.decodeAcknowledge(data.buffer, data.offset); if (!result) return next(new Error('INVALID_DECODING')); next(null, result); }); @@ -866,7 +868,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - readFile(address, objectId, position, count, options, next) { + readFile(address: string, objectId: BACNetObjectID, position: number, count: number, options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -881,7 +883,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, address); this._addCallback(settings.invokeId, (err, data) => { if (err) return next(err); - const result = baServices.atomicReadFile.decodeAcknowledge(data.buffer, data.offset, data.length); + const result = baServices.atomicReadFile.decodeAcknowledge(data.buffer, data.offset); if (!result) return next(new Error('INVALID_DECODING')); next(null, result); }); @@ -909,7 +911,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - readRange(address, objectId, idxBegin, quantity, options, next) { + readRange(address: string, objectId: BACNetObjectID, idxBegin: number, quantity: number, options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -954,7 +956,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - subscribeCOV(address, objectId, subscribeId, cancel, issueConfirmedNotifications, lifetime, options, next) { + subscribeCOV(address: string, objectId: BACNetObjectID, subscribeId: number, cancel: boolean, issueConfirmedNotifications: boolean, lifetime: number, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -996,7 +998,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - subscribeProperty(address, objectId, monitoredProperty, subscribeId, cancel, issueConfirmedNotifications, options, next) { + subscribeProperty(address: string, objectId: BACNetObjectID, monitoredProperty: BACNetPropertyID, subscribeId: number, cancel: boolean, issueConfirmedNotifications: boolean, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1012,7 +1014,7 @@ class Client extends EventEmitter { this._addCallback(settings.invokeId, (err) => next(err)); } - createObject(address, objectId, values, options, next) { + createObject(address: string, objectId: BACNetObjectID, values: any, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1048,7 +1050,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - deleteObject(address, objectId, options, next) { + deleteObject(address: string, objectId: BACNetObjectID, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1064,7 +1066,7 @@ class Client extends EventEmitter { this._addCallback(settings.invokeId, (err) => next(err)); } - removeListElement(address, objectId, reference, values, options, next) { + removeListElement(address: string, objectId: BACNetObjectID, reference: BACNetPropertyID, values: any, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1080,7 +1082,7 @@ class Client extends EventEmitter { this._addCallback(settings.invokeId, (err) => next(err)); } - addListElement(address, objectId, reference, values, options, next) { + addListElement(address: string, objectId: BACNetObjectID, reference: BACNetPropertyID, values: any, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1113,7 +1115,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - getAlarmSummary(address, options, next) { + getAlarmSummary(address: string, options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1153,7 +1155,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - getEventInformation(address, objectId, options, next) { + getEventInformation(address: string, objectId: BACNetObjectID, options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1174,7 +1176,7 @@ class Client extends EventEmitter { }); } - acknowledgeAlarm(address, objectId, eventState, ackText, evTimeStamp, ackTimeStamp, options, next) { + acknowledgeAlarm(address: string, objectId: BACNetObjectID, eventState: number, ackText: string, evTimeStamp: any, ackTimeStamp: any, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1210,7 +1212,7 @@ class Client extends EventEmitter { * console.log('error: ', err); * }); */ - confirmedPrivateTransfer(address, vendorId, serviceNumber, data, options, next) { + confirmedPrivateTransfer(address: string, vendorId: number, serviceNumber: number, data: number[], options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1239,7 +1241,7 @@ class Client extends EventEmitter { * * client.unconfirmedPrivateTransfer('192.168.1.43', 0, 7, [0x00, 0xaa, 0xfa, 0xb1, 0x00]); */ - unconfirmedPrivateTransfer(address, vendorId, serviceNumber, data) { + unconfirmedPrivateTransfer(address: string, vendorId: number, serviceNumber: number, data: number[]) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, address); baApdu.encodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.UNCONFIRMED_PRIVATE_TRANSFER); @@ -1273,7 +1275,7 @@ class Client extends EventEmitter { * console.log('value: ', value); * }); */ - getEnrollmentSummary(address, acknowledgmentFilter, options, next) { + getEnrollmentSummary(address: string, acknowledgmentFilter: number, options: any, next: (err?: Error, result?: any) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1294,7 +1296,7 @@ class Client extends EventEmitter { }); } - unconfirmedEventNotification(address, eventNotification) { + unconfirmedEventNotification(address: string, eventNotification: any) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, address); baApdu.encodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.UNCONFIRMED_EVENT_NOTIFICATION); @@ -1303,7 +1305,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, address); } - confirmedEventNotification(address, eventNotification, options, next) { + confirmedEventNotification(address: string, eventNotification: any, options: any, next: (err?: Error) => void) { next = next || options; const settings = { maxSegments: options.maxSegments || baEnum.MaxSegmentsAccepted.SEGMENTS_65, @@ -1320,7 +1322,7 @@ class Client extends EventEmitter { } // Public Device Functions - readPropertyResponse(receiver, invokeId, objectId, property, value) { + readPropertyResponse(receiver: string, invokeId: number, objectId: BACNetObjectID, property: BACNetPropertyID, value: any[]) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, receiver); baApdu.encodeComplexAck(buffer, baEnum.PduTypes.COMPLEX_ACK, baEnum.ConfirmedServiceChoice.READ_PROPERTY, invokeId); @@ -1329,7 +1331,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, receiver); } - readPropertyMultipleResponse(receiver, invokeId, values) { + readPropertyMultipleResponse(receiver: string, invokeId: number, values: any[]) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, receiver); baApdu.encodeComplexAck(buffer, baEnum.PduTypes.COMPLEX_ACK, baEnum.ConfirmedServiceChoice.READ_PROPERTY_MULTIPLE, invokeId); @@ -1338,7 +1340,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, receiver); } - iAmResponse(deviceId, segmentation, vendorId) { + iAmResponse(deviceId: number, segmentation: number, vendorId: number) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, this._transport.getBroadcastAddress()); baApdu.encodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.I_AM); @@ -1347,16 +1349,16 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, this._transport.getBroadcastAddress()); } - iHaveResponse(deviceId, objectId, objectName) { + iHaveResponse(deviceId: BACNetObjectID, objectId: BACNetObjectID, objectName: string) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, this._transport.getBroadcastAddress()); - baApdu.EecodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.I_HAVE); - baServices.EncodeIhaveBroadcast(buffer, deviceId, objectId, objectName); + baApdu.encodeUnconfirmedServiceRequest(buffer, baEnum.PduTypes.UNCONFIRMED_REQUEST, baEnum.UnconfirmedServiceChoice.I_HAVE); + baServices.iHaveBroadcast.encode(buffer, deviceId, objectId, objectName); baBvlc.encode(buffer.buffer, baEnum.BvlcResultPurpose.ORIGINAL_BROADCAST_NPDU, buffer.offset); this._transport.send(buffer.buffer, buffer.offset, this._transport.getBroadcastAddress()); } - simpleAckResponse(receiver, service, invokeId) { + simpleAckResponse(receiver: string, service: number, invokeId: number) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, receiver); baApdu.encodeSimpleAck(buffer, baEnum.PduTypes.SIMPLE_ACK, service, invokeId); @@ -1364,7 +1366,7 @@ class Client extends EventEmitter { this._transport.send(buffer.buffer, buffer.offset, receiver); } - errorResponse(receiver, service, invokeId, errorClass, errorCode) { + errorResponse(receiver: string, service: number, invokeId: number, errorClass: number, errorCode: number) { const buffer = this._getBuffer(); baNpdu.encode(buffer, baEnum.NpduControlPriority.NORMAL_MESSAGE, receiver); baApdu.encodeError(buffer, baEnum.PduTypes.ERROR, service, invokeId); @@ -1386,4 +1388,3 @@ class Client extends EventEmitter { this._transport.close(); } } -module.exports = Client; diff --git a/lib/services/index.js b/lib/services/index.js deleted file mode 100644 index a8cbb9cf..00000000 --- a/lib/services/index.js +++ /dev/null @@ -1,31 +0,0 @@ -'use strict'; - -module.exports.addListElement = require('./add-list-element'); -module.exports.alarmAcknowledge = require('./alarm-acknowledge'); -module.exports.alarmSummary = require('./alarm-summary'); -module.exports.atomicReadFile = require('./atomic-read-file'); -module.exports.atomicWriteFile = require('./atomic-write-file'); -module.exports.covNotify = require('./cov-notify'); -module.exports.createObject = require('./create-object'); -module.exports.deleteObject = require('./delete-object'); -module.exports.deviceCommunicationControl = require('./device-communication-control'); -module.exports.error = require('./error'); -module.exports.eventInformation = require('./event-information'); -module.exports.eventNotifyData = require('./event-notify-data'); -module.exports.getEnrollmentSummary = require('./get-enrollment-summary'); -module.exports.getEventInformation = require('./get-event-information'); -module.exports.iAmBroadcast = require('./i-am-broadcast'); -module.exports.iHaveBroadcast = require('./i-have-broadcast'); -module.exports.lifeSafetyOperation = require('./life-safety-operation'); -module.exports.privateTransfer = require('./private-transfer'); -module.exports.readPropertyMultiple = require('./read-property-multiple'); -module.exports.readProperty = require('./read-property'); -module.exports.readRange = require('./read-range'); -module.exports.reinitializeDevice = require('./reinitialize-device'); -module.exports.subscribeCov = require('./subscribe-cov'); -module.exports.subscribeProperty = require('./subscribe-property'); -module.exports.timeSync = require('./time-sync'); -module.exports.whoHas = require('./who-has'); -module.exports.whoIs = require('./who-is'); -module.exports.writePropertyMultiple = require('./write-property-multiple'); -module.exports.writeProperty = require('./write-property'); diff --git a/lib/services/index.ts b/lib/services/index.ts new file mode 100644 index 00000000..b6a83cd3 --- /dev/null +++ b/lib/services/index.ts @@ -0,0 +1,31 @@ +'use strict'; + +export * as addListElement from './add-list-element'; +export * as alarmAcknowledge from './alarm-acknowledge'; +export * as alarmSummary from './alarm-summary'; +export * as atomicReadFile from './atomic-read-file'; +export * as atomicWriteFile from './atomic-write-file'; +export * as covNotify from './cov-notify'; +export * as createObject from './create-object'; +export * as deleteObject from './delete-object'; +export * as deviceCommunicationControl from './device-communication-control'; +export * as error from './error'; +export * as eventInformation from './event-information'; +export * as eventNotifyData from './event-notify-data'; +export * as getEnrollmentSummary from './get-enrollment-summary'; +export * as getEventInformation from './get-event-information'; +export * as iAmBroadcast from './i-am-broadcast'; +export * as iHaveBroadcast from './i-have-broadcast'; +export * as lifeSafetyOperation from './life-safety-operation'; +export * as privateTransfer from './private-transfer'; +export * as readPropertyMultiple from './read-property-multiple'; +export * as readProperty from './read-property'; +export * as readRange from './read-range'; +export * as reinitializeDevice from './reinitialize-device'; +export * as subscribeCov from './subscribe-cov'; +export * as subscribeProperty from './subscribe-property'; +export * as timeSync from './time-sync'; +export * as whoHas from './who-has'; +export * as whoIs from './who-is'; +export * as writePropertyMultiple from './write-property-multiple'; +export * as writeProperty from './write-property'; From 65c733f3a28ead364c5f8cab44aaf20b0418caf9 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 13:39:53 +0200 Subject: [PATCH 38/44] refactor(test-compliance): rework to TypeScript --- package.json | 2 +- test/compliance/{who-is.spec.js => who-is.spec.ts} | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) rename test/compliance/{who-is.spec.js => who-is.spec.ts} (67%) diff --git a/package.json b/package.json index d1a1bac3..6a51bd4c 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "lint": "eslint lib/ test/ index.js", "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.js", "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.js", - "compliance": "jest --coverageDirectory reports/coverage-compliance test/compliance/*.spec.js", + "compliance": "jest --coverageDirectory reports/coverage-compliance test/compliance/*.spec.ts", "docs": "jsdoc -d ./docs -t node_modules/docdash ./lib ./index.js ./README.md" }, "repository": { diff --git a/test/compliance/who-is.spec.js b/test/compliance/who-is.spec.ts similarity index 67% rename from test/compliance/who-is.spec.js rename to test/compliance/who-is.spec.ts index 5ca95331..0e35ab56 100644 --- a/test/compliance/who-is.spec.js +++ b/test/compliance/who-is.spec.ts @@ -1,18 +1,19 @@ 'use strict'; -const bacnet = require('../../'); +import { Client } from '../../lib/client'; +import * as baEnum from '../../lib/enum'; describe('bacstack - whoIs compliance', () => { - let client; + let client: Client; - beforeEach(() => client = new bacnet({apduTimeout: 1000})); + beforeEach(() => client = new Client({apduTimeout: 1000})); afterEach(() => client.close()); it('should find the device simulator', (next) => { client.on('iAm', (device) => { expect(device.deviceId).toEqual(1234); expect(device.maxApdu).toEqual(1476); - expect(device.segmentation).toEqual(bacnet.enum.Segmentation.NO_SEGMENTATION); + expect(device.segmentation).toEqual(baEnum.Segmentation.NO_SEGMENTATION); expect(device.vendorId).toEqual(260); next(); }); @@ -24,7 +25,7 @@ describe('bacstack - whoIs compliance', () => { expect(device.deviceId).toEqual(1234); next(); }); - client.whoIs(1233); + client.whoIs({lowLimit: 1233}); }); it('should find the device simulator with provided min/max device ID and IP', (next) => { @@ -32,6 +33,6 @@ describe('bacstack - whoIs compliance', () => { expect(device.deviceId).toEqual(1234); next(); }); - client.whoIs(1233, 1235, 'bacnet-device'); + client.whoIs({lowLimit: 1233,highLimit: 1235, address: 'bacnet-device'}); }); }); From 6d2bd3fd6dec41329600b251b2867a4e41d77b69 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 13:41:02 +0200 Subject: [PATCH 39/44] refactor(test-unit): rework to TypeScript --- package.json | 2 +- test/unit/{apdu.spec.js => apdu.spec.ts} | 10 +++++----- test/unit/{asn1.spec.js => asn1.spec.ts} | 2 +- test/unit/{bvlc.spec.js => bvlc.spec.ts} | 4 ++-- test/unit/{npdu.spec.js => npdu.spec.ts} | 2 +- ...lement.spec.js => service-add-list-element.spec.ts} | 4 ++-- ...ledge.spec.js => service-alarm-acknowledge.spec.ts} | 6 +++--- ...m-summary.spec.js => service-alarm-summary.spec.ts} | 4 ++-- ...d-file.spec.js => service-atomic-read-file.spec.ts} | 6 +++--- ...-file.spec.js => service-atomic-write-file.spec.ts} | 4 ++-- ...e-cov-notify.spec.js => service-cov-notify.spec.ts} | 4 ++-- ...te-object.spec.js => service-create-object.spec.ts} | 4 ++-- ...te-object.spec.js => service-delete-object.spec.ts} | 4 ++-- ...js => service-device-communication-control.spec.ts} | 4 ++-- .../{service-error.spec.js => service-error.spec.ts} | 4 ++-- ...ation.spec.js => service-event-information.spec.ts} | 4 ++-- ...-data.spec.js => service-event-notify-data.spec.ts} | 6 +++--- ....spec.js => service-get-enrollment-summary.spec.ts} | 4 ++-- ...n.spec.js => service-get-event-information.spec.ts} | 6 +++--- .../{service-i-am.spec.js => service-i-am.spec.ts} | 4 ++-- ...adcast.spec.js => service-i-have-broadcast.spec.ts} | 4 ++-- ...n.spec.js => service-life-safety-operation.spec.ts} | 4 ++-- ...ansfer.spec.js => service-private-transfer.spec.ts} | 4 ++-- ....spec.js => service-read-property-multiple.spec.ts} | 4 ++-- ...-property.spec.js => service-read-property.spec.ts} | 6 +++--- ...e-read-range.spec.js => service-read-range.spec.ts} | 6 +++--- ...ice.spec.js => service-reinitialize-device.spec.ts} | 4 ++-- ...cribe-cov.spec.js => service-subscribe-cov.spec.ts} | 4 ++-- ...erty.spec.js => service-subscribe-property.spec.ts} | 4 ++-- ...ice-time-sync.spec.js => service-time-sync.spec.ts} | 4 ++-- ...service-who-has.spec.js => service-who-has.spec.ts} | 6 +++--- .../{service-who-is.spec.js => service-who-is.spec.ts} | 4 ++-- ...spec.js => service-write-property-multiple.spec.ts} | 4 ++-- ...property.spec.js => service-write-property.spec.ts} | 4 ++-- test/unit/utils.js | 8 -------- test/unit/utils.ts | 6 ++++++ 36 files changed, 81 insertions(+), 83 deletions(-) rename test/unit/{apdu.spec.js => apdu.spec.ts} (95%) rename test/unit/{asn1.spec.js => asn1.spec.ts} (97%) rename test/unit/{bvlc.spec.js => bvlc.spec.ts} (95%) rename test/unit/{npdu.spec.js => npdu.spec.ts} (99%) rename test/unit/{service-add-list-element.spec.js => service-add-list-element.spec.ts} (88%) rename test/unit/{service-alarm-acknowledge.spec.js => service-alarm-acknowledge.spec.ts} (95%) rename test/unit/{service-alarm-summary.spec.js => service-alarm-summary.spec.ts} (91%) rename test/unit/{service-atomic-read-file.spec.js => service-atomic-read-file.spec.ts} (93%) rename test/unit/{service-atomic-write-file.spec.js => service-atomic-write-file.spec.ts} (95%) rename test/unit/{service-cov-notify.spec.js => service-cov-notify.spec.ts} (97%) rename test/unit/{service-create-object.spec.js => service-create-object.spec.ts} (97%) rename test/unit/{service-delete-object.spec.js => service-delete-object.spec.ts} (83%) rename test/unit/{service-device-communication-control.spec.js => service-device-communication-control.spec.ts} (91%) rename test/unit/{service-error.spec.js => service-error.spec.ts} (81%) rename test/unit/{service-event-information.spec.js => service-event-information.spec.ts} (94%) rename test/unit/{service-event-notify-data.spec.js => service-event-notify-data.spec.ts} (98%) rename test/unit/{service-get-enrollment-summary.spec.js => service-get-enrollment-summary.spec.ts} (95%) rename test/unit/{service-get-event-information.spec.js => service-get-event-information.spec.ts} (94%) rename test/unit/{service-i-am.spec.js => service-i-am.spec.ts} (83%) rename test/unit/{service-i-have-broadcast.spec.js => service-i-have-broadcast.spec.ts} (86%) rename test/unit/{service-life-safety-operation.spec.js => service-life-safety-operation.spec.ts} (86%) rename test/unit/{service-private-transfer.spec.js => service-private-transfer.spec.ts} (85%) rename test/unit/{service-read-property-multiple.spec.js => service-read-property-multiple.spec.ts} (98%) rename test/unit/{service-read-property.spec.js => service-read-property.spec.ts} (99%) rename test/unit/{service-read-range.spec.js => service-read-range.spec.ts} (96%) rename test/unit/{service-reinitialize-device.spec.js => service-reinitialize-device.spec.ts} (90%) rename test/unit/{service-subscribe-cov.spec.js => service-subscribe-cov.spec.ts} (92%) rename test/unit/{service-subscribe-property.spec.js => service-subscribe-property.spec.ts} (94%) rename test/unit/{service-time-sync.spec.js => service-time-sync.spec.ts} (84%) rename test/unit/{service-who-has.spec.js => service-who-has.spec.ts} (83%) rename test/unit/{service-who-is.spec.js => service-who-is.spec.ts} (82%) rename test/unit/{service-write-property-multiple.spec.js => service-write-property-multiple.spec.ts} (98%) rename test/unit/{service-write-property.spec.js => service-write-property.spec.ts} (98%) delete mode 100644 test/unit/utils.js create mode 100644 test/unit/utils.ts diff --git a/package.json b/package.json index 6a51bd4c..f9f46a93 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "changelog": "commitlint --from=origin/master", "build": "tsc", "lint": "eslint lib/ test/ index.js", - "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.js", + "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.ts", "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.js", "compliance": "jest --coverageDirectory reports/coverage-compliance test/compliance/*.spec.ts", "docs": "jsdoc -d ./docs -t node_modules/docdash ./lib ./index.js ./README.md" diff --git a/test/unit/apdu.spec.js b/test/unit/apdu.spec.ts similarity index 95% rename from test/unit/apdu.spec.js rename to test/unit/apdu.spec.ts index 3bdb1b32..a229781b 100644 --- a/test/unit/apdu.spec.js +++ b/test/unit/apdu.spec.ts @@ -1,26 +1,26 @@ 'use strict'; -const utils = require('./utils'); -const baApdu = require('../../lib/apdu'); +import * as utils from './utils'; +import * as baApdu from '../../lib/apdu'; describe('bacstack - APDU layer', () => { describe('decodedType', () => { it('should correctly encode and decode a package', () => { - const value = [0, 128, 4, 5]; + const value = Buffer.from([0, 128, 4, 5]); baApdu.setDecodedType(value, 1, 48); const result = baApdu.getDecodedInvokeId(value, 1); expect(result).toEqual(4); }); it('should correctly encode and decode a confirmed service package', () => { - const value = [0, 128, 4, 5]; + const value = Buffer.from([0, 128, 4, 5]); baApdu.setDecodedType(value, 1, 0); const result = baApdu.getDecodedInvokeId(value, 1); expect(result).toEqual(5); }); it('should fail if decode an invalid package', () => { - const value = [0, 128, 4, 5]; + const value = Buffer.from([0, 128, 4, 5]); const result = baApdu.getDecodedInvokeId(value, 1); expect(result).toBeUndefined(); }); diff --git a/test/unit/asn1.spec.js b/test/unit/asn1.spec.ts similarity index 97% rename from test/unit/asn1.spec.js rename to test/unit/asn1.spec.ts index 27ede55d..75001a0e 100644 --- a/test/unit/asn1.spec.js +++ b/test/unit/asn1.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const baAsn1 = require('../../lib/asn1'); +import * as baAsn1 from '../../lib/asn1'; describe('bacstack - ASN1 layer', () => { describe('decodeUnsigned', () => { diff --git a/test/unit/bvlc.spec.js b/test/unit/bvlc.spec.ts similarity index 95% rename from test/unit/bvlc.spec.js rename to test/unit/bvlc.spec.ts index dd757abe..84443ae0 100644 --- a/test/unit/bvlc.spec.js +++ b/test/unit/bvlc.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baBvlc = require('../../lib/bvlc'); +import * as utils from './utils'; +import * as baBvlc from '../../lib/bvlc'; describe('bacstack - BVLC layer', () => { it('should successfuly encode and decode a package', () => { diff --git a/test/unit/npdu.spec.js b/test/unit/npdu.spec.ts similarity index 99% rename from test/unit/npdu.spec.js rename to test/unit/npdu.spec.ts index cd75b924..f7b64558 100644 --- a/test/unit/npdu.spec.js +++ b/test/unit/npdu.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; const baNpdu = require('../../lib/npdu'); describe('bacstack - NPDU layer', () => { diff --git a/test/unit/service-add-list-element.spec.js b/test/unit/service-add-list-element.spec.ts similarity index 88% rename from test/unit/service-add-list-element.spec.js rename to test/unit/service-add-list-element.spec.ts index 4947af9d..37b145c6 100644 --- a/test/unit/service-add-list-element.spec.js +++ b/test/unit/service-add-list-element.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer AddListElement unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-alarm-acknowledge.spec.js b/test/unit/service-alarm-acknowledge.spec.ts similarity index 95% rename from test/unit/service-alarm-acknowledge.spec.js rename to test/unit/service-alarm-acknowledge.spec.ts index 500cd3d8..ce09d817 100644 --- a/test/unit/service-alarm-acknowledge.spec.js +++ b/test/unit/service-alarm-acknowledge.spec.ts @@ -1,8 +1,8 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); -const baEnum = require('../../lib/enum'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; +import * as baEnum from '../../lib/enum'; describe('bacstack - Services layer AlarmAcknowledge unit', () => { it('should successfully encode and decode with time timestamp', () => { diff --git a/test/unit/service-alarm-summary.spec.js b/test/unit/service-alarm-summary.spec.ts similarity index 91% rename from test/unit/service-alarm-summary.spec.js rename to test/unit/service-alarm-summary.spec.ts index 6a40fbcf..7298d586 100644 --- a/test/unit/service-alarm-summary.spec.js +++ b/test/unit/service-alarm-summary.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer AlarmSummary unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-atomic-read-file.spec.js b/test/unit/service-atomic-read-file.spec.ts similarity index 93% rename from test/unit/service-atomic-read-file.spec.js rename to test/unit/service-atomic-read-file.spec.ts index 72646ac9..568df829 100644 --- a/test/unit/service-atomic-read-file.spec.js +++ b/test/unit/service-atomic-read-file.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer AtomicReadFile unit', () => { it('should successfully encode and decode as stream', () => { @@ -47,7 +47,7 @@ describe('AtomicReadFileAcknowledge', () => { it('should successfully encode and decode as non-stream', () => { const buffer = utils.getBuffer(); - baServices.atomicReadFile.encodeAcknowledge(buffer, false, false, 0, 90, [12, 12, 12], 3); + baServices.atomicReadFile.encodeAcknowledge(buffer, false, false, 0, 90, [[12, 12, 12]], [3]); // TODO: AtomicReadFileAcknowledge as non-stream not yet implemented expect(() => baServices.atomicReadFile.decodeAcknowledge(buffer.buffer, 0)).toThrow('NotImplemented'); }); diff --git a/test/unit/service-atomic-write-file.spec.js b/test/unit/service-atomic-write-file.spec.ts similarity index 95% rename from test/unit/service-atomic-write-file.spec.js rename to test/unit/service-atomic-write-file.spec.ts index 3a9f76e4..1eea3fe9 100644 --- a/test/unit/service-atomic-write-file.spec.js +++ b/test/unit/service-atomic-write-file.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer AtomicWriteFile unit', () => { it('should successfully encode and decode as stream', () => { diff --git a/test/unit/service-cov-notify.spec.js b/test/unit/service-cov-notify.spec.ts similarity index 97% rename from test/unit/service-cov-notify.spec.js rename to test/unit/service-cov-notify.spec.ts index 0e4db678..e4fa3d82 100644 --- a/test/unit/service-cov-notify.spec.js +++ b/test/unit/service-cov-notify.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer COVNotify unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-create-object.spec.js b/test/unit/service-create-object.spec.ts similarity index 97% rename from test/unit/service-create-object.spec.js rename to test/unit/service-create-object.spec.ts index b35f9b22..ae41fc48 100644 --- a/test/unit/service-create-object.spec.js +++ b/test/unit/service-create-object.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer CreateObject unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-delete-object.spec.js b/test/unit/service-delete-object.spec.ts similarity index 83% rename from test/unit/service-delete-object.spec.js rename to test/unit/service-delete-object.spec.ts index a3048f30..572e4c8f 100644 --- a/test/unit/service-delete-object.spec.js +++ b/test/unit/service-delete-object.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer DeleteObject unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-device-communication-control.spec.js b/test/unit/service-device-communication-control.spec.ts similarity index 91% rename from test/unit/service-device-communication-control.spec.js rename to test/unit/service-device-communication-control.spec.ts index 9fdf95ab..bfc57e44 100644 --- a/test/unit/service-device-communication-control.spec.js +++ b/test/unit/service-device-communication-control.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer DeviceCommunicationControl unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-error.spec.js b/test/unit/service-error.spec.ts similarity index 81% rename from test/unit/service-error.spec.js rename to test/unit/service-error.spec.ts index c813d572..be1ab66b 100644 --- a/test/unit/service-error.spec.js +++ b/test/unit/service-error.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer Error unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-event-information.spec.js b/test/unit/service-event-information.spec.ts similarity index 94% rename from test/unit/service-event-information.spec.js rename to test/unit/service-event-information.spec.ts index 3410ea71..dcfa5d59 100644 --- a/test/unit/service-event-information.spec.js +++ b/test/unit/service-event-information.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer EventInformation unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-event-notify-data.spec.js b/test/unit/service-event-notify-data.spec.ts similarity index 98% rename from test/unit/service-event-notify-data.spec.js rename to test/unit/service-event-notify-data.spec.ts index 297cc8ed..b0b22332 100644 --- a/test/unit/service-event-notify-data.spec.js +++ b/test/unit/service-event-notify-data.spec.ts @@ -1,8 +1,8 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); -const baEnum = require('../../lib/enum'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; +import * as baEnum from '../../lib/enum'; describe('bacstack - Services layer EventNotifyData unit', () => { it('should successfully encode and decode a change of bitstring event', () => { diff --git a/test/unit/service-get-enrollment-summary.spec.js b/test/unit/service-get-enrollment-summary.spec.ts similarity index 95% rename from test/unit/service-get-enrollment-summary.spec.js rename to test/unit/service-get-enrollment-summary.spec.ts index 654d8327..9bbfa0a0 100644 --- a/test/unit/service-get-enrollment-summary.spec.js +++ b/test/unit/service-get-enrollment-summary.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer GetEnrollmentSummary unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-get-event-information.spec.js b/test/unit/service-get-event-information.spec.ts similarity index 94% rename from test/unit/service-get-event-information.spec.js rename to test/unit/service-get-event-information.spec.ts index 25db0372..c5e8d79b 100644 --- a/test/unit/service-get-event-information.spec.js +++ b/test/unit/service-get-event-information.spec.ts @@ -1,8 +1,8 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); -const baEnum = require('../../lib/enum'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; +import * as baEnum from '../../lib/enum'; describe('bacstack - Services layer GetEventInformation unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-i-am.spec.js b/test/unit/service-i-am.spec.ts similarity index 83% rename from test/unit/service-i-am.spec.js rename to test/unit/service-i-am.spec.ts index c1f5885e..6c5de165 100644 --- a/test/unit/service-i-am.spec.js +++ b/test/unit/service-i-am.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer Iam unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-i-have-broadcast.spec.js b/test/unit/service-i-have-broadcast.spec.ts similarity index 86% rename from test/unit/service-i-have-broadcast.spec.js rename to test/unit/service-i-have-broadcast.spec.ts index 94f6b790..85bf91f5 100644 --- a/test/unit/service-i-have-broadcast.spec.js +++ b/test/unit/service-i-have-broadcast.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer IhaveBroadcast unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-life-safety-operation.spec.js b/test/unit/service-life-safety-operation.spec.ts similarity index 86% rename from test/unit/service-life-safety-operation.spec.js rename to test/unit/service-life-safety-operation.spec.ts index b1248b7d..cf55f84f 100644 --- a/test/unit/service-life-safety-operation.spec.js +++ b/test/unit/service-life-safety-operation.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer LifeSafetyOperation unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-private-transfer.spec.js b/test/unit/service-private-transfer.spec.ts similarity index 85% rename from test/unit/service-private-transfer.spec.js rename to test/unit/service-private-transfer.spec.ts index 3ecc029d..343fd5fb 100644 --- a/test/unit/service-private-transfer.spec.js +++ b/test/unit/service-private-transfer.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer PrivateTransfer unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-read-property-multiple.spec.js b/test/unit/service-read-property-multiple.spec.ts similarity index 98% rename from test/unit/service-read-property-multiple.spec.js rename to test/unit/service-read-property-multiple.spec.ts index 1e70943f..b4b70a26 100644 --- a/test/unit/service-read-property-multiple.spec.js +++ b/test/unit/service-read-property-multiple.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer ReadPropertyMultiple unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-read-property.spec.js b/test/unit/service-read-property.spec.ts similarity index 99% rename from test/unit/service-read-property.spec.js rename to test/unit/service-read-property.spec.ts index 4878b8bf..1a407413 100644 --- a/test/unit/service-read-property.spec.js +++ b/test/unit/service-read-property.spec.ts @@ -1,8 +1,8 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); -const baEnum = require('../../lib/enum'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; +import * as baEnum from '../../lib/enum'; describe('bacstack - Services layer ReadProperty unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-read-range.spec.js b/test/unit/service-read-range.spec.ts similarity index 96% rename from test/unit/service-read-range.spec.js rename to test/unit/service-read-range.spec.ts index c62f0e0a..b4940db1 100644 --- a/test/unit/service-read-range.spec.js +++ b/test/unit/service-read-range.spec.ts @@ -1,8 +1,8 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); -const baEnum = require('../../lib/enum'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; +import * as baEnum from '../../lib/enum'; describe('bacstack - Services layer ReadRange unit', () => { it('should successfully encode and decode by position', () => { diff --git a/test/unit/service-reinitialize-device.spec.js b/test/unit/service-reinitialize-device.spec.ts similarity index 90% rename from test/unit/service-reinitialize-device.spec.js rename to test/unit/service-reinitialize-device.spec.ts index a67df32c..e4b163d0 100644 --- a/test/unit/service-reinitialize-device.spec.js +++ b/test/unit/service-reinitialize-device.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer ReinitializeDevice unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-subscribe-cov.spec.js b/test/unit/service-subscribe-cov.spec.ts similarity index 92% rename from test/unit/service-subscribe-cov.spec.js rename to test/unit/service-subscribe-cov.spec.ts index 7b53d6be..1ec30c9a 100644 --- a/test/unit/service-subscribe-cov.spec.js +++ b/test/unit/service-subscribe-cov.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer SubscribeCOV unit', () => { it('should successfully encode and decode a cancelation request', () => { diff --git a/test/unit/service-subscribe-property.spec.js b/test/unit/service-subscribe-property.spec.ts similarity index 94% rename from test/unit/service-subscribe-property.spec.js rename to test/unit/service-subscribe-property.spec.ts index 1cd2b82f..bc9e58bb 100644 --- a/test/unit/service-subscribe-property.spec.js +++ b/test/unit/service-subscribe-property.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer SubscribeProperty unit', () => { it('should successfully encode and decode with cancellation request', () => { diff --git a/test/unit/service-time-sync.spec.js b/test/unit/service-time-sync.spec.ts similarity index 84% rename from test/unit/service-time-sync.spec.js rename to test/unit/service-time-sync.spec.ts index 8d2f960c..584a5951 100644 --- a/test/unit/service-time-sync.spec.js +++ b/test/unit/service-time-sync.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer TimeSync unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-who-has.spec.js b/test/unit/service-who-has.spec.ts similarity index 83% rename from test/unit/service-who-has.spec.js rename to test/unit/service-who-has.spec.ts index 35d208b1..370a0593 100644 --- a/test/unit/service-who-has.spec.js +++ b/test/unit/service-who-has.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer WhoHas unit', () => { it('should successfully encode and decode by id', () => { @@ -21,7 +21,7 @@ describe('bacstack - Services layer WhoHas unit', () => { it('should successfully encode and decode by name', () => { const buffer = utils.getBuffer(); - baServices.whoHas.encode(buffer, 3, 4000, {}, 'analog-output-1'); + baServices.whoHas.encode(buffer, 3, 4000, undefined, 'analog-output-1'); const result = baServices.whoHas.decode(buffer.buffer, 0, buffer.offset); delete result.len; expect(result).toEqual({ diff --git a/test/unit/service-who-is.spec.js b/test/unit/service-who-is.spec.ts similarity index 82% rename from test/unit/service-who-is.spec.js rename to test/unit/service-who-is.spec.ts index 671b0bfc..6f3126e2 100644 --- a/test/unit/service-who-is.spec.js +++ b/test/unit/service-who-is.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer WhoIs unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-write-property-multiple.spec.js b/test/unit/service-write-property-multiple.spec.ts similarity index 98% rename from test/unit/service-write-property-multiple.spec.js rename to test/unit/service-write-property-multiple.spec.ts index 78a5414f..40179040 100644 --- a/test/unit/service-write-property-multiple.spec.js +++ b/test/unit/service-write-property-multiple.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer WritePropertyMultiple unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/service-write-property.spec.js b/test/unit/service-write-property.spec.ts similarity index 98% rename from test/unit/service-write-property.spec.js rename to test/unit/service-write-property.spec.ts index 092e402f..4cb9684c 100644 --- a/test/unit/service-write-property.spec.js +++ b/test/unit/service-write-property.spec.ts @@ -1,7 +1,7 @@ 'use strict'; -const utils = require('./utils'); -const baServices = require('../../lib/services'); +import * as utils from './utils'; +import * as baServices from '../../lib/services'; describe('bacstack - Services layer WriteProperty unit', () => { it('should successfully encode and decode', () => { diff --git a/test/unit/utils.js b/test/unit/utils.js deleted file mode 100644 index 10142825..00000000 --- a/test/unit/utils.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports.getBuffer = () => { - return { - buffer: Buffer.alloc(1482), - offset: 0 - }; -}; diff --git a/test/unit/utils.ts b/test/unit/utils.ts new file mode 100644 index 00000000..0d3016f8 --- /dev/null +++ b/test/unit/utils.ts @@ -0,0 +1,6 @@ +'use strict'; + +export const getBuffer = () => ({ + buffer: Buffer.alloc(1482), + offset: 0 +}); From 30b253c229cd9fae44843daed5e8505ed5c29d50 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 13:41:33 +0200 Subject: [PATCH 40/44] refactor(test-integration): rework to TypeScript --- package.json | 2 +- ...edge-alarm.spec.js => acknowledge-alarm.spec.ts} | 5 ++--- ...ist-element.spec.js => add-list-element.spec.ts} | 5 ++--- ...spec.js => confirmed-event-notification.spec.ts} | 5 ++--- ...r.spec.js => confirmed-private-transfer.spec.ts} | 5 ++--- ...{create-object.spec.js => create-object.spec.ts} | 5 ++--- ...{delete-object.spec.js => delete-object.spec.ts} | 5 ++--- ...spec.js => device-communication-control.spec.ts} | 5 ++--- ...rm-summary.spec.js => get-alarm-summary.spec.ts} | 4 ++-- ...mmary.spec.js => get-enrollment-summary.spec.ts} | 2 +- ...mation.spec.js => get-event-information.spec.ts} | 4 ++-- .../{read-file.spec.js => read-file.spec.ts} | 4 ++-- ...tiple.spec.js => read-property-multiple.spec.ts} | 8 ++++---- ...{read-property.spec.js => read-property.spec.ts} | 4 ++-- .../{read-range.spec.js => read-range.spec.ts} | 4 ++-- ...e-sevice.spec.js => reinitialize-sevice.spec.ts} | 5 ++--- ...-element.spec.js => remove-list-element.spec.ts} | 5 ++--- ...{subscribe-cov.spec.js => subscribe-cov.spec.ts} | 5 ++--- ...-property.spec.js => subscribe-property.spec.ts} | 5 ++--- ...{time-sync-utc.spec.js => time-sync-utc.spec.ts} | 2 +- .../{time-sync.spec.js => time-sync.spec.ts} | 2 +- ...ec.js => unconfirmed-event-notification.spec.ts} | 2 +- ...spec.js => unconfirmed-private-transfer.spec.ts} | 2 +- test/integration/{utils.js => utils.ts} | 13 ++++++------- test/integration/{who-is.spec.js => who-is.spec.ts} | 4 ++-- .../{write-file.spec.js => write-file.spec.ts} | 4 ++-- ...iple.spec.js => write-property-multiple.spec.ts} | 5 ++--- ...rite-property.spec.js => write-property.spec.ts} | 5 ++--- 28 files changed, 56 insertions(+), 70 deletions(-) rename test/integration/{acknowledge-alarm.spec.js => acknowledge-alarm.spec.ts} (79%) rename test/integration/{add-list-element.spec.js => add-list-element.spec.ts} (81%) rename test/integration/{confirmed-event-notification.spec.js => confirmed-event-notification.spec.ts} (89%) rename test/integration/{confirmed-private-transfer.spec.js => confirmed-private-transfer.spec.ts} (77%) rename test/integration/{create-object.spec.js => create-object.spec.ts} (82%) rename test/integration/{delete-object.spec.js => delete-object.spec.ts} (67%) rename test/integration/{device-communication-control.spec.js => device-communication-control.spec.ts} (78%) rename test/integration/{get-alarm-summary.spec.js => get-alarm-summary.spec.ts} (78%) rename test/integration/{get-enrollment-summary.spec.js => get-enrollment-summary.spec.ts} (93%) rename test/integration/{get-event-information.spec.js => get-event-information.spec.ts} (87%) rename test/integration/{read-file.spec.js => read-file.spec.ts} (87%) rename test/integration/{read-property-multiple.spec.js => read-property-multiple.spec.ts} (96%) rename test/integration/{read-property.spec.js => read-property.spec.ts} (87%) rename test/integration/{read-range.spec.js => read-range.spec.ts} (87%) rename test/integration/{reinitialize-sevice.spec.js => reinitialize-sevice.spec.ts} (80%) rename test/integration/{remove-list-element.spec.js => remove-list-element.spec.ts} (82%) rename test/integration/{subscribe-cov.spec.js => subscribe-cov.spec.ts} (78%) rename test/integration/{subscribe-property.spec.js => subscribe-property.spec.ts} (74%) rename test/integration/{time-sync-utc.spec.js => time-sync-utc.spec.ts} (88%) rename test/integration/{time-sync.spec.js => time-sync.spec.ts} (88%) rename test/integration/{unconfirmed-event-notification.spec.js => unconfirmed-event-notification.spec.ts} (96%) rename test/integration/{unconfirmed-private-transfer.spec.js => unconfirmed-private-transfer.spec.ts} (90%) rename test/integration/{utils.js => utils.ts} (50%) rename test/integration/{who-is.spec.js => who-is.spec.ts} (76%) rename test/integration/{write-file.spec.js => write-file.spec.ts} (83%) rename test/integration/{write-property-multiple.spec.js => write-property-multiple.spec.ts} (77%) rename test/integration/{write-property.spec.js => write-property.spec.ts} (76%) diff --git a/package.json b/package.json index f9f46a93..4f5b62ee 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build": "tsc", "lint": "eslint lib/ test/ index.js", "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.ts", - "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.js", + "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.ts", "compliance": "jest --coverageDirectory reports/coverage-compliance test/compliance/*.spec.ts", "docs": "jsdoc -d ./docs -t node_modules/docdash ./lib ./index.js ./README.md" }, diff --git a/test/integration/acknowledge-alarm.spec.js b/test/integration/acknowledge-alarm.spec.ts similarity index 79% rename from test/integration/acknowledge-alarm.spec.js rename to test/integration/acknowledge-alarm.spec.ts index 877318ea..7d158a5d 100644 --- a/test/integration/acknowledge-alarm.spec.js +++ b/test/integration/acknowledge-alarm.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - acknowledgeAlarm integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.acknowledgeAlarm('127.0.0.1', {type: 2, instance: 3}, 2, 'Alarm Acknowledge Test', {value: new Date(), type: 2}, {value: new Date(), type: 2}, (err, value) => { + client.acknowledgeAlarm('127.0.0.1', {type: 2, instance: 3}, 2, 'Alarm Acknowledge Test', {value: new Date(), type: 2}, {value: new Date(), type: 2}, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/add-list-element.spec.js b/test/integration/add-list-element.spec.ts similarity index 81% rename from test/integration/add-list-element.spec.js rename to test/integration/add-list-element.spec.ts index cac3764f..b47e1b1a 100644 --- a/test/integration/add-list-element.spec.js +++ b/test/integration/add-list-element.spec.ts @@ -1,15 +1,14 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - addListElement integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); client.addListElement('127.0.0.1', {type: 19, instance: 101}, {id: 80, index: 0}, [ {type: 1, value: true} - ], (err, value) => { + ], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/confirmed-event-notification.spec.js b/test/integration/confirmed-event-notification.spec.ts similarity index 89% rename from test/integration/confirmed-event-notification.spec.js rename to test/integration/confirmed-event-notification.spec.ts index ce2eb3e9..7d8cdb5d 100644 --- a/test/integration/confirmed-event-notification.spec.js +++ b/test/integration/confirmed-event-notification.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - confirmedEventNotification integration', () => { it('should return a timeout error if no device is available', (next) => { @@ -20,9 +20,8 @@ describe('bacstack - confirmedEventNotification integration', () => { changeOfValueTag: 0, changeOfValueChangeValue: 90, changeOfValueStatusFlags: {bitsUsed: 24, value: [0xaa, 0xaa, 0xaa]} - }, (err, value) => { + }, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/confirmed-private-transfer.spec.js b/test/integration/confirmed-private-transfer.spec.ts similarity index 77% rename from test/integration/confirmed-private-transfer.spec.js rename to test/integration/confirmed-private-transfer.spec.ts index d3db0174..4ea3f80d 100644 --- a/test/integration/confirmed-private-transfer.spec.js +++ b/test/integration/confirmed-private-transfer.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - confirmedPrivateTransfer integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.confirmedPrivateTransfer('127.0.0.1', 0, 8, [0x00, 0xaa, 0xfa, 0xb1, 0x00], (err, value) => { + client.confirmedPrivateTransfer('127.0.0.1', 0, 8, [0x00, 0xaa, 0xfa, 0xb1, 0x00], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/create-object.spec.js b/test/integration/create-object.spec.ts similarity index 82% rename from test/integration/create-object.spec.js rename to test/integration/create-object.spec.ts index ba16a5c9..8f59c90f 100644 --- a/test/integration/create-object.spec.js +++ b/test/integration/create-object.spec.ts @@ -1,15 +1,14 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - createObject integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); client.createObject('127.0.0.1', {type: 2, instance: 300}, [ {property: {id: 85, index: 1}, value: [{type: 1, value: true}]} - ], (err, value) => { + ], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/delete-object.spec.js b/test/integration/delete-object.spec.ts similarity index 67% rename from test/integration/delete-object.spec.js rename to test/integration/delete-object.spec.ts index 5342b5cb..958a719e 100644 --- a/test/integration/delete-object.spec.js +++ b/test/integration/delete-object.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - deleteObject integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.deleteObject('127.0.0.1', {type: 2, instance: 15}, (err, value) => { + client.deleteObject('127.0.0.1', {type: 2, instance: 15}, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/device-communication-control.spec.js b/test/integration/device-communication-control.spec.ts similarity index 78% rename from test/integration/device-communication-control.spec.js rename to test/integration/device-communication-control.spec.ts index 4a4fb736..d15bbe80 100644 --- a/test/integration/device-communication-control.spec.js +++ b/test/integration/device-communication-control.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - deviceCommunicationControl integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.deviceCommunicationControl('127.0.0.1', 60, 1, {password: 'Test1234'}, (err, value) => { + client.deviceCommunicationControl('127.0.0.1', 60, 1, {password: 'Test1234'}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/get-alarm-summary.spec.js b/test/integration/get-alarm-summary.spec.ts similarity index 78% rename from test/integration/get-alarm-summary.spec.js rename to test/integration/get-alarm-summary.spec.ts index f5b9990d..6a03e81b 100644 --- a/test/integration/get-alarm-summary.spec.js +++ b/test/integration/get-alarm-summary.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - getAlarmSummary integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.getAlarmSummary('127.0.0.1', (err, value) => { + client.getAlarmSummary('127.0.0.1', {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); diff --git a/test/integration/get-enrollment-summary.spec.js b/test/integration/get-enrollment-summary.spec.ts similarity index 93% rename from test/integration/get-enrollment-summary.spec.js rename to test/integration/get-enrollment-summary.spec.ts index 139baa94..de672081 100644 --- a/test/integration/get-enrollment-summary.spec.js +++ b/test/integration/get-enrollment-summary.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - getEnrollmentSummary integration', () => { it('should return a timeout error if no device is available', (next) => { diff --git a/test/integration/get-event-information.spec.js b/test/integration/get-event-information.spec.ts similarity index 87% rename from test/integration/get-event-information.spec.js rename to test/integration/get-event-information.spec.ts index d72d77c0..2dc96510 100644 --- a/test/integration/get-event-information.spec.js +++ b/test/integration/get-event-information.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - getEventInformation integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.getEventInformation('127.0.0.1', {type: 5, instance: 33}, (err, value) => { + client.getEventInformation('127.0.0.1', {type: 5, instance: 33}, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); diff --git a/test/integration/read-file.spec.js b/test/integration/read-file.spec.ts similarity index 87% rename from test/integration/read-file.spec.js rename to test/integration/read-file.spec.ts index bd9e4bc9..e428c07b 100644 --- a/test/integration/read-file.spec.js +++ b/test/integration/read-file.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - readFile integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.readFile('127.0.0.1', {type: 10, instance: 100}, 0, 100, (err, value) => { + client.readFile('127.0.0.1', {type: 10, instance: 100}, 0, 100, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); diff --git a/test/integration/read-property-multiple.spec.js b/test/integration/read-property-multiple.spec.ts similarity index 96% rename from test/integration/read-property-multiple.spec.js rename to test/integration/read-property-multiple.spec.ts index f5294751..202f8b29 100644 --- a/test/integration/read-property-multiple.spec.js +++ b/test/integration/read-property-multiple.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - readPropertyMultiple integration', () => { it('should return a timeout error if no device is available', (next) => { @@ -8,7 +8,7 @@ describe('bacstack - readPropertyMultiple integration', () => { const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} ]; - client.readPropertyMultiple('127.0.0.1', requestArray, (err, value) => { + client.readPropertyMultiple('127.0.0.1', requestArray, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); @@ -23,7 +23,7 @@ describe('bacstack - readPropertyMultiple integration', () => { const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} ]; - client.readPropertyMultiple('127.0.0.1', requestArray, (err, response) => { + client.readPropertyMultiple('127.0.0.1', requestArray, {}, (err, response) => { expect(err).toBeNull(); const object = utils.propertyFormater(response.values[0].values); expect(response.values[0].objectId).toEqual({type: 29, instance: 31}); @@ -64,7 +64,7 @@ describe('bacstack - readPropertyMultiple integration', () => { const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} ]; - client.readPropertyMultiple('127.0.0.1', requestArray, (err, response) => { + client.readPropertyMultiple('127.0.0.1', requestArray, {}, (err, response) => { expect(err).toBeNull(); expect(response.values[0].objectId).toEqual({type: 19, instance: 10}); const object = utils.propertyFormater(response.values[0].values); diff --git a/test/integration/read-property.spec.js b/test/integration/read-property.spec.ts similarity index 87% rename from test/integration/read-property.spec.js rename to test/integration/read-property.spec.ts index 5f8596e6..b42a2844 100644 --- a/test/integration/read-property.spec.js +++ b/test/integration/read-property.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - readProperty integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.readProperty('127.0.0.1', {type: 8, instance: 44301}, 28, (err, value) => { + client.readProperty('127.0.0.1', {type: 8, instance: 44301}, 28, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); diff --git a/test/integration/read-range.spec.js b/test/integration/read-range.spec.ts similarity index 87% rename from test/integration/read-range.spec.js rename to test/integration/read-range.spec.ts index e9411d26..dfa53248 100644 --- a/test/integration/read-range.spec.js +++ b/test/integration/read-range.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - readRange integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.readRange('127.0.0.1', {type: 20, instance: 0}, 0, 200, (err, value) => { + client.readRange('127.0.0.1', {type: 20, instance: 0}, 0, 200, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); diff --git a/test/integration/reinitialize-sevice.spec.js b/test/integration/reinitialize-sevice.spec.ts similarity index 80% rename from test/integration/reinitialize-sevice.spec.js rename to test/integration/reinitialize-sevice.spec.ts index 5b7c792c..f3851939 100644 --- a/test/integration/reinitialize-sevice.spec.js +++ b/test/integration/reinitialize-sevice.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - reinitializeDevice integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.reinitializeDevice('127.0.0.1', 1, {password: 'Test1234'}, (err, value) => { + client.reinitializeDevice('127.0.0.1', 1, {password: 'Test1234'}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/remove-list-element.spec.js b/test/integration/remove-list-element.spec.ts similarity index 82% rename from test/integration/remove-list-element.spec.js rename to test/integration/remove-list-element.spec.ts index 9452375a..274328de 100644 --- a/test/integration/remove-list-element.spec.js +++ b/test/integration/remove-list-element.spec.ts @@ -1,15 +1,14 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - removeListElement integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); client.removeListElement('127.0.0.1', {type: 19, instance: 100}, {id: 80, index: 0}, [ {type: 1, value: true} - ], (err, value) => { + ], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/subscribe-cov.spec.js b/test/integration/subscribe-cov.spec.ts similarity index 78% rename from test/integration/subscribe-cov.spec.js rename to test/integration/subscribe-cov.spec.ts index f5f31874..6c587a32 100644 --- a/test/integration/subscribe-cov.spec.js +++ b/test/integration/subscribe-cov.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - subscribeCOV integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.subscribeCOV('127.0.0.1', {type: 5, instance: 3}, 7, false, false, 0, (err, value) => { + client.subscribeCOV('127.0.0.1', {type: 5, instance: 3}, 7, false, false, 0, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/subscribe-property.spec.js b/test/integration/subscribe-property.spec.ts similarity index 74% rename from test/integration/subscribe-property.spec.js rename to test/integration/subscribe-property.spec.ts index 3edc8d45..d5b54d42 100644 --- a/test/integration/subscribe-property.spec.js +++ b/test/integration/subscribe-property.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - subscribeProperty integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.subscribeProperty('127.0.0.1', {type: 5, instance: 33}, {id: 80, index: 0}, 8, false, false, (err, value) => { + client.subscribeProperty('127.0.0.1', {type: 5, instance: 33}, {id: 80, index: 0}, 8, false, false, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/time-sync-utc.spec.js b/test/integration/time-sync-utc.spec.ts similarity index 88% rename from test/integration/time-sync-utc.spec.js rename to test/integration/time-sync-utc.spec.ts index 25d71b7c..b8e271a7 100644 --- a/test/integration/time-sync-utc.spec.js +++ b/test/integration/time-sync-utc.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - timeSyncUTC integration', () => { it('should send a time UTC sync package', () => { diff --git a/test/integration/time-sync.spec.js b/test/integration/time-sync.spec.ts similarity index 88% rename from test/integration/time-sync.spec.js rename to test/integration/time-sync.spec.ts index 6001f0a8..be6cff45 100644 --- a/test/integration/time-sync.spec.js +++ b/test/integration/time-sync.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - timeSync integration', () => { it('should send a time sync package', () => { diff --git a/test/integration/unconfirmed-event-notification.spec.js b/test/integration/unconfirmed-event-notification.spec.ts similarity index 96% rename from test/integration/unconfirmed-event-notification.spec.js rename to test/integration/unconfirmed-event-notification.spec.ts index e7cad901..8b4d6bac 100644 --- a/test/integration/unconfirmed-event-notification.spec.js +++ b/test/integration/unconfirmed-event-notification.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - unconfirmedEventNotification integration', () => { it('should correctly send a telegram', () => { diff --git a/test/integration/unconfirmed-private-transfer.spec.js b/test/integration/unconfirmed-private-transfer.spec.ts similarity index 90% rename from test/integration/unconfirmed-private-transfer.spec.js rename to test/integration/unconfirmed-private-transfer.spec.ts index 031d5fae..ef9cb275 100644 --- a/test/integration/unconfirmed-private-transfer.spec.js +++ b/test/integration/unconfirmed-private-transfer.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - unconfirmedPrivateTransfer integration', () => { it('should correctly send a telegram', () => { diff --git a/test/integration/utils.js b/test/integration/utils.ts similarity index 50% rename from test/integration/utils.js rename to test/integration/utils.ts index 92bbd67f..a519ad62 100644 --- a/test/integration/utils.js +++ b/test/integration/utils.ts @@ -1,11 +1,11 @@ 'use strict'; -const EventEmitter = require('events').EventEmitter; -const bacnet = require('../../'); +import { EventEmitter } from 'events'; +import { Client } from '../../lib/client'; -module.exports.bacnetClient = bacnet; +export const bacnetClient = Client; -class Transport extends EventEmitter { +export class transportStub extends EventEmitter { constructor() { super(); } @@ -19,10 +19,9 @@ class Transport extends EventEmitter { open() { } close() { } } -module.exports.transportStub = Transport; -module.exports.propertyFormater = (object) => { - const converted = {}; +export const propertyFormater = (object: {id: number, value: any}[]) => { + const converted: {[name: number]: any} = {}; object.forEach((property) => converted[property.id] = property.value); return converted; }; diff --git a/test/integration/who-is.spec.js b/test/integration/who-is.spec.ts similarity index 76% rename from test/integration/who-is.spec.js rename to test/integration/who-is.spec.ts index 21371857..d2007c3a 100644 --- a/test/integration/who-is.spec.js +++ b/test/integration/who-is.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - whoIs integration', () => { it('should not invoke a event if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.on('iAm', (address, deviceId, maxApdu, segmentation, vendorId) => { + client.on('iAm', () => { client.close(); next(new Error('Unallowed Callback')); }); diff --git a/test/integration/write-file.spec.js b/test/integration/write-file.spec.ts similarity index 83% rename from test/integration/write-file.spec.js rename to test/integration/write-file.spec.ts index c725aef0..f03566a2 100644 --- a/test/integration/write-file.spec.js +++ b/test/integration/write-file.spec.ts @@ -1,11 +1,11 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - writeFile integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.writeFile('127.0.0.1', {type: 10, instance: 2}, 0, [[5, 6, 7, 8], [5, 6, 7, 8]], (err, value) => { + client.writeFile('127.0.0.1', {type: 10, instance: 2}, 0, [[5, 6, 7, 8], [5, 6, 7, 8]], {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); client.close(); diff --git a/test/integration/write-property-multiple.spec.js b/test/integration/write-property-multiple.spec.ts similarity index 77% rename from test/integration/write-property-multiple.spec.js rename to test/integration/write-property-multiple.spec.ts index 2ea3bddd..4377f05c 100644 --- a/test/integration/write-property-multiple.spec.js +++ b/test/integration/write-property-multiple.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - writePropertyMultiple integration', () => { it('should return a timeout error if no device is available', (next) => { @@ -10,9 +10,8 @@ describe('bacstack - writePropertyMultiple integration', () => { {property: {id: 28, index: 12}, value: [{type: 1, value: true}], priority: 8} ]} ]; - client.writePropertyMultiple('127.0.0.1', values, (err, value) => { + client.writePropertyMultiple('127.0.0.1', values, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); diff --git a/test/integration/write-property.spec.js b/test/integration/write-property.spec.ts similarity index 76% rename from test/integration/write-property.spec.js rename to test/integration/write-property.spec.ts index 7513cc4e..21800001 100644 --- a/test/integration/write-property.spec.js +++ b/test/integration/write-property.spec.ts @@ -1,13 +1,12 @@ 'use strict'; -const utils = require('./utils'); +import * as utils from './utils'; describe('bacstack - writeProperty integration', () => { it('should return a timeout error if no device is available', (next) => { const client = new utils.bacnetClient({apduTimeout: 200}); - client.writeProperty('127.0.0.1', {type: 8, instance: 44301}, 28, [{type: 4, value: 100}], (err, value) => { + client.writeProperty('127.0.0.1', {type: 8, instance: 44301}, 28, [{type: 4, value: 100}], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); - expect(value).toBeUndefined(); client.close(); next(); }); From 620cc82cc4abb986f5e46ccd0387fecdbd2a9744 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 13:46:48 +0200 Subject: [PATCH 41/44] chore(npm): add Jest TypeScript compatibility --- package.json | 5 +- yarn.lock | 2039 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 1932 insertions(+), 112 deletions(-) diff --git a/package.json b/package.json index 4f5b62ee..60694c35 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "node": ">= 12.0.0" }, "jest": { + "preset": "ts-jest", "testEnvironment": "node", "collectCoverage": true, "coverageReporters": [ @@ -38,7 +39,7 @@ "lcov" ], "collectCoverageFrom": [ - "lib/**/*.js" + "lib/**/*.ts" ] }, "commitlint": { @@ -58,12 +59,14 @@ "devDependencies": { "@commitlint/cli": "^12.1.4", "@commitlint/config-conventional": "^12.1.4", + "@types/jest": "^26.0.23", "@types/node": "^15.12.5", "docdash": "^1.2.0", "eslint": "^7.29.0", "eslint-config-google": "^0.14.0", "jest": "^27.0.6", "jsdoc": "^3.6.7", + "ts-jest": "^27.0.3", "typescript": "^4.3.4" } } diff --git a/yarn.lock b/yarn.lock index 9b8af4fb..28fbe432 100644 --- a/yarn.lock +++ b/yarn.lock @@ -309,6 +309,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + "@commitlint/cli@^12.1.4": version "12.1.4" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.1.4.tgz#af4d9dd3c0122c7b39a61fa1cd2abbad0422dbe0" @@ -477,6 +485,17 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@jest/console@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" + integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + jest-message-util "^25.5.0" + jest-util "^25.5.0" + slash "^3.0.0" + "@jest/console@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f" @@ -524,6 +543,15 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/environment@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" + integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== + dependencies: + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + "@jest/environment@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2" @@ -534,6 +562,17 @@ "@types/node" "*" jest-mock "^27.0.6" +"@jest/fake-timers@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" + integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== + dependencies: + "@jest/types" "^25.5.0" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + lolex "^5.0.0" + "@jest/fake-timers@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df" @@ -546,6 +585,15 @@ jest-mock "^27.0.6" jest-util "^27.0.6" +"@jest/globals@^25.5.2": + version "25.5.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" + integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/types" "^25.5.0" + expect "^25.5.0" + "@jest/globals@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" @@ -585,6 +633,15 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.0.0" +"@jest/source-map@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" + integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + "@jest/source-map@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" @@ -594,6 +651,16 @@ graceful-fs "^4.2.4" source-map "^0.6.0" +"@jest/test-result@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" + integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== + dependencies: + "@jest/console" "^25.5.0" + "@jest/types" "^25.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + "@jest/test-result@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" @@ -604,6 +671,17 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-sequencer@^25.5.4": + version "25.5.4" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" + integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== + dependencies: + "@jest/test-result" "^25.5.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.1" + jest-runner "^25.5.4" + jest-runtime "^25.5.4" + "@jest/test-sequencer@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b" @@ -614,6 +692,28 @@ jest-haste-map "^27.0.6" jest-runtime "^27.0.6" +"@jest/transform@^25.5.1": + version "25.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" + integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^25.5.0" + babel-plugin-istanbul "^6.0.0" + chalk "^3.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^25.5.1" + jest-regex-util "^25.2.6" + jest-util "^25.5.0" + micromatch "^4.0.2" + pirates "^4.0.1" + realpath-native "^2.0.0" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + "@jest/transform@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95" @@ -635,6 +735,27 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + "@jest/types@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.0.6.tgz#9a992bc517e0c49f035938b8549719c2de40706b" @@ -665,7 +786,7 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -717,6 +838,14 @@ dependencies: "@types/istanbul-lib-coverage" "*" +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + "@types/istanbul-reports@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" @@ -724,6 +853,14 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@^26.0.23": + version "26.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" + integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + "@types/minimist@^1.2.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" @@ -744,11 +881,21 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^1.19.0": + version "1.19.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" + integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== + "@types/prettier@^2.1.5": version "2.3.0" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.0.tgz#2e8332cc7363f887d32ec5496b207d26ba8052bb" integrity sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw== +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" @@ -759,6 +906,13 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== +"@types/yargs@^15.0.0": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + dependencies: + "@types/yargs-parser" "*" + "@types/yargs@^16.0.0": version "16.0.3" resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01" @@ -774,11 +928,19 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.3, abab@^2.0.5: +abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +acorn-globals@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -792,12 +954,22 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.1, acorn@^7.4.0: +acorn@^6.0.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -814,7 +986,7 @@ agent-base@6: dependencies: debug "4" -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -870,6 +1042,14 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + anymatch@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -885,16 +1065,58 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -910,6 +1132,35 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-jest@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" + integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== + dependencies: + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^25.5.0" + chalk "^3.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + babel-jest@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8" @@ -935,6 +1186,15 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" +babel-plugin-jest-hoist@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" + integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__traverse" "^7.0.6" + babel-plugin-jest-hoist@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" @@ -945,6 +1205,23 @@ babel-plugin-jest-hoist@^27.0.6: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" +babel-preset-current-node-syntax@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" + integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -963,6 +1240,14 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" +babel-preset-jest@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" + integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== + dependencies: + babel-plugin-jest-hoist "^25.5.0" + babel-preset-current-node-syntax "^0.1.2" + babel-preset-jest@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" @@ -976,6 +1261,26 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -989,6 +1294,22 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1001,6 +1322,13 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browser-resolve@^1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== + dependencies: + resolve "1.1.7" + browserslist@^4.16.6: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" @@ -1012,6 +1340,13 @@ browserslist@^4.16.6: escalade "^3.1.1" node-releases "^1.1.71" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -1019,11 +1354,26 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1053,6 +1403,18 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz#cd3fae47eb3d7691692b406568d7a3e5b23c7598" integrity sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ== +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + catharsis@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" @@ -1069,6 +1431,14 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" @@ -1082,6 +1452,11 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + ci-info@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" @@ -1092,6 +1467,25 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1111,6 +1505,14 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1140,7 +1542,7 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.8: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -1155,6 +1557,11 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1197,6 +1604,16 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -1208,6 +1625,17 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1217,7 +1645,7 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.4: +cssom@^0.4.1, cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== @@ -1227,7 +1655,7 @@ cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.3.0: +cssstyle@^2.0.0, cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== @@ -1239,6 +1667,22 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -1255,6 +1699,13 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -1263,7 +1714,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0: +decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1273,10 +1724,10 @@ decimal.js@^10.2.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" @@ -1288,6 +1739,28 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1298,6 +1771,16 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + diff-sequences@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" @@ -1315,6 +1798,13 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -1329,6 +1819,14 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + electron-to-chromium@^1.3.723: version "1.3.762" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.762.tgz#3fa4e3bcbda539b50e3aa23041627063a5cffe61" @@ -1344,6 +1842,13 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -1383,6 +1888,18 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escodegen@^1.11.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -1498,7 +2015,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1: +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -1513,6 +2030,24 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +exec-sh@^0.3.2: + version "0.3.6" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" + integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -1533,6 +2068,31 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" + integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== + dependencies: + "@jest/types" "^25.5.0" + ansi-styles "^4.0.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-regex-util "^25.2.6" + expect@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" @@ -1545,12 +2105,56 @@ expect@^27.0.6: jest-message-util "^27.0.6" jest-regex-util "^27.0.6" +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -1574,6 +2178,16 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1610,6 +2224,16 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -1619,6 +2243,22 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + fs-extra@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -1634,7 +2274,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.3.2: +fsevents@^2.1.2, fsevents@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -1654,7 +2294,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -1664,11 +2304,30 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + git-raw-commits@^2.0.0: version "2.0.10" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" @@ -1723,6 +2382,19 @@ graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -1738,6 +2410,37 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1757,6 +2460,13 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -1778,6 +2488,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -1854,14 +2573,45 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-ci@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== dependencies: ci-info "^3.1.1" @@ -1873,6 +2623,50 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -1895,6 +2689,13 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1910,11 +2711,23 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" @@ -1927,16 +2740,43 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@^1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -1987,31 +2827,6 @@ jest-changed-files@^27.0.6: execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668" - integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q== - dependencies: - "@jest/environment" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.0.6" - is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - jest-cli@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f" @@ -2030,6 +2845,31 @@ jest-cli@^27.0.6: prompts "^2.0.1" yargs "^16.0.3" +jest-config@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" + integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^25.5.4" + "@jest/types" "^25.5.0" + babel-jest "^25.5.1" + chalk "^3.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^25.5.0" + jest-environment-node "^25.5.0" + jest-get-type "^25.2.6" + jest-jasmine2 "^25.5.4" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" + micromatch "^4.0.2" + pretty-format "^25.5.0" + realpath-native "^2.0.0" + jest-config@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f" @@ -2057,6 +2897,26 @@ jest-config@^27.0.6: micromatch "^4.0.4" pretty-format "^27.0.6" +jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-diff@^26.0.0: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + jest-diff@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.0.6.tgz#4a7a19ee6f04ad70e0e3388f35829394a44c7b5e" @@ -2067,6 +2927,13 @@ jest-diff@^27.0.6: jest-get-type "^27.0.6" pretty-format "^27.0.6" +jest-docblock@^25.3.0: + version "25.3.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" + integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== + dependencies: + detect-newline "^3.0.0" + jest-docblock@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" @@ -2074,16 +2941,28 @@ jest-docblock@^27.0.6: dependencies: detect-newline "^3.0.0" -jest-each@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b" - integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA== - dependencies: - "@jest/types" "^27.0.6" - chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" +jest-each@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" + integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + jest-get-type "^25.2.6" + jest-util "^25.5.0" + pretty-format "^25.5.0" + +jest-environment-jsdom@^25.4.0, jest-environment-jsdom@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" + integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + jsdom "^15.2.1" jest-environment-jsdom@^27.0.6: version "27.0.6" @@ -2098,6 +2977,18 @@ jest-environment-jsdom@^27.0.6: jest-util "^27.0.6" jsdom "^16.6.0" +jest-environment-node@^25.4.0, jest-environment-node@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" + integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== + dependencies: + "@jest/environment" "^25.5.0" + "@jest/fake-timers" "^25.5.0" + "@jest/types" "^25.5.0" + jest-mock "^25.5.0" + jest-util "^25.5.0" + semver "^6.3.0" + jest-environment-node@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07" @@ -2110,11 +3001,41 @@ jest-environment-node@^27.0.6: jest-mock "^27.0.6" jest-util "^27.0.6" +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + jest-get-type@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== +jest-haste-map@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" + integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== + dependencies: + "@jest/types" "^25.5.0" + "@types/graceful-fs" "^4.1.2" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-serializer "^25.5.0" + jest-util "^25.5.0" + jest-worker "^25.5.0" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + which "^2.0.2" + optionalDependencies: + fsevents "^2.1.2" + jest-haste-map@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7" @@ -2135,29 +3056,36 @@ jest-haste-map@^27.0.6: optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" - integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA== +jest-jasmine2@^25.4.0, jest-jasmine2@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" + integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.0.6" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.0.6" - "@jest/types" "^27.0.6" - "@types/node" "*" - chalk "^4.0.0" + "@jest/environment" "^25.5.0" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + chalk "^3.0.0" co "^4.6.0" - expect "^27.0.6" + expect "^25.5.0" is-generator-fn "^2.0.0" - jest-each "^27.0.6" - jest-matcher-utils "^27.0.6" - jest-message-util "^27.0.6" - jest-runtime "^27.0.6" - jest-snapshot "^27.0.6" - jest-util "^27.0.6" - pretty-format "^27.0.6" - throat "^6.0.1" + jest-each "^25.5.0" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-runtime "^25.5.4" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + pretty-format "^25.5.0" + throat "^5.0.0" + +jest-leak-detector@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" + integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== + dependencies: + jest-get-type "^25.2.6" + pretty-format "^25.5.0" jest-leak-detector@^27.0.6: version "27.0.6" @@ -2167,6 +3095,16 @@ jest-leak-detector@^27.0.6: jest-get-type "^27.0.6" pretty-format "^27.0.6" +jest-matcher-utils@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" + integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== + dependencies: + chalk "^3.0.0" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + jest-matcher-utils@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" @@ -2177,6 +3115,20 @@ jest-matcher-utils@^27.0.6: jest-get-type "^27.0.6" pretty-format "^27.0.6" +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + jest-message-util@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5" @@ -2192,6 +3144,13 @@ jest-message-util@^27.0.6: slash "^3.0.0" stack-utils "^2.0.3" +jest-mock@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" + integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== + dependencies: + "@jest/types" "^25.5.0" + jest-mock@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.0.6.tgz#0efdd40851398307ba16778728f6d34d583e3467" @@ -2200,11 +3159,16 @@ jest-mock@^27.0.6: "@jest/types" "^27.0.6" "@types/node" "*" -jest-pnp-resolver@^1.2.2: +jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== +jest-regex-util@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== + jest-regex-util@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" @@ -2219,6 +3183,21 @@ jest-resolve-dependencies@^27.0.6: jest-regex-util "^27.0.6" jest-snapshot "^27.0.6" +jest-resolve@^25.4.0, jest-resolve@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" + integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== + dependencies: + "@jest/types" "^25.5.0" + browser-resolve "^1.11.3" + chalk "^3.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.1" + read-pkg-up "^7.0.1" + realpath-native "^2.0.0" + resolve "^1.17.0" + slash "^3.0.0" + jest-resolve@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff" @@ -2234,6 +3213,31 @@ jest-resolve@^27.0.6: resolve "^1.20.0" slash "^3.0.0" +jest-runner@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" + integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== + dependencies: + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + chalk "^3.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^25.5.4" + jest-docblock "^25.3.0" + jest-haste-map "^25.5.1" + jest-jasmine2 "^25.5.4" + jest-leak-detector "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.1" + jest-runtime "^25.5.4" + jest-util "^25.5.0" + jest-worker "^25.5.0" + source-map-support "^0.5.6" + throat "^5.0.0" + jest-runner@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520" @@ -2262,6 +3266,38 @@ jest-runner@^27.0.6: source-map-support "^0.5.6" throat "^6.0.1" +jest-runtime@^25.5.4: + version "25.5.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" + integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== + dependencies: + "@jest/console" "^25.5.0" + "@jest/environment" "^25.5.0" + "@jest/globals" "^25.5.2" + "@jest/source-map" "^25.5.0" + "@jest/test-result" "^25.5.0" + "@jest/transform" "^25.5.1" + "@jest/types" "^25.5.0" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^25.5.4" + jest-haste-map "^25.5.1" + jest-message-util "^25.5.0" + jest-mock "^25.5.0" + jest-regex-util "^25.2.6" + jest-resolve "^25.5.1" + jest-snapshot "^25.5.1" + jest-util "^25.5.0" + jest-validate "^25.5.0" + realpath-native "^2.0.0" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.3.1" + jest-runtime@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9" @@ -2294,6 +3330,13 @@ jest-runtime@^27.0.6: strip-bom "^4.0.0" yargs "^16.0.3" +jest-serializer@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" + integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== + dependencies: + graceful-fs "^4.2.4" + jest-serializer@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" @@ -2302,6 +3345,27 @@ jest-serializer@^27.0.6: "@types/node" "*" graceful-fs "^4.2.4" +jest-snapshot@^25.5.1: + version "25.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" + integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/prettier" "^1.19.0" + chalk "^3.0.0" + expect "^25.5.0" + graceful-fs "^4.2.4" + jest-diff "^25.5.0" + jest-get-type "^25.2.6" + jest-matcher-utils "^25.5.0" + jest-message-util "^25.5.0" + jest-resolve "^25.5.1" + make-dir "^3.0.0" + natural-compare "^1.4.0" + pretty-format "^25.5.0" + semver "^6.3.0" + jest-snapshot@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf" @@ -2332,7 +3396,18 @@ jest-snapshot@^27.0.6: pretty-format "^27.0.6" semver "^7.3.2" -jest-util@^27.0.6: +jest-util@^25.4.0, jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + make-dir "^3.0.0" + +jest-util@^27.0.0, jest-util@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297" integrity sha512-1JjlaIh+C65H/F7D11GNkGDDZtDfMEM8EBXsvd+l/cxtgQ6QhxuloOaiayt89DxUvDarbVhqI98HhgrM1yliFQ== @@ -2344,6 +3419,18 @@ jest-util@^27.0.6: is-ci "^3.0.0" picomatch "^2.2.3" +jest-validate@^25.4.0, jest-validate@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" + integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== + dependencies: + "@jest/types" "^25.5.0" + camelcase "^5.3.1" + chalk "^3.0.0" + jest-get-type "^25.2.6" + leven "^3.1.0" + pretty-format "^25.5.0" + jest-validate@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6" @@ -2369,6 +3456,14 @@ jest-watcher@^27.0.6: jest-util "^27.0.6" string-length "^4.0.1" +jest-worker@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest-worker@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" @@ -2407,6 +3502,11 @@ js2xmlparser@^4.0.1: dependencies: xmlcreate "^2.0.3" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + jsdoc@^3.6.7: version "3.6.7" resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.7.tgz#00431e376bed7f9de4716c6f15caa80e64492b89" @@ -2427,6 +3527,38 @@ jsdoc@^3.6.7: taffydb "2.6.2" underscore "~1.13.1" +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== + dependencies: + abab "^2.0.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" + array-equal "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.1" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.2.0" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" + xml-name-validator "^3.0.0" + jsdom@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" @@ -2480,15 +3612,25 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@2.x, json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: minimist "^1.2.5" @@ -2506,7 +3648,36 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -kind-of@^6.0.3: +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -2580,16 +3751,28 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: +lodash@4.x, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lolex@^5.0.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" + integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== + dependencies: + "@sinonjs/commons" "^1.7.0" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -2604,6 +3787,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -2611,6 +3799,11 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -2621,6 +3814,13 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + markdown-it-anchor@^5.2.7: version "5.3.0" resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" @@ -2669,6 +3869,33 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + micromatch@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" @@ -2682,7 +3909,7 @@ mime-db@1.48.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== -mime-types@^2.1.12: +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.31" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== @@ -2715,26 +3942,61 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@^1.0.4: +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@1.x, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -2770,11 +4032,25 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -2787,7 +4063,35 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -once@^1.3.0: +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -2830,6 +4134,11 @@ p-each-series@^2.1.0: resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -2880,11 +4189,21 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + parse5@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2895,6 +4214,11 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -2910,7 +4234,12 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picomatch@^2.0.4, picomatch@^2.2.3: +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== @@ -2929,6 +4258,16 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -2939,6 +4278,36 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= +pretty-format@^25.4.0: + version "25.4.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" + integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== + dependencies: + "@jest/types" "^25.4.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^26.0.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + pretty-format@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.6.tgz#ab770c47b2c6f893a21aefc57b75da63ef49a11f" @@ -2962,11 +4331,19 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -psl@^1.1.33: +psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -2977,11 +4354,21 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +react-is@^16.12.0: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -3015,6 +4402,11 @@ readable-stream@3, readable-stream@^3.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +realpath-native@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" + integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== + redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -3023,11 +4415,76 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3069,7 +4526,24 @@ resolve-global@1.0.0, resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve@^1.10.0, resolve@^1.20.0: +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@^1.10.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.17.0, resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -3077,6 +4551,11 @@ resolve@^1.10.0, resolve@^1.20.0: is-core-module "^2.2.0" path-parse "^1.0.6" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -3084,21 +4563,55 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -3107,22 +4620,43 @@ saxes@^5.0.1: xmlchars "^2.2.0" "semver@2 || 3 || 4 || 5": - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.5.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" -semver@7.3.5, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@7.3.5, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +semver@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3130,12 +4664,17 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -3159,6 +4698,47 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + source-map-support@^0.5.6: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -3167,7 +4747,12 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.0: +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -3208,6 +4793,13 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -3220,6 +4812,28 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" + stack-utils@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" @@ -3227,6 +4841,19 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -3263,6 +4890,11 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -3309,7 +4941,7 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-tree@^3.2.4: +symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -3358,6 +4990,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -3385,6 +5022,21 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3392,6 +5044,33 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -3401,6 +5080,13 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -3418,6 +5104,34 @@ trim-off-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= +ts-jest@^27.0.3: + version "27.0.3" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.3.tgz#808492f022296cde19390bb6ad627c8126bf93f8" + integrity sha512-U5rdMjnYam9Ucw+h0QvtNDbc5+88nxt7tbIvqaZUhFrfG4+SkWhMXjejCLVGcpILTPuV+H3W/GZDZrnZFpPeXw== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "^27.0.0" + json5 "2.x" + lodash "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -3484,6 +5198,16 @@ underscore@~1.13.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -3494,6 +5218,14 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -3501,11 +5233,26 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -3528,13 +5275,31 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -w3c-hr-time@^1.0.2: +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" @@ -3542,13 +5307,18 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7: +walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -3559,18 +5329,27 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -3580,7 +5359,14 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which@^2.0.1: +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -3592,6 +5378,15 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -3616,6 +5411,11 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +ws@^7.0.0: + version "7.5.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.2.tgz#09cc8fea3bec1bc5ed44ef51b42f945be36900f6" + integrity sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ== + ws@^7.4.5: version "7.5.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.1.tgz#44fc000d87edb1d9c53e51fbc69a0ac1f6871d66" @@ -3626,7 +5426,7 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.2.0: +xmlchars@^2.1.1, xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== @@ -3643,19 +5443,36 @@ y18n@^5.0.5: yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs@^15.3.1: + version "15.3.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" + integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.1" + yargs@^16.0.3, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" From bd3638db247d0bce9e9f6e4288c0092e211d4db7 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 13:51:56 +0200 Subject: [PATCH 42/44] chore(npm): adapt ESLint to support TypeScript linting --- .eslintrc.yml | 16 +- package.json | 4 +- yarn.lock | 2110 +++++++------------------------------------------ 3 files changed, 304 insertions(+), 1826 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index ac25c77d..567aa4bb 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,13 +1,17 @@ extends: - - eslint:recommended - - google + - 'eslint:recommended' + - 'plugin:@typescript-eslint/recommended' + - 'google' env: node: true jest: true +parser: '@typescript-eslint/parser' parserOptions: ecmaVersion: 2020 rules: - comma-dangle: [error, never] - max-len: [error, 320] - require-jsdoc: 0 - new-cap: 0 + 'comma-dangle': [error, never] + 'max-len': [error, 320] + 'require-jsdoc': 0 + 'new-cap': 0 + '@typescript-eslint/no-explicit-any': 0 + '@typescript-eslint/explicit-function-return-type': 0 diff --git a/package.json b/package.json index 60694c35..5f074194 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "changelog": "commitlint --from=origin/master", "build": "tsc", - "lint": "eslint lib/ test/ index.js", + "lint": "eslint lib/**/*.ts test/**/*.ts index.ts", "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.ts", "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.ts", "compliance": "jest --coverageDirectory reports/coverage-compliance test/compliance/*.spec.ts", @@ -61,6 +61,8 @@ "@commitlint/config-conventional": "^12.1.4", "@types/jest": "^26.0.23", "@types/node": "^15.12.5", + "@typescript-eslint/eslint-plugin": "^4.28.1", + "@typescript-eslint/parser": "^4.28.1", "docdash": "^1.2.0", "eslint": "^7.29.0", "eslint-config-google": "^0.14.0", diff --git a/yarn.lock b/yarn.lock index 28fbe432..a53cf60d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -309,14 +309,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - "@commitlint/cli@^12.1.4": version "12.1.4" resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-12.1.4.tgz#af4d9dd3c0122c7b39a61fa1cd2abbad0422dbe0" @@ -485,17 +477,6 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" - slash "^3.0.0" - "@jest/console@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.0.6.tgz#3eb72ea80897495c3d73dd97aab7f26770e2260f" @@ -543,15 +524,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.5.0.tgz#aa33b0c21a716c65686638e7ef816c0e3a0c7b37" - integrity sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA== - dependencies: - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - "@jest/environment@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.0.6.tgz#ee293fe996db01d7d663b8108fa0e1ff436219d2" @@ -562,17 +534,6 @@ "@types/node" "*" jest-mock "^27.0.6" -"@jest/fake-timers@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.5.0.tgz#46352e00533c024c90c2bc2ad9f2959f7f114185" - integrity sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ== - dependencies: - "@jest/types" "^25.5.0" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - lolex "^5.0.0" - "@jest/fake-timers@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.0.6.tgz#cbad52f3fe6abe30e7acb8cd5fa3466b9588e3df" @@ -585,15 +546,6 @@ jest-mock "^27.0.6" jest-util "^27.0.6" -"@jest/globals@^25.5.2": - version "25.5.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-25.5.2.tgz#5e45e9de8d228716af3257eeb3991cc2e162ca88" - integrity sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/types" "^25.5.0" - expect "^25.5.0" - "@jest/globals@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.0.6.tgz#48e3903f99a4650673d8657334d13c9caf0e8f82" @@ -633,15 +585,6 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.0.0" -"@jest/source-map@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.5.0.tgz#df5c20d6050aa292c2c6d3f0d2c7606af315bd1b" - integrity sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - "@jest/source-map@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" @@ -651,16 +594,6 @@ graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== - dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - "@jest/test-result@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.0.6.tgz#3fa42015a14e4fdede6acd042ce98c7f36627051" @@ -671,17 +604,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.5.4": - version "25.5.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz#9b4e685b36954c38d0f052e596d28161bdc8b737" - integrity sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA== - dependencies: - "@jest/test-result" "^25.5.0" - graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-runner "^25.5.4" - jest-runtime "^25.5.4" - "@jest/test-sequencer@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.0.6.tgz#80a913ed7a1130545b1cd777ff2735dd3af5d34b" @@ -692,28 +614,6 @@ jest-haste-map "^27.0.6" jest-runtime "^27.0.6" -"@jest/transform@^25.5.1": - version "25.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.5.1.tgz#0469ddc17699dd2bf985db55fa0fb9309f5c2db3" - integrity sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^25.5.0" - babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^25.5.1" - jest-regex-util "^25.2.6" - jest-util "^25.5.0" - micromatch "^4.0.2" - pirates "^4.0.1" - realpath-native "^2.0.0" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - "@jest/transform@^27.0.6": version "27.0.6" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.0.6.tgz#189ad7107413208f7600f4719f81dd2f7278cc95" @@ -735,16 +635,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" @@ -767,6 +657,27 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz#94c23db18ee4653e129abd26fb06f870ac9e1ee2" + integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" @@ -786,7 +697,7 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.14" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.14.tgz#faaeefc4185ec71c389f4501ee5ec84b170cc402" integrity sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g== @@ -838,14 +749,6 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - "@types/istanbul-reports@^3.0.0": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" @@ -861,6 +764,11 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/json-schema@^7.0.7": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + "@types/minimist@^1.2.0": version "1.2.1" resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" @@ -881,21 +789,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== - "@types/prettier@^2.1.5": version "2.3.0" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.0.tgz#2e8332cc7363f887d32ec5496b207d26ba8052bb" integrity sha512-hkc1DATxFLQo4VxPDpMH1gCkPpBbpOoJ/4nhuXw4n63/0R6bCpQECj4+K226UJ4JO/eJQz+1mC2I7JsWanAdQw== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - "@types/stack-utils@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" @@ -920,6 +818,75 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.1.tgz#c045e440196ae45464e08e20c38aff5c3a825947" + integrity sha512-9yfcNpDaNGQ6/LQOX/KhUFTR1sCKH+PBr234k6hI9XJ0VP5UqGxap0AnNwBnWFk1MNyWBylJH9ZkzBXC+5akZQ== + dependencies: + "@typescript-eslint/experimental-utils" "4.28.1" + "@typescript-eslint/scope-manager" "4.28.1" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz#3869489dcca3c18523c46018b8996e15948dbadc" + integrity sha512-n8/ggadrZ+uyrfrSEchx3jgODdmcx7MzVM2sI3cTpI/YlfSm0+9HEUaWw3aQn2urL2KYlWYMDgn45iLfjDYB+Q== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.28.1" + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/typescript-estree" "4.28.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/parser@^4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.1.tgz#5181b81658414f47291452c15bf6cd44a32f85bd" + integrity sha512-UjrMsgnhQIIK82hXGaD+MCN8IfORS1CbMdu7VlZbYa8LCZtbZjJA26De4IPQB7XYZbL8gJ99KWNj0l6WD0guJg== + dependencies: + "@typescript-eslint/scope-manager" "4.28.1" + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/typescript-estree" "4.28.1" + debug "^4.3.1" + +"@typescript-eslint/scope-manager@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz#fd3c20627cdc12933f6d98b386940d8d0ce8a991" + integrity sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA== + dependencies: + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/visitor-keys" "4.28.1" + +"@typescript-eslint/types@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.1.tgz#d0f2ecbef3684634db357b9bbfc97b94b828f83f" + integrity sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg== + +"@typescript-eslint/typescript-estree@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz#af882ae41740d1f268e38b4d0fad21e7e8d86a81" + integrity sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ== + dependencies: + "@typescript-eslint/types" "4.28.1" + "@typescript-eslint/visitor-keys" "4.28.1" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz#162a515ee255f18a6068edc26df793cdc1ec9157" + integrity sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg== + dependencies: + "@typescript-eslint/types" "4.28.1" + eslint-visitor-keys "^2.0.0" + JSONStream@^1.0.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -928,19 +895,11 @@ JSONStream@^1.0.4: jsonparse "^1.2.0" through ">=2.2.7 <3" -abab@^2.0.0, abab@^2.0.3, abab@^2.0.5: +abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -954,22 +913,12 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.0.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== @@ -986,7 +935,7 @@ agent-base@6: dependencies: debug "4" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1042,14 +991,6 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" @@ -1065,58 +1006,21 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -1132,35 +1036,6 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-jest@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.5.1.tgz#bc2e6101f849d6f6aec09720ffc7bc5332e62853" - integrity sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ== - dependencies: - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.5.0" - chalk "^3.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - babel-jest@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.0.6.tgz#e99c6e0577da2655118e3608b68761a5a69bd0d8" @@ -1186,15 +1061,6 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz#129c80ba5c7fc75baf3a45b93e2e372d57ca2677" - integrity sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__traverse" "^7.0.6" - babel-plugin-jest-hoist@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" @@ -1205,23 +1071,6 @@ babel-plugin-jest-hoist@^27.0.6: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^0.1.2: - version "0.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz#826f1f8e7245ad534714ba001f84f7e906c3b615" - integrity sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" @@ -1240,14 +1089,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz#c1d7f191829487a907764c65307faa0e66590b49" - integrity sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw== - dependencies: - babel-plugin-jest-hoist "^25.5.0" - babel-preset-current-node-syntax "^0.1.2" - babel-preset-jest@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" @@ -1261,26 +1102,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -1294,22 +1115,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - braces@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -1322,13 +1127,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - browserslist@^4.16.6: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" @@ -1359,21 +1157,6 @@ buffer-from@1.x, 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== -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1403,18 +1186,6 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz#cd3fae47eb3d7691692b406568d7a3e5b23c7598" integrity sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - catharsis@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" @@ -1431,14 +1202,6 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chalk@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" @@ -1452,11 +1215,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - ci-info@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" @@ -1467,25 +1225,6 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.1.tgz#2fd46d9906a126965aa541345c499aaa18e8cd73" integrity sha512-jVamGdJPDeuQilKhvVn1h3knuMOZzr8QDnpk+M9aMlCaMkTDd6fBWPhiDqFvFZ07pL0liqabAiuy8SY4jGHeaw== -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1505,14 +1244,6 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1542,7 +1273,7 @@ colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -1557,11 +1288,6 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1604,16 +1330,6 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - cosmiconfig@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" @@ -1625,17 +1341,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1645,7 +1350,7 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.1, cssom@^0.4.4: +cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== @@ -1655,7 +1360,7 @@ cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.0.0, cssstyle@^2.3.0: +cssstyle@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== @@ -1667,22 +1372,6 @@ dargs@^7.0.0: resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -1699,13 +1388,6 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - decamelize-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -1714,7 +1396,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.1.0, decamelize@^1.2.0: +decamelize@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1724,10 +1406,10 @@ decimal.js@^10.2.1: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" @@ -1739,28 +1421,6 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1771,11 +1431,6 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -1786,6 +1441,13 @@ diff-sequences@^27.0.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + docdash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/docdash/-/docdash-1.2.0.tgz#f99dde5b8a89aa4ed083a3150383e042d06c7f49" @@ -1798,13 +1460,6 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -1819,14 +1474,6 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - electron-to-chromium@^1.3.723: version "1.3.762" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.762.tgz#3fa4e3bcbda539b50e3aa23041627063a5cffe61" @@ -1842,13 +1489,6 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -1888,18 +1528,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.11.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -1932,7 +1560,19 @@ eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== + +eslint-visitor-keys@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== @@ -2015,7 +1655,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -2030,24 +1670,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -2068,31 +1690,6 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" - integrity sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA== - dependencies: - "@jest/types" "^25.5.0" - ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-regex-util "^25.2.6" - expect@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/expect/-/expect-27.0.6.tgz#a4d74fbe27222c718fff68ef49d78e26a8fd4c05" @@ -2105,55 +1702,22 @@ expect@^27.0.6: jest-message-util "^27.0.6" jest-regex-util "^27.0.6" -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-glob@^3.1.1: + version "3.2.6" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.6.tgz#434dd9529845176ea049acc9343e8282765c6e1a" + integrity sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" @@ -2164,6 +1728,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" + integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -2178,16 +1749,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -2224,16 +1785,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -2243,22 +1794,6 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - fs-extra@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -2274,7 +1809,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.1.2, fsevents@^2.3.2: +fsevents@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -2294,7 +1829,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -2304,30 +1839,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - git-raw-commits@^2.0.0: version "2.0.10" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" @@ -2346,10 +1862,21 @@ glob-parent@^5.1.2: dependencies: is-glob "^4.0.1" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== +glob@^7.1.1, glob@^7.1.2, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -2377,24 +1904,23 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -2410,37 +1936,6 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -2460,13 +1955,6 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -2488,15 +1976,6 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" @@ -2529,6 +2008,11 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -2573,42 +2057,11 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - is-ci@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" @@ -2623,50 +2076,6 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2689,13 +2098,6 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -2711,23 +2113,11 @@ is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" @@ -2740,43 +2130,16 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" @@ -2827,6 +2190,31 @@ jest-changed-files@^27.0.6: execa "^5.0.0" throat "^6.0.1" +jest-circus@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.0.6.tgz#dd4df17c4697db6a2c232aaad4e9cec666926668" + integrity sha512-OJlsz6BBeX9qR+7O9lXefWoc2m9ZqcZ5Ohlzz0pTEAG4xMiZUJoacY8f4YDHxgk0oKYxj277AfOk9w6hZYvi1Q== + dependencies: + "@jest/environment" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.0.6" + is-generator-fn "^2.0.0" + jest-each "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-runtime "^27.0.6" + jest-snapshot "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + jest-cli@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.0.6.tgz#d021e5f4d86d6a212450d4c7b86cb219f1e6864f" @@ -2845,31 +2233,6 @@ jest-cli@^27.0.6: prompts "^2.0.1" yargs "^16.0.3" -jest-config@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.5.4.tgz#38e2057b3f976ef7309b2b2c8dcd2a708a67f02c" - integrity sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.5.4" - "@jest/types" "^25.5.0" - babel-jest "^25.5.1" - chalk "^3.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^25.5.0" - jest-environment-node "^25.5.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.5.4" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - micromatch "^4.0.2" - pretty-format "^25.5.0" - realpath-native "^2.0.0" - jest-config@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.0.6.tgz#119fb10f149ba63d9c50621baa4f1f179500277f" @@ -2897,16 +2260,6 @@ jest-config@^27.0.6: micromatch "^4.0.4" pretty-format "^27.0.6" -jest-diff@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - jest-diff@^26.0.0: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" @@ -2927,13 +2280,6 @@ jest-diff@^27.0.6: jest-get-type "^27.0.6" pretty-format "^27.0.6" -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== - dependencies: - detect-newline "^3.0.0" - jest-docblock@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" @@ -2941,28 +2287,16 @@ jest-docblock@^27.0.6: dependencies: detect-newline "^3.0.0" -jest-each@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.5.0.tgz#0c3c2797e8225cb7bec7e4d249dcd96b934be516" - integrity sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.5.0" - pretty-format "^25.5.0" - -jest-environment-jsdom@^25.4.0, jest-environment-jsdom@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz#dcbe4da2ea997707997040ecf6e2560aec4e9834" - integrity sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - jsdom "^15.2.1" +jest-each@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.0.6.tgz#cee117071b04060158dc8d9a66dc50ad40ef453b" + integrity sha512-m6yKcV3bkSWrUIjxkE9OC0mhBZZdhovIW5ergBYirqnkLXkyEn3oUUF/QZgyecA1cF1QFyTE8bRRl8Tfg1pfLA== + dependencies: + "@jest/types" "^27.0.6" + chalk "^4.0.0" + jest-get-type "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" jest-environment-jsdom@^27.0.6: version "27.0.6" @@ -2977,18 +2311,6 @@ jest-environment-jsdom@^27.0.6: jest-util "^27.0.6" jsdom "^16.6.0" -jest-environment-node@^25.4.0, jest-environment-node@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.5.0.tgz#0f55270d94804902988e64adca37c6ce0f7d07a1" - integrity sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA== - dependencies: - "@jest/environment" "^25.5.0" - "@jest/fake-timers" "^25.5.0" - "@jest/types" "^25.5.0" - jest-mock "^25.5.0" - jest-util "^25.5.0" - semver "^6.3.0" - jest-environment-node@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.0.6.tgz#a6699b7ceb52e8d68138b9808b0c404e505f3e07" @@ -3001,11 +2323,6 @@ jest-environment-node@^27.0.6: jest-mock "^27.0.6" jest-util "^27.0.6" -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - jest-get-type@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" @@ -3016,26 +2333,6 @@ jest-get-type@^27.0.6: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== -jest-haste-map@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.5.1.tgz#1df10f716c1d94e60a1ebf7798c9fb3da2620943" - integrity sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ== - dependencies: - "@jest/types" "^25.5.0" - "@types/graceful-fs" "^4.1.2" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-serializer "^25.5.0" - jest-util "^25.5.0" - jest-worker "^25.5.0" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - which "^2.0.2" - optionalDependencies: - fsevents "^2.1.2" - jest-haste-map@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.0.6.tgz#4683a4e68f6ecaa74231679dca237279562c8dc7" @@ -3056,36 +2353,29 @@ jest-haste-map@^27.0.6: optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^25.4.0, jest-jasmine2@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz#66ca8b328fb1a3c5364816f8958f6970a8526968" - integrity sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ== +jest-jasmine2@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.0.6.tgz#fd509a9ed3d92bd6edb68a779f4738b100655b37" + integrity sha512-cjpH2sBy+t6dvCeKBsHpW41mjHzXgsavaFMp+VWRf0eR4EW8xASk1acqmljFtK2DgyIECMv2yCdY41r2l1+4iA== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.5.0" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" + "@jest/environment" "^27.0.6" + "@jest/source-map" "^27.0.6" + "@jest/test-result" "^27.0.6" + "@jest/types" "^27.0.6" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^25.5.0" + expect "^27.0.6" is-generator-fn "^2.0.0" - jest-each "^25.5.0" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-runtime "^25.5.4" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - pretty-format "^25.5.0" - throat "^5.0.0" - -jest-leak-detector@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz#2291c6294b0ce404241bb56fe60e2d0c3e34f0bb" - integrity sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA== - dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.5.0" + jest-each "^27.0.6" + jest-matcher-utils "^27.0.6" + jest-message-util "^27.0.6" + jest-runtime "^27.0.6" + jest-snapshot "^27.0.6" + jest-util "^27.0.6" + pretty-format "^27.0.6" + throat "^6.0.1" jest-leak-detector@^27.0.6: version "27.0.6" @@ -3095,16 +2385,6 @@ jest-leak-detector@^27.0.6: jest-get-type "^27.0.6" pretty-format "^27.0.6" -jest-matcher-utils@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz#fbc98a12d730e5d2453d7f1ed4a4d948e34b7867" - integrity sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw== - dependencies: - chalk "^3.0.0" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - jest-matcher-utils@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.0.6.tgz#2a8da1e86c620b39459f4352eaa255f0d43e39a9" @@ -3115,20 +2395,6 @@ jest-matcher-utils@^27.0.6: jest-get-type "^27.0.6" pretty-format "^27.0.6" -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^1.0.1" - jest-message-util@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.0.6.tgz#158bcdf4785706492d164a39abca6a14da5ab8b5" @@ -3142,14 +2408,7 @@ jest-message-util@^27.0.6: micromatch "^4.0.4" pretty-format "^27.0.6" slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.5.0.tgz#a91a54dabd14e37ecd61665d6b6e06360a55387a" - integrity sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA== - dependencies: - "@jest/types" "^25.5.0" + stack-utils "^2.0.3" jest-mock@^27.0.6: version "27.0.6" @@ -3159,16 +2418,11 @@ jest-mock@^27.0.6: "@jest/types" "^27.0.6" "@types/node" "*" -jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: +jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== - jest-regex-util@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" @@ -3183,21 +2437,6 @@ jest-resolve-dependencies@^27.0.6: jest-regex-util "^27.0.6" jest-snapshot "^27.0.6" -jest-resolve@^25.4.0, jest-resolve@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.5.1.tgz#0e6fbcfa7c26d2a5fe8f456088dc332a79266829" - integrity sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ== - dependencies: - "@jest/types" "^25.5.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.1" - read-pkg-up "^7.0.1" - realpath-native "^2.0.0" - resolve "^1.17.0" - slash "^3.0.0" - jest-resolve@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.0.6.tgz#e90f436dd4f8fbf53f58a91c42344864f8e55bff" @@ -3213,31 +2452,6 @@ jest-resolve@^27.0.6: resolve "^1.20.0" slash "^3.0.0" -jest-runner@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.5.4.tgz#ffec5df3875da5f5c878ae6d0a17b8e4ecd7c71d" - integrity sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg== - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-docblock "^25.3.0" - jest-haste-map "^25.5.1" - jest-jasmine2 "^25.5.4" - jest-leak-detector "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - jest-runtime "^25.5.4" - jest-util "^25.5.0" - jest-worker "^25.5.0" - source-map-support "^0.5.6" - throat "^5.0.0" - jest-runner@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.0.6.tgz#1325f45055539222bbc7256a6976e993ad2f9520" @@ -3266,38 +2480,6 @@ jest-runner@^27.0.6: source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^25.5.4: - version "25.5.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.5.4.tgz#dc981fe2cb2137abcd319e74ccae7f7eeffbfaab" - integrity sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ== - dependencies: - "@jest/console" "^25.5.0" - "@jest/environment" "^25.5.0" - "@jest/globals" "^25.5.2" - "@jest/source-map" "^25.5.0" - "@jest/test-result" "^25.5.0" - "@jest/transform" "^25.5.1" - "@jest/types" "^25.5.0" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^25.5.4" - jest-haste-map "^25.5.1" - jest-message-util "^25.5.0" - jest-mock "^25.5.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.5.1" - jest-snapshot "^25.5.1" - jest-util "^25.5.0" - jest-validate "^25.5.0" - realpath-native "^2.0.0" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.3.1" - jest-runtime@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.0.6.tgz#45877cfcd386afdd4f317def551fc369794c27c9" @@ -3330,13 +2512,6 @@ jest-runtime@^27.0.6: strip-bom "^4.0.0" yargs "^16.0.3" -jest-serializer@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.5.0.tgz#a993f484e769b4ed54e70e0efdb74007f503072b" - integrity sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA== - dependencies: - graceful-fs "^4.2.4" - jest-serializer@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" @@ -3345,27 +2520,6 @@ jest-serializer@^27.0.6: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^25.5.1: - version "25.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.5.1.tgz#1a2a576491f9961eb8d00c2e5fd479bc28e5ff7f" - integrity sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.5.0" - graceful-fs "^4.2.4" - jest-diff "^25.5.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.5.0" - jest-message-util "^25.5.0" - jest-resolve "^25.5.1" - make-dir "^3.0.0" - natural-compare "^1.4.0" - pretty-format "^25.5.0" - semver "^6.3.0" - jest-snapshot@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.0.6.tgz#f4e6b208bd2e92e888344d78f0f650bcff05a4bf" @@ -3396,17 +2550,6 @@ jest-snapshot@^27.0.6: pretty-format "^27.0.6" semver "^7.3.2" -jest-util@^25.4.0, jest-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - make-dir "^3.0.0" - jest-util@^27.0.0, jest-util@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.0.6.tgz#e8e04eec159de2f4d5f57f795df9cdc091e50297" @@ -3419,18 +2562,6 @@ jest-util@^27.0.0, jest-util@^27.0.6: is-ci "^3.0.0" picomatch "^2.2.3" -jest-validate@^25.4.0, jest-validate@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.5.0.tgz#fb4c93f332c2e4cf70151a628e58a35e459a413a" - integrity sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ== - dependencies: - "@jest/types" "^25.5.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" - leven "^3.1.0" - pretty-format "^25.5.0" - jest-validate@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.0.6.tgz#930a527c7a951927df269f43b2dc23262457e2a6" @@ -3456,14 +2587,6 @@ jest-watcher@^27.0.6: jest-util "^27.0.6" string-length "^4.0.1" -jest-worker@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" - integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - jest-worker@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" @@ -3502,11 +2625,6 @@ js2xmlparser@^4.0.1: dependencies: xmlcreate "^2.0.3" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsdoc@^3.6.7: version "3.6.7" resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.7.tgz#00431e376bed7f9de4716c6f15caa80e64492b89" @@ -3527,38 +2645,6 @@ jsdoc@^3.6.7: taffydb "2.6.2" underscore "~1.13.1" -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" - xml-name-validator "^3.0.0" - jsdom@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" @@ -3612,21 +2698,11 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - json5@2.x, json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -3648,36 +2724,7 @@ jsonparse@^1.2.0: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: +kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -3751,11 +2798,6 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -3766,13 +2808,6 @@ lodash@4.x, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -3799,11 +2834,6 @@ makeerror@1.0.x: dependencies: tmpl "1.0.x" -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - map-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -3814,13 +2844,6 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - markdown-it-anchor@^5.2.7: version "5.3.0" resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" @@ -3869,32 +2892,10 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromatch@^4.0.4: version "4.0.4" @@ -3909,7 +2910,7 @@ mime-db@1.48.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== -mime-types@^2.1.12, mime-types@~2.1.19: +mime-types@^2.1.12: version "2.1.31" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== @@ -3942,61 +2943,26 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - mkdirp@1.x, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -4032,25 +2998,11 @@ normalize-package-data@^3.0.0: semver "^7.3.4" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -4063,35 +3015,7 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -4134,11 +3058,6 @@ p-each-series@^2.1.0: resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4189,21 +3108,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - parse5@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -4214,11 +3123,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" @@ -4234,12 +3138,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.3: version "2.3.0" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== @@ -4258,16 +3157,6 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -4278,26 +3167,6 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -pretty-format@^25.4.0: - version "25.4.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.4.0.tgz#c58801bb5c4926ff4a677fe43f9b8b99812c7830" - integrity sha512-PI/2dpGjXK5HyXexLPZU/jw5T9Q6S1YVXxxVxco+LIqzUFHXIbKZKdUVt7GcX7QUCr31+3fzhi4gN4/wUYPVxQ== - dependencies: - "@jest/types" "^25.4.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" @@ -4331,19 +3200,11 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -4354,21 +3215,16 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== quick-lru@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - react-is@^17.0.1: version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -4402,11 +3258,6 @@ readable-stream@3, readable-stream@^3.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -4415,76 +3266,11 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexpp@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -4526,16 +3312,6 @@ resolve-global@1.0.0, resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - resolve@^1.10.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -4543,7 +3319,7 @@ resolve@^1.10.0: dependencies: path-parse "^1.0.6" -resolve@^1.17.0, resolve@^1.20.0: +resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -4551,10 +3327,10 @@ resolve@^1.17.0, resolve@^1.20.0: is-core-module "^2.2.0" path-parse "^1.0.6" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" @@ -4563,55 +3339,28 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - saxes@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" @@ -4623,40 +3372,18 @@ saxes@^5.0.1: version "5.5.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" -semver@7.3.5, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@7.3.5, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" -semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -4664,17 +3391,12 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -4698,47 +3420,6 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - source-map-support@^0.5.6: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" @@ -4747,12 +3428,7 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -4793,13 +3469,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - split2@^3.0.0: version "3.2.2" resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" @@ -4812,28 +3481,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - stack-utils@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" @@ -4841,19 +3488,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -4890,11 +3524,6 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -4941,7 +3570,7 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-tree@^3.2.2, symbol-tree@^3.2.4: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== @@ -4990,11 +3619,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -5022,21 +3646,6 @@ to-fast-properties@^2.0.0: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -5044,33 +3653,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -5080,13 +3662,6 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -5120,17 +3695,17 @@ ts-jest@^27.0.3: semver "7.x" yargs-parser "20.x" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -5198,16 +3773,6 @@ underscore@~1.13.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -5218,14 +3783,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -5233,26 +3790,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -5275,31 +3817,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.1, w3c-hr-time@^1.0.2: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - w3c-xmlserializer@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" @@ -5307,18 +3831,13 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7, walker@~1.0.5: +walker@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -5329,27 +3848,18 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - whatwg-url@^8.0.0, whatwg-url@^8.5.0: version "8.7.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" @@ -5359,14 +3869,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: tr46 "^2.1.0" webidl-conversions "^6.1.0" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== @@ -5378,15 +3881,6 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -5411,11 +3905,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.0.0: - version "7.5.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.2.tgz#09cc8fea3bec1bc5ed44ef51b42f945be36900f6" - integrity sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ== - ws@^7.4.5: version "7.5.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.1.tgz#44fc000d87edb1d9c53e51fbc69a0ac1f6871d66" @@ -5426,7 +3915,7 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1, xmlchars@^2.2.0: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== @@ -5456,23 +3945,6 @@ yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - yargs@^16.0.3, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" From 645d3356ea346b2e544dd94df536ae852e3f3642 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 13:52:57 +0200 Subject: [PATCH 43/44] style: adapt all files to new linting rules --- lib/client.ts | 6 +++--- lib/services/add-list-element.ts | 2 +- lib/services/alarm-acknowledge.ts | 2 +- lib/services/alarm-summary.ts | 2 +- lib/services/atomic-read-file.ts | 2 +- lib/services/atomic-write-file.ts | 2 +- lib/services/cov-notify.ts | 2 +- lib/services/create-object.ts | 4 ++-- lib/services/delete-object.ts | 2 +- lib/services/device-communication-control.ts | 2 +- lib/services/error.ts | 2 +- lib/services/event-information.ts | 2 +- lib/services/event-notify-data.ts | 2 +- lib/services/get-enrollment-summary.ts | 4 ++-- lib/services/get-event-information.ts | 2 +- lib/services/i-am-broadcast.ts | 2 +- lib/services/i-have-broadcast.ts | 2 +- lib/services/life-safety-operation.ts | 2 +- lib/services/private-transfer.ts | 2 +- lib/services/read-property-multiple.ts | 2 +- lib/services/read-property.ts | 2 +- lib/services/read-range.ts | 2 +- lib/services/reinitialize-device.ts | 2 +- lib/services/subscribe-cov.ts | 2 +- lib/services/subscribe-property.ts | 2 +- lib/services/time-sync.ts | 4 ++-- lib/services/who-has.ts | 2 +- lib/services/who-is.ts | 2 +- lib/services/write-property-multiple.ts | 2 +- lib/services/write-property.ts | 2 +- test/compliance/who-is.spec.ts | 4 ++-- test/integration/acknowledge-alarm.spec.ts | 2 +- test/integration/add-list-element.spec.ts | 2 +- .../confirmed-event-notification.spec.ts | 2 +- .../confirmed-private-transfer.spec.ts | 2 +- test/integration/create-object.spec.ts | 2 +- test/integration/delete-object.spec.ts | 2 +- .../device-communication-control.spec.ts | 2 +- test/integration/get-alarm-summary.spec.ts | 2 +- test/integration/get-enrollment-summary.spec.ts | 2 +- test/integration/get-event-information.spec.ts | 2 +- test/integration/read-file.spec.ts | 2 +- test/integration/read-property-multiple.spec.ts | 10 +++++----- test/integration/read-property.spec.ts | 2 +- test/integration/read-range.spec.ts | 2 +- test/integration/reinitialize-sevice.spec.ts | 2 +- test/integration/remove-list-element.spec.ts | 2 +- test/integration/subscribe-cov.spec.ts | 2 +- test/integration/subscribe-property.spec.ts | 2 +- test/integration/time-sync-utc.spec.ts | 2 +- test/integration/time-sync.spec.ts | 2 +- .../unconfirmed-event-notification.spec.ts | 2 +- .../unconfirmed-private-transfer.spec.ts | 2 +- test/integration/utils.ts | 16 ++++++++-------- test/integration/who-is.spec.ts | 2 +- test/integration/write-file.spec.ts | 2 +- test/integration/write-property-multiple.spec.ts | 2 +- test/integration/write-property.spec.ts | 2 +- test/unit/npdu.spec.ts | 6 +++--- test/unit/service-get-enrollment-summary.spec.ts | 4 ++-- test/unit/service-time-sync.spec.ts | 2 +- 61 files changed, 81 insertions(+), 81 deletions(-) diff --git a/lib/client.ts b/lib/client.ts index dcebab28..8fffe298 100644 --- a/lib/client.ts +++ b/lib/client.ts @@ -238,7 +238,7 @@ export class Client extends EventEmitter { } else if (service === baEnum.ConfirmedServiceChoice.GET_ALARM_SUMMARY) { this.emit('getAlarmSummary', {address: address, invokeId: invokeId}); } else if (service === baEnum.ConfirmedServiceChoice.GET_ENROLLMENT_SUMMARY) { - const result = baServices.getEnrollmentSummary.decode(buffer, offset, length); + const result = baServices.getEnrollmentSummary.decode(buffer, offset); if (!result) return debug('Received invalid getEntrollmentSummary message'); this.emit('getEntrollmentSummary', {address: address, invokeId: invokeId, request: result}); } else if (service === baEnum.ConfirmedServiceChoice.GET_EVENT_INFORMATION) { @@ -319,7 +319,7 @@ export class Client extends EventEmitter { if (!result) return debug('Received invalid covNotifyUnconfirmed message'); this.emit('covNotifyUnconfirmed', {address: address, request: result}); } else if (service === baEnum.UnconfirmedServiceChoice.TIME_SYNCHRONIZATION) { - const result = baServices.timeSync.decode(buffer, offset, length); + const result = baServices.timeSync.decode(buffer, offset); if (!result) return debug('Received invalid TimeSync message'); /** @@ -338,7 +338,7 @@ export class Client extends EventEmitter { */ this.emit('timeSync', {address: address, dateTime: result.value}); } else if (service === baEnum.UnconfirmedServiceChoice.UTC_TIME_SYNCHRONIZATION) { - const result = baServices.timeSync.decode(buffer, offset, length); + const result = baServices.timeSync.decode(buffer, offset); if (!result) return debug('Received invalid TimeSyncUTC message'); /** diff --git a/lib/services/add-list-element.ts b/lib/services/add-list-element.ts index 40288cff..8104d443 100644 --- a/lib/services/add-list-element.ts +++ b/lib/services/add-list-element.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, propertyId: number, arrayIndex: number, values: any) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); diff --git a/lib/services/alarm-acknowledge.ts b/lib/services/alarm-acknowledge.ts index 8708a913..2b591481 100644 --- a/lib/services/alarm-acknowledge.ts +++ b/lib/services/alarm-acknowledge.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, ackProcessId: number, eventObjectId: BACNetObjectID, eventStateAcknowledged: number, ackSource: string, eventTimeStamp: any, ackTimeStamp: any) => { baAsn1.encodeContextUnsigned(buffer, 0, ackProcessId); diff --git a/lib/services/alarm-summary.ts b/lib/services/alarm-summary.ts index 2ceead11..5c78785d 100644 --- a/lib/services/alarm-summary.ts +++ b/lib/services/alarm-summary.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer, BACNetAlarm } from '../types'; +import {EncodeBuffer, BACNetAlarm} from '../types'; export const encode = (buffer: EncodeBuffer, alarms: BACNetAlarm[]) => { alarms.forEach((alarm) => { diff --git a/lib/services/atomic-read-file.ts b/lib/services/atomic-read-file.ts index c7025e45..79d55704 100644 --- a/lib/services/atomic-read-file.ts +++ b/lib/services/atomic-read-file.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, isStream: boolean, objectId: BACNetObjectID, position: number, count: number) => { baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); diff --git a/lib/services/atomic-write-file.ts b/lib/services/atomic-write-file.ts index 59d71591..79fb7cd1 100644 --- a/lib/services/atomic-write-file.ts +++ b/lib/services/atomic-write-file.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { BACNetObjectID, EncodeBuffer } from '../types'; +import {BACNetObjectID, EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, isStream: boolean, objectId: BACNetObjectID, position: number, blocks: number[][]) => { baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); diff --git a/lib/services/cov-notify.ts b/lib/services/cov-notify.ts index b7fa5619..a77e512a 100644 --- a/lib/services/cov-notify.ts +++ b/lib/services/cov-notify.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, subscriberProcessId: number, initiatingDeviceId: number, monitoredObjectId: BACNetObjectID, timeRemaining: number, values: any[]) => { baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId); diff --git a/lib/services/create-object.ts b/lib/services/create-object.ts index ec563a03..cafd3d05 100644 --- a/lib/services/create-object.ts +++ b/lib/services/create-object.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, values: any[]) => { baAsn1.encodeOpeningTag(buffer, 0); @@ -30,7 +30,7 @@ export const decode = (buffer: Buffer, offset: number, apduLen: number) => { let len = 0; let result: any; let decodedValue: any; - let objectId: {type: number, instance: number}; + let objectId: {type: number; instance: number}; const valueList = []; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); len += result.len; diff --git a/lib/services/delete-object.ts b/lib/services/delete-object.ts index 99f2d866..b7d95e7d 100644 --- a/lib/services/delete-object.ts +++ b/lib/services/delete-object.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID) => { baAsn1.encodeApplicationObjectId(buffer, objectId.type, objectId.instance); diff --git a/lib/services/device-communication-control.ts b/lib/services/device-communication-control.ts index ee81195b..730819df 100644 --- a/lib/services/device-communication-control.ts +++ b/lib/services/device-communication-control.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, timeDuration: number, enableDisable: number, password: string) => { if (timeDuration > 0) { diff --git a/lib/services/error.ts b/lib/services/error.ts index fcd7f216..ddd903de 100644 --- a/lib/services/error.ts +++ b/lib/services/error.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, errorClass: number, errorCode: number) => { baAsn1.encodeApplicationEnumerated(buffer, errorClass); diff --git a/lib/services/event-information.ts b/lib/services/event-information.ts index 75930305..eba7efd9 100644 --- a/lib/services/event-information.ts +++ b/lib/services/event-information.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetEvent } from '../types'; +import {EncodeBuffer, BACNetEvent} from '../types'; export const encode = (buffer: EncodeBuffer, events: BACNetEvent[], moreEvents: boolean) => { baAsn1.encodeOpeningTag(buffer, 0); diff --git a/lib/services/event-notify-data.ts b/lib/services/event-notify-data.ts index 6bdf1256..bc601ad1 100644 --- a/lib/services/event-notify-data.ts +++ b/lib/services/event-notify-data.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, data: any) => { baAsn1.encodeContextUnsigned(buffer, 0, data.processId); diff --git a/lib/services/get-enrollment-summary.ts b/lib/services/get-enrollment-summary.ts index b754eb70..d79b1154 100644 --- a/lib/services/get-enrollment-summary.ts +++ b/lib/services/get-enrollment-summary.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, acknowledgmentFilter: number, enrollmentFilter?: any, eventStateFilter?: number, eventTypeFilter?: number, priorityFilter?: any, notificationClassFilter?: number) => { baAsn1.encodeContextEnumerated(buffer, 0, acknowledgmentFilter); @@ -37,7 +37,7 @@ export const encode = (buffer: EncodeBuffer, acknowledgmentFilter: number, enrol } }; -export const decode = (buffer: Buffer, offset: number, apduLen: number) => { +export const decode = (buffer: Buffer, offset: number) => { let len = 0; let result: any; let decodedValue: any; diff --git a/lib/services/get-event-information.ts b/lib/services/get-event-information.ts index e11eee1e..ba526038 100644 --- a/lib/services/get-event-information.ts +++ b/lib/services/get-event-information.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID, BACNetEventInformation } from '../types'; +import {EncodeBuffer, BACNetObjectID, BACNetEventInformation} from '../types'; export const encode = (buffer: EncodeBuffer, lastReceivedObjectId: BACNetObjectID) => { baAsn1.encodeContextObjectId(buffer, 0, lastReceivedObjectId.type, lastReceivedObjectId.instance); diff --git a/lib/services/i-am-broadcast.ts b/lib/services/i-am-broadcast.ts index f43f372d..99a08c8c 100644 --- a/lib/services/i-am-broadcast.ts +++ b/lib/services/i-am-broadcast.ts @@ -1,6 +1,6 @@ 'use strict'; -import { EncodeBuffer } from "../types"; +import {EncodeBuffer} from '../types'; import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; diff --git a/lib/services/i-have-broadcast.ts b/lib/services/i-have-broadcast.ts index 153f196f..19839430 100644 --- a/lib/services/i-have-broadcast.ts +++ b/lib/services/i-have-broadcast.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, deviceId: BACNetObjectID, objectId: BACNetObjectID, objectName: string) => { baAsn1.encodeApplicationObjectId(buffer, deviceId.type, deviceId.instance); diff --git a/lib/services/life-safety-operation.ts b/lib/services/life-safety-operation.ts index 1ee4d8b8..582b9538 100644 --- a/lib/services/life-safety-operation.ts +++ b/lib/services/life-safety-operation.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, processId: number, requestingSource: string, operation: number, targetObjectId: BACNetObjectID) => { baAsn1.encodeContextUnsigned(buffer, 0, processId); diff --git a/lib/services/private-transfer.ts b/lib/services/private-transfer.ts index b9f60839..0fcff622 100644 --- a/lib/services/private-transfer.ts +++ b/lib/services/private-transfer.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, vendorId: number, serviceNumber: number, data: number[]) => { baAsn1.encodeContextUnsigned(buffer, 0, vendorId); diff --git a/lib/services/read-property-multiple.ts b/lib/services/read-property-multiple.ts index 44fec341..25f2a40f 100644 --- a/lib/services/read-property-multiple.ts +++ b/lib/services/read-property-multiple.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, properties: any[]) => { properties.forEach((value) => baAsn1.encodeReadAccessSpecification(buffer, value)); diff --git a/lib/services/read-property.ts b/lib/services/read-property.ts index 4dfd63c3..9aca2104 100644 --- a/lib/services/read-property.ts +++ b/lib/services/read-property.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, objectType: number, objectInstance: number, propertyId: number, arrayIndex: number) => { if (objectType <= baEnum.ASN1_MAX_OBJECT) { diff --git a/lib/services/read-range.ts b/lib/services/read-range.ts index 7630097e..e5ba6766 100644 --- a/lib/services/read-range.ts +++ b/lib/services/read-range.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID, BACNetBitString } from '../types'; +import {EncodeBuffer, BACNetObjectID, BACNetBitString} from '../types'; export const encode = (buffer: EncodeBuffer, objectId: BACNetObjectID, propertyId: number, arrayIndex: number, requestType: number, position: number, time: Date, count: number) => { baAsn1.encodeContextObjectId(buffer, 0, objectId.type, objectId.instance); diff --git a/lib/services/reinitialize-device.ts b/lib/services/reinitialize-device.ts index 62e1518c..3fb2ddd2 100644 --- a/lib/services/reinitialize-device.ts +++ b/lib/services/reinitialize-device.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, state: number, password: string) => { baAsn1.encodeContextEnumerated(buffer, 0, state); diff --git a/lib/services/subscribe-cov.ts b/lib/services/subscribe-cov.ts index bd472417..175d9426 100644 --- a/lib/services/subscribe-cov.ts +++ b/lib/services/subscribe-cov.ts @@ -1,7 +1,7 @@ 'use strict'; import * as baAsn1 from '../asn1'; -import { EncodeBuffer, BACNetObjectID } from '../types'; +import {EncodeBuffer, BACNetObjectID} from '../types'; export const encode = (buffer: EncodeBuffer, subscriberProcessId: number, monitoredObjectId: BACNetObjectID, cancellationRequest: boolean, issueConfirmedNotifications: boolean, lifetime: number) => { baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId); diff --git a/lib/services/subscribe-property.ts b/lib/services/subscribe-property.ts index 3e1b2639..c00431ee 100644 --- a/lib/services/subscribe-property.ts +++ b/lib/services/subscribe-property.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID, BACNetPropertyID } from '../types'; +import {EncodeBuffer, BACNetObjectID, BACNetPropertyID} from '../types'; export const encode = (buffer: EncodeBuffer, subscriberProcessId: number, monitoredObjectId: BACNetObjectID, cancellationRequest: boolean, issueConfirmedNotifications: boolean, lifetime: number, monitoredProperty: BACNetPropertyID, covIncrementPresent: boolean, covIncrement: number) => { baAsn1.encodeContextUnsigned(buffer, 0, subscriberProcessId); diff --git a/lib/services/time-sync.ts b/lib/services/time-sync.ts index 4274cc4f..c0db361c 100644 --- a/lib/services/time-sync.ts +++ b/lib/services/time-sync.ts @@ -2,14 +2,14 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, time: Date) => { baAsn1.encodeApplicationDate(buffer, time); baAsn1.encodeApplicationTime(buffer, time); }; -export const decode = (buffer: Buffer, offset: number, length: number) => { +export const decode = (buffer: Buffer, offset: number) => { let len = 0; let result: any; result = baAsn1.decodeTagNumberAndValue(buffer, offset + len); diff --git a/lib/services/who-has.ts b/lib/services/who-has.ts index 461570e4..36cb0e74 100644 --- a/lib/services/who-has.ts +++ b/lib/services/who-has.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { BACNetObjectID, EncodeBuffer } from '../types'; +import {BACNetObjectID, EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, lowLimit: number, highLimit: number, objectId: BACNetObjectID, objectName: string) => { if ((lowLimit >= 0) && (lowLimit <= baEnum.ASN1_MAX_INSTANCE) && (highLimit >= 0) && (highLimit <= baEnum.ASN1_MAX_INSTANCE)) { diff --git a/lib/services/who-is.ts b/lib/services/who-is.ts index b4448fc5..f2a5b2d9 100644 --- a/lib/services/who-is.ts +++ b/lib/services/who-is.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer } from '../types'; +import {EncodeBuffer} from '../types'; export const encode = (buffer: EncodeBuffer, lowLimit: number, highLimit: number) => { if ((lowLimit >= 0) && (lowLimit <= baEnum.ASN1_MAX_INSTANCE) && (highLimit >= 0) && (highLimit <= baEnum.ASN1_MAX_INSTANCE)) { diff --git a/lib/services/write-property-multiple.ts b/lib/services/write-property-multiple.ts index 5de871fd..8b2ebf66 100644 --- a/lib/services/write-property-multiple.ts +++ b/lib/services/write-property-multiple.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetObjectID, BACNetPropertyID, BACNetAppData } from '../types'; +import {EncodeBuffer, BACNetObjectID, BACNetPropertyID, BACNetAppData} from '../types'; interface BACNETWPM { property: BACNetPropertyID; diff --git a/lib/services/write-property.ts b/lib/services/write-property.ts index 88bef212..5e448256 100644 --- a/lib/services/write-property.ts +++ b/lib/services/write-property.ts @@ -2,7 +2,7 @@ import * as baAsn1 from '../asn1'; import * as baEnum from '../enum'; -import { EncodeBuffer, BACNetAppData } from '../types'; +import {EncodeBuffer, BACNetAppData} from '../types'; export const encode = (buffer: EncodeBuffer, objectType: number, objectInstance: number, propertyId: number, arrayIndex: number, priority: number, values: BACNetAppData[]) => { baAsn1.encodeContextObjectId(buffer, 0, objectType, objectInstance); diff --git a/test/compliance/who-is.spec.ts b/test/compliance/who-is.spec.ts index 0e35ab56..00ac3f97 100644 --- a/test/compliance/who-is.spec.ts +++ b/test/compliance/who-is.spec.ts @@ -1,6 +1,6 @@ 'use strict'; -import { Client } from '../../lib/client'; +import {Client} from '../../lib/client'; import * as baEnum from '../../lib/enum'; describe('bacstack - whoIs compliance', () => { @@ -33,6 +33,6 @@ describe('bacstack - whoIs compliance', () => { expect(device.deviceId).toEqual(1234); next(); }); - client.whoIs({lowLimit: 1233,highLimit: 1235, address: 'bacnet-device'}); + client.whoIs({lowLimit: 1233, highLimit: 1235, address: 'bacnet-device'}); }); }); diff --git a/test/integration/acknowledge-alarm.spec.ts b/test/integration/acknowledge-alarm.spec.ts index 7d158a5d..70d4df0f 100644 --- a/test/integration/acknowledge-alarm.spec.ts +++ b/test/integration/acknowledge-alarm.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - acknowledgeAlarm integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.acknowledgeAlarm('127.0.0.1', {type: 2, instance: 3}, 2, 'Alarm Acknowledge Test', {value: new Date(), type: 2}, {value: new Date(), type: 2}, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/add-list-element.spec.ts b/test/integration/add-list-element.spec.ts index b47e1b1a..f693f23a 100644 --- a/test/integration/add-list-element.spec.ts +++ b/test/integration/add-list-element.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - addListElement integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.addListElement('127.0.0.1', {type: 19, instance: 101}, {id: 80, index: 0}, [ {type: 1, value: true} ], {}, (err) => { diff --git a/test/integration/confirmed-event-notification.spec.ts b/test/integration/confirmed-event-notification.spec.ts index 7d8cdb5d..859f946a 100644 --- a/test/integration/confirmed-event-notification.spec.ts +++ b/test/integration/confirmed-event-notification.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - confirmedEventNotification integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); const date = new Date(); date.setMilliseconds(880); client.confirmedEventNotification('127.0.0.1', { diff --git a/test/integration/confirmed-private-transfer.spec.ts b/test/integration/confirmed-private-transfer.spec.ts index 4ea3f80d..d4de2775 100644 --- a/test/integration/confirmed-private-transfer.spec.ts +++ b/test/integration/confirmed-private-transfer.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - confirmedPrivateTransfer integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.confirmedPrivateTransfer('127.0.0.1', 0, 8, [0x00, 0xaa, 0xfa, 0xb1, 0x00], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/create-object.spec.ts b/test/integration/create-object.spec.ts index 8f59c90f..6e764731 100644 --- a/test/integration/create-object.spec.ts +++ b/test/integration/create-object.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - createObject integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.createObject('127.0.0.1', {type: 2, instance: 300}, [ {property: {id: 85, index: 1}, value: [{type: 1, value: true}]} ], {}, (err) => { diff --git a/test/integration/delete-object.spec.ts b/test/integration/delete-object.spec.ts index 958a719e..eafc898a 100644 --- a/test/integration/delete-object.spec.ts +++ b/test/integration/delete-object.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - deleteObject integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.deleteObject('127.0.0.1', {type: 2, instance: 15}, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/device-communication-control.spec.ts b/test/integration/device-communication-control.spec.ts index d15bbe80..00dd3d91 100644 --- a/test/integration/device-communication-control.spec.ts +++ b/test/integration/device-communication-control.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - deviceCommunicationControl integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.deviceCommunicationControl('127.0.0.1', 60, 1, {password: 'Test1234'}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/get-alarm-summary.spec.ts b/test/integration/get-alarm-summary.spec.ts index 6a03e81b..d944036e 100644 --- a/test/integration/get-alarm-summary.spec.ts +++ b/test/integration/get-alarm-summary.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - getAlarmSummary integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.getAlarmSummary('127.0.0.1', {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/get-enrollment-summary.spec.ts b/test/integration/get-enrollment-summary.spec.ts index de672081..71c31cf7 100644 --- a/test/integration/get-enrollment-summary.spec.ts +++ b/test/integration/get-enrollment-summary.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - getEnrollmentSummary integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.getEnrollmentSummary('127.0.0.1', 0, {notificationClassFilter: 5}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/get-event-information.spec.ts b/test/integration/get-event-information.spec.ts index 2dc96510..ed405e54 100644 --- a/test/integration/get-event-information.spec.ts +++ b/test/integration/get-event-information.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - getEventInformation integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.getEventInformation('127.0.0.1', {type: 5, instance: 33}, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/read-file.spec.ts b/test/integration/read-file.spec.ts index e428c07b..76aafa04 100644 --- a/test/integration/read-file.spec.ts +++ b/test/integration/read-file.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - readFile integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.readFile('127.0.0.1', {type: 10, instance: 100}, 0, 100, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/read-property-multiple.spec.ts b/test/integration/read-property-multiple.spec.ts index 202f8b29..bdb6de4f 100644 --- a/test/integration/read-property-multiple.spec.ts +++ b/test/integration/read-property-multiple.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - readPropertyMultiple integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} ]; @@ -17,8 +17,8 @@ describe('bacstack - readPropertyMultiple integration', () => { }); it('should successfully decode a structured view', (next) => { - const transport = new utils.transportStub(); - const client = new utils.bacnetClient({transport: transport}); + const transport = new utils.TransportStub(); + const client = new utils.BacnetClient({transport: transport}); const data = Buffer.from('810a0109010030000e0c0740001f1e291c4e752900436f6c6c656374696f6e206f66206c69676874696e672070726573656e6365206465746563746f724f294b4ec40740001f4f294d4e7531005ac3a4686c657277656727466c6f6f72203427525365675456274c6774275073634f70274c6774507363446574436f6c4f294f4e911d4f29a84e751800372d42412d524453312d3034312d5342437631332e32304f29cf4e71004f29d04e91084f29d24e750c004c67745073634465745273750a00507363446574282a294f29d34e1c014000001c00c000004f2a13424e91004f2a134d4e91064f2a13a64e21004f2a13bd4e91004f2a13de4e8207808207004f2a13ee4e91294f1f', 'hex'); // eslint-disable-line max-len const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} @@ -58,8 +58,8 @@ describe('bacstack - readPropertyMultiple integration', () => { }); it('should successfully decode a value object', (next) => { - const transport = new utils.transportStub(); - const client = new utils.bacnetClient({transport: transport}); + const transport = new utils.TransportStub(); + const client = new utils.BacnetClient({transport: transport}); const data = Buffer.from('810a01eb010030000e0c04c0000a1e291c4e75070053656e736f724f29244e91004f294a4e21084f294b4ec404c0000a4f294d4e7525005ac3a4686c657277656727466c6f6f722034275253656754562753656e4465762753656e4f294f4e91134f29514e104f29554e21014f29674e91004f296e4e750c004f7065726174696f6e616c750f004465766963652073746f70706564751400446576696365206e6f742061737369676e6564750f00446576696365206d697373696e67751300436f6e6669677572696e6720646576696365750700556e75736564751f004d697373696e67206f722077726f6e6720636f6e66696775726174696f6e750a00536561726368696e674f296f4e8204004f29a84e751800372d42412d524453312d3032342d5342437631332e32304f2a13424e91004f2a134d4e91054f2a13884e91004f2a13894e91004f2a13af4e750800302e322e3234394f2a13df4e750e00355747313235382d32444231324f2a13e44e750b00504c2d313a444c3d313b4f2a13e64e21034f2a13ec4e750d003030303130303433656464634f2a13ed4e752d00504c3a4444543d303538362e303030312e30302e30312e30303b46573d302e312e31333b4d4f44453d504c3b4f2a13ee4e91184f2a13ef4e71004f2a13f04e91004f2a13f34e21014f1f', 'hex'); // eslint-disable-line max-len const requestArray = [ {objectId: {type: 8, instance: 4194303}, properties: [{id: 8}]} diff --git a/test/integration/read-property.spec.ts b/test/integration/read-property.spec.ts index b42a2844..703e5993 100644 --- a/test/integration/read-property.spec.ts +++ b/test/integration/read-property.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - readProperty integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.readProperty('127.0.0.1', {type: 8, instance: 44301}, 28, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/read-range.spec.ts b/test/integration/read-range.spec.ts index dfa53248..6f5c800f 100644 --- a/test/integration/read-range.spec.ts +++ b/test/integration/read-range.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - readRange integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.readRange('127.0.0.1', {type: 20, instance: 0}, 0, 200, {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/reinitialize-sevice.spec.ts b/test/integration/reinitialize-sevice.spec.ts index f3851939..721476dd 100644 --- a/test/integration/reinitialize-sevice.spec.ts +++ b/test/integration/reinitialize-sevice.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - reinitializeDevice integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.reinitializeDevice('127.0.0.1', 1, {password: 'Test1234'}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/remove-list-element.spec.ts b/test/integration/remove-list-element.spec.ts index 274328de..126892ef 100644 --- a/test/integration/remove-list-element.spec.ts +++ b/test/integration/remove-list-element.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - removeListElement integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.removeListElement('127.0.0.1', {type: 19, instance: 100}, {id: 80, index: 0}, [ {type: 1, value: true} ], {}, (err) => { diff --git a/test/integration/subscribe-cov.spec.ts b/test/integration/subscribe-cov.spec.ts index 6c587a32..81a6157f 100644 --- a/test/integration/subscribe-cov.spec.ts +++ b/test/integration/subscribe-cov.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - subscribeCOV integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.subscribeCOV('127.0.0.1', {type: 5, instance: 3}, 7, false, false, 0, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/subscribe-property.spec.ts b/test/integration/subscribe-property.spec.ts index d5b54d42..217cdb98 100644 --- a/test/integration/subscribe-property.spec.ts +++ b/test/integration/subscribe-property.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - subscribeProperty integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.subscribeProperty('127.0.0.1', {type: 5, instance: 33}, {id: 80, index: 0}, 8, false, false, {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/integration/time-sync-utc.spec.ts b/test/integration/time-sync-utc.spec.ts index b8e271a7..b6fa8711 100644 --- a/test/integration/time-sync-utc.spec.ts +++ b/test/integration/time-sync-utc.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - timeSyncUTC integration', () => { it('should send a time UTC sync package', () => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.timeSyncUTC('127.0.0.1', new Date()); client.close(); }); diff --git a/test/integration/time-sync.spec.ts b/test/integration/time-sync.spec.ts index be6cff45..434a3140 100644 --- a/test/integration/time-sync.spec.ts +++ b/test/integration/time-sync.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - timeSync integration', () => { it('should send a time sync package', () => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.timeSync('127.0.0.1', new Date()); client.close(); }); diff --git a/test/integration/unconfirmed-event-notification.spec.ts b/test/integration/unconfirmed-event-notification.spec.ts index 8b4d6bac..e89d5224 100644 --- a/test/integration/unconfirmed-event-notification.spec.ts +++ b/test/integration/unconfirmed-event-notification.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - unconfirmedEventNotification integration', () => { it('should correctly send a telegram', () => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); const date = new Date(); date.setMilliseconds(880); client.unconfirmedEventNotification('127.0.0.1', { diff --git a/test/integration/unconfirmed-private-transfer.spec.ts b/test/integration/unconfirmed-private-transfer.spec.ts index ef9cb275..4f9ab694 100644 --- a/test/integration/unconfirmed-private-transfer.spec.ts +++ b/test/integration/unconfirmed-private-transfer.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - unconfirmedPrivateTransfer integration', () => { it('should correctly send a telegram', () => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.unconfirmedPrivateTransfer('127.0.0.1', 0, 7, [0x00, 0xaa, 0xfa, 0xb1, 0x00]); client.close(); }); diff --git a/test/integration/utils.ts b/test/integration/utils.ts index a519ad62..80788a68 100644 --- a/test/integration/utils.ts +++ b/test/integration/utils.ts @@ -1,11 +1,11 @@ 'use strict'; -import { EventEmitter } from 'events'; -import { Client } from '../../lib/client'; +import {EventEmitter} from 'events'; +import {Client} from '../../lib/client'; -export const bacnetClient = Client; +export const BacnetClient = Client; -export class transportStub extends EventEmitter { +export class TransportStub extends EventEmitter { constructor() { super(); } @@ -15,12 +15,12 @@ export class transportStub extends EventEmitter { getMaxPayload() { return 1482; } - send() { } - open() { } - close() { } + send() {} // eslint-disable-line @typescript-eslint/no-empty-function + open() {} // eslint-disable-line @typescript-eslint/no-empty-function + close() {} // eslint-disable-line @typescript-eslint/no-empty-function } -export const propertyFormater = (object: {id: number, value: any}[]) => { +export const propertyFormater = (object: {id: number; value: any}[]) => { const converted: {[name: number]: any} = {}; object.forEach((property) => converted[property.id] = property.value); return converted; diff --git a/test/integration/who-is.spec.ts b/test/integration/who-is.spec.ts index d2007c3a..0d7754ff 100644 --- a/test/integration/who-is.spec.ts +++ b/test/integration/who-is.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - whoIs integration', () => { it('should not invoke a event if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.on('iAm', () => { client.close(); next(new Error('Unallowed Callback')); diff --git a/test/integration/write-file.spec.ts b/test/integration/write-file.spec.ts index f03566a2..181fd73d 100644 --- a/test/integration/write-file.spec.ts +++ b/test/integration/write-file.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - writeFile integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.writeFile('127.0.0.1', {type: 10, instance: 2}, 0, [[5, 6, 7, 8], [5, 6, 7, 8]], {}, (err, value) => { expect(err.message).toEqual('ERR_TIMEOUT'); expect(value).toBeUndefined(); diff --git a/test/integration/write-property-multiple.spec.ts b/test/integration/write-property-multiple.spec.ts index 4377f05c..3d607b09 100644 --- a/test/integration/write-property-multiple.spec.ts +++ b/test/integration/write-property-multiple.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - writePropertyMultiple integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); const values = [ {objectId: {type: 8, instance: 44301}, values: [ {property: {id: 28, index: 12}, value: [{type: 1, value: true}], priority: 8} diff --git a/test/integration/write-property.spec.ts b/test/integration/write-property.spec.ts index 21800001..ffc68037 100644 --- a/test/integration/write-property.spec.ts +++ b/test/integration/write-property.spec.ts @@ -4,7 +4,7 @@ import * as utils from './utils'; describe('bacstack - writeProperty integration', () => { it('should return a timeout error if no device is available', (next) => { - const client = new utils.bacnetClient({apduTimeout: 200}); + const client = new utils.BacnetClient({apduTimeout: 200}); client.writeProperty('127.0.0.1', {type: 8, instance: 44301}, 28, [{type: 4, value: 100}], {}, (err) => { expect(err.message).toEqual('ERR_TIMEOUT'); client.close(); diff --git a/test/unit/npdu.spec.ts b/test/unit/npdu.spec.ts index f7b64558..cc824b03 100644 --- a/test/unit/npdu.spec.ts +++ b/test/unit/npdu.spec.ts @@ -1,16 +1,16 @@ 'use strict'; import * as utils from './utils'; -const baNpdu = require('../../lib/npdu'); +import * as baNpdu from '../../lib/npdu'; describe('bacstack - NPDU layer', () => { it('should successfully decode the NPDU function', () => { - const result = baNpdu.decodeFunction([0, 1, 12], 1); + const result = baNpdu.decodeFunction(Buffer.from([0, 1, 12]), 1); expect(result).toEqual(12); }); it('should fail decoding the NPDU function if invalid version', () => { - const result = baNpdu.decodeFunction([0, 2, 12], 1); + const result = baNpdu.decodeFunction(Buffer.from([0, 2, 12]), 1); expect(result).toBeUndefined(); }); diff --git a/test/unit/service-get-enrollment-summary.spec.ts b/test/unit/service-get-enrollment-summary.spec.ts index 9bbfa0a0..658e0ae6 100644 --- a/test/unit/service-get-enrollment-summary.spec.ts +++ b/test/unit/service-get-enrollment-summary.spec.ts @@ -7,7 +7,7 @@ describe('bacstack - Services layer GetEnrollmentSummary unit', () => { it('should successfully encode and decode', () => { const buffer = utils.getBuffer(); baServices.getEnrollmentSummary.encode(buffer, 2); - const result = baServices.getEnrollmentSummary.decode(buffer.buffer, 0, buffer.offset); + const result = baServices.getEnrollmentSummary.decode(buffer.buffer, 0); delete result.len; expect(result).toEqual({ acknowledgmentFilter: 2 @@ -17,7 +17,7 @@ describe('bacstack - Services layer GetEnrollmentSummary unit', () => { it('should successfully encode and decode full payload', () => { const buffer = utils.getBuffer(); baServices.getEnrollmentSummary.encode(buffer, 2, {objectId: {type: 5, instance: 33}, processId: 7}, 1, 3, {min: 1, max: 65}, 5); - const result = baServices.getEnrollmentSummary.decode(buffer.buffer, 0, buffer.offset); + const result = baServices.getEnrollmentSummary.decode(buffer.buffer, 0); delete result.len; expect(result).toEqual({ acknowledgmentFilter: 2, diff --git a/test/unit/service-time-sync.spec.ts b/test/unit/service-time-sync.spec.ts index 584a5951..05a3a149 100644 --- a/test/unit/service-time-sync.spec.ts +++ b/test/unit/service-time-sync.spec.ts @@ -9,7 +9,7 @@ describe('bacstack - Services layer TimeSync unit', () => { const date = new Date(); date.setMilliseconds(990); baServices.timeSync.encode(buffer, date); - const result = baServices.timeSync.decode(buffer.buffer, 0, buffer.offset); + const result = baServices.timeSync.decode(buffer.buffer, 0); delete result.len; expect(result).toEqual({ value: date From 017ec62a704634b22f76533166e5c17bd9685a11 Mon Sep 17 00:00:00 2001 From: Fabio Huser Date: Mon, 5 Jul 2021 18:38:45 +0200 Subject: [PATCH 44/44] chore(npm): replace JSDoc with TypeDocs docs parser --- package.json | 4 +- yarn.lock | 155 +++++++++------------------------------------------ 2 files changed, 26 insertions(+), 133 deletions(-) diff --git a/package.json b/package.json index 5f074194..9bd742f8 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "test": "jest --coverageDirectory reports/coverage-test test/unit/*.spec.ts", "integration": "jest --coverageDirectory reports/coverage-integration test/integration/*.spec.ts", "compliance": "jest --coverageDirectory reports/coverage-compliance test/compliance/*.spec.ts", - "docs": "jsdoc -d ./docs -t node_modules/docdash ./lib ./index.js ./README.md" + "docs": "typedoc --out docs --entryPoint '\"client\"' --excludeExternals --excludeNotExported --excludePrivate lib/client.ts" }, "repository": { "type": "git", @@ -63,11 +63,9 @@ "@types/node": "^15.12.5", "@typescript-eslint/eslint-plugin": "^4.28.1", "@typescript-eslint/parser": "^4.28.1", - "docdash": "^1.2.0", "eslint": "^7.29.0", "eslint-config-google": "^0.14.0", "jest": "^27.0.6", - "jsdoc": "^3.6.7", "ts-jest": "^27.0.3", "typescript": "^4.3.4" } diff --git a/yarn.lock b/yarn.lock index a53cf60d..7aa2e699 100644 --- a/yarn.lock +++ b/yarn.lock @@ -176,7 +176,12 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.7.2", "@babel/parser@^7.9.4": +"@babel/parser@^7.1.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + +"@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.7.2": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== @@ -1102,11 +1107,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1186,13 +1186,6 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz#cd3fae47eb3d7691692b406568d7a3e5b23c7598" integrity sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ== -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== - dependencies: - lodash "^4.17.15" - chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1448,11 +1441,6 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -docdash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/docdash/-/docdash-1.2.0.tgz#f99dde5b8a89aa4ed083a3150383e042d06c7f49" - integrity sha512-IYZbgYthPTspgqYeciRJNPhSwL51yer7HAwDXhF5p+H7mTDbPvY3PCk/QDjNxdPCpWkaJVFC4t7iCNB/t9E5Kw== - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1496,11 +1484,6 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -entities@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" - integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -1893,9 +1876,8 @@ global-dirs@^0.1.1: ini "^1.3.4" globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + version "11.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" globals@^13.6.0, globals@^13.9.0: version "13.9.0" @@ -1916,7 +1898,12 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -1944,9 +1931,8 @@ has@^1.0.3: function-bind "^1.1.1" hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" hosted-git-info@^4.0.1: version "4.0.2" @@ -2053,9 +2039,8 @@ inherits@2, inherits@^2.0.3: integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" is-arrayish@^0.2.1: version "0.2.1" @@ -2618,33 +2603,6 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js2xmlparser@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.1.tgz#670ef71bc5661f089cc90481b99a05a1227ae3bd" - integrity sha512-KrPTolcw6RocpYjdC7pL7v62e55q7qOMHvLX1UCLc5AAS8qeJ6nukarEJAF2KL2PZxlbGueEbINqZR2bDe/gUw== - dependencies: - xmlcreate "^2.0.3" - -jsdoc@^3.6.7: - version "3.6.7" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-3.6.7.tgz#00431e376bed7f9de4716c6f15caa80e64492b89" - integrity sha512-sxKt7h0vzCd+3Y81Ey2qinupL6DpRSZJclS04ugHDNmRUXGzqicMJ6iwayhSA0S0DwwX30c5ozyUthr1QKF6uw== - dependencies: - "@babel/parser" "^7.9.4" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.1" - klaw "^3.0.0" - markdown-it "^10.0.0" - markdown-it-anchor "^5.2.7" - marked "^2.0.3" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - taffydb "2.6.2" - underscore "~1.13.1" - jsdom@^16.6.0: version "16.6.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac" @@ -2729,13 +2687,6 @@ kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -2767,13 +2718,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -linkify-it@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== - dependencies: - uc.micro "^1.0.1" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -2803,7 +2747,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@4.x, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: +lodash@4.x, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -2844,32 +2788,6 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== -markdown-it-anchor@^5.2.7: - version "5.3.0" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-5.3.0.tgz#d549acd64856a8ecd1bea58365ef385effbac744" - integrity sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA== - -markdown-it@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-10.0.0.tgz#abfc64f141b1722d663402044e43927f1f50a8dc" - integrity sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== - dependencies: - argparse "^1.0.7" - entities "~2.0.0" - linkify-it "^2.0.0" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -marked@^2.0.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.3.tgz#bd017cef6431724fd4b27e0657f5ceb14bff3753" - integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= - meow@^8.0.0: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" @@ -2948,7 +2866,7 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mkdirp@1.x, mkdirp@^1.0.4: +mkdirp@1.x: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== @@ -3281,13 +3199,6 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -requizzle@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.3.tgz#4675c90aacafb2c036bd39ba2daa4a1cb777fded" - integrity sha512-YanoyJjykPxGHii0fZP0uUPEXpvqfBDxWV7s6GKAiiOsiqhX6vHNyW3Qzdmqp/iq/ExbhaGbVrjB4ruEVSM4GQ== - dependencies: - lodash "^4.17.14" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -3396,7 +3307,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -3587,11 +3502,6 @@ table@^6.0.9: string-width "^4.2.0" strip-ansi "^6.0.0" -taffydb@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/taffydb/-/taffydb-2.6.2.tgz#7cbcb64b5a141b6a2efc2c5d2c67b4e150b2a268" - integrity sha1-fLy2S1oUG2ou/CxdLGe04VCyomg= - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -3763,16 +3673,6 @@ typescript@^4.3.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -underscore@~1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.1.tgz#0c1c6bd2df54b6b69f2314066d65b6cde6fcf9d1" - integrity sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g== - universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -3920,11 +3820,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmlcreate@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.3.tgz#df9ecd518fd3890ab3548e1b811d040614993497" - integrity sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"