├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── binding.gyp ├── ensure-sdk.js ├── index.d.ts ├── lib ├── dnd │ ├── bigsur-macos-dnd.h │ ├── bigsur-macos-dnd.mm │ ├── monterey-macos-dnd.h │ ├── monterey-macos-dnd.mm │ ├── old-macos-dnd.h │ └── old-macos-dnd.mm ├── do-not-disturb.h ├── do-not-disturb.mm ├── focus-center.mm ├── index.js ├── macos-version.h ├── macos-version.mm ├── notificationstate-query.cc ├── notificationstate-query.h └── notificationstate.cc ├── package.json ├── test ├── benchmark.js └── test.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | *.pid.lock 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # nyc test coverage 19 | .nyc_output 20 | 21 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 22 | .grunt 23 | 24 | # node-waf configuration 25 | .lock-wscript 26 | 27 | # Compiled binary addons (http://nodejs.org/api/addons.html) 28 | build/Release 29 | 30 | # Dependency directories 31 | node_modules 32 | jspm_packages 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional eslint cache 38 | .eslintcache 39 | 40 | # Optional REPL history 41 | .node_repl_history 42 | 43 | build 44 | node_modules/ 45 | npm-debug.log 46 | 47 | .vscode 48 | /.idea 49 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | build 2 | node_modules 3 | .git 4 | .gitignore 5 | test -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 3.0.0 2 | - Support macOS 13 - use FocusStatus API to detect Focus mode active or not 3 | (its internally compute final state - include checking for personal focus schedule and allowed apps) 4 | - details here: https://developer.apple.com/documentation/usernotifications/handling_communication_notifications_and_focus_status_updates 5 | 6 | Changed API: getDoNotDisturb now return Promise 7 | 8 | # 2.0.2 9 | - Support macOS 13, fixing a "if version === 12" check 10 | 11 | # 2.0.1 12 | - Fix broken preinstall on Windows 13 | 14 | # 2.0.0 15 | 16 | - Major overhaul to support macOS Monterey 17 | - Now requires 11.0 SDK 18 | - Otherwise no API changes -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Felix Rieseberg 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## macos-notification-state 2 | Do you want to check if you should display a notification to your user on macOS? This native module checks if the user is active, if the screen is locked, or if "do not disturb" is enabled. 3 | 4 | ``` 5 | npm install macos-notification-state 6 | ``` 7 | 8 | ``` 9 | const { getNotificationState, getSessionState, getDoNotDisturb } = require('macos-notification-state`) 10 | 11 | // This will brint a boolean (true if enabled, false if not) 12 | console.log(getDoNotDisturb()) 13 | 14 | // This will print a string indiciating the current state, being one of the following: 15 | // 'SESSION_SCREEN_IS_LOCKED' 16 | // 'SESSION_ON_CONSOLE_KEY' 17 | // 'DO_NOT_DISTURB' 18 | // 'UNKNOWN' 19 | // 'UNKNOWN_ERROR' 20 | // 21 | // If "do not disturb" is enabled, it takes precedence. 22 | console.log(getNotificationState()) 23 | 24 | // This will print a string indiciating the current session state, being one of the following: 25 | // 'SESSION_SCREEN_IS_LOCKED' 26 | // 'SESSION_ON_CONSOLE_KEY' 27 | // 'UNKNOWN' 28 | console.log(getSessionState()) 29 | ``` 30 | 31 | ## Not working? 32 | 33 | This package _needs_ to be compiled with at least the macOS 11.0 SDK. If not, the internal 34 | operating system info will always return 10.16, rendering the package unusable. 35 | 36 | To see the current version, run `xcrun --show-sdk-version`. 37 | 38 | #### License 39 | MIT, please see LICENSE for details. Copyright (c) 2019 Felix Rieseberg. 40 | -------------------------------------------------------------------------------- /binding.gyp: -------------------------------------------------------------------------------- 1 | { 2 | "targets": [ 3 | { 4 | "target_name": "notificationstate", 5 | "sources": [], 6 | "conditions": [ 7 | ['OS=="mac"', { 8 | "sources": [ 9 | "lib/notificationstate.cc", 10 | "lib/notificationstate-query.cc", 11 | "lib/do-not-disturb.mm", 12 | "lib/macos-version.mm", 13 | "lib/dnd/old-macos-dnd.mm", 14 | "lib/dnd/bigsur-macos-dnd.mm", 15 | "lib/dnd/monterey-macos-dnd.mm" 16 | ], 17 | "xcode_settings": { 18 | "OTHER_CPLUSPLUSFLAGS": ["-std=c++17", "-stdlib=libc++", "-mmacosx-version-min=10.7"], 19 | "OTHER_LDFLAGS": ["-framework CoreFoundation -framework CoreGraphics"] 20 | } 21 | }], 22 | ] 23 | }, 24 | { 25 | "target_name": "focuscenter", 26 | "sources": [], 27 | "conditions": [ 28 | ['OS=="mac"', { 29 | "sources": ["lib/focus-center.mm"], 30 | 'include_dirs' : [ " 11.0) to build this package. We\'ll run "xcrun --show-sdk-version" and compare the output. To disable this check, set the environment variable MACOS_NOTIFICATION_STATE_NO_SDK_CHECK' 5 | ) 6 | 7 | function check () { 8 | if (process.env.MACOS_NOTIFICATION_STATE_NO_SDK_CHECK || process.platform !== 'darwin') { 9 | return 10 | } 11 | 12 | const result = parseFloat( 13 | execSync('xcrun --show-sdk-version').toString().trim() 14 | ) 15 | 16 | if (result < 11) { 17 | throw new Error( 18 | `You do not have the required minimum macOS SDK. Version found: ${result}` 19 | ) 20 | } 21 | 22 | console.log(`Test passed, found ${result}`) 23 | } 24 | 25 | check() 26 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | declare module "macos-notification-state" { 2 | export function getNotificationState(): Promise< 3 | "UNKNOWN_ERROR" | SessionState | "DO_NOT_DISTURB" 4 | >; 5 | export function getSessionState(): SessionState; 6 | export function getDoNotDisturb(): Promise; 7 | export type SessionState = 8 | | "SESSION_SCREEN_IS_LOCKED" 9 | | "SESSION_ON_CONSOLE_KEY" 10 | | "UNKNOWN"; 11 | } 12 | -------------------------------------------------------------------------------- /lib/dnd/bigsur-macos-dnd.h: -------------------------------------------------------------------------------- 1 | bool getBigSurMacOSDND(); -------------------------------------------------------------------------------- /lib/dnd/bigsur-macos-dnd.mm: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | bool getBigSurMacOSDND() { 4 | // On big sur we have to read a plist from a plist... 5 | NSData *dndData = [[[NSUserDefaults alloc] 6 | initWithSuiteName:@"com.apple.ncprefs"] dataForKey:@"dnd_prefs"]; 7 | // If there is no DND data let's assume that we aren't in DND 8 | if (!dndData) 9 | return false; 10 | 11 | NSDictionary *dndDict = 12 | [NSPropertyListSerialization propertyListWithData:dndData 13 | options:NSPropertyListImmutable 14 | format:nil 15 | error:nil]; 16 | // If the dnd data isn't a valid plist, again assume we aren't in DND 17 | if (!dndDict) 18 | return false; 19 | NSDictionary *userPrefs = [dndDict valueForKey:@"userPref"]; 20 | if (userPrefs) { 21 | NSNumber *dndEnabled = [userPrefs valueForKey:@"enabled"]; 22 | // If the user pref has it set to enabled 23 | if ([dndEnabled intValue] == 1) 24 | return true; 25 | } 26 | 27 | NSDictionary *scheduledPrefs = [dndDict valueForKey:@"scheduledTime"]; 28 | if (scheduledPrefs) { 29 | NSNumber *scheduleEnabled = [scheduledPrefs valueForKey:@"enabled"]; 30 | NSNumber *start = [scheduledPrefs valueForKey:@"start"]; 31 | NSNumber *end = [scheduledPrefs valueForKey:@"end"]; 32 | // If the schedule is enabled, we need to manually determine if we fall in 33 | // the start / end interval 34 | if ([scheduleEnabled intValue] == 1 && start && end) { 35 | NSDate *now = [NSDate date]; 36 | NSCalendar *calendar = [NSCalendar currentCalendar]; 37 | NSDateComponents *components = 38 | [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) 39 | fromDate:now]; 40 | NSInteger hour = [components hour]; 41 | NSInteger minute = [components minute]; 42 | NSInteger current = (hour * 60) + minute; 43 | 44 | NSInteger startInt = [start intValue]; 45 | NSInteger endInt = [end intValue]; 46 | // Normal way round, start is before the end 47 | if (startInt < endInt) { 48 | // Start is inclusive, end is exclusive 49 | if (current >= startInt && current < endInt) 50 | return true; 51 | } else if (endInt < startInt) { 52 | // The end can also be _after_ the start making the DND interval loop 53 | // over midnight 54 | if (current >= startInt) 55 | return true; 56 | if (current < endInt) 57 | return true; 58 | } 59 | } 60 | } 61 | 62 | // TODO: Support and check the follow dndDict keys 63 | // - dndDisplaySleep 64 | // - dndDisplayLock 65 | // - dndMirrored 66 | 67 | // Not manually enabled, not enabled due to schedule 68 | return false; 69 | } -------------------------------------------------------------------------------- /lib/dnd/monterey-macos-dnd.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface MontereyDND : NSObject 4 | + (bool)isEnabled; 5 | + (bool)enabledByAssertion; 6 | + (bool)enabledBySchedule; 7 | + (NSString*)getActiveFocusMode; 8 | + (bool)allowedForBundleId; 9 | + (NSDictionary*)readJSONData:(NSString*)filePath; 10 | @end 11 | -------------------------------------------------------------------------------- /lib/dnd/monterey-macos-dnd.mm: -------------------------------------------------------------------------------- 1 | #import "monterey-macos-dnd.h" 2 | #import 3 | 4 | @implementation MontereyDND 5 | + (bool)isEnabled { 6 | // Focus Preferences: ~/Library/DoNotDisturb/DB/ immediately updates 7 | // Assertion.json - DND on/off - 8 | // ModeConfiguration.json - Scheduled config stored 9 | // ModeConfigurationSecure.json - Contains Apps allowed in DND mode 10 | 11 | // 1. check assertion 12 | bool isFocusModeEnabled = [self enabledByAssertion]; 13 | 14 | if (!isFocusModeEnabled) { 15 | // 2. check schedule config 16 | isFocusModeEnabled = [self enabledBySchedule]; 17 | } 18 | 19 | if (isFocusModeEnabled) { 20 | // 3 additional check is bundleIdentifier allowed while DND is on 21 | bool isBundleIdAllowedInDND = [self allowedForBundleId]; 22 | // DND is "off" for current application 23 | return !isBundleIdAllowedInDND; 24 | } 25 | return isFocusModeEnabled; 26 | } 27 | 28 | + (bool)allowedForBundleId { 29 | NSString *bundleIdentifier = [[NSBundle mainBundle] bundleIdentifier]; 30 | 31 | if (bundleIdentifier) { 32 | NSString *focusMode = [self getActiveFocusMode]; 33 | NSDictionary *modeConfigSecureDict = 34 | [self readJSONData: 35 | @"~/Library/DoNotDisturb/DB/ModeConfigurationsSecure.json"]; 36 | NSDictionary *allowedApps = [[[[[[modeConfigSecureDict valueForKey:@"data"] 37 | objectAtIndex:0] valueForKey:@"secureModeConfigurations"] 38 | valueForKey:focusMode] 39 | valueForKey:@"secureConfiguration"] valueForKey:@"allowedApplications"]; 40 | 41 | if (!allowedApps) 42 | return false; 43 | 44 | NSDictionary *byBundle = [allowedApps valueForKey:bundleIdentifier]; 45 | if (byBundle) { 46 | return true; 47 | } 48 | // try predicate - for case if bundle is child process 49 | NSPredicate *predicate = 50 | [NSPredicate predicateWithFormat:@"%@ CONTAINS SELF", bundleIdentifier]; 51 | NSArray *apps = 52 | [[allowedApps allKeys] filteredArrayUsingPredicate:predicate]; 53 | if ([apps count] > 0) { 54 | return true; 55 | } 56 | } 57 | return false; 58 | } 59 | 60 | + (NSString *)getActiveFocusMode { 61 | NSDictionary *assertDict = 62 | [self readJSONData:@"~/Library/DoNotDisturb/DB/Assertions.json"]; 63 | 64 | if (!assertDict) { 65 | return @"NONE"; 66 | } 67 | 68 | NSDictionary *assertionData = 69 | [[assertDict valueForKey:@"data"] objectAtIndex:0]; 70 | NSArray *storeAssertionRecords = 71 | [assertionData valueForKey:@"storeAssertionRecords"]; 72 | 73 | if (storeAssertionRecords) { 74 | for (NSDictionary *assertion in storeAssertionRecords) { 75 | NSDictionary *assertionDetails = [assertion objectForKey:@"assertionDetails"]; 76 | 77 | NSString *assertionDetailsModeIdentifier = 78 | [assertionDetails objectForKey:@"assertionDetailsModeIdentifier"]; 79 | return assertionDetailsModeIdentifier; 80 | } 81 | 82 | } 83 | return @"NONE"; 84 | } 85 | 86 | + (bool)enabledByAssertion { 87 | NSDictionary *assertDict = 88 | [self readJSONData:@"~/Library/DoNotDisturb/DB/Assertions.json"]; 89 | 90 | if (!assertDict) { 91 | return false; 92 | } 93 | 94 | NSDictionary *assertionData = 95 | [[assertDict valueForKey:@"data"] objectAtIndex:0]; 96 | NSArray *storeAssertionRecords = 97 | [assertionData valueForKey:@"storeAssertionRecords"]; 98 | // has active assertion - DND is ON 99 | if (storeAssertionRecords) { 100 | // TODO: can be improved by add compare timestamp of assertion with header 101 | int size = [storeAssertionRecords count]; 102 | if (size > 0) 103 | return true; 104 | } 105 | return false; 106 | } 107 | 108 | + (NSDictionary *)readJSONData:(NSString *)filePath { 109 | NSString *fullPath = [filePath stringByExpandingTildeInPath]; 110 | NSError *error = nil; 111 | NSData *jsonData = [NSData dataWithContentsOfFile:fullPath 112 | options:kNilOptions 113 | error:&error]; 114 | if (error) { 115 | NSLog(@"Failed to open %s, error %@", fullPath, error); 116 | return nil; 117 | } 118 | 119 | NSDictionary *parsedDictionary = 120 | [NSJSONSerialization JSONObjectWithData:jsonData 121 | options:kNilOptions 122 | error:&error]; 123 | if (error) { 124 | NSLog(@"Failed to parse dict %s, error %@", fullPath, error); 125 | return nil; 126 | } 127 | 128 | return parsedDictionary; 129 | } 130 | 131 | + (bool)enabledBySchedule { 132 | NSDictionary *modeConfigDict = 133 | [self readJSONData:@"~/Library/DoNotDisturb/DB/ModeConfigurations.json"]; 134 | 135 | NSString *focusMode = [self getActiveFocusMode]; 136 | bool hasActiveTrigger = false; 137 | NSArray *triggers = [[[[[[modeConfigDict valueForKey:@"data"] objectAtIndex:0] 138 | valueForKey:@"modeConfigurations"] 139 | valueForKey:focusMode] 140 | valueForKey:@"triggers"] valueForKey:@"triggers"]; 141 | if (triggers) { 142 | if ([triggers count] == 0) { 143 | return hasActiveTrigger; 144 | } 145 | NSDate *now = [NSDate date]; 146 | NSCalendar *calendar = [NSCalendar currentCalendar]; 147 | NSDateComponents *components = 148 | [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) 149 | fromDate:now]; 150 | NSInteger hour = [components hour]; 151 | NSInteger minute = [components minute]; 152 | NSInteger currentMinutes = (hour * 60) + minute; 153 | 154 | for (NSDictionary *item in triggers) { 155 | NSNumber *enabledSetting = [item valueForKey:@"enabledSetting"]; 156 | if ([enabledSetting intValue] == 2) { 157 | // If the schedule is enabled, we need to manually determine if we fall 158 | // in the start / end interval 159 | NSNumber *startHour = [item valueForKey:@"timePeriodStartTimeHour"]; 160 | NSNumber *endHour = [item valueForKey:@"timePeriodEndTimeHour"]; 161 | NSNumber *startMinutesSetting = 162 | [item valueForKey:@"timePeriodStartTimeMinute"]; 163 | if (startHour && endHour) { 164 | NSInteger startMinutes = 165 | [startHour intValue] * 60 + [startMinutesSetting intValue]; 166 | NSInteger endMinutes = [endHour intValue] * 60; 167 | // Normal way round, start is before the end 168 | if (startMinutes < endMinutes) { 169 | // Start is inclusive, end is exclusive 170 | if (currentMinutes >= startMinutes && currentMinutes < endMinutes) { 171 | hasActiveTrigger = true; 172 | } 173 | } else if (endMinutes < startMinutes) { 174 | // The end can also be _after_ the start making the DND interval 175 | // loop over midnight 176 | if (currentMinutes >= startMinutes || currentMinutes < endMinutes) { 177 | hasActiveTrigger = true; 178 | } 179 | } 180 | } 181 | } 182 | } 183 | } 184 | // not enabled due to schedule 185 | return hasActiveTrigger; 186 | } 187 | 188 | + (id)alloc { 189 | [NSException raise:@"Cannot be instantiated"]; 190 | return nil; 191 | } 192 | @end -------------------------------------------------------------------------------- /lib/dnd/old-macos-dnd.h: -------------------------------------------------------------------------------- 1 | bool getOldMacOSDND(); -------------------------------------------------------------------------------- /lib/dnd/old-macos-dnd.mm: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | bool getOldMacOSDND() { 4 | return [[[[NSUserDefaults alloc] 5 | initWithSuiteName:@"com.apple.notificationcenterui"] 6 | objectForKey:@"doNotDisturb"] boolValue]; 7 | } -------------------------------------------------------------------------------- /lib/do-not-disturb.h: -------------------------------------------------------------------------------- 1 | bool getDoNotDisturb(); -------------------------------------------------------------------------------- /lib/do-not-disturb.mm: -------------------------------------------------------------------------------- 1 | #import "dnd/bigsur-macos-dnd.h" 2 | #import "dnd/monterey-macos-dnd.h" 3 | #import "dnd/old-macos-dnd.h" 4 | #import "macos-version.h" 5 | #import 6 | 7 | bool getDoNotDisturb() { 8 | auto majorVersion = getOSVersion(); 9 | bool isBigSur = majorVersion == 11; 10 | bool isMonterey = majorVersion == 12; 11 | 12 | @try { 13 | if (isBigSur) { 14 | return getBigSurMacOSDND(); 15 | } else if (isMonterey) { 16 | return [MontereyDND isEnabled]; 17 | } else if (majorVersion < 11) { 18 | return getOldMacOSDND(); 19 | } 20 | } @catch (NSException *error) { 21 | NSLog(@"Failed to detect DND status: %@", error); 22 | } 23 | return false; 24 | } 25 | -------------------------------------------------------------------------------- /lib/focus-center.mm: -------------------------------------------------------------------------------- 1 | #import "napi.h" 2 | #import 3 | 4 | #if __has_include("Intents/Intents.h") 5 | #import 6 | #endif 7 | 8 | // Requirements for make it work: 9 | // 1. add entitlement com.apple.developer.usernotifications.communication 10 | // 2. create ProvisioningProfile (if have not yet) - allow Communication Notification service access 11 | // 3. "NSFocusStatusUsageDescription": "some description", - in order to show Request access to FocusStatus 12 | // note: for reset use "tccutil reset FocusStatus". 13 | 14 | Napi::Value NoOp(const Napi::CallbackInfo &info) { 15 | return info.Env().Undefined(); 16 | } 17 | Napi::Promise GetFocusStatus(const Napi::CallbackInfo &info) { 18 | Napi::Env env = info.Env(); 19 | Napi::Promise::Deferred deferred = Napi::Promise::Deferred::New(env); 20 | Napi::ThreadSafeFunction ts_fn = Napi::ThreadSafeFunction::New( 21 | env, Napi::Function::New(env, NoOp), "focusStatusCallback", 0, 1, 22 | [](Napi::Env) {}); 23 | 24 | #if __has_include("Intents/Intents.h") 25 | NSLog(@"MacosNotificationState: FocusStatusCenter API available"); 26 | 27 | [[INFocusStatusCenter defaultCenter] 28 | requestAuthorizationWithCompletionHandler:^( 29 | INFocusStatusAuthorizationStatus status) { 30 | NSLog(@"MacosNotificationState: INFocusStatusAuthorizationStatus: %ld", 31 | status); 32 | auto isAuthorized = 33 | status == INFocusStatusAuthorizationStatusAuthorized; 34 | // request FocusStatus.isFocused 35 | // calc real state according to schedule/personal/dnd focus modes also ensure allowed apps 36 | auto isFocused = 37 | [[[INFocusStatusCenter defaultCenter] focusStatus] isFocused]; 38 | 39 | NSLog(@"MacosNotificationState: isFocused: %@", isFocused); 40 | 41 | auto callback = [=](Napi::Env env, Napi::Function noop_cb) { 42 | if (isAuthorized) { 43 | // resolve Promise with value 44 | deferred.Resolve(Napi::Number::New(env, [isFocused intValue])); 45 | } else { 46 | NSString *errorStatus = [NSString 47 | stringWithFormat: 48 | @"FocusStatus access not authorized, status: %ld", status]; 49 | deferred.Reject( 50 | Napi::TypeError::New( 51 | env, Napi::String::New(env, [errorStatus UTF8String])) 52 | .Value()); 53 | } 54 | }; 55 | ts_fn.BlockingCall(callback); 56 | }]; 57 | #endif 58 | NSLog(@"MacosNotificationState: promise created"); 59 | return deferred.Promise(); 60 | } 61 | 62 | Napi::Object Init(Napi::Env env, Napi::Object exports) { 63 | #if __has_include("Intents/Intents.h") 64 | exports.Set(Napi::String::New(env, "getFocusStatus"), 65 | Napi::Function::New(env, GetFocusStatus)); 66 | #endif 67 | return exports; 68 | } 69 | NODE_API_MODULE(target_name, Init) 70 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | function safeLoad(addonName) { 2 | try { 3 | return require("bindings")(addonName); 4 | } catch (e) { 5 | console.log( 6 | `[macos-notification-state] failed to load '${addonName}' addon`, 7 | e 8 | ); 9 | } 10 | } 11 | // bindings - do search addon on each call - so load addon once when module loaded instead of each fn call 12 | const notificationState = safeLoad("notificationstate"); 13 | 14 | /** 15 | * Returns the status, either 'UNKNOWN_ERROR', 'UNKNOWN', 'SESSION_SCREEN_IS_LOCKED','SESSION_ON_CONSOLE_KEY', or 'DO_NOT_DISTURB'. If DND is enabled, the session state isn't checked. 16 | * 17 | * @returns {Promise} USER_NOTIFICATION_STATE 18 | */ 19 | function getNotificationState() { 20 | const USER_NOTIFICATION_STATE = [ 21 | "UNKNOWN", 22 | "SESSION_SCREEN_IS_LOCKED", 23 | "SESSION_ON_CONSOLE_KEY", 24 | "DO_NOT_DISTURB", 25 | ]; 26 | 27 | return getDoNotDisturb().then((dnd) => { 28 | if (dnd) return USER_NOTIFICATION_STATE[3]; 29 | const ss = notificationState.getNotificationState(); 30 | if (USER_NOTIFICATION_STATE[ss]) { 31 | return USER_NOTIFICATION_STATE[ss]; 32 | } else { 33 | return "UNKNOWN_ERROR"; 34 | } 35 | }); 36 | } 37 | 38 | /** 39 | * Returns the session state 40 | * 41 | * @returns {string} sessionState 42 | */ 43 | function getSessionState() { 44 | const result = notificationState.getNotificationState(); 45 | 46 | if (result === -1) { 47 | throw new Error( 48 | "Getting session state for macOS encountered unknown error" 49 | ); 50 | } else if (result === 1) { 51 | return "SESSION_SCREEN_IS_LOCKED"; 52 | } else if (result === 2) { 53 | return "SESSION_ON_CONSOLE_KEY"; 54 | } else { 55 | return "UNKNOWN"; 56 | } 57 | } 58 | 59 | let focusCenterOnceTryedToLoad = false; 60 | let focusCenter; 61 | /** 62 | * Is do not disturb enabled? 63 | * 64 | * @returns {Promise} isDoNotDisturb 65 | */ 66 | function getDoNotDisturb() { 67 | return new Promise((resolve, reject) => { 68 | const dnd = notificationState.getDoNotDisturb(); 69 | 70 | if (dnd === -1) { 71 | // will return if macos > 12 72 | if (!focusCenterOnceTryedToLoad) { 73 | focusCenter = safeLoad("focuscenter"); 74 | // try load addon only once to avoid execute redundant logic and errors on each attempt 75 | focusCenterOnceTryedToLoad = true; 76 | } 77 | if (focusCenter && focusCenter.getFocusStatus) { 78 | focusCenter 79 | .getFocusStatus() 80 | .then((isFocused) => resolve(isFocused === 1)) 81 | .catch((e) => reject(e)); 82 | } else { 83 | reject(new Error("getFocusStatus not supported")); 84 | } 85 | } else { 86 | return resolve(dnd === 1); 87 | } 88 | }); 89 | } 90 | 91 | function withValidation(action) { 92 | return () => { 93 | if (process.platform !== "darwin") { 94 | throw new Error("[macos-notification-state] only works on macOS"); 95 | } 96 | if (!notificationState) { 97 | throw new Error( 98 | "[macos-notification-state] notificationstate addon not loaded" 99 | ); 100 | } 101 | return action(); 102 | }; 103 | } 104 | 105 | module.exports = { 106 | getDoNotDisturb: withValidation(getDoNotDisturb), 107 | getNotificationState: withValidation(getNotificationState), 108 | getSessionState: withValidation(getSessionState), 109 | }; 110 | -------------------------------------------------------------------------------- /lib/macos-version.h: -------------------------------------------------------------------------------- 1 | int getOSVersion(); -------------------------------------------------------------------------------- /lib/macos-version.mm: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | int getOSVersion() { 4 | NSOperatingSystemVersion version = 5 | [[NSProcessInfo processInfo] operatingSystemVersion]; 6 | bool isBigSur = version.majorVersion == 11 || 7 | (version.majorVersion == 10 && version.minorVersion > 15); 8 | 9 | if (isBigSur) { 10 | return 11; 11 | } 12 | return version.majorVersion; 13 | } -------------------------------------------------------------------------------- /lib/notificationstate-query.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include "notificationstate-query.h" 3 | 4 | int queryUserSessionState() { 5 | CFDictionaryRef sessionDict = CGSessionCopyCurrentDictionary(); 6 | if (sessionDict == NULL) { 7 | return -1; 8 | } 9 | 10 | CFBooleanRef sessionScreenIsLockedRef = (CFBooleanRef)CFDictionaryGetValue(sessionDict, CFSTR("CGSSessionScreenIsLocked")); 11 | 12 | bool sessionScreenIsLocked = sessionScreenIsLockedRef ? CFBooleanGetValue(sessionScreenIsLockedRef) : false; 13 | 14 | CFBooleanRef sessionOnConsoleKeyRef = (CFBooleanRef)CFDictionaryGetValue(sessionDict, CFSTR("kCGSSessionOnConsoleKey")); 15 | bool sessionOnConsoleKey = sessionOnConsoleKeyRef ? CFBooleanGetValue(sessionOnConsoleKeyRef) : false; 16 | 17 | CFRelease(sessionDict); 18 | 19 | if (sessionScreenIsLocked) { 20 | return 1; 21 | } else if (sessionOnConsoleKey) { 22 | return 2; 23 | } else { 24 | return 0; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/notificationstate-query.h: -------------------------------------------------------------------------------- 1 | int queryUserSessionState(); 2 | -------------------------------------------------------------------------------- /lib/notificationstate.cc: -------------------------------------------------------------------------------- 1 | #define NAPI_VERSION 3 2 | #include 3 | 4 | #define NAPI_CALL(env, call) \ 5 | do { \ 6 | napi_status status = (call); \ 7 | if (status != napi_ok) { \ 8 | const napi_extended_error_info *error_info = NULL; \ 9 | napi_get_last_error_info((env), &error_info); \ 10 | bool is_pending; \ 11 | napi_is_exception_pending((env), &is_pending); \ 12 | if (!is_pending) { \ 13 | const char *message = (error_info->error_message == NULL) \ 14 | ? "empty error message" \ 15 | : error_info->error_message; \ 16 | napi_throw_error((env), NULL, message); \ 17 | return NULL; \ 18 | } \ 19 | } \ 20 | } while (0) 21 | 22 | #ifdef __APPLE__ 23 | #include "do-not-disturb.h" 24 | #include "macos-version.h" 25 | #include "notificationstate-query.h" 26 | #endif 27 | 28 | static napi_value QueryUserSessionState(napi_env env, napi_callback_info info) { 29 | int returnValue = -1; 30 | 31 | #ifdef __APPLE__ 32 | returnValue = queryUserSessionState(); 33 | #endif 34 | 35 | napi_value result; 36 | NAPI_CALL(env, napi_create_int32(env, returnValue, &result)); 37 | return result; 38 | } 39 | 40 | static napi_value GetDoNotDisturb(napi_env env, napi_callback_info info) { 41 | int returnValue = -1; 42 | 43 | #ifdef __APPLE__ 44 | auto majorVersion = getOSVersion(); 45 | if (majorVersion < 13) { 46 | bool dnd = getDoNotDisturb(); 47 | if (dnd) { 48 | returnValue = 1; 49 | } else { 50 | returnValue = 0; 51 | } 52 | } 53 | #endif 54 | 55 | napi_value result; 56 | NAPI_CALL(env, napi_create_int32(env, returnValue, &result)); 57 | return result; 58 | } 59 | 60 | NAPI_MODULE_INIT() { 61 | napi_value result = nullptr; 62 | NAPI_CALL(env, napi_create_object(env, &result)); 63 | 64 | #ifdef __APPLE__ 65 | napi_value exported_function; 66 | NAPI_CALL(env, napi_create_function(env, "getNotificationState", 67 | NAPI_AUTO_LENGTH, QueryUserSessionState, 68 | NULL, &exported_function)); 69 | NAPI_CALL(env, napi_set_named_property(env, result, "getNotificationState", 70 | exported_function)); 71 | 72 | NAPI_CALL(env, 73 | napi_create_function(env, "getDoNotDisturb", NAPI_AUTO_LENGTH, 74 | GetDoNotDisturb, NULL, &exported_function)); 75 | NAPI_CALL(env, napi_set_named_property(env, result, "getDoNotDisturb", 76 | exported_function)); 77 | #endif 78 | return result; 79 | } 80 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "macos-notification-state", 3 | "version": "3.0.0", 4 | "description": "macOS notification state as a native node addon", 5 | "main": "lib/index.js", 6 | "scripts": { 7 | "preinstall": "node ensure-sdk.js", 8 | "test": "standard && mocha ./test/test.js" 9 | }, 10 | "repository": "https://github.com/felixrieseberg/macos-notification-state", 11 | "license": "MIT", 12 | "licenses": [ 13 | { 14 | "type": "MIT", 15 | "url": "http://github.com/felixrieseberg/macos-notification-state/blob/master/LICENSE" 16 | } 17 | ], 18 | "dependencies": { 19 | "bindings": "^1.5.0", 20 | "node-addon-api": "3.0.0" 21 | }, 22 | "author": { 23 | "email": "felix@felixrieseberg.com", 24 | "name": "Felix Rieseberg", 25 | "url": "http://www.felixrieseberg.com" 26 | }, 27 | "keywords": [ 28 | "macos", 29 | "darwin", 30 | "CGSSessionScreenIsLocked", 31 | "kCGSSessionOnConsoleKey", 32 | "doNotDisturb", 33 | "do not disturb" 34 | ], 35 | "devDependencies": { 36 | "mocha": "^9.2.0", 37 | "standard": "^16.0.1" 38 | } 39 | } -------------------------------------------------------------------------------- /test/benchmark.js: -------------------------------------------------------------------------------- 1 | // This is pretty simple and dumb. 2 | 3 | function usingNative () { 4 | const { getDoNotDisturb } = require('../lib/index') 5 | return getDoNotDisturb() 6 | } 7 | 8 | function usingExec () { 9 | const { exec } = require('child_process') 10 | return new Promise((resolve, reject) => { 11 | exec('defaults read ~/Library/Preferences/ByHost/com.apple.notificationcenterui.plist', (error, stdout) => { 12 | if (error) { 13 | return reject(error) 14 | } 15 | 16 | resolve(stdout.trim() === '1') 17 | }) 18 | }) 19 | } 20 | 21 | async function test () { 22 | console.log('Checking dnd with native code (100.000 times)') 23 | console.time('macos-notification-state') 24 | for (let index = 0; index < 100000; index++) { 25 | usingNative() 26 | } 27 | console.timeEnd('macos-notification-state') 28 | 29 | console.log('Checking dnd with exec (100 times)') 30 | console.time('exec') 31 | for (let index = 0; index < 100; index++) { 32 | await usingExec() 33 | } 34 | console.timeEnd('exec') 35 | } 36 | 37 | test() 38 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | /* global describe, it */ 2 | 3 | const assert = require('assert') 4 | const { getSessionState, getNotificationState, getDoNotDisturb } = require('../lib/index') 5 | 6 | if (process.platform !== 'darwin') { 7 | console.error('You can\'t run this test on a non-mac machine. Sorry!') 8 | } 9 | 10 | describe('getSessionState', () => { 11 | it('should return unknown or error', () => { 12 | const res = getSessionState() 13 | assert.strictEqual((res !== 'UNKNOWN'), true, 'Result is not unknown') 14 | }) 15 | 16 | it('should return a SESSION_ON_CONSOLE_KEY (this test is flaky, but in most test cases, this should be true)', () => { 17 | const res = getSessionState() 18 | assert.strictEqual((res === 'SESSION_ON_CONSOLE_KEY'), true, 'Result is SESSION_ON_CONSOLE_KEY (normal result)') 19 | }) 20 | }) 21 | 22 | describe('getDoNotDisturb', () => { 23 | it('should return false', () => { 24 | assert.strictEqual(getDoNotDisturb(), false, 'doNotDisturb returns false') 25 | }) 26 | }) 27 | 28 | describe('getDoNotDisturb / getNotificationState test, interactive', () => { 29 | it('should correctly identify do not disturb', function (done) { 30 | this.timeout(20000) 31 | 32 | let secondsLeft = 8 33 | const interval = setInterval(() => { 34 | process.stdout.clearLine() 35 | process.stdout.cursorTo(5) 36 | process.stdout.write(`Please enable do not disturb. Starting test in ${secondsLeft}s...`) 37 | 38 | if (secondsLeft === 0) { 39 | console.log('') 40 | clearInterval(interval) 41 | 42 | assert.strictEqual(getDoNotDisturb(), true) 43 | assert.strictEqual(getNotificationState(), 'DO_NOT_DISTURB') 44 | done() 45 | } 46 | 47 | secondsLeft = secondsLeft - 1 48 | }, 1000) 49 | }) 50 | }) 51 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.16.7" 7 | resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz" 8 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 9 | dependencies: 10 | "@babel/highlight" "^7.16.7" 11 | 12 | "@babel/helper-validator-identifier@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz" 15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 16 | 17 | "@babel/highlight@^7.16.7": 18 | version "7.16.10" 19 | resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz" 20 | integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.16.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.3.0": 27 | version "0.3.0" 28 | resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz" 29 | integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^12.1.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | lodash "^4.17.20" 39 | minimatch "^3.0.4" 40 | strip-json-comments "^3.1.1" 41 | 42 | "@types/json5@^0.0.29": 43 | version "0.0.29" 44 | resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" 45 | integrity "sha1-7ihweulOEdK4J7y+UnC86n8+ce4= sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" 46 | 47 | "@ungap/promise-all-settled@1.1.2": 48 | version "1.1.2" 49 | resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" 50 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 51 | 52 | acorn-jsx@^5.3.1: 53 | version "5.3.2" 54 | resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" 55 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 56 | 57 | acorn@^7.4.0: 58 | version "7.4.1" 59 | resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" 60 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 61 | 62 | ajv@^6.10.0, ajv@^6.12.4: 63 | version "6.12.6" 64 | resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" 65 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 66 | dependencies: 67 | fast-deep-equal "^3.1.1" 68 | fast-json-stable-stringify "^2.0.0" 69 | json-schema-traverse "^0.4.1" 70 | uri-js "^4.2.2" 71 | 72 | ajv@^8.0.1: 73 | version "8.10.0" 74 | resolved "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz" 75 | integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== 76 | dependencies: 77 | fast-deep-equal "^3.1.1" 78 | json-schema-traverse "^1.0.0" 79 | require-from-string "^2.0.2" 80 | uri-js "^4.2.2" 81 | 82 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 83 | version "4.1.1" 84 | resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" 85 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 86 | 87 | ansi-regex@^5.0.1: 88 | version "5.0.1" 89 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 90 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 91 | 92 | ansi-styles@^3.2.1: 93 | version "3.2.1" 94 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" 95 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 96 | dependencies: 97 | color-convert "^1.9.0" 98 | 99 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 100 | version "4.3.0" 101 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 102 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 103 | dependencies: 104 | color-convert "^2.0.1" 105 | 106 | anymatch@~3.1.2: 107 | version "3.1.2" 108 | resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" 109 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 110 | dependencies: 111 | normalize-path "^3.0.0" 112 | picomatch "^2.0.4" 113 | 114 | argparse@^1.0.7: 115 | version "1.0.10" 116 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" 117 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 118 | dependencies: 119 | sprintf-js "~1.0.2" 120 | 121 | argparse@^2.0.1: 122 | version "2.0.1" 123 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 124 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 125 | 126 | array-includes@^3.1.3: 127 | version "3.1.4" 128 | resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz" 129 | integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== 130 | dependencies: 131 | call-bind "^1.0.2" 132 | define-properties "^1.1.3" 133 | es-abstract "^1.19.1" 134 | get-intrinsic "^1.1.1" 135 | is-string "^1.0.7" 136 | 137 | array.prototype.flat@^1.2.4: 138 | version "1.2.5" 139 | resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz" 140 | integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== 141 | dependencies: 142 | call-bind "^1.0.2" 143 | define-properties "^1.1.3" 144 | es-abstract "^1.19.0" 145 | 146 | array.prototype.flatmap@^1.2.4: 147 | version "1.2.5" 148 | resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz" 149 | integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== 150 | dependencies: 151 | call-bind "^1.0.0" 152 | define-properties "^1.1.3" 153 | es-abstract "^1.19.0" 154 | 155 | astral-regex@^2.0.0: 156 | version "2.0.0" 157 | resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" 158 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 159 | 160 | balanced-match@^1.0.0: 161 | version "1.0.2" 162 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 163 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 164 | 165 | binary-extensions@^2.0.0: 166 | version "2.2.0" 167 | resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" 168 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 169 | 170 | bindings@^1.5.0: 171 | version "1.5.0" 172 | resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" 173 | integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== 174 | dependencies: 175 | file-uri-to-path "1.0.0" 176 | 177 | brace-expansion@^1.1.7: 178 | version "1.1.11" 179 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" 180 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 181 | dependencies: 182 | balanced-match "^1.0.0" 183 | concat-map "0.0.1" 184 | 185 | braces@~3.0.2: 186 | version "3.0.2" 187 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" 188 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 189 | dependencies: 190 | fill-range "^7.0.1" 191 | 192 | browser-stdout@1.3.1: 193 | version "1.3.1" 194 | resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" 195 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 196 | 197 | call-bind@^1.0.0, call-bind@^1.0.2: 198 | version "1.0.2" 199 | resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" 200 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 201 | dependencies: 202 | function-bind "^1.1.1" 203 | get-intrinsic "^1.0.2" 204 | 205 | callsites@^3.0.0: 206 | version "3.1.0" 207 | resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" 208 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 209 | 210 | camelcase@^6.0.0: 211 | version "6.3.0" 212 | resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" 213 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 214 | 215 | chalk@^2.0.0: 216 | version "2.4.2" 217 | resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" 218 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 219 | dependencies: 220 | ansi-styles "^3.2.1" 221 | escape-string-regexp "^1.0.5" 222 | supports-color "^5.3.0" 223 | 224 | chalk@^4.0.0, chalk@^4.1.0: 225 | version "4.1.2" 226 | resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" 227 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 228 | dependencies: 229 | ansi-styles "^4.1.0" 230 | supports-color "^7.1.0" 231 | 232 | chokidar@3.5.3: 233 | version "3.5.3" 234 | resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" 235 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 236 | dependencies: 237 | anymatch "~3.1.2" 238 | braces "~3.0.2" 239 | glob-parent "~5.1.2" 240 | is-binary-path "~2.1.0" 241 | is-glob "~4.0.1" 242 | normalize-path "~3.0.0" 243 | readdirp "~3.6.0" 244 | optionalDependencies: 245 | fsevents "~2.3.2" 246 | 247 | cliui@^7.0.2: 248 | version "7.0.4" 249 | resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" 250 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 251 | dependencies: 252 | string-width "^4.2.0" 253 | strip-ansi "^6.0.0" 254 | wrap-ansi "^7.0.0" 255 | 256 | color-convert@^1.9.0: 257 | version "1.9.3" 258 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" 259 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 260 | dependencies: 261 | color-name "1.1.3" 262 | 263 | color-convert@^2.0.1: 264 | version "2.0.1" 265 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 266 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 267 | dependencies: 268 | color-name "~1.1.4" 269 | 270 | color-name@1.1.3: 271 | version "1.1.3" 272 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 273 | integrity "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" 274 | 275 | color-name@~1.1.4: 276 | version "1.1.4" 277 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 278 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 279 | 280 | concat-map@0.0.1: 281 | version "0.0.1" 282 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 283 | integrity "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 284 | 285 | cross-spawn@^7.0.2: 286 | version "7.0.3" 287 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" 288 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 289 | dependencies: 290 | path-key "^3.1.0" 291 | shebang-command "^2.0.0" 292 | which "^2.0.1" 293 | 294 | debug@4.3.3, debug@^4.0.1, debug@^4.1.1: 295 | version "4.3.3" 296 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" 297 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 298 | dependencies: 299 | ms "2.1.2" 300 | 301 | debug@^2.6.9: 302 | version "2.6.9" 303 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 304 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 305 | dependencies: 306 | ms "2.0.0" 307 | 308 | debug@^3.2.7: 309 | version "3.2.7" 310 | resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" 311 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 312 | dependencies: 313 | ms "^2.1.1" 314 | 315 | decamelize@^4.0.0: 316 | version "4.0.0" 317 | resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" 318 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 319 | 320 | deep-is@^0.1.3: 321 | version "0.1.4" 322 | resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" 323 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 324 | 325 | define-properties@^1.1.3: 326 | version "1.1.3" 327 | resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" 328 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 329 | dependencies: 330 | object-keys "^1.0.12" 331 | 332 | diff@5.0.0: 333 | version "5.0.0" 334 | resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" 335 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 336 | 337 | doctrine@^2.1.0: 338 | version "2.1.0" 339 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" 340 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 341 | dependencies: 342 | esutils "^2.0.2" 343 | 344 | doctrine@^3.0.0: 345 | version "3.0.0" 346 | resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" 347 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 348 | dependencies: 349 | esutils "^2.0.2" 350 | 351 | emoji-regex@^8.0.0: 352 | version "8.0.0" 353 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 354 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 355 | 356 | enquirer@^2.3.5: 357 | version "2.3.6" 358 | resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" 359 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 360 | dependencies: 361 | ansi-colors "^4.1.1" 362 | 363 | error-ex@^1.3.1: 364 | version "1.3.2" 365 | resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" 366 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 367 | dependencies: 368 | is-arrayish "^0.2.1" 369 | 370 | es-abstract@^1.19.0, es-abstract@^1.19.1: 371 | version "1.19.1" 372 | resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz" 373 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== 374 | dependencies: 375 | call-bind "^1.0.2" 376 | es-to-primitive "^1.2.1" 377 | function-bind "^1.1.1" 378 | get-intrinsic "^1.1.1" 379 | get-symbol-description "^1.0.0" 380 | has "^1.0.3" 381 | has-symbols "^1.0.2" 382 | internal-slot "^1.0.3" 383 | is-callable "^1.2.4" 384 | is-negative-zero "^2.0.1" 385 | is-regex "^1.1.4" 386 | is-shared-array-buffer "^1.0.1" 387 | is-string "^1.0.7" 388 | is-weakref "^1.0.1" 389 | object-inspect "^1.11.0" 390 | object-keys "^1.1.1" 391 | object.assign "^4.1.2" 392 | string.prototype.trimend "^1.0.4" 393 | string.prototype.trimstart "^1.0.4" 394 | unbox-primitive "^1.0.1" 395 | 396 | es-to-primitive@^1.2.1: 397 | version "1.2.1" 398 | resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" 399 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 400 | dependencies: 401 | is-callable "^1.1.4" 402 | is-date-object "^1.0.1" 403 | is-symbol "^1.0.2" 404 | 405 | escalade@^3.1.1: 406 | version "3.1.1" 407 | resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" 408 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 409 | 410 | escape-string-regexp@4.0.0: 411 | version "4.0.0" 412 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" 413 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 414 | 415 | escape-string-regexp@^1.0.5: 416 | version "1.0.5" 417 | resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 418 | integrity "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" 419 | 420 | eslint-config-standard-jsx@10.0.0: 421 | version "10.0.0" 422 | resolved "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-10.0.0.tgz" 423 | integrity sha512-hLeA2f5e06W1xyr/93/QJulN/rLbUVUmqTlexv9PRKHFwEC9ffJcH2LvJhMoEqYQBEYafedgGZXH2W8NUpt5lA== 424 | 425 | eslint-config-standard@16.0.3: 426 | version "16.0.3" 427 | resolved "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz" 428 | integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== 429 | 430 | eslint-import-resolver-node@^0.3.6: 431 | version "0.3.6" 432 | resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" 433 | integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== 434 | dependencies: 435 | debug "^3.2.7" 436 | resolve "^1.20.0" 437 | 438 | eslint-module-utils@^2.6.2: 439 | version "2.7.3" 440 | resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz" 441 | integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== 442 | dependencies: 443 | debug "^3.2.7" 444 | find-up "^2.1.0" 445 | 446 | eslint-plugin-es@^3.0.0: 447 | version "3.0.1" 448 | resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" 449 | integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== 450 | dependencies: 451 | eslint-utils "^2.0.0" 452 | regexpp "^3.0.0" 453 | 454 | eslint-plugin-import@~2.24.2: 455 | version "2.24.2" 456 | resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz" 457 | integrity sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q== 458 | dependencies: 459 | array-includes "^3.1.3" 460 | array.prototype.flat "^1.2.4" 461 | debug "^2.6.9" 462 | doctrine "^2.1.0" 463 | eslint-import-resolver-node "^0.3.6" 464 | eslint-module-utils "^2.6.2" 465 | find-up "^2.0.0" 466 | has "^1.0.3" 467 | is-core-module "^2.6.0" 468 | minimatch "^3.0.4" 469 | object.values "^1.1.4" 470 | pkg-up "^2.0.0" 471 | read-pkg-up "^3.0.0" 472 | resolve "^1.20.0" 473 | tsconfig-paths "^3.11.0" 474 | 475 | eslint-plugin-node@~11.1.0: 476 | version "11.1.0" 477 | resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" 478 | integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== 479 | dependencies: 480 | eslint-plugin-es "^3.0.0" 481 | eslint-utils "^2.0.0" 482 | ignore "^5.1.1" 483 | minimatch "^3.0.4" 484 | resolve "^1.10.1" 485 | semver "^6.1.0" 486 | 487 | eslint-plugin-promise@~5.1.0: 488 | version "5.1.1" 489 | resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.1.tgz" 490 | integrity sha512-XgdcdyNzHfmlQyweOPTxmc7pIsS6dE4MvwhXWMQ2Dxs1XAL2GJDilUsjWen6TWik0aSI+zD/PqocZBblcm9rdA== 491 | 492 | eslint-plugin-react@~7.25.1: 493 | version "7.25.3" 494 | resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.25.3.tgz" 495 | integrity sha512-ZMbFvZ1WAYSZKY662MBVEWR45VaBT6KSJCiupjrNlcdakB90juaZeDCbJq19e73JZQubqFtgETohwgAt8u5P6w== 496 | dependencies: 497 | array-includes "^3.1.3" 498 | array.prototype.flatmap "^1.2.4" 499 | doctrine "^2.1.0" 500 | estraverse "^5.2.0" 501 | jsx-ast-utils "^2.4.1 || ^3.0.0" 502 | minimatch "^3.0.4" 503 | object.entries "^1.1.4" 504 | object.fromentries "^2.0.4" 505 | object.hasown "^1.0.0" 506 | object.values "^1.1.4" 507 | prop-types "^15.7.2" 508 | resolve "^2.0.0-next.3" 509 | string.prototype.matchall "^4.0.5" 510 | 511 | eslint-scope@^5.1.1: 512 | version "5.1.1" 513 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" 514 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 515 | dependencies: 516 | esrecurse "^4.3.0" 517 | estraverse "^4.1.1" 518 | 519 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 520 | version "2.1.0" 521 | resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" 522 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 523 | dependencies: 524 | eslint-visitor-keys "^1.1.0" 525 | 526 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 527 | version "1.3.0" 528 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" 529 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 530 | 531 | eslint-visitor-keys@^2.0.0: 532 | version "2.1.0" 533 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" 534 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 535 | 536 | eslint@~7.18.0: 537 | version "7.18.0" 538 | resolved "https://registry.npmjs.org/eslint/-/eslint-7.18.0.tgz" 539 | integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ== 540 | dependencies: 541 | "@babel/code-frame" "^7.0.0" 542 | "@eslint/eslintrc" "^0.3.0" 543 | ajv "^6.10.0" 544 | chalk "^4.0.0" 545 | cross-spawn "^7.0.2" 546 | debug "^4.0.1" 547 | doctrine "^3.0.0" 548 | enquirer "^2.3.5" 549 | eslint-scope "^5.1.1" 550 | eslint-utils "^2.1.0" 551 | eslint-visitor-keys "^2.0.0" 552 | espree "^7.3.1" 553 | esquery "^1.2.0" 554 | esutils "^2.0.2" 555 | file-entry-cache "^6.0.0" 556 | functional-red-black-tree "^1.0.1" 557 | glob-parent "^5.0.0" 558 | globals "^12.1.0" 559 | ignore "^4.0.6" 560 | import-fresh "^3.0.0" 561 | imurmurhash "^0.1.4" 562 | is-glob "^4.0.0" 563 | js-yaml "^3.13.1" 564 | json-stable-stringify-without-jsonify "^1.0.1" 565 | levn "^0.4.1" 566 | lodash "^4.17.20" 567 | minimatch "^3.0.4" 568 | natural-compare "^1.4.0" 569 | optionator "^0.9.1" 570 | progress "^2.0.0" 571 | regexpp "^3.1.0" 572 | semver "^7.2.1" 573 | strip-ansi "^6.0.0" 574 | strip-json-comments "^3.1.0" 575 | table "^6.0.4" 576 | text-table "^0.2.0" 577 | v8-compile-cache "^2.0.3" 578 | 579 | espree@^7.3.0, espree@^7.3.1: 580 | version "7.3.1" 581 | resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" 582 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 583 | dependencies: 584 | acorn "^7.4.0" 585 | acorn-jsx "^5.3.1" 586 | eslint-visitor-keys "^1.3.0" 587 | 588 | esprima@^4.0.0: 589 | version "4.0.1" 590 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" 591 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 592 | 593 | esquery@^1.2.0: 594 | version "1.4.0" 595 | resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" 596 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 597 | dependencies: 598 | estraverse "^5.1.0" 599 | 600 | esrecurse@^4.3.0: 601 | version "4.3.0" 602 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" 603 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 604 | dependencies: 605 | estraverse "^5.2.0" 606 | 607 | estraverse@^4.1.1: 608 | version "4.3.0" 609 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" 610 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 611 | 612 | estraverse@^5.1.0, estraverse@^5.2.0: 613 | version "5.3.0" 614 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" 615 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 616 | 617 | esutils@^2.0.2: 618 | version "2.0.3" 619 | resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" 620 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 621 | 622 | fast-deep-equal@^3.1.1: 623 | version "3.1.3" 624 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" 625 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 626 | 627 | fast-json-stable-stringify@^2.0.0: 628 | version "2.1.0" 629 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" 630 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 631 | 632 | fast-levenshtein@^2.0.6: 633 | version "2.0.6" 634 | resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" 635 | integrity "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" 636 | 637 | file-entry-cache@^6.0.0: 638 | version "6.0.1" 639 | resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" 640 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 641 | dependencies: 642 | flat-cache "^3.0.4" 643 | 644 | file-uri-to-path@1.0.0: 645 | version "1.0.0" 646 | resolved "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz" 647 | integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== 648 | 649 | fill-range@^7.0.1: 650 | version "7.0.1" 651 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" 652 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 653 | dependencies: 654 | to-regex-range "^5.0.1" 655 | 656 | find-up@5.0.0: 657 | version "5.0.0" 658 | resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" 659 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 660 | dependencies: 661 | locate-path "^6.0.0" 662 | path-exists "^4.0.0" 663 | 664 | find-up@^2.0.0, find-up@^2.1.0: 665 | version "2.1.0" 666 | resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" 667 | integrity "sha1-RdG35QbHF93UgndaK3eSCjwMV6c= sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==" 668 | dependencies: 669 | locate-path "^2.0.0" 670 | 671 | find-up@^3.0.0: 672 | version "3.0.0" 673 | resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" 674 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 675 | dependencies: 676 | locate-path "^3.0.0" 677 | 678 | flat-cache@^3.0.4: 679 | version "3.0.4" 680 | resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" 681 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 682 | dependencies: 683 | flatted "^3.1.0" 684 | rimraf "^3.0.2" 685 | 686 | flat@^5.0.2: 687 | version "5.0.2" 688 | resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" 689 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 690 | 691 | flatted@^3.1.0: 692 | version "3.2.5" 693 | resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" 694 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== 695 | 696 | fs.realpath@^1.0.0: 697 | version "1.0.0" 698 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 699 | integrity "sha1-FQStJSMVjKpA20onh8sBQRmU6k8= sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 700 | 701 | fsevents@~2.3.2: 702 | version "2.3.2" 703 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" 704 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 705 | 706 | function-bind@^1.1.1: 707 | version "1.1.1" 708 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" 709 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 710 | 711 | functional-red-black-tree@^1.0.1: 712 | version "1.0.1" 713 | resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" 714 | integrity "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" 715 | 716 | get-caller-file@^2.0.5: 717 | version "2.0.5" 718 | resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" 719 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 720 | 721 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 722 | version "1.1.1" 723 | resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" 724 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 725 | dependencies: 726 | function-bind "^1.1.1" 727 | has "^1.0.3" 728 | has-symbols "^1.0.1" 729 | 730 | get-stdin@^8.0.0: 731 | version "8.0.0" 732 | resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz" 733 | integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== 734 | 735 | get-symbol-description@^1.0.0: 736 | version "1.0.0" 737 | resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" 738 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 739 | dependencies: 740 | call-bind "^1.0.2" 741 | get-intrinsic "^1.1.1" 742 | 743 | glob-parent@^5.0.0, glob-parent@~5.1.2: 744 | version "5.1.2" 745 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" 746 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 747 | dependencies: 748 | is-glob "^4.0.1" 749 | 750 | glob@7.2.0, glob@^7.1.3: 751 | version "7.2.0" 752 | resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" 753 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 754 | dependencies: 755 | fs.realpath "^1.0.0" 756 | inflight "^1.0.4" 757 | inherits "2" 758 | minimatch "^3.0.4" 759 | once "^1.3.0" 760 | path-is-absolute "^1.0.0" 761 | 762 | globals@^12.1.0: 763 | version "12.4.0" 764 | resolved "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz" 765 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 766 | dependencies: 767 | type-fest "^0.8.1" 768 | 769 | graceful-fs@^4.1.15, graceful-fs@^4.1.2: 770 | version "4.2.9" 771 | resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz" 772 | integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== 773 | 774 | growl@1.10.5: 775 | version "1.10.5" 776 | resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" 777 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 778 | 779 | has-bigints@^1.0.1: 780 | version "1.0.1" 781 | resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" 782 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== 783 | 784 | has-flag@^3.0.0: 785 | version "3.0.0" 786 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" 787 | integrity "sha1-tdRU3CGZriJWmfNGfloH87lVuv0= sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 788 | 789 | has-flag@^4.0.0: 790 | version "4.0.0" 791 | resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" 792 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 793 | 794 | has-symbols@^1.0.1, has-symbols@^1.0.2: 795 | version "1.0.2" 796 | resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" 797 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== 798 | 799 | has-tostringtag@^1.0.0: 800 | version "1.0.0" 801 | resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" 802 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 803 | dependencies: 804 | has-symbols "^1.0.2" 805 | 806 | has@^1.0.3: 807 | version "1.0.3" 808 | resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" 809 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 810 | dependencies: 811 | function-bind "^1.1.1" 812 | 813 | he@1.2.0: 814 | version "1.2.0" 815 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 816 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 817 | 818 | hosted-git-info@^2.1.4: 819 | version "2.8.9" 820 | resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" 821 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 822 | 823 | ignore@^4.0.6: 824 | version "4.0.6" 825 | resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" 826 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 827 | 828 | ignore@^5.1.1: 829 | version "5.2.0" 830 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" 831 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 832 | 833 | import-fresh@^3.0.0, import-fresh@^3.2.1: 834 | version "3.3.0" 835 | resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" 836 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 837 | dependencies: 838 | parent-module "^1.0.0" 839 | resolve-from "^4.0.0" 840 | 841 | imurmurhash@^0.1.4: 842 | version "0.1.4" 843 | resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" 844 | integrity "sha1-khi5srkoojixPcT7a21XbyMUU+o= sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" 845 | 846 | inflight@^1.0.4: 847 | version "1.0.6" 848 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 849 | integrity "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" 850 | dependencies: 851 | once "^1.3.0" 852 | wrappy "1" 853 | 854 | inherits@2: 855 | version "2.0.4" 856 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 857 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 858 | 859 | internal-slot@^1.0.3: 860 | version "1.0.3" 861 | resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" 862 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 863 | dependencies: 864 | get-intrinsic "^1.1.0" 865 | has "^1.0.3" 866 | side-channel "^1.0.4" 867 | 868 | is-arrayish@^0.2.1: 869 | version "0.2.1" 870 | resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" 871 | integrity "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" 872 | 873 | is-bigint@^1.0.1: 874 | version "1.0.4" 875 | resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" 876 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 877 | dependencies: 878 | has-bigints "^1.0.1" 879 | 880 | is-binary-path@~2.1.0: 881 | version "2.1.0" 882 | resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" 883 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 884 | dependencies: 885 | binary-extensions "^2.0.0" 886 | 887 | is-boolean-object@^1.1.0: 888 | version "1.1.2" 889 | resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" 890 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 891 | dependencies: 892 | call-bind "^1.0.2" 893 | has-tostringtag "^1.0.0" 894 | 895 | is-callable@^1.1.4, is-callable@^1.2.4: 896 | version "1.2.4" 897 | resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" 898 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 899 | 900 | is-core-module@^2.2.0, is-core-module@^2.6.0, is-core-module@^2.8.1: 901 | version "2.8.1" 902 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz" 903 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 904 | dependencies: 905 | has "^1.0.3" 906 | 907 | is-date-object@^1.0.1: 908 | version "1.0.5" 909 | resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" 910 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 911 | dependencies: 912 | has-tostringtag "^1.0.0" 913 | 914 | is-extglob@^2.1.1: 915 | version "2.1.1" 916 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 917 | integrity "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 918 | 919 | is-fullwidth-code-point@^3.0.0: 920 | version "3.0.0" 921 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 922 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 923 | 924 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 925 | version "4.0.3" 926 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" 927 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 928 | dependencies: 929 | is-extglob "^2.1.1" 930 | 931 | is-negative-zero@^2.0.1: 932 | version "2.0.2" 933 | resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" 934 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 935 | 936 | is-number-object@^1.0.4: 937 | version "1.0.6" 938 | resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz" 939 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== 940 | dependencies: 941 | has-tostringtag "^1.0.0" 942 | 943 | is-number@^7.0.0: 944 | version "7.0.0" 945 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" 946 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 947 | 948 | is-plain-obj@^2.1.0: 949 | version "2.1.0" 950 | resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" 951 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 952 | 953 | is-regex@^1.1.4: 954 | version "1.1.4" 955 | resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" 956 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 957 | dependencies: 958 | call-bind "^1.0.2" 959 | has-tostringtag "^1.0.0" 960 | 961 | is-shared-array-buffer@^1.0.1: 962 | version "1.0.1" 963 | resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz" 964 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== 965 | 966 | is-string@^1.0.5, is-string@^1.0.7: 967 | version "1.0.7" 968 | resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" 969 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 970 | dependencies: 971 | has-tostringtag "^1.0.0" 972 | 973 | is-symbol@^1.0.2, is-symbol@^1.0.3: 974 | version "1.0.4" 975 | resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" 976 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 977 | dependencies: 978 | has-symbols "^1.0.2" 979 | 980 | is-unicode-supported@^0.1.0: 981 | version "0.1.0" 982 | resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" 983 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 984 | 985 | is-weakref@^1.0.1: 986 | version "1.0.2" 987 | resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" 988 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 989 | dependencies: 990 | call-bind "^1.0.2" 991 | 992 | isexe@^2.0.0: 993 | version "2.0.0" 994 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 995 | integrity "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" 996 | 997 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 998 | version "4.0.0" 999 | resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" 1000 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1001 | 1002 | js-yaml@4.1.0: 1003 | version "4.1.0" 1004 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" 1005 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1006 | dependencies: 1007 | argparse "^2.0.1" 1008 | 1009 | js-yaml@^3.13.1: 1010 | version "3.14.1" 1011 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" 1012 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1013 | dependencies: 1014 | argparse "^1.0.7" 1015 | esprima "^4.0.0" 1016 | 1017 | json-parse-better-errors@^1.0.1: 1018 | version "1.0.2" 1019 | resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" 1020 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1021 | 1022 | json-schema-traverse@^0.4.1: 1023 | version "0.4.1" 1024 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" 1025 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1026 | 1027 | json-schema-traverse@^1.0.0: 1028 | version "1.0.0" 1029 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" 1030 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1031 | 1032 | json-stable-stringify-without-jsonify@^1.0.1: 1033 | version "1.0.1" 1034 | resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" 1035 | integrity "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" 1036 | 1037 | json5@^1.0.1: 1038 | version "1.0.1" 1039 | resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" 1040 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== 1041 | dependencies: 1042 | minimist "^1.2.0" 1043 | 1044 | "jsx-ast-utils@^2.4.1 || ^3.0.0": 1045 | version "3.2.1" 1046 | resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz" 1047 | integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== 1048 | dependencies: 1049 | array-includes "^3.1.3" 1050 | object.assign "^4.1.2" 1051 | 1052 | levn@^0.4.1: 1053 | version "0.4.1" 1054 | resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" 1055 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1056 | dependencies: 1057 | prelude-ls "^1.2.1" 1058 | type-check "~0.4.0" 1059 | 1060 | load-json-file@^4.0.0: 1061 | version "4.0.0" 1062 | resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" 1063 | integrity "sha1-L19Fq5HjMhYjT9U62rZo607AmTs= sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==" 1064 | dependencies: 1065 | graceful-fs "^4.1.2" 1066 | parse-json "^4.0.0" 1067 | pify "^3.0.0" 1068 | strip-bom "^3.0.0" 1069 | 1070 | load-json-file@^5.2.0: 1071 | version "5.3.0" 1072 | resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz" 1073 | integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== 1074 | dependencies: 1075 | graceful-fs "^4.1.15" 1076 | parse-json "^4.0.0" 1077 | pify "^4.0.1" 1078 | strip-bom "^3.0.0" 1079 | type-fest "^0.3.0" 1080 | 1081 | locate-path@^2.0.0: 1082 | version "2.0.0" 1083 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" 1084 | integrity "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==" 1085 | dependencies: 1086 | p-locate "^2.0.0" 1087 | path-exists "^3.0.0" 1088 | 1089 | locate-path@^3.0.0: 1090 | version "3.0.0" 1091 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" 1092 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1093 | dependencies: 1094 | p-locate "^3.0.0" 1095 | path-exists "^3.0.0" 1096 | 1097 | locate-path@^6.0.0: 1098 | version "6.0.0" 1099 | resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" 1100 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1101 | dependencies: 1102 | p-locate "^5.0.0" 1103 | 1104 | lodash.truncate@^4.4.2: 1105 | version "4.4.2" 1106 | resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" 1107 | integrity "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" 1108 | 1109 | lodash@^4.17.20: 1110 | version "4.17.21" 1111 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" 1112 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1113 | 1114 | log-symbols@4.1.0: 1115 | version "4.1.0" 1116 | resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" 1117 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1118 | dependencies: 1119 | chalk "^4.1.0" 1120 | is-unicode-supported "^0.1.0" 1121 | 1122 | loose-envify@^1.4.0: 1123 | version "1.4.0" 1124 | resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" 1125 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 1126 | dependencies: 1127 | js-tokens "^3.0.0 || ^4.0.0" 1128 | 1129 | lru-cache@^6.0.0: 1130 | version "6.0.0" 1131 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" 1132 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1133 | dependencies: 1134 | yallist "^4.0.0" 1135 | 1136 | minimatch@3.0.4, minimatch@^3.0.4: 1137 | version "3.0.4" 1138 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" 1139 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1140 | dependencies: 1141 | brace-expansion "^1.1.7" 1142 | 1143 | minimist@^1.2.0, minimist@^1.2.5: 1144 | version "1.2.5" 1145 | resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" 1146 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1147 | 1148 | mocha@^9.2.0: 1149 | version "9.2.0" 1150 | resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.0.tgz" 1151 | integrity sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q== 1152 | dependencies: 1153 | "@ungap/promise-all-settled" "1.1.2" 1154 | ansi-colors "4.1.1" 1155 | browser-stdout "1.3.1" 1156 | chokidar "3.5.3" 1157 | debug "4.3.3" 1158 | diff "5.0.0" 1159 | escape-string-regexp "4.0.0" 1160 | find-up "5.0.0" 1161 | glob "7.2.0" 1162 | growl "1.10.5" 1163 | he "1.2.0" 1164 | js-yaml "4.1.0" 1165 | log-symbols "4.1.0" 1166 | minimatch "3.0.4" 1167 | ms "2.1.3" 1168 | nanoid "3.2.0" 1169 | serialize-javascript "6.0.0" 1170 | strip-json-comments "3.1.1" 1171 | supports-color "8.1.1" 1172 | which "2.0.2" 1173 | workerpool "6.2.0" 1174 | yargs "16.2.0" 1175 | yargs-parser "20.2.4" 1176 | yargs-unparser "2.0.0" 1177 | 1178 | ms@2.0.0: 1179 | version "2.0.0" 1180 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1181 | integrity "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1182 | 1183 | ms@2.1.2: 1184 | version "2.1.2" 1185 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1186 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1187 | 1188 | ms@2.1.3, ms@^2.1.1: 1189 | version "2.1.3" 1190 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1191 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1192 | 1193 | nanoid@3.2.0: 1194 | version "3.2.0" 1195 | resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz" 1196 | integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== 1197 | 1198 | natural-compare@^1.4.0: 1199 | version "1.4.0" 1200 | resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" 1201 | integrity "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" 1202 | 1203 | node-addon-api@3.0.0: 1204 | version "3.0.0" 1205 | resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz" 1206 | integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg== 1207 | 1208 | normalize-package-data@^2.3.2: 1209 | version "2.5.0" 1210 | resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" 1211 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1212 | dependencies: 1213 | hosted-git-info "^2.1.4" 1214 | resolve "^1.10.0" 1215 | semver "2 || 3 || 4 || 5" 1216 | validate-npm-package-license "^3.0.1" 1217 | 1218 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1219 | version "3.0.0" 1220 | resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" 1221 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1222 | 1223 | object-assign@^4.1.1: 1224 | version "4.1.1" 1225 | resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 1226 | integrity "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1227 | 1228 | object-inspect@^1.11.0, object-inspect@^1.9.0: 1229 | version "1.12.0" 1230 | resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" 1231 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 1232 | 1233 | object-keys@^1.0.12, object-keys@^1.1.1: 1234 | version "1.1.1" 1235 | resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" 1236 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1237 | 1238 | object.assign@^4.1.2: 1239 | version "4.1.2" 1240 | resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" 1241 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1242 | dependencies: 1243 | call-bind "^1.0.0" 1244 | define-properties "^1.1.3" 1245 | has-symbols "^1.0.1" 1246 | object-keys "^1.1.1" 1247 | 1248 | object.entries@^1.1.4: 1249 | version "1.1.5" 1250 | resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" 1251 | integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== 1252 | dependencies: 1253 | call-bind "^1.0.2" 1254 | define-properties "^1.1.3" 1255 | es-abstract "^1.19.1" 1256 | 1257 | object.fromentries@^2.0.4: 1258 | version "2.0.5" 1259 | resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz" 1260 | integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== 1261 | dependencies: 1262 | call-bind "^1.0.2" 1263 | define-properties "^1.1.3" 1264 | es-abstract "^1.19.1" 1265 | 1266 | object.hasown@^1.0.0: 1267 | version "1.1.0" 1268 | resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz" 1269 | integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== 1270 | dependencies: 1271 | define-properties "^1.1.3" 1272 | es-abstract "^1.19.1" 1273 | 1274 | object.values@^1.1.4: 1275 | version "1.1.5" 1276 | resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" 1277 | integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== 1278 | dependencies: 1279 | call-bind "^1.0.2" 1280 | define-properties "^1.1.3" 1281 | es-abstract "^1.19.1" 1282 | 1283 | once@^1.3.0: 1284 | version "1.4.0" 1285 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1286 | integrity "sha1-WDsap3WWHUsROsF9nFC6753Xa9E= sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" 1287 | dependencies: 1288 | wrappy "1" 1289 | 1290 | optionator@^0.9.1: 1291 | version "0.9.1" 1292 | resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" 1293 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1294 | dependencies: 1295 | deep-is "^0.1.3" 1296 | fast-levenshtein "^2.0.6" 1297 | levn "^0.4.1" 1298 | prelude-ls "^1.2.1" 1299 | type-check "^0.4.0" 1300 | word-wrap "^1.2.3" 1301 | 1302 | p-limit@^1.1.0: 1303 | version "1.3.0" 1304 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" 1305 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1306 | dependencies: 1307 | p-try "^1.0.0" 1308 | 1309 | p-limit@^2.0.0: 1310 | version "2.3.0" 1311 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" 1312 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1313 | dependencies: 1314 | p-try "^2.0.0" 1315 | 1316 | p-limit@^3.0.2: 1317 | version "3.1.0" 1318 | resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" 1319 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1320 | dependencies: 1321 | yocto-queue "^0.1.0" 1322 | 1323 | p-locate@^2.0.0: 1324 | version "2.0.0" 1325 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" 1326 | integrity "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==" 1327 | dependencies: 1328 | p-limit "^1.1.0" 1329 | 1330 | p-locate@^3.0.0: 1331 | version "3.0.0" 1332 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" 1333 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1334 | dependencies: 1335 | p-limit "^2.0.0" 1336 | 1337 | p-locate@^5.0.0: 1338 | version "5.0.0" 1339 | resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" 1340 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1341 | dependencies: 1342 | p-limit "^3.0.2" 1343 | 1344 | p-try@^1.0.0: 1345 | version "1.0.0" 1346 | resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" 1347 | integrity "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==" 1348 | 1349 | p-try@^2.0.0: 1350 | version "2.2.0" 1351 | resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" 1352 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1353 | 1354 | parent-module@^1.0.0: 1355 | version "1.0.1" 1356 | resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" 1357 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1358 | dependencies: 1359 | callsites "^3.0.0" 1360 | 1361 | parse-json@^4.0.0: 1362 | version "4.0.0" 1363 | resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" 1364 | integrity "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==" 1365 | dependencies: 1366 | error-ex "^1.3.1" 1367 | json-parse-better-errors "^1.0.1" 1368 | 1369 | path-exists@^3.0.0: 1370 | version "3.0.0" 1371 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" 1372 | integrity "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" 1373 | 1374 | path-exists@^4.0.0: 1375 | version "4.0.0" 1376 | resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" 1377 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1378 | 1379 | path-is-absolute@^1.0.0: 1380 | version "1.0.1" 1381 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1382 | integrity "sha1-F0uSaHNVNP+8es5r9TpanhtcX18= sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1383 | 1384 | path-key@^3.1.0: 1385 | version "3.1.1" 1386 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 1387 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1388 | 1389 | path-parse@^1.0.6, path-parse@^1.0.7: 1390 | version "1.0.7" 1391 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1392 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1393 | 1394 | path-type@^3.0.0: 1395 | version "3.0.0" 1396 | resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" 1397 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1398 | dependencies: 1399 | pify "^3.0.0" 1400 | 1401 | picomatch@^2.0.4, picomatch@^2.2.1: 1402 | version "2.3.1" 1403 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1404 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1405 | 1406 | pify@^3.0.0: 1407 | version "3.0.0" 1408 | resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" 1409 | integrity "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" 1410 | 1411 | pify@^4.0.1: 1412 | version "4.0.1" 1413 | resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" 1414 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1415 | 1416 | pkg-conf@^3.1.0: 1417 | version "3.1.0" 1418 | resolved "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz" 1419 | integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== 1420 | dependencies: 1421 | find-up "^3.0.0" 1422 | load-json-file "^5.2.0" 1423 | 1424 | pkg-up@^2.0.0: 1425 | version "2.0.0" 1426 | resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" 1427 | integrity "sha1-yBmscoBZpGHKscOImivjxJoATX8= sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==" 1428 | dependencies: 1429 | find-up "^2.1.0" 1430 | 1431 | prelude-ls@^1.2.1: 1432 | version "1.2.1" 1433 | resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" 1434 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1435 | 1436 | progress@^2.0.0: 1437 | version "2.0.3" 1438 | resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" 1439 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1440 | 1441 | prop-types@^15.7.2: 1442 | version "15.8.1" 1443 | resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" 1444 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1445 | dependencies: 1446 | loose-envify "^1.4.0" 1447 | object-assign "^4.1.1" 1448 | react-is "^16.13.1" 1449 | 1450 | punycode@^2.1.0: 1451 | version "2.1.1" 1452 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" 1453 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1454 | 1455 | randombytes@^2.1.0: 1456 | version "2.1.0" 1457 | resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" 1458 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1459 | dependencies: 1460 | safe-buffer "^5.1.0" 1461 | 1462 | react-is@^16.13.1: 1463 | version "16.13.1" 1464 | resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" 1465 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1466 | 1467 | read-pkg-up@^3.0.0: 1468 | version "3.0.0" 1469 | resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" 1470 | integrity "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==" 1471 | dependencies: 1472 | find-up "^2.0.0" 1473 | read-pkg "^3.0.0" 1474 | 1475 | read-pkg@^3.0.0: 1476 | version "3.0.0" 1477 | resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" 1478 | integrity "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==" 1479 | dependencies: 1480 | load-json-file "^4.0.0" 1481 | normalize-package-data "^2.3.2" 1482 | path-type "^3.0.0" 1483 | 1484 | readdirp@~3.6.0: 1485 | version "3.6.0" 1486 | resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" 1487 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1488 | dependencies: 1489 | picomatch "^2.2.1" 1490 | 1491 | regexp.prototype.flags@^1.3.1: 1492 | version "1.4.1" 1493 | resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz" 1494 | integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== 1495 | dependencies: 1496 | call-bind "^1.0.2" 1497 | define-properties "^1.1.3" 1498 | 1499 | regexpp@^3.0.0, regexpp@^3.1.0: 1500 | version "3.2.0" 1501 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" 1502 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1503 | 1504 | require-directory@^2.1.1: 1505 | version "2.1.1" 1506 | resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" 1507 | integrity "sha1-jGStX9MNqxyXbiNE/+f3kqam30I= sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" 1508 | 1509 | require-from-string@^2.0.2: 1510 | version "2.0.2" 1511 | resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" 1512 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1513 | 1514 | resolve-from@^4.0.0: 1515 | version "4.0.0" 1516 | resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" 1517 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1518 | 1519 | resolve@^1.10.0, resolve@^1.10.1, resolve@^1.20.0: 1520 | version "1.22.0" 1521 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" 1522 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 1523 | dependencies: 1524 | is-core-module "^2.8.1" 1525 | path-parse "^1.0.7" 1526 | supports-preserve-symlinks-flag "^1.0.0" 1527 | 1528 | resolve@^2.0.0-next.3: 1529 | version "2.0.0-next.3" 1530 | resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz" 1531 | integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== 1532 | dependencies: 1533 | is-core-module "^2.2.0" 1534 | path-parse "^1.0.6" 1535 | 1536 | rimraf@^3.0.2: 1537 | version "3.0.2" 1538 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" 1539 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1540 | dependencies: 1541 | glob "^7.1.3" 1542 | 1543 | safe-buffer@^5.1.0: 1544 | version "5.2.1" 1545 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 1546 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1547 | 1548 | "semver@2 || 3 || 4 || 5": 1549 | version "5.7.1" 1550 | resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" 1551 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1552 | 1553 | semver@^6.1.0: 1554 | version "6.3.0" 1555 | resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" 1556 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1557 | 1558 | semver@^7.2.1: 1559 | version "7.3.5" 1560 | resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" 1561 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== 1562 | dependencies: 1563 | lru-cache "^6.0.0" 1564 | 1565 | serialize-javascript@6.0.0: 1566 | version "6.0.0" 1567 | resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" 1568 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1569 | dependencies: 1570 | randombytes "^2.1.0" 1571 | 1572 | shebang-command@^2.0.0: 1573 | version "2.0.0" 1574 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1575 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1576 | dependencies: 1577 | shebang-regex "^3.0.0" 1578 | 1579 | shebang-regex@^3.0.0: 1580 | version "3.0.0" 1581 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1582 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1583 | 1584 | side-channel@^1.0.4: 1585 | version "1.0.4" 1586 | resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" 1587 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1588 | dependencies: 1589 | call-bind "^1.0.0" 1590 | get-intrinsic "^1.0.2" 1591 | object-inspect "^1.9.0" 1592 | 1593 | slice-ansi@^4.0.0: 1594 | version "4.0.0" 1595 | resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" 1596 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1597 | dependencies: 1598 | ansi-styles "^4.0.0" 1599 | astral-regex "^2.0.0" 1600 | is-fullwidth-code-point "^3.0.0" 1601 | 1602 | spdx-correct@^3.0.0: 1603 | version "3.1.1" 1604 | resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" 1605 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1606 | dependencies: 1607 | spdx-expression-parse "^3.0.0" 1608 | spdx-license-ids "^3.0.0" 1609 | 1610 | spdx-exceptions@^2.1.0: 1611 | version "2.3.0" 1612 | resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" 1613 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1614 | 1615 | spdx-expression-parse@^3.0.0: 1616 | version "3.0.1" 1617 | resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" 1618 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1619 | dependencies: 1620 | spdx-exceptions "^2.1.0" 1621 | spdx-license-ids "^3.0.0" 1622 | 1623 | spdx-license-ids@^3.0.0: 1624 | version "3.0.11" 1625 | resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz" 1626 | integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== 1627 | 1628 | sprintf-js@~1.0.2: 1629 | version "1.0.3" 1630 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 1631 | integrity "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" 1632 | 1633 | standard-engine@^14.0.1: 1634 | version "14.0.1" 1635 | resolved "https://registry.npmjs.org/standard-engine/-/standard-engine-14.0.1.tgz" 1636 | integrity sha512-7FEzDwmHDOGva7r9ifOzD3BGdTbA7ujJ50afLVdW/tK14zQEptJjbFuUfn50irqdHDcTbNh0DTIoMPynMCXb0Q== 1637 | dependencies: 1638 | get-stdin "^8.0.0" 1639 | minimist "^1.2.5" 1640 | pkg-conf "^3.1.0" 1641 | xdg-basedir "^4.0.0" 1642 | 1643 | standard@^16.0.1: 1644 | version "16.0.4" 1645 | resolved "https://registry.npmjs.org/standard/-/standard-16.0.4.tgz" 1646 | integrity sha512-2AGI874RNClW4xUdM+bg1LRXVlYLzTNEkHmTG5mhyn45OhbgwA+6znowkOGYy+WMb5HRyELvtNy39kcdMQMcYQ== 1647 | dependencies: 1648 | eslint "~7.18.0" 1649 | eslint-config-standard "16.0.3" 1650 | eslint-config-standard-jsx "10.0.0" 1651 | eslint-plugin-import "~2.24.2" 1652 | eslint-plugin-node "~11.1.0" 1653 | eslint-plugin-promise "~5.1.0" 1654 | eslint-plugin-react "~7.25.1" 1655 | standard-engine "^14.0.1" 1656 | 1657 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 1658 | version "4.2.3" 1659 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1660 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1661 | dependencies: 1662 | emoji-regex "^8.0.0" 1663 | is-fullwidth-code-point "^3.0.0" 1664 | strip-ansi "^6.0.1" 1665 | 1666 | string.prototype.matchall@^4.0.5: 1667 | version "4.0.6" 1668 | resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz" 1669 | integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== 1670 | dependencies: 1671 | call-bind "^1.0.2" 1672 | define-properties "^1.1.3" 1673 | es-abstract "^1.19.1" 1674 | get-intrinsic "^1.1.1" 1675 | has-symbols "^1.0.2" 1676 | internal-slot "^1.0.3" 1677 | regexp.prototype.flags "^1.3.1" 1678 | side-channel "^1.0.4" 1679 | 1680 | string.prototype.trimend@^1.0.4: 1681 | version "1.0.4" 1682 | resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" 1683 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 1684 | dependencies: 1685 | call-bind "^1.0.2" 1686 | define-properties "^1.1.3" 1687 | 1688 | string.prototype.trimstart@^1.0.4: 1689 | version "1.0.4" 1690 | resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" 1691 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 1692 | dependencies: 1693 | call-bind "^1.0.2" 1694 | define-properties "^1.1.3" 1695 | 1696 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1697 | version "6.0.1" 1698 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1699 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1700 | dependencies: 1701 | ansi-regex "^5.0.1" 1702 | 1703 | strip-bom@^3.0.0: 1704 | version "3.0.0" 1705 | resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" 1706 | integrity "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" 1707 | 1708 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1709 | version "3.1.1" 1710 | resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" 1711 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1712 | 1713 | supports-color@8.1.1: 1714 | version "8.1.1" 1715 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" 1716 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1717 | dependencies: 1718 | has-flag "^4.0.0" 1719 | 1720 | supports-color@^5.3.0: 1721 | version "5.5.0" 1722 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" 1723 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1724 | dependencies: 1725 | has-flag "^3.0.0" 1726 | 1727 | supports-color@^7.1.0: 1728 | version "7.2.0" 1729 | resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" 1730 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1731 | dependencies: 1732 | has-flag "^4.0.0" 1733 | 1734 | supports-preserve-symlinks-flag@^1.0.0: 1735 | version "1.0.0" 1736 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 1737 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1738 | 1739 | table@^6.0.4: 1740 | version "6.8.0" 1741 | resolved "https://registry.npmjs.org/table/-/table-6.8.0.tgz" 1742 | integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== 1743 | dependencies: 1744 | ajv "^8.0.1" 1745 | lodash.truncate "^4.4.2" 1746 | slice-ansi "^4.0.0" 1747 | string-width "^4.2.3" 1748 | strip-ansi "^6.0.1" 1749 | 1750 | text-table@^0.2.0: 1751 | version "0.2.0" 1752 | resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" 1753 | integrity "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" 1754 | 1755 | to-regex-range@^5.0.1: 1756 | version "5.0.1" 1757 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" 1758 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1759 | dependencies: 1760 | is-number "^7.0.0" 1761 | 1762 | tsconfig-paths@^3.11.0: 1763 | version "3.12.0" 1764 | resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz" 1765 | integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg== 1766 | dependencies: 1767 | "@types/json5" "^0.0.29" 1768 | json5 "^1.0.1" 1769 | minimist "^1.2.0" 1770 | strip-bom "^3.0.0" 1771 | 1772 | type-check@^0.4.0, type-check@~0.4.0: 1773 | version "0.4.0" 1774 | resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" 1775 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1776 | dependencies: 1777 | prelude-ls "^1.2.1" 1778 | 1779 | type-fest@^0.3.0: 1780 | version "0.3.1" 1781 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz" 1782 | integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== 1783 | 1784 | type-fest@^0.8.1: 1785 | version "0.8.1" 1786 | resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" 1787 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1788 | 1789 | unbox-primitive@^1.0.1: 1790 | version "1.0.1" 1791 | resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" 1792 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== 1793 | dependencies: 1794 | function-bind "^1.1.1" 1795 | has-bigints "^1.0.1" 1796 | has-symbols "^1.0.2" 1797 | which-boxed-primitive "^1.0.2" 1798 | 1799 | uri-js@^4.2.2: 1800 | version "4.4.1" 1801 | resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" 1802 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1803 | dependencies: 1804 | punycode "^2.1.0" 1805 | 1806 | v8-compile-cache@^2.0.3: 1807 | version "2.3.0" 1808 | resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" 1809 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1810 | 1811 | validate-npm-package-license@^3.0.1: 1812 | version "3.0.4" 1813 | resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" 1814 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1815 | dependencies: 1816 | spdx-correct "^3.0.0" 1817 | spdx-expression-parse "^3.0.0" 1818 | 1819 | which-boxed-primitive@^1.0.2: 1820 | version "1.0.2" 1821 | resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" 1822 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1823 | dependencies: 1824 | is-bigint "^1.0.1" 1825 | is-boolean-object "^1.1.0" 1826 | is-number-object "^1.0.4" 1827 | is-string "^1.0.5" 1828 | is-symbol "^1.0.3" 1829 | 1830 | which@2.0.2, which@^2.0.1: 1831 | version "2.0.2" 1832 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1833 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1834 | dependencies: 1835 | isexe "^2.0.0" 1836 | 1837 | word-wrap@^1.2.3: 1838 | version "1.2.3" 1839 | resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" 1840 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1841 | 1842 | workerpool@6.2.0: 1843 | version "6.2.0" 1844 | resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" 1845 | integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== 1846 | 1847 | wrap-ansi@^7.0.0: 1848 | version "7.0.0" 1849 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1850 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1851 | dependencies: 1852 | ansi-styles "^4.0.0" 1853 | string-width "^4.1.0" 1854 | strip-ansi "^6.0.0" 1855 | 1856 | wrappy@1: 1857 | version "1.0.2" 1858 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1859 | integrity "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1860 | 1861 | xdg-basedir@^4.0.0: 1862 | version "4.0.0" 1863 | resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" 1864 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 1865 | 1866 | y18n@^5.0.5: 1867 | version "5.0.8" 1868 | resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" 1869 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1870 | 1871 | yallist@^4.0.0: 1872 | version "4.0.0" 1873 | resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 1874 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1875 | 1876 | yargs-parser@20.2.4, yargs-parser@^20.2.2: 1877 | version "20.2.4" 1878 | resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" 1879 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1880 | 1881 | yargs-unparser@2.0.0: 1882 | version "2.0.0" 1883 | resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" 1884 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1885 | dependencies: 1886 | camelcase "^6.0.0" 1887 | decamelize "^4.0.0" 1888 | flat "^5.0.2" 1889 | is-plain-obj "^2.1.0" 1890 | 1891 | yargs@16.2.0: 1892 | version "16.2.0" 1893 | resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" 1894 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1895 | dependencies: 1896 | cliui "^7.0.2" 1897 | escalade "^3.1.1" 1898 | get-caller-file "^2.0.5" 1899 | require-directory "^2.1.1" 1900 | string-width "^4.2.0" 1901 | y18n "^5.0.5" 1902 | yargs-parser "^20.2.2" 1903 | 1904 | yocto-queue@^0.1.0: 1905 | version "0.1.0" 1906 | resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" 1907 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1908 | --------------------------------------------------------------------------------