From 1eeb30113d752b8871282ad49d84306f4ca75178 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 1 Jan 2024 12:07:03 +0100 Subject: [PATCH 001/145] feat(android): lineCount/visibleText for Ti.UI.Label (#13583) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(android): lineCount/visibleText for Ti.UI.Label * readme * Update apidoc/Titanium/UI/Label.yml * feat(ios): add lineCount --------- Co-authored-by: Hans Knöchel --- .../ti/modules/titanium/ui/LabelProxy.java | 20 +++++++++++++++++++ .../modules/titanium/ui/widget/TiUILabel.java | 12 +++++++++++ apidoc/Titanium/UI/Label.yml | 13 ++++++++++++ iphone/Classes/TiUILabelProxy.m | 17 ++++++++++++++++ 4 files changed, 62 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java index 478bcfd7b3f..61e2ab2d739 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java @@ -60,6 +60,26 @@ protected KrollDict getLangConversionTable() return table; } + @Kroll.getProperty + public int getLineCount() + { + TiUIView v = getOrCreateView(); + if (v instanceof TiUILabel) { + return ((TiUILabel) v).getLineCount(); + } + return 0; + } + + @Kroll.getProperty + public String getVisibleText() + { + TiUIView v = getOrCreateView(); + if (v instanceof TiUILabel) { + return ((TiUILabel) v).getVisibleText(); + } + return ""; + } + @Override public TiUIView createView(Activity activity) { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java index 717787d6b9d..bc765e17d17 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java @@ -799,4 +799,16 @@ private void updateLabelText() textView.setText(text, MaterialTextView.BufferType.NORMAL); textView.requestLayout(); } + + public int getLineCount() + { + MaterialTextView textView = (MaterialTextView) getNativeView(); + return textView.getLineCount(); + } + + public String getVisibleText() + { + MaterialTextView textView = (MaterialTextView) getNativeView(); + return textView.getLayout().getText().toString(); + } } diff --git a/apidoc/Titanium/UI/Label.yml b/apidoc/Titanium/UI/Label.yml index e8f9496cbf3..d1eee23015e 100644 --- a/apidoc/Titanium/UI/Label.yml +++ b/apidoc/Titanium/UI/Label.yml @@ -175,6 +175,12 @@ properties: type: Number since: "4.1.0" + - name: lineCount + summary: Returns the amount of lines the content is acually using. Is equal or lower than `maxLines`. + type: Number + permission: read-only + since: "12.3.0" + - name: lineSpacing summary: Line spacing of the [text](Titanium.UI.Label.text), as a dictionary with the properties `add` and `multiply`. platforms: [android] @@ -247,6 +253,13 @@ properties: description: Only one of `text` or `textid` should be specified. type: String + - name: visibleText + summary: Returns the actual text seen on the screen. If the text is ellipsized it will be different to the normal `text`. + platforms: [android] + type: String + permission: read-only + since: {android: "12.3.0"} + - name: wordWrap summary: Enable or disable word wrapping in the label. type: Boolean diff --git a/iphone/Classes/TiUILabelProxy.m b/iphone/Classes/TiUILabelProxy.m index 8a9f08a042f..864696d518b 100644 --- a/iphone/Classes/TiUILabelProxy.m +++ b/iphone/Classes/TiUILabelProxy.m @@ -86,6 +86,23 @@ - (NSNumber *)ellipsize return NUMINTEGER([[(TiUILabel *)[self view] label] lineBreakMode]); } +- (NSNumber *)lineCount +{ + UILabel *label = [(TiUILabel *)[self view] label]; + + CGSize maxSize = CGSizeMake(label.frame.size.width, MAXFLOAT); + NSString *text = label.text ?: @""; + CGFloat textHeight = [text boundingRectWithSize:maxSize + options:NSStringDrawingUsesLineFragmentOrigin + attributes:@{ NSFontAttributeName : label.font } + context:nil] + .size.height; + CGFloat lineHeight = label.font.lineHeight; + NSNumber *lineCount = NUMINT(ceil(textHeight / lineHeight)); + + return lineCount; +} + @end #endif From 8c70a0db7ad33e62e15128061237935bece49843 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Wed, 3 Jan 2024 21:25:48 +0000 Subject: [PATCH 002/145] fix(build/ios): simulator and macos builds don't require wwdr The current check will always step into the if because it will always not equal one of those --- iphone/cli/commands/_build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iphone/cli/commands/_build.js b/iphone/cli/commands/_build.js index b9641650c75..0dee04a1307 100644 --- a/iphone/cli/commands/_build.js +++ b/iphone/cli/commands/_build.js @@ -1905,7 +1905,7 @@ iOSBuilder.prototype.validate = function validate(logger, config, cli) { }, this); // if in the prepare phase and doing a device/dist build... - if (cli.argv.target !== 'simulator' || cli.argv.target !== 'macos') { + if (cli.argv.target !== 'simulator' && cli.argv.target !== 'macos') { // make sure they have Apple's WWDR cert installed if (!this.iosInfo.certs.wwdr) { logger.error(__('WWDR Intermediate Certificate not found') + '\n'); From e35d753b2d50f2d4efc58c34fa9ee7e455cbbc71 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Wed, 10 Jan 2024 00:05:48 +0000 Subject: [PATCH 003/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e2c56dd54d..0c0b80321ca 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonSynaxon AGAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited ## Features From 8fde8c20a221a6c959bc05c1f2535df5b803dc94 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 10 Jan 2024 09:45:47 +0100 Subject: [PATCH 004/145] chore(android): minor CameraX, Recyclerview library update (#13926) --- README.md | 19 +++++++++++++++++++ android/titanium/build.gradle | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0c0b80321ca..4bfe6081f7c 100644 --- a/README.md +++ b/README.md @@ -269,6 +269,25 @@ After you've made the changes and compiled the SDK make sure to run the test sui Some modules like ti.map or ti.facebook are included with the SDK. To update to the latest versions you have to edit the links in `support/module/packaged/modules.json` and run `node build/scons-modules-integrity.js`. This will download the files and update the integrity values. +### Update Android libraries +The `/android/titanium/build.gradle` file contains various Android libraries that are used in the SDK. If you want to update them check the corresponding release pages: +* https://developer.android.com/jetpack/androidx/releases/recyclerview +* https://developer.android.com/jetpack/androidx/releases/swiperefreshlayout +* https://developer.android.com/jetpack/androidx/releases/camera +* https://developer.android.com/jetpack/androidx/releases/transition +* https://developer.android.com/jetpack/androidx/releases/vectordrawable +* https://developer.android.com/jetpack/androidx/releases/viewpager +* https://developer.android.com/jetpack/androidx/releases/cardview +* https://developer.android.com/jetpack/androidx/releases/drawerlayout +* https://developer.android.com/jetpack/androidx/releases/exifinterface +* https://developer.android.com/jetpack/androidx/releases/media +for a new version and change the number in the build.gradle file. Some version numbers are managed inside `/android/templates/build/ti.constants.gradle`. After that build the SDK and run `npm run test` to see if everything is still running. Building Kitchensink, Hyperloop-examples and a custom app is also helpful. + +### Documentation + +If you want to help updating and improving the documentation you can checkout the repository and edit the files in `/apidoc/`. Those files are shown in the API documentation at https://titaniumsdk.com/api/ and include all methods, properties, examples and so on. After you made changes run `npm run lint:docs` to see if your changes produce a valid documentation. The PR commit title you create should start with `docs: ` and a proper title like: `docs: updated textfield examples`. +All other documentation files (e.g. the guides) are located in the https://github.com/tidev/titanium-docs repository. In case you want to update guides, tutorials or spelling mistakes you clone that repo and follow the README file inside the main folder. + ## Contributing Interested in contributing? There are several ways you can help contribute to this project. diff --git a/android/titanium/build.gradle b/android/titanium/build.gradle index 4a57bc39324..d92e05cf820 100644 --- a/android/titanium/build.gradle +++ b/android/titanium/build.gradle @@ -254,7 +254,7 @@ dependencies { implementation 'androidx.exifinterface:exifinterface:1.3.6' implementation "androidx.fragment:fragment:${project.ext.tiAndroidXFragmentLibVersion}" implementation 'androidx.media:media:1.6.0' - implementation 'androidx.recyclerview:recyclerview:1.3.0' + implementation 'androidx.recyclerview:recyclerview:1.3.1' implementation 'androidx.recyclerview:recyclerview-selection:1.1.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.transition:transition:1.4.1' @@ -281,7 +281,7 @@ dependencies { implementation fileTree(dir: 'lib', include: ['*.jar']) // CameraX - def camerax_version = '1.2.2' + def camerax_version = '1.2.3' implementation "androidx.camera:camera-core:$camerax_version" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-video:$camerax_version" From 5c7edd8588f4f66c74040ad0febb83ce687e925a Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 10 Jan 2024 09:46:15 +0100 Subject: [PATCH 005/145] feat(ios): view rotation parity (#13946) * feat(ios): view rotation parity * docs --- apidoc/Titanium/UI/View.yml | 4 ++-- iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h | 1 + iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apidoc/Titanium/UI/View.yml b/apidoc/Titanium/UI/View.yml index 61c1c7ac3d8..97de55498c9 100644 --- a/apidoc/Titanium/UI/View.yml +++ b/apidoc/Titanium/UI/View.yml @@ -1810,8 +1810,8 @@ properties: summary: Clockwise 2D rotation of the view in degrees. description: Translation values are applied to the static post layout value. type: Number - platforms: [android] - since: 5.4.0 + platforms: [android, iphone, ipad] + since: {android: "5.4.0", iphone: "12.3.0", ipad: "12.3.0"} - name: rotationX summary: Clockwise rotation of the view in degrees (x-axis). diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h index e4e3660a52e..362f7b1855c 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h @@ -242,6 +242,7 @@ enum { - (id)animatedCenter; - (void)setBackgroundGradient:(id)arg; +- (void)setRotation:(id)arg; - (TiBlob *)toImage:(id)args; - (TiPoint *)contentOffset; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m index 90c77855fad..f4b7d214a26 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m @@ -670,6 +670,12 @@ - (void)setBackgroundGradient:(id)arg [self replaceValue:newGradient forKey:@"backgroundGradient" notification:YES]; } +- (void)setRotation:(id)arg +{ + float val = ([TiUtils intValue:arg] * M_PI) / 180.0; + [self view].transform = CGAffineTransformMakeRotation(val); +} + - (TiBlob *)toImage:(id)args { KrollCallback *callback = nil; From 10535bc9f48949c15ae523ecd3e1739ca130884b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 10 Jan 2024 09:51:09 +0100 Subject: [PATCH 006/145] chore(ios): update ti.map to 7.3.1 --- support/module/packaged/modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support/module/packaged/modules.json b/support/module/packaged/modules.json index d73745468d5..688e6142211 100644 --- a/support/module/packaged/modules.json +++ b/support/module/packaged/modules.json @@ -13,8 +13,8 @@ "integrity": "sha512-6gnaRtsMZSDoxCnFdqaS2d82zzjPMxc6Ic55PFBXka6olcF8xCWnTrdFfxrkEvO1Y6WdoL0IJTzSVFfnlHChNg==" }, "ti.map": { - "url": "https://github.com/tidev/ti.map/releases/download/v7.3.0-ios/ti.map-iphone-7.3.0.zip", - "integrity": "sha512-fOWlN+KlL5vfXBQ5lb8ZyiRocwmA9EQ/+L7YBYjLzE3N5LB4VMY8qhaz9nc8YhUAODslP6rhMNQsdRKZc8GBcQ==" + "url": "https://github.com/tidev/ti.map/releases/download/v7.3.1-ios/ti.map-iphone-7.3.1.zip", + "integrity": "sha512-KiZp4JOTjXRLnN6mEy7/97FvPXCAHPI5xFJl3H8yME+rzK+WMZ842L/mgD0iq3pGIHrjD1mz6X2B5vm+oP5stQ==" }, "ti.webdialog": { "url": "https://github.com/tidev/titanium-web-dialog/releases/download/v3.0.2-ios/ti.webdialog-iphone-3.0.2.zip", From eabedaaf1e7806134b3be9f3c506427b94f524cb Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 10 Jan 2024 19:46:03 +0100 Subject: [PATCH 007/145] feat(ios): add cli.ignoreLog to ios (#13939) * feat(ios): add cli.ignoreLog to ios * shorter syntax * shorter syntax --- android/cli/hooks/run.js | 6 ++---- iphone/cli/hooks/run.js | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/android/cli/hooks/run.js b/android/cli/hooks/run.js index 0d5d1081d8b..42bc7fa36fa 100644 --- a/android/cli/hooks/run.js +++ b/android/cli/hooks/run.js @@ -268,10 +268,8 @@ exports.init = function (logger, config, cli) { } // ignore some Android logs in info log level - for (let i = 0, len = ignoreLog.length; i < len; ++i) { - if (line.includes(ignoreLog[i])) { - return; - } + if (ignoreLog.some(ignoreItem => line.includes(ignoreItem))) { + return; } switch (logLevel) { diff --git a/iphone/cli/hooks/run.js b/iphone/cli/hooks/run.js index e3e9b05e40c..ec41e90b7c6 100644 --- a/iphone/cli/hooks/run.js +++ b/iphone/cli/hooks/run.js @@ -20,6 +20,7 @@ exports.init = function (logger, config, cli) { const i18n = require('node-appc').i18n(__dirname); const __ = i18n.__; const __n = i18n.__n; + const ignoreLog = config.cli.ignoreLog || []; if (cli.argv['build-only']) { logger.info(__('Performed build only, skipping running of the application')); @@ -72,6 +73,12 @@ exports.init = function (logger, config, cli) { lastLogger = m[2].toLowerCase(); line = m[4].trim(); } + + // ignore logs from cli ignoreLog + if (ignoreLog.some(ignoreItem => line.includes(ignoreItem))) { + return; + } + if (levels.indexOf(lastLogger) === -1) { logger.log(('[' + lastLogger.toUpperCase() + '] ').cyan + line); } else { From d9ae9ba0354c2bd05af85af47d8b122096045eca Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 7 Oct 2023 15:26:00 +0200 Subject: [PATCH 008/145] chore: re-sync CHANGELOG.md --- CHANGELOG.md | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fe8111bc1d..a93b3ab4fd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,184 @@ +## [12.2.1](https://github.com/tidev/titanium_mobile/compare/12_2_0_GA...12.2.1) (2023-10-09) + +## About this release + +Titanium SDK 12.2.1 is a patch release of the SDK, addressing high-priority issues from previous releases. + +As of this GA release, the previous Titanium SDK patch release (12.2.0) is no longer supported. + +## Community Credits + +* Ahmed Eissa + * (iOS) Fix app freezing when trying to hide & show popover repeatedly and popover layout issues ([f9fe9b7](https://github.com/tidev/titanium_mobile/commit/f9fe9b76a83415656079b724bca57b166ae6f5ff)) + +* narbs + * [13922] fix(ios): request full access to calendar on ios17 to retain backward compatibility with ios16 (#13923) ([25ab480](https://github.com/tidev/titanium_mobile/commit/25ab480e676591cbb635fa41bf4364ce7614ce82)) + +* Michael Gangolf + * ioslib 1.7.35 ([c6678d8](https://github.com/tidev/titanium_mobile/commit/c6678d849393bf6c0e8ca876a40ba502761d450e)) + * fix Android camera with overlay issues ([d56de28](https://github.com/tidev/titanium_mobile/commit/d56de28d2da32fe4adc174a5f527d163c55910b5)) + * update to new V8Snapshot generator ([ece412a](https://github.com/tidev/titanium_mobile/commit/ece412aff7c0c9ccccea59dbf0f67345f1bf0035)) + +* Hans Knöchel + * fix crash in “backgroundRepeat”, replace deprecated API ([5ccea28](https://github.com/tidev/titanium_mobile/commit/5ccea2815a770c2b78d07017748049129a51f738)) + * fix crash when setting navTinColor during a view transition ([951877b](https://github.com/tidev/titanium_mobile/commit/951877b29c0655a2f2e9d053d25ddfcdf464c7dd)) + * revert video player change ([1a7e84b](https://github.com/tidev/titanium_mobile/commit/1a7e84b4e969f4afa0c2108f76b35f5b61146942)) + * bump version ([798523f](https://github.com/tidev/titanium_mobile/commit/798523f86b01fe8e5c1f47169d8c4d30838abb15)) + +## Bug Fixes + +### Android platform + +* fix Android camera with overlay issues ([d56de28](https://github.com/tidev/titanium_mobile/commit/d56de28d2da32fe4adc174a5f527d163c55910b5)) + +### iOS platform + +* fix app freezing when trying to hide & show popover repeatedly and popover layout issues ([f9fe9b7](https://github.com/tidev/titanium_mobile/commit/f9fe9b76a83415656079b724bca57b166ae6f5ff)) +* fix crash in “backgroundRepeat”, replace deprecated API ([5ccea28](https://github.com/tidev/titanium_mobile/commit/5ccea2815a770c2b78d07017748049129a51f738)) +* fix crash when setting navTinColor during a view transition ([951877b](https://github.com/tidev/titanium_mobile/commit/951877b29c0655a2f2e9d053d25ddfcdf464c7dd)) +* revert video player change ([1a7e84b](https://github.com/tidev/titanium_mobile/commit/1a7e84b4e969f4afa0c2108f76b35f5b61146942)) + +## SDK Module Versions + +| Module | Android version | iOS Version | +| ----------- | --------------- | ----------- | +| facebook | 12.1.0 | 14.0.0 | +| ti.map | 5.5.3 | 7.2.0 | +| ti.webdialog | 2.3.0 | 3.0.2 | +| ti.playservices | 18.2.0 | n/a | +| ti.identity | 3.1.0 | 5.0.0 | +| urlSession | n/a | 4.0.1 | +| ti.coremotion | n/a | 4.0.1 | +| ti.applesignin | n/a | 3.1.2 | +| hyperloop | 7.0.5 | 7.0.5 | + +# [12.2.0](https://github.com/tidev/titanium_mobile/compare/12_1_X...12.2.0) (2023-09-15) + +## About this release + +Titanium SDK 12.2.0 is a minor release of the SDK, adding new features to the platform. The focus of this release is the full support of Xcode 15 +and iOS 17, as well as several performance improvements across both platforms (iOS & Android). + +## Community Credits + +* Michael Gangolf + * update ti.webdialog ([07f10b8](https://github.com/tidev/titanium_mobile/commit/07f10b8395bd7fded4c17ff8ce82b6868062b181)) + * update ioslib to 1.7.34 ([07f464f](https://github.com/tidev/titanium_mobile/commit/07f464f6c29a9dda00447e632e26cd7f307667cf)) + * reduce tableView updates ([c76535a](https://github.com/tidev/titanium_mobile/commit/c76535a4e7714dd01d7dadfddf7606c1d3a9fac9)) + * make tabBarVisible work at creation ([5d07f5c](https://github.com/tidev/titanium_mobile/commit/5d07f5c430f3f1cc4832a6df4e939270831e781f)) + * add `forceUpdates` propterty to listView to improve scrolling event ([f954ae7](https://github.com/tidev/titanium_mobile/commit/f954ae76fe531ea8dc08ff3865decdb5e5cc7cbb)) + * add rotation to blob ([56bd00c](https://github.com/tidev/titanium_mobile/commit/56bd00c98be372558b27e520ce2c0f86cb030656)) + * ioslib update ([c7154f7](https://github.com/tidev/titanium_mobile/commit/c7154f7c54f878cae335fb4bfb09648c010c57d0)) + * fix some tests ([8b998f4](https://github.com/tidev/titanium_mobile/commit/8b998f4ec8f1e76bb53f970ff4239efcbbabf175)) + * add tabMode to TabGroup ([322b78d](https://github.com/tidev/titanium_mobile/commit/322b78dd01623d957c68455383940134a308efac)) + * badgeTextColor property ([c591f9c](https://github.com/tidev/titanium_mobile/commit/c591f9c26fe8d3c25406ec6767c73ef12804e406)) + * enable webview inspection ([8061acd](https://github.com/tidev/titanium_mobile/commit/8061acdc2a985c43e4396c715eaa061c3f4770bc)) + * clean up propertyAccessors ([5f33b2f](https://github.com/tidev/titanium_mobile/commit/5f33b2f42cc0577b4b587ce701db8f9de981f610)) + * update ti.map (android) ([18f087d](https://github.com/tidev/titanium_mobile/commit/18f087d7df6d5900c0f40679dbd422cb3d371745)) + * secure Ti.Network.Socket ([0f5743d](https://github.com/tidev/titanium_mobile/commit/0f5743d8975c219cfdf0753e23c4e0c4315ac4b4)) + * replace titanium_mobile URLs ([ffebf85](https://github.com/tidev/titanium_mobile/commit/ffebf853b033a1ac5085433a2a85391f240c80cd)) + * remove X-Requested-With header from HTTP requests ([67ba7a6](https://github.com/tidev/titanium_mobile/commit/67ba7a63b9c9c713631d710986f6d93147939fec)) + * optimize test output ([8c67faf](https://github.com/tidev/titanium_mobile/commit/8c67fafb8b2b97524f2c7daef086ba17215ef390)) + * update android dependencies ([a30b031](https://github.com/tidev/titanium_mobile/commit/a30b03121dee67a7ced8e23db7a027a10fa7cf0d)) + * fixed rows in filtered results ([bb23609](https://github.com/tidev/titanium_mobile/commit/bb23609362479ea51deab620e830b6d5c851f52b)) + * make rotationX, rotationY animatable ([bfa2bc5](https://github.com/tidev/titanium_mobile/commit/bfa2bc536c779a3c111d96cc39d42752d40e45fc)) + * use cameraX ([e68d33a](https://github.com/tidev/titanium_mobile/commit/e68d33a86c05ec0dcff173128e2b3b05817fec41)) + * remove old example ([a58a7f8](https://github.com/tidev/titanium_mobile/commit/a58a7f8a31493d929cbb8f0719c6f3009da42c9a)) + * fix Android clipboard test ([58932b1](https://github.com/tidev/titanium_mobile/commit/58932b195fc0751476db0fa1af3bbc9759f734e2)) + * github actions ([0457e2c](https://github.com/tidev/titanium_mobile/commit/0457e2c49f6cb45d19b092c79f381e235f735c45)) + * update ubuntu in github action ([6f50bc3](https://github.com/tidev/titanium_mobile/commit/6f50bc38965cd8d7cf8d57a01e0bbff1d8d933d4)) + +* Hans Knöchel + * update ti.map (iOS & Android) ([4f34fb1](https://github.com/tidev/titanium_mobile/commit/4f34fb18276ffbfa8c5be0a9ac188719e5a8d333)) + * update ioslib to 1.7.33 ([aef7a34](https://github.com/tidev/titanium_mobile/commit/aef7a3438e130677ade2f9cd773a99f72815b7d7)) + * modernize Apple Script to open Xcode ([44e7651](https://github.com/tidev/titanium_mobile/commit/44e7651822fa7ab6a6b572f7353a3a8b596861f7)) + * fix catalyst build ([552b835](https://github.com/tidev/titanium_mobile/commit/552b835b7e34fa628d4b43061b98504911cf3004)) + * update Facebook SDKs ([521a3ee](https://github.com/tidev/titanium_mobile/commit/521a3eed1eda85c531ba7869720faecb2d5effd1)) + * add changelog ([a75fcc5](https://github.com/tidev/titanium_mobile/commit/a75fcc5342a85e8fce8b8300a61ef48f1c203595)) + * support DRM-encrypted video assets ([d4cd040](https://github.com/tidev/titanium_mobile/commit/d4cd0402d3c0250aae589f57e62a8249210e63e1)) + * fix iOS log crash ([af732d9](https://github.com/tidev/titanium_mobile/commit/af732d91fb905388152013b0888a3b78a238274f)) + * expose keyboardDismissMode to Ti.UI.TableView as well ([4202779](https://github.com/tidev/titanium_mobile/commit/4202779b6105bd729ef5df9769aa2a0e553d866d)) + * properly attach / detach child video controller ([6195261](https://github.com/tidev/titanium_mobile/commit/619526165caa6efee82e017334c9eaf71538c98b)) + * guard and re-throw native exception ([9308d2b](https://github.com/tidev/titanium_mobile/commit/9308d2b4e3a82c3af53a58b6f477b6fb4537734e)) + * add sponsors action ([dc8a338](https://github.com/tidev/titanium_mobile/commit/dc8a33869c7aa434d91930c5666f4955dbf4647b)) + * bump version ([6350ce5](https://github.com/tidev/titanium_mobile/commit/6350ce5ca1b4dc79af3d40630c05584776a4d53a)) + +* Marc Bender + * building for MacOS (Catalyst) now works with that fix ([02dc740](https://github.com/tidev/titanium_mobile/commit/02dc740c360b74b79b51b65322a4cff2e1c306a3)) + +* narbs + * ensure default icon is not flattened during maccatalyst builds to void white background ([ae2674d](https://github.com/tidev/titanium_mobile/commit/ae2674dc10c8fd1e88e255594cf9dd54f7e635d9)) + +* Alessandro La Rocca + * Update TiMediaVideoPlayerProxy.m (#13859) ([70e0393](https://github.com/tidev/titanium_mobile/commit/70e0393a87357e3b3d7cb53fcf4301cbab55849c)) + +* Jórdan Luiz Bisato + * remove injection of "appcelerator.com" on whitelist when ATS is enabled ([6e658f7](https://github.com/tidev/titanium_mobile/commit/6e658f71e73dd9ac34fa0553f8413113b47e0790)) + +* cb1kenobi + * Apply automatic changes ([84f0144](https://github.com/tidev/titanium_mobile/commit/84f01440242eb6626cca4ddf452862206368a849)) + + +## Bug Fixes + +### Android platform + +* make tabBarVisible work at creation ([5d07f5c](https://github.com/tidev/titanium_mobile/commit/5d07f5c430f3f1cc4832a6df4e939270831e781f)) +* reduce tableView updates ([c76535a](https://github.com/tidev/titanium_mobile/commit/c76535a4e7714dd01d7dadfddf7606c1d3a9fac9)) + +### Multiple platforms + +* fix iOS log crash ([af732d9](https://github.com/tidev/titanium_mobile/commit/af732d91fb905388152013b0888a3b78a238274f)) +* fix catalyst build ([552b835](https://github.com/tidev/titanium_mobile/commit/552b835b7e34fa628d4b43061b98504911cf3004)) + +### iOS platform + +* support Xcode 17 and iOS 17 +* building for MacOS (Catalyst) now works with that fix ([02dc740](https://github.com/tidev/titanium_mobile/commit/02dc740c360b74b79b51b65322a4cff2e1c306a3)) +* enable webview inspection ([8061acd](https://github.com/tidev/titanium_mobile/commit/8061acdc2a985c43e4396c715eaa061c3f4770bc)) +* ensure default icon is not flattened during maccatalyst builds to void white background ([ae2674d](https://github.com/tidev/titanium_mobile/commit/ae2674dc10c8fd1e88e255594cf9dd54f7e635d9)) +* guard and re-throw native exception ([9308d2b](https://github.com/tidev/titanium_mobile/commit/9308d2b4e3a82c3af53a58b6f477b6fb4537734e)) +* properly attach / detach child video controller ([6195261](https://github.com/tidev/titanium_mobile/commit/619526165caa6efee82e017334c9eaf71538c98b)) + +## Features + +### Multiple platforms + +* add sponsors action ([dc8a338](https://github.com/tidev/titanium_mobile/commit/dc8a33869c7aa434d91930c5666f4955dbf4647b)) +* add `forceUpdates` propterty to listView to improve scrolling event ([f954ae7](https://github.com/tidev/titanium_mobile/commit/f954ae76fe531ea8dc08ff3865decdb5e5cc7cbb)) +* fixed rows in filtered results ([bb23609](https://github.com/tidev/titanium_mobile/commit/bb23609362479ea51deab620e830b6d5c851f52b)) +* remove X-Requested-With header from HTTP requests ([67ba7a6](https://github.com/tidev/titanium_mobile/commit/67ba7a63b9c9c713631d710986f6d93147939fec)) +* update Facebook SDKs ([521a3ee](https://github.com/tidev/titanium_mobile/commit/521a3eed1eda85c531ba7869720faecb2d5effd1)) + +### Android platform + +* add rotation to blob ([56bd00c](https://github.com/tidev/titanium_mobile/commit/56bd00c98be372558b27e520ce2c0f86cb030656)) +* add tabMode to TabGroup ([322b78d](https://github.com/tidev/titanium_mobile/commit/322b78dd01623d957c68455383940134a308efac)) +* badgeTextColor property ([c591f9c](https://github.com/tidev/titanium_mobile/commit/c591f9c26fe8d3c25406ec6767c73ef12804e406)) +* clean up propertyAccessors ([5f33b2f](https://github.com/tidev/titanium_mobile/commit/5f33b2f42cc0577b4b587ce701db8f9de981f610)) +* make rotationX, rotationY animatable ([bfa2bc5](https://github.com/tidev/titanium_mobile/commit/bfa2bc536c779a3c111d96cc39d42752d40e45fc)) +* secure Ti.Network.Socket ([0f5743d](https://github.com/tidev/titanium_mobile/commit/0f5743d8975c219cfdf0753e23c4e0c4315ac4b4)) +* use cameraX ([e68d33a](https://github.com/tidev/titanium_mobile/commit/e68d33a86c05ec0dcff173128e2b3b05817fec41)) + +### iOS platform + +* expose keyboardDismissMode to Ti.UI.TableView as well ([4202779](https://github.com/tidev/titanium_mobile/commit/4202779b6105bd729ef5df9769aa2a0e553d866d)) +* support DRM-encrypted video assets ([d4cd040](https://github.com/tidev/titanium_mobile/commit/d4cd0402d3c0250aae589f57e62a8249210e63e1)) + +## SDK Module Versions + +| Module | Android version | iOS Version | +| ----------- | --------------- | ----------- | +| facebook | 12.1.0 | 14.0.0 | +| ti.map | 5.5.3 | 7.2.0 | +| ti.webdialog | 2.3.0 | 3.0.2 | +| ti.playservices | 18.2.0 | n/a | +| ti.identity | 3.1.0 | 5.0.0 | +| urlSession | n/a | 4.0.1 | +| ti.coremotion | n/a | 4.0.1 | +| ti.applesignin | n/a | 3.1.2 | +| hyperloop | 7.0.5 | 7.0.5 | + ## [12.1.1](https://github.com/tidev/titanium-sdk/compare/12_1_0_GA...12.1.1) (2023-04-28) ## About this release From e3642099bacfebaaa0c0835a9a39dd9c2a521934 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 11 Jan 2024 11:39:43 +0100 Subject: [PATCH 009/145] feat(android): optimize TiProperties (#13944) --- .../org/appcelerator/titanium/TiProperties.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiProperties.java b/android/titanium/src/java/org/appcelerator/titanium/TiProperties.java index 5a749494b34..e1283921d14 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiProperties.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiProperties.java @@ -38,7 +38,7 @@ public TiProperties(Context context, String name, boolean clear) { preferences = context.getSharedPreferences(name, Context.MODE_PRIVATE); if (clear) { - preferences.edit().clear().commit(); + preferences.edit().clear().apply(); } } @@ -103,7 +103,7 @@ public void setString(String key, String value) } else { editor.putString(key, value); } - editor.commit(); + editor.apply(); } /** @@ -160,7 +160,7 @@ public void setInt(String key, int value) SharedPreferences.Editor editor = preferences.edit(); editor.putInt(key, value); - editor.commit(); + editor.apply(); } /** @@ -208,7 +208,7 @@ public void setDouble(String key, double value) SharedPreferences.Editor editor = preferences.edit(); editor.putString(key, value + ""); - editor.commit(); + editor.apply(); } /** @@ -266,7 +266,7 @@ public void setBool(String key, boolean value) SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean(key, value); - editor.commit(); + editor.apply(); } /** @@ -311,7 +311,7 @@ public void setList(String key, String[] value) } editor.putInt(key + ".length", value.length); - editor.commit(); + editor.apply(); } /** @@ -377,7 +377,7 @@ public void removeProperty(String key) if (preferences.contains(key)) { SharedPreferences.Editor editor = preferences.edit(); editor.remove(key); - editor.commit(); + editor.apply(); } } @@ -386,7 +386,7 @@ public void removeProperty(String key) */ public void removeAllProperties() { - preferences.edit().clear().commit(); + preferences.edit().clear().apply(); } public static void setSystemProperties(JSONObject prop) From be053b07ab0a51158e3a6d0e8e7c368f1935aaa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Thu, 11 Jan 2024 14:45:38 +0100 Subject: [PATCH 010/145] feat: add iOS 17+ spring animations (#13891) * feat: add spring animations * fix(ios): fix typo in iOS < 17 cases --- apidoc/Titanium/UI/Animation.yml | 10 ++++++ .../TitaniumKit/Sources/API/TiAnimation.h | 1 + .../TitaniumKit/Sources/API/TiAnimation.m | 32 ++++++++++++++----- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/apidoc/Titanium/UI/Animation.yml b/apidoc/Titanium/UI/Animation.yml index 5a4fbfcc10b..1a035486fd9 100644 --- a/apidoc/Titanium/UI/Animation.yml +++ b/apidoc/Titanium/UI/Animation.yml @@ -189,6 +189,16 @@ properties: platforms: [iphone, ipad, macos] since: "8.1.0" + - name: bounce + summary: The animation bounce. If set, the animation uses the iOS 17+ spring animation. + description: | + When `bounce` is 0, there are no bounces, positive values indicate increasing amounts of bounciness up to a maximum + of 1.0 (corresponding to undamped oscillation), and negative values indicate overdamped springs with a minimum value of -1.0. + type: Number + platforms: [iphone, ipad, macos] + since: "12.2.0" + osver: { ios: { min: "17.0" } } + - name: top summary: Value of the `top` property at the end of the animation. type: Number diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h index 165ec53b586..f4cae31bf59 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h @@ -139,6 +139,7 @@ @property (nonatomic, retain, readwrite) TiProxy *view; @property (nonatomic, retain, readwrite) NSNumber *dampingRatio; @property (nonatomic, retain, readwrite) NSNumber *springVelocity; +@property (nonatomic, retain, readwrite) NSNumber *bounce; + (TiAnimation *)animationFromArg:(id)args context:(id)context create:(BOOL)yn; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m index 1f293a6faaf..24762a2e9c6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m @@ -23,7 +23,7 @@ @implementation TiAnimation @synthesize delegate; @synthesize zIndex, left, right, top, bottom, width, height; @synthesize duration, color, backgroundColor, opacity, opaque, view; -@synthesize visible, curve, repeat, autoreverse, delay, transform, transition, dampingRatio, springVelocity; +@synthesize visible, curve, repeat, autoreverse, delay, transform, transition, dampingRatio, springVelocity, bounce; @synthesize animatedView, callback, isReverse, reverseAnimation, resetState; - (id)initWithDictionary:(NSDictionary *)properties_ context:(id)context_ callback:(KrollCallback *)callback_ @@ -99,6 +99,7 @@ - (id)initWithDictionary:(NSDictionary *)properties_ context:(id)co SET_FLOAT_PROP(delay, properties); SET_FLOAT_PROP(dampingRatio, properties); SET_FLOAT_PROP(springVelocity, properties); + SET_FLOAT_PROP(bounce, properties); SET_INT_PROP(curve, properties); SET_INT_PROP(repeat, properties); SET_BOOL_PROP(visible, properties); @@ -159,6 +160,7 @@ - (void)dealloc RELEASE_TO_NIL(view); RELEASE_TO_NIL(dampingRatio); RELEASE_TO_NIL(springVelocity); + RELEASE_TO_NIL(bounce); RELEASE_TO_NIL(properties); [animatedViewProxy release]; [super dealloc]; @@ -638,13 +640,27 @@ - (void)animate:(id)args }; if (dampingRatio != nil || springVelocity != nil) { - [UIView animateWithDuration:animationDuration - delay:([delay doubleValue] / 1000) - usingSpringWithDamping:[dampingRatio floatValue] - initialSpringVelocity:[springVelocity floatValue] - options:options - animations:animation - completion:complete]; +#ifdef __IPHONE_17_0 + if ([TiUtils isIOSVersionOrGreater:@"17.0"] && bounce != nil) { + [UIView animateWithSpringDuration:animationDuration + bounce:[bounce floatValue] + initialSpringVelocity:[springVelocity floatValue] + delay:([delay doubleValue] / 1000) + options:options + animations:animation + completion:complete]; + } else { +#endif + [UIView animateWithDuration:animationDuration + delay:([delay doubleValue] / 1000) + usingSpringWithDamping:[dampingRatio floatValue] + initialSpringVelocity:[springVelocity floatValue] + options:options + animations:animation + completion:complete]; +#ifdef __IPHONE_17_0 + } +#endif } else { [UIView animateWithDuration:animationDuration delay:([delay doubleValue] / 1000) From 53738a1d05f0945841cb2247bc0e86fb413e0bc3 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 12 Jan 2024 10:19:30 +0100 Subject: [PATCH 011/145] fix(android): set correct title after titleAttributes update (#13957) * fix(android): update title text for NavigationWindow child windows * update * update * rename and remove * use constructor --- .../ti/modules/titanium/ui/WindowProxy.java | 18 ++++++++++++ .../appcelerator/titanium/TiBaseActivity.java | 29 ++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java index 460883b49aa..02d2eaafcaa 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java @@ -81,6 +81,7 @@ public class WindowProxy extends TiWindowProxy implements TiActivityWindow protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; private static int id_toolbar; + private int barColor = -1; private WeakReference windowActivity; @@ -349,6 +350,7 @@ private void changeTitleColor(ActionBar actionBar, int colorInt) ssb = new SpannableStringBuilder(abTitle); } + barColor = colorInt; ssb.setSpan(new ForegroundColorSpan(colorInt), 0, ssb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); actionBar.setTitle(ssb); @@ -526,6 +528,22 @@ public boolean handleMessage(Message msg) Activity activity = getWindowActivity(); if (activity != null) { activity.setTitle(TiConvert.toString((Object) (msg.obj), "")); + + if (windowActivity != null && windowActivity.get() != null + && windowActivity.get().getSupportActionBar() != null) { + ActionBar actionBar = windowActivity.get().getSupportActionBar(); + if (actionBar.getTitle() instanceof SpannableStringBuilder) { + SpannableStringBuilder stringBuilder = + new SpannableStringBuilder(TiConvert.toString((Object) (msg.obj), "")); + if (barColor != -1) { + stringBuilder.setSpan(new ForegroundColorSpan(barColor), + 0, stringBuilder.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); + } + actionBar.setTitle(stringBuilder); + } else { + actionBar.setTitle(TiConvert.toString((Object) (msg.obj), "")); + } + } } return true; } diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java b/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java index 3ad51f44414..e7365e4b7e8 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java @@ -34,6 +34,7 @@ import org.appcelerator.titanium.util.TiActivityResultHandler; import org.appcelerator.titanium.util.TiActivitySupport; import org.appcelerator.titanium.util.TiActivitySupportHelper; +import org.appcelerator.titanium.util.TiColorHelper; import org.appcelerator.titanium.util.TiConvert; import org.appcelerator.titanium.util.TiLocaleManager; import org.appcelerator.titanium.util.TiMenuSupport; @@ -46,6 +47,8 @@ import org.appcelerator.titanium.view.TiInsetsProvider; import android.app.Activity; + +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import android.app.Dialog; import android.content.Context; @@ -67,6 +70,9 @@ import androidx.appcompat.widget.Toolbar; import androidx.core.app.ActivityCompat; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.style.ForegroundColorSpan; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; @@ -338,7 +344,8 @@ protected void updateTitle() if (window.hasProperty(TiC.PROPERTY_TITLE)) { String oldTitle = (String) getTitle(); String newTitle = TiConvert.toString(window.getProperty(TiC.PROPERTY_TITLE)); - + int colorInt = -1; + if (oldTitle == null) { oldTitle = ""; } @@ -347,12 +354,32 @@ protected void updateTitle() newTitle = ""; } + if (window.hasProperty(TiC.PROPERTY_TITLE_ATTRIBUTES)) { + KrollDict innerAttributes = window.getProperties().getKrollDict(TiC.PROPERTY_TITLE_ATTRIBUTES); + colorInt = TiColorHelper.parseColor( + TiConvert.toString(innerAttributes.getString(TiC.PROPERTY_COLOR)), this); + } + if (!newTitle.equals(oldTitle)) { final String fnewTitle = newTitle; + final int finalColorInt = colorInt; runOnUiThread(new Runnable() { public void run() { setTitle(fnewTitle); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + if (finalColorInt != -1) { + SpannableStringBuilder ssb; + ssb = new SpannableStringBuilder(fnewTitle); + ssb.setSpan(new ForegroundColorSpan(finalColorInt), + 0, ssb.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); + actionBar.setTitle(ssb); + } else { + actionBar.setTitle(fnewTitle); + } + } } }); } From af08e72c3fccdeade7f10e4e983c2c48dea6f491 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 12 Jan 2024 10:24:04 +0100 Subject: [PATCH 012/145] feat: update minimum node.js version to 16.x (#13807) * feat: update minimum node.js version to 14.x * chore: move to node 16 * remove conflict --- android/package.json | 2 +- iphone/package.json | 2 +- package-lock.json | 2 +- package.json | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/package.json b/android/package.json index f29153b7c7f..92b80bfedc6 100644 --- a/android/package.json +++ b/android/package.json @@ -27,7 +27,7 @@ "java": ">=11.x" }, "engines": { - "node": ">=12.13.0" + "node": ">=16.0.0" }, "repository": { "type": "git", diff --git a/iphone/package.json b/iphone/package.json index 29773b80705..3b69c0d0dad 100644 --- a/iphone/package.json +++ b/iphone/package.json @@ -19,7 +19,7 @@ "ios sdk": ">=13.0 <=16.x" }, "engines": { - "node": ">=12.13.0" + "node": ">=16.0.0" }, "repository": { "type": "git", diff --git a/package-lock.json b/package-lock.json index 7dc9715c783..cb0e9c320a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -87,7 +87,7 @@ "titanium-docgen": "4.10.3" }, "engines": { - "node": ">=12.13.0" + "node": ">=16.0.0" } }, "node_modules/@babel/code-frame": { diff --git a/package.json b/package.json index 6642765a3fb..01e4d231884 100644 --- a/package.json +++ b/package.json @@ -166,10 +166,10 @@ "url": "git://github.com/tidev/titanium_mobile.git" }, "vendorDependencies": { - "node": "12.x || 14.x || 16.x" + "node": "16.x || 18.x || 20.x" }, "engines": { - "node": ">=12.13.0" + "node": ">=16.0.0" }, "nyc": { "exclude": [ From bfc87a6517f0b70b82ea760b8d052381bddf1ff4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Fri, 12 Jan 2024 11:21:17 +0100 Subject: [PATCH 013/145] feat(ios): support multi-scene applications (#13941) * feat: support multi-scene applications * fix: add keys to template Info.plist to restore backwards compatibility --- .../TitaniumKit/Sources/API/TiApp.h | 9 +------ .../TitaniumKit/Sources/API/TiApp.m | 27 +++++++++++-------- iphone/iphone/Titanium.plist | 17 ++++++++++++ support/iphone/Info.plist | 17 ++++++++++++ 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index 85053a484da..a9fe584766f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -13,17 +13,10 @@ #import "TiRootViewController.h" #import -extern BOOL applicationInMemoryPanic; // TODO: Remove in SDK 9.0+ - -// TODO: Remove in SDK 9.0+ -TI_INLINE void waitForMemoryPanicCleared() //WARNING: This must never be run on main thread, or else there is a risk of deadlock! -{ -} - /** TiApp represents an instance of an application. There is always only one instance per application which could be accessed through class method. */ -@interface TiApp : TiHost { +@interface TiApp : TiHost { UIWindow *window; UIImageView *loadView; UIView *splashScreenView; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index fd53a04cc7f..310aefd339d 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -33,11 +33,6 @@ #define SHUTDOWN_TIMEOUT_IN_SEC 3 -BOOL applicationInMemoryPanic = NO; // TODO: Remove in SDK 9.0+ - -// TODO: Remove in SDK 9.0+ -TI_INLINE void waitForMemoryPanicCleared(void); //WARNING: This must never be run on main thread, or else there is a risk of deadlock! - @interface TiApp () - (void)checkBackgroundServices; - (void)appBoot; @@ -327,15 +322,9 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[TiLogServer defaultLogServer] start]; } - // Initialize the root-window - window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - // Initialize the launch options to be used by the client launchOptions = [[NSMutableDictionary alloc] initWithDictionary:launchOptions_]; - // Initialize the root-controller - [self initController]; - // If we have a APNS-UUID, assign it NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; if (apnsUUID != nil) { @@ -1235,6 +1224,22 @@ - (KrollBridge *)krollBridge return kjsBridge; } +#pragma mark UIWindowSceneDelegate + +- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options +{ + return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; +} + +- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions +{ + // Initialize the root-window + window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; + + // Initialize the root-controller + [self initController]; +} + #pragma mark Background Tasks - (void)beginBackgrounding diff --git a/iphone/iphone/Titanium.plist b/iphone/iphone/Titanium.plist index 997d287518d..448f4c87fe8 100644 --- a/iphone/iphone/Titanium.plist +++ b/iphone/iphone/Titanium.plist @@ -78,5 +78,22 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + TiApp + + + + diff --git a/support/iphone/Info.plist b/support/iphone/Info.plist index f9500da5954..72b06667636 100644 --- a/support/iphone/Info.plist +++ b/support/iphone/Info.plist @@ -36,5 +36,22 @@ 1.0 LSRequiresIPhoneOS + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + TiApp + + + + From 5eb950ce1c3392f26496a6c6317b5dea24eee9e4 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 19 Jan 2024 14:10:24 +0100 Subject: [PATCH 014/145] chore(android): update ti.map (#13965) --- support/module/packaged/modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support/module/packaged/modules.json b/support/module/packaged/modules.json index 688e6142211..3f1f980a504 100644 --- a/support/module/packaged/modules.json +++ b/support/module/packaged/modules.json @@ -35,8 +35,8 @@ "integrity": "sha512-SJnTl1ZfbsoTUV6lXf5u2AnmYDzK3VVEw1o0KyDRJAz1P5F3dSPvRZOwXpXQYsxQ62nG8XNMz9XsAsXhyzp7Lg==" }, "ti.map": { - "url": "https://github.com/tidev/ti.map/releases/download/v5.6.0-android/ti.map-android-5.6.0.zip", - "integrity": "sha512-813/XBwQtCZqWP1uFcg+j911HZbyjLUdM6267YtwoVj9ZwbLrYrq9/JWTaYo7bzl0DRfbzxt9gvt35oY6sccWQ==" + "url": "https://github.com/tidev/ti.map/releases/download/v5.6.1-android/ti.map-android-5.6.1.zip", + "integrity": "sha512-lWafHd0pfGSTN0+NM3tN3vNkbzlgZGlVP6LH6FOkIIK67H/4aCQixtBL1xaPNRpDG05F0tQ4+AcJWIotFB6KpQ==" }, "ti.webdialog": { "url": "https://github.com/tidev/titanium-web-dialog/releases/download/v2.3.0-android/ti.webdialog-android-2.3.0.zip", From 4cc78b0d2d506d987ddd0cc58c785a8c18f3ef26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Fri, 19 Jan 2024 14:12:48 +0100 Subject: [PATCH 015/145] chore: add 12.3.0.GA changelog # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a93b3ab4fd2..28d3efcfea2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,97 @@ +# [12.3.0](https://github.com/tidev/titanium_mobile/compare/12_2_X...12.3.0) (2024-01-19) + +## About this release + +Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issues from previous releases. + +## Community Credits + +* Michael Gangolf + * update ti.map ([241ba55](https://github.com/tidev/titanium_mobile/commit/241ba55b130671ac07e7309941520b2ed1a86058)) + * update minimum node.js version to 16.x ([af08e72](https://github.com/tidev/titanium_mobile/commit/af08e72c3fccdeade7f10e4e983c2c48dea6f491)) + * set correct title after titleAttributes update ([53738a1](https://github.com/tidev/titanium_mobile/commit/53738a1d05f0945841cb2247bc0e86fb413e0bc3)) + * optimize TiProperties ([e364209](https://github.com/tidev/titanium_mobile/commit/e3642099bacfebaaa0c0835a9a39dd9c2a521934)) + * re-sync CHANGELOG.md ([d9ae9ba](https://github.com/tidev/titanium_mobile/commit/d9ae9ba0354c2bd05af85af47d8b122096045eca)) + * add cli.ignoreLog to ios ([eabedaa](https://github.com/tidev/titanium_mobile/commit/eabedaaf1e7806134b3be9f3c506427b94f524cb)) + * view rotation parity ([5c7edd8](https://github.com/tidev/titanium_mobile/commit/5c7edd8588f4f66c74040ad0febb83ce687e925a)) + * minor CameraX, Recyclerview library update ([8fde8c2](https://github.com/tidev/titanium_mobile/commit/8fde8c20a221a6c959bc05c1f2535df5b803dc94)) + * lineCount/visibleText for Ti.UI.Label ([1eeb301](https://github.com/tidev/titanium_mobile/commit/1eeb30113d752b8871282ad49d84306f4ca75178)) + * window titleAttributes parity ([eb19d17](https://github.com/tidev/titanium_mobile/commit/eb19d17c9a1627a03f8bed3560ab38ba4cf834fe)) + * xml parser null check ([3c0794f](https://github.com/tidev/titanium_mobile/commit/3c0794f1c7610ccf6870da0ac2d85be7b843e998)) + * return more httpclient errors to Ti ([fafdde6](https://github.com/tidev/titanium_mobile/commit/fafdde61c520ac09c374aad3c97c9b8c1c34422f)) + * update hyperloop version ([4b01bc0](https://github.com/tidev/titanium_mobile/commit/4b01bc0fcaa2a74e0201c2e77ef7e9f0ebee4461)) + * null check in ScrollView getAttributeSet ([c3c6cde](https://github.com/tidev/titanium_mobile/commit/c3c6cde3aa596dc7db8db66bf0665137e5eaece5)) + * fix TextArea hinttextid ([845a08d](https://github.com/tidev/titanium_mobile/commit/845a08d650134950ab7ef7325d362f6406b3eada)) + * webview html example ([58f868b](https://github.com/tidev/titanium_mobile/commit/58f868b906c10e61fb90e0005938a23dacb5db05)) + * removing old Appc strings ([2c3ecce](https://github.com/tidev/titanium_mobile/commit/2c3ecce5badc6de2724d9952ed1760c17d84ca00)) + * updated examples ([1ebb379](https://github.com/tidev/titanium_mobile/commit/1ebb3799212a70f88901af8bccb53e98ba88a9f7)) + * label breakStrategy & hyphenationFrequency ([f5181db](https://github.com/tidev/titanium_mobile/commit/f5181dbd808f31b24424d5ee62945bfa528307d1)) + * copyright headers, wiki links ([455d4b2](https://github.com/tidev/titanium_mobile/commit/455d4b278d6d8368086c06b44dc43cefd688b687)) + * remove more appc/jira links ([6726c2c](https://github.com/tidev/titanium_mobile/commit/6726c2cee7c451f81b154cab74ecd0d004d25104)) + * add empty build.gradle ([2c965e4](https://github.com/tidev/titanium_mobile/commit/2c965e4e1e0950a34f7ef777614260c86b063b7a)) + +* Hans Knöchel + * move issue ([f83062b](https://github.com/tidev/titanium_mobile/commit/f83062b6cda6e2a1aa26fc06abe9b99228f1d6cb)) + * add 12.3.0 changelog ([1e58137](https://github.com/tidev/titanium_mobile/commit/1e58137bb4886324ceb4bcf527b7550e963b10bc)) + * support multi-scene applications ([bfc87a6](https://github.com/tidev/titanium_mobile/commit/bfc87a6517f0b70b82ea760b8d052381bddf1ff4)) + * add iOS 17+ spring animations ([be053b0](https://github.com/tidev/titanium_mobile/commit/be053b07ab0a51158e3a6d0e8e7c368f1935aaa5)) + * update ti.map to 7.3.1 ([10535bc](https://github.com/tidev/titanium_mobile/commit/10535bc9f48949c15ae523ecd3e1739ca130884b)) + * include new versions of ti.map ([e4b3974](https://github.com/tidev/titanium_mobile/commit/e4b397468a01e0ade21ba0a9d41f37cf8d76895f)) + * bump master to 12.3.0 ([acf6b15](https://github.com/tidev/titanium_mobile/commit/acf6b159bf246126c36ce4420d6f38bb415d940a)) + +* Brianggalvez + * support for html in AttributedStrings ([ca4a7a9](https://github.com/tidev/titanium_mobile/commit/ca4a7a9e77a3c88d9790671eb8abf8d837c409bd)) + +## Bug Fixes + +### Android platform + +* fix TextArea hinttextid ([845a08d](https://github.com/tidev/titanium_mobile/commit/845a08d650134950ab7ef7325d362f6406b3eada)) +* null check in ScrollView getAttributeSet ([c3c6cde](https://github.com/tidev/titanium_mobile/commit/c3c6cde3aa596dc7db8db66bf0665137e5eaece5)) +* return more httpclient errors to Ti ([fafdde6](https://github.com/tidev/titanium_mobile/commit/fafdde61c520ac09c374aad3c97c9b8c1c34422f)) +* set correct title after titleAttributes update ([53738a1](https://github.com/tidev/titanium_mobile/commit/53738a1d05f0945841cb2247bc0e86fb413e0bc3)) +* xml parser null check ([3c0794f](https://github.com/tidev/titanium_mobile/commit/3c0794f1c7610ccf6870da0ac2d85be7b843e998)) + +### Multiple platforms + +* simulator and macos builds don't require wwdr ([8c70a0d](https://github.com/tidev/titanium_mobile/commit/8c70a0db7ad33e62e15128061237935bece49843)) + +## Features + +### Multiple platforms + +* add iOS 17+ spring animations ([be053b0](https://github.com/tidev/titanium_mobile/commit/be053b07ab0a51158e3a6d0e8e7c368f1935aaa5)) +* update minimum node.js version to 16.x ([af08e72](https://github.com/tidev/titanium_mobile/commit/af08e72c3fccdeade7f10e4e983c2c48dea6f491)) + +### Android platform + +* add empty build.gradle ([2c965e4](https://github.com/tidev/titanium_mobile/commit/2c965e4e1e0950a34f7ef777614260c86b063b7a)) +* label breakStrategy & hyphenationFrequency ([f5181db](https://github.com/tidev/titanium_mobile/commit/f5181dbd808f31b24424d5ee62945bfa528307d1)) +* lineCount/visibleText for Ti.UI.Label ([1eeb301](https://github.com/tidev/titanium_mobile/commit/1eeb30113d752b8871282ad49d84306f4ca75178)) +* optimize TiProperties ([e364209](https://github.com/tidev/titanium_mobile/commit/e3642099bacfebaaa0c0835a9a39dd9c2a521934)) +* window titleAttributes parity ([eb19d17](https://github.com/tidev/titanium_mobile/commit/eb19d17c9a1627a03f8bed3560ab38ba4cf834fe)) + +### iOS platform + +* add cli.ignoreLog to ios ([eabedaa](https://github.com/tidev/titanium_mobile/commit/eabedaaf1e7806134b3be9f3c506427b94f524cb)) +* support for html in AttributedStrings ([ca4a7a9](https://github.com/tidev/titanium_mobile/commit/ca4a7a9e77a3c88d9790671eb8abf8d837c409bd)) +* support multi-scene applications ([bfc87a6](https://github.com/tidev/titanium_mobile/commit/bfc87a6517f0b70b82ea760b8d052381bddf1ff4)) +* view rotation parity ([5c7edd8](https://github.com/tidev/titanium_mobile/commit/5c7edd8588f4f66c74040ad0febb83ce687e925a)) + +## SDK Module Versions + +| Module | Android version | iOS Version | +| ----------- | --------------- | ----------- | +| facebook | 12.1.0 | 14.0.0 | +| ti.map | 5.6.1 | 7.3.1 | +| ti.webdialog | 2.3.0 | 3.0.2 | +| ti.playservices | 18.2.0 | n/a | +| ti.identity | 3.1.0 | 5.0.0 | +| urlSession | n/a | 4.0.1 | +| ti.coremotion | n/a | 4.0.1 | +| ti.applesignin | n/a | 3.1.2 | +| hyperloop | 7.0.6 | 7.0.6 | + ## [12.2.1](https://github.com/tidev/titanium_mobile/compare/12_2_0_GA...12.2.1) (2023-10-09) ## About this release From 4a1d20f43c82296dd21bfd760fa63b65927e98fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sat, 20 Jan 2024 09:25:44 +0100 Subject: [PATCH 016/145] Revert "feat(ios): support multi-scene applications (#13941)" This reverts commit bfc87a6517f0b70b82ea760b8d052381bddf1ff4. --- .../TitaniumKit/Sources/API/TiApp.h | 9 ++++++- .../TitaniumKit/Sources/API/TiApp.m | 27 ++++++++----------- iphone/iphone/Titanium.plist | 17 ------------ support/iphone/Info.plist | 17 ------------ 4 files changed, 19 insertions(+), 51 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index a9fe584766f..85053a484da 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -13,10 +13,17 @@ #import "TiRootViewController.h" #import +extern BOOL applicationInMemoryPanic; // TODO: Remove in SDK 9.0+ + +// TODO: Remove in SDK 9.0+ +TI_INLINE void waitForMemoryPanicCleared() //WARNING: This must never be run on main thread, or else there is a risk of deadlock! +{ +} + /** TiApp represents an instance of an application. There is always only one instance per application which could be accessed through class method. */ -@interface TiApp : TiHost { +@interface TiApp : TiHost { UIWindow *window; UIImageView *loadView; UIView *splashScreenView; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index 310aefd339d..fd53a04cc7f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -33,6 +33,11 @@ #define SHUTDOWN_TIMEOUT_IN_SEC 3 +BOOL applicationInMemoryPanic = NO; // TODO: Remove in SDK 9.0+ + +// TODO: Remove in SDK 9.0+ +TI_INLINE void waitForMemoryPanicCleared(void); //WARNING: This must never be run on main thread, or else there is a risk of deadlock! + @interface TiApp () - (void)checkBackgroundServices; - (void)appBoot; @@ -322,9 +327,15 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[TiLogServer defaultLogServer] start]; } + // Initialize the root-window + window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + // Initialize the launch options to be used by the client launchOptions = [[NSMutableDictionary alloc] initWithDictionary:launchOptions_]; + // Initialize the root-controller + [self initController]; + // If we have a APNS-UUID, assign it NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; if (apnsUUID != nil) { @@ -1224,22 +1235,6 @@ - (KrollBridge *)krollBridge return kjsBridge; } -#pragma mark UIWindowSceneDelegate - -- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options -{ - return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; -} - -- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions -{ - // Initialize the root-window - window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; - - // Initialize the root-controller - [self initController]; -} - #pragma mark Background Tasks - (void)beginBackgrounding diff --git a/iphone/iphone/Titanium.plist b/iphone/iphone/Titanium.plist index 448f4c87fe8..997d287518d 100644 --- a/iphone/iphone/Titanium.plist +++ b/iphone/iphone/Titanium.plist @@ -78,22 +78,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - TiApp - - - - diff --git a/support/iphone/Info.plist b/support/iphone/Info.plist index 72b06667636..f9500da5954 100644 --- a/support/iphone/Info.plist +++ b/support/iphone/Info.plist @@ -36,22 +36,5 @@ 1.0 LSRequiresIPhoneOS - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - TiApp - - - - From 87a105a7a434d7b696d9e93362a06a4456c5d6b3 Mon Sep 17 00:00:00 2001 From: Chris Barber Date: Sat, 20 Jan 2024 10:45:23 -0600 Subject: [PATCH 017/145] ci: trigger regen builds on release (#13968) --- .github/workflows/regen-builds.yml | 2 -- .github/workflows/release.yml | 7 ++++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/regen-builds.yml b/.github/workflows/regen-builds.yml index 0dcf274b199..c4bc936c500 100644 --- a/.github/workflows/regen-builds.yml +++ b/.github/workflows/regen-builds.yml @@ -1,7 +1,5 @@ name: Regen Builds on: - release: - types: [published, released] workflow_run: workflows: [Build] types: [completed] diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b567d40fce9..94865fe8c3f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -171,4 +171,9 @@ jobs: git add package-lock.json git commit -m "chore(release): bump version" git push - + - name: Regen Builds + uses: peter-evans/repository-dispatch@v2 + with: + event-type: regen-builds + repository: tidev/downloads-www + token: ${{ secrets.REGEN_BUILDS_DOCS_GITHUB_TOKEN }} From cf14a9b4ed83cef111e80d87189cc3e89a906d11 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 30 Jan 2024 20:44:03 +0100 Subject: [PATCH 018/145] docs: fix some doc errors (#13978) --- apidoc/Titanium/Android/Menu.yml | 2 +- apidoc/Titanium/Calendar/Calendar.yml | 2 +- .../Titanium/UI/Android/CollapseToolbar.yml | 2 +- apidoc/Titanium/UI/PickerColumn.yml | 4 +- apidoc/Titanium/UI/SearchBar.yml | 2 +- apidoc/Titanium/UI/Tab.yml | 41 ------------ apidoc/Titanium/UI/View.yml | 67 ------------------- apidoc/Titanium/Yahoo/Yahoo.yml | 51 -------------- 8 files changed, 6 insertions(+), 165 deletions(-) delete mode 100644 apidoc/Titanium/Yahoo/Yahoo.yml diff --git a/apidoc/Titanium/Android/Menu.yml b/apidoc/Titanium/Android/Menu.yml index 25c672c2fe3..a59bdf70259 100644 --- a/apidoc/Titanium/Android/Menu.yml +++ b/apidoc/Titanium/Android/Menu.yml @@ -30,7 +30,7 @@ description: | Menus must be added to tab groups using the tab group's activity. These changes were required to support the Android 3.0 action bar. - The TabGroup activity is available using [TabGroup.getActivity](Titanium.UI.TabGroup.getActivity). + The TabGroup activity is available using [TabGroup.activity](Titanium.UI.TabGroup.activity). However, unlike a window's activity it is not currently possible to set properties on the tab group's activity before the tab group is opened. To add a menu to a tab group, set the `onCreateOptionsMenu` property to the tab group's `open` event listener, and diff --git a/apidoc/Titanium/Calendar/Calendar.yml b/apidoc/Titanium/Calendar/Calendar.yml index e9e47cc9d96..b51c18b9ef2 100644 --- a/apidoc/Titanium/Calendar/Calendar.yml +++ b/apidoc/Titanium/Calendar/Calendar.yml @@ -8,7 +8,7 @@ description: | #### Android On Android, calendar permissions must be explicitly configured in `tiapp.xml` in order to access the - calendar and you have to use [requestCalendarPermissions](Titanium.Calendar.requestcalendarpermissions) + calendar and you have to use [requestCalendarPermissions](Titanium.Calendar.requestCalendarPermissions) to request runtime permissions. ``` xml diff --git a/apidoc/Titanium/UI/Android/CollapseToolbar.yml b/apidoc/Titanium/UI/Android/CollapseToolbar.yml index 353659bd4e7..ae3880070de 100644 --- a/apidoc/Titanium/UI/Android/CollapseToolbar.yml +++ b/apidoc/Titanium/UI/Android/CollapseToolbar.yml @@ -15,7 +15,7 @@ excludes: events: [click, dblclick, doubletap, focus, keypressed, longclick, longpress, pinch, postlayout, singletap, swipe, touchcancel, touchend, touchmove, touchstart, twofingertap] methods: [add, animate, convertPointToView, remove, removeAllChildren, toImage, addEventListener, applyProperties, - fireEvent, getViewById, hide, insertAt, removeEventListener, replaceAt, show, startLayout, updateLayout] + fireEvent, getViewById, hide, insertAt, removeEventListener, replaceAt, show] properties: [accessibilityHidden, accessibilityHint, accessibilityLabel, accessibilityValue, anchorPoint, animatedCenter, backgroundColor, backgroundDisabledColor, backgroundDisabledImage, backgroundFocusedColor, backgroundFocusedImage, backgroundGradient, diff --git a/apidoc/Titanium/UI/PickerColumn.yml b/apidoc/Titanium/UI/PickerColumn.yml index a7e67fb817e..55b78e6d2ed 100644 --- a/apidoc/Titanium/UI/PickerColumn.yml +++ b/apidoc/Titanium/UI/PickerColumn.yml @@ -24,8 +24,8 @@ excludes: touchFeedback, touchFeedbackColor, transform, translationX, translationY, translationZ, transitionName, verticalMotionEffect, viewShadowRadius, viewShadowColor, viewShadowOffset, visible, width, horizontalWrap, keepScreenOn, tintColor, zIndex] - methods: [add, animate, clearMotionEffects, finishLayout, hide, insertAt, remove, - removeAllChildren, replaceAt, show, startLayout, toImage, updateLayout, convertPointToView, + methods: [add, animate, clearMotionEffects, hide, insertAt, remove, + removeAllChildren, replaceAt, show, toImage, convertPointToView, getViewById] events: [click, dblclick, doubletap, keypressed, longpress, pinch, singletap, swipe, touchcancel, touchend, touchmove, touchstart, twofingertap] diff --git a/apidoc/Titanium/UI/SearchBar.yml b/apidoc/Titanium/UI/SearchBar.yml index f31bfa94502..1b5df5d10b2 100644 --- a/apidoc/Titanium/UI/SearchBar.yml +++ b/apidoc/Titanium/UI/SearchBar.yml @@ -9,7 +9,7 @@ description: | Search bars are most commonly used for filtering the rows in a [TableView](Titanium.UI.TableView) and [ListView](Titanium.UI.ListView). You can add a search bar to a table view via its [search](Titanium.UI.TableView.search) property. You can add a search bar to a list view via its - [searchView](Titanium.UI.TableView.searchView) property. + [searchBar](Titanium.UI.SearchBar) property. A search bar can also be used on its own. diff --git a/apidoc/Titanium/UI/Tab.yml b/apidoc/Titanium/UI/Tab.yml index 6408f1b6b02..82b2d91f613 100644 --- a/apidoc/Titanium/UI/Tab.yml +++ b/apidoc/Titanium/UI/Tab.yml @@ -329,26 +329,6 @@ properties: availability: creation events: - - name: blur - summary: Fired when the tab loses focus. - deprecated: - since: "5.2.0" - removed: "9.0.0" - notes: Use [Titanium.UI.Tab.unselected](Titanium.UI.Tab.unselected) event instead. - properties: - - name: index - summary: Index of the current active tab. - type: Number - - name: previousIndex - summary: Index of the previous active tab. - type: Number - - name: tab - summary: Current active tab object. - type: Titanium.UI.Tab - - name: previousTab - summary: Previous active tab object. - type: Titanium.UI.Tab - platforms: [android, iphone, ipad] - name: unselected summary: Fired when the tab is no longer selected. @@ -372,27 +352,6 @@ events: summary: Fired when this tab is clicked in the tab group. exclude-platforms: [iphone, ipad, macos] - - name: focus - summary: Fired when the tab gains focus. - deprecated: - since: "5.2.0" - removed: "9.0.0" - notes: Use [Titanium.UI.Tab.selected](Titanium.UI.Tab.selected) event instead. - properties: - - name: index - summary: Index of the current active tab. - type: Number - - name: previousIndex - summary: Index of the previous active tab. - type: Number - - name: tab - summary: Current active tab object. - type: Titanium.UI.Tab - - name: previousTab - summary: Previous active tab object. - type: Titanium.UI.Tab - platforms: [android, iphone, ipad] - - name: selected summary: Fired when the tab is selected. since: {android: "3.5.1", iphone: "5.2.0", ipad: "5.2.0"} diff --git a/apidoc/Titanium/UI/View.yml b/apidoc/Titanium/UI/View.yml index 97de55498c9..13eca36a3e3 100644 --- a/apidoc/Titanium/UI/View.yml +++ b/apidoc/Titanium/UI/View.yml @@ -1024,38 +1024,6 @@ methods: default: "{ animated: false }" # FIXME: Support platfroms/osver/since on parameters! - - name: startLayout - summary: Starts a batch update of this view's layout properties. - description: | - To prevent a layout pass each time a property is modified, call `startLayout` before - changing any properties that may change this view's layout. This initiates a batch update - mode where layout changes are deferred. - - Call [finishLayout](Titanium.UI.View.finishLayout) to end batch update mode and trigger a - layout pass. For example: - - ``` js - view.startLayout(); - view.top = 50; - view.left = 50; - view.finishLayout(); - ``` - - Note that _any_ property changes made during the batch update _may_ be deferred until - `finishLayout` is called. This may vary somewhat by platform. For example, changing the - text of a label may trigger a layout pass. In iOS, updating the label text is - deferred. - - See also: [updateLayout](Titanium.UI.View.updateLayout), - [finishLayout](Titanium.UI.View.finishLayout), - [postlayout](Titanium.UI.View.postlayout) event. - since: "2.0.0" - exclude-platforms: [macos] - deprecated: - since: "3.0.0" - removed: "9.0.0" - notes: Use the [Titanium.Proxy.applyProperties](Titanium.Proxy.applyProperties) method to batch-update layout properties. - - name: stopAnimation summary: Stops a running animation. description: | @@ -1088,41 +1056,6 @@ methods: default: false optional: true - - name: updateLayout - summary: | - Performs a batch update of all supplied layout properties and schedules a layout pass after - they have been updated. - description: | - This is another way to perform a batch update. The `updateLayout` method is called with a - dictionary of layout properties to perform the batch update. For example: - - ``` js - view.updateLayout({top:50, left:50}); - ``` - - This is equivalent to the following: - - ``` js - view.startLayout(); - view.top = 50; - view.left = 50; - view.finishLayout(); - ``` - - See also: [startLayout](Titanium.UI.View.startLayout), - [finishLayout](Titanium.UI.View.finishLayout), - [postlayout](Titanium.UI.View.postlayout) event. - since: "2.0.0" - exclude-platforms: [macos] - deprecated: - since: "3.0.0" - removed: "9.0.0" - notes: Use the [Titanium.Proxy.applyProperties](Titanium.Proxy.applyProperties) method to batch-update layout properties. - parameters: - - name: params - summary: Layout properties to be updated. - type: Dictionary - - name: convertPointToView summary: | Translates a point from this view's coordinate system to another view's coordinate system. diff --git a/apidoc/Titanium/Yahoo/Yahoo.yml b/apidoc/Titanium/Yahoo/Yahoo.yml deleted file mode 100644 index 1b24db78d84..00000000000 --- a/apidoc/Titanium/Yahoo/Yahoo.yml +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: Titanium.Yahoo -summary: The top level Yahoo module. The Yahoo module is used for accessing Yahoo related API services. -extends: Titanium.Module -since: "0.8" -platforms: [android, iphone, ipad] -methods: - - name: yql - summary: invoke a Yahoo YQL query - parameters: - - name: yql - summary: the YQL query to execute - type: String - - name: callback - summary: the function to execute when the query completes. - type: Callback -deprecated: - since: "8.0.0" - removed: "8.0.0" - notes: Use the standalone [Ti.Yahoo](https://github.com/appcelerator-modules/ti.yahoo) module instead. ---- -name: YQLResponse -summary: Properties passed to a yql callback to report a success or failure. -extends: ErrorResponse -properties: - - name: message - summary: Error message, if any returned. Use `error` instead - description: Will be undefined if `success` is `true`. - type: String - deprecated: - since: "3.1.0" - - - name: data - summary: The data payload received from the YQL. - description: May be undefined if `success` is `false`. - type: Object - - - name: error - summary: Error message, if any returned. - description: Will be undefined if `success` is `true`. - type: String - since: "3.1.0" - - - name: code - summary: Error code. Returns 0 if `success` is `true`. - description: | - Error code will be 0 if `success` is `true`, nonzero otherwise. If the error - was generated by the operating system, that system's error value is used. - Otherwise, this value will be -1. - type: Number - since: "3.1.0" From bd5c5e71d24b04691b510f96b1567da16a5b8283 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 30 Jan 2024 20:45:14 +0100 Subject: [PATCH 019/145] docs: link idleTimerDisabled and keepScreenOn (#13974) --- apidoc/Titanium/App/App.yml | 2 +- apidoc/Titanium/UI/View.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apidoc/Titanium/App/App.yml b/apidoc/Titanium/App/App.yml index 94fc3cc3756..1cb0f8c7827 100644 --- a/apidoc/Titanium/App/App.yml +++ b/apidoc/Titanium/App/App.yml @@ -543,7 +543,7 @@ properties: - name: idleTimerDisabled summary: Determines whether the screen is locked when the device is idle. - description: Set to `true` to disable the timer. + description: Set to `true` to disable the timer. For Android look at [Titanium.UI.View.keepScreenOn](Titanium.UI.View.keepScreenOn). type: Boolean platforms: [iphone, ipad, macos] diff --git a/apidoc/Titanium/UI/View.yml b/apidoc/Titanium/UI/View.yml index 13eca36a3e3..522308f2c80 100644 --- a/apidoc/Titanium/UI/View.yml +++ b/apidoc/Titanium/UI/View.yml @@ -1975,6 +1975,7 @@ properties: description: | When `true` the screen will not power down. Note: enabling this feature will use more power, thereby adversely affecting run time when on battery. + For iOS look at [Titanium.App.idleTimerDisabled](Titanium.App.idleTimerDisabled). type: Boolean default: false platforms: [android] From 4e5ca53bf58db474d968bbe1616fcca6d18b2b90 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 30 Jan 2024 20:45:32 +0100 Subject: [PATCH 020/145] docs: add info about iOS foreground notifications (#13956) * docs: add info about iOS foreground notifications * update docs --- .../Titanium/App/iOS/UserNotificationCenter.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apidoc/Titanium/App/iOS/UserNotificationCenter.yml b/apidoc/Titanium/App/iOS/UserNotificationCenter.yml index 75d8708585b..f9b32f8d54a 100644 --- a/apidoc/Titanium/App/iOS/UserNotificationCenter.yml +++ b/apidoc/Titanium/App/iOS/UserNotificationCenter.yml @@ -133,7 +133,7 @@ properties: - name: userInfo summary: Custom data object. - type: Dictionary + type: UserInfoDictionary - name: category summary: Category identifier of the notification. @@ -160,6 +160,19 @@ properties: - identifier: The identifier of the region. type: Dictionary +--- +name: UserInfoDictionary +summary: | + Dictionary object of parameters. +platforms: [iphone, ipad, macos] + +properties: + - name: showInForground + summary: Show notification if app is in foreground + description: | + Boolean if a notification banner is shown if the app is in foreground. + type: Number + --- name: GetUserNotificationSettings summary: | From 8bcd5c31a8dc86415c231a6086c1d83bbb183565 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Tue, 30 Jan 2024 23:41:34 +0100 Subject: [PATCH 021/145] fix(ios): fix debug issues with scenes (#13979) * Revert "Revert "feat(ios): support multi-scene applications (#13941)"" This reverts commit 4a1d20f43c82296dd21bfd760fa63b65927e98fd. * fix: defer loading kroll-core to scene initialization --- .../TitaniumKit/Sources/API/TiApp.h | 9 +---- .../TitaniumKit/Sources/API/TiApp.m | 39 +++++++++++-------- iphone/iphone/Titanium.plist | 17 ++++++++ support/iphone/Info.plist | 17 ++++++++ 4 files changed, 57 insertions(+), 25 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index 85053a484da..a9fe584766f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -13,17 +13,10 @@ #import "TiRootViewController.h" #import -extern BOOL applicationInMemoryPanic; // TODO: Remove in SDK 9.0+ - -// TODO: Remove in SDK 9.0+ -TI_INLINE void waitForMemoryPanicCleared() //WARNING: This must never be run on main thread, or else there is a risk of deadlock! -{ -} - /** TiApp represents an instance of an application. There is always only one instance per application which could be accessed through class method. */ -@interface TiApp : TiHost { +@interface TiApp : TiHost { UIWindow *window; UIImageView *loadView; UIView *splashScreenView; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index fd53a04cc7f..2c6780f08ca 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -33,11 +33,6 @@ #define SHUTDOWN_TIMEOUT_IN_SEC 3 -BOOL applicationInMemoryPanic = NO; // TODO: Remove in SDK 9.0+ - -// TODO: Remove in SDK 9.0+ -TI_INLINE void waitForMemoryPanicCleared(void); //WARNING: This must never be run on main thread, or else there is a risk of deadlock! - @interface TiApp () - (void)checkBackgroundServices; - (void)appBoot; @@ -327,15 +322,9 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [[TiLogServer defaultLogServer] start]; } - // Initialize the root-window - window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - // Initialize the launch options to be used by the client launchOptions = [[NSMutableDictionary alloc] initWithDictionary:launchOptions_]; - // Initialize the root-controller - [self initController]; - // If we have a APNS-UUID, assign it NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; if (apnsUUID != nil) { @@ -427,12 +416,6 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( // If a "application-launch-url" is set, launch it directly [self launchToUrl]; - // Boot our kroll-core - [self boot]; - - // Create application support directory if not exists - [self createDefaultDirectories]; - return YES; } @@ -1235,6 +1218,28 @@ - (KrollBridge *)krollBridge return kjsBridge; } +#pragma mark UIWindowSceneDelegate + +- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options +{ + return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; +} + +- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions +{ + // Initialize the root-window + window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; + + // Initialize the root-controller + [self initController]; + + // Boot our kroll-core + [self boot]; + + // Create application support directory if not exists + [self createDefaultDirectories]; +} + #pragma mark Background Tasks - (void)beginBackgrounding diff --git a/iphone/iphone/Titanium.plist b/iphone/iphone/Titanium.plist index 997d287518d..448f4c87fe8 100644 --- a/iphone/iphone/Titanium.plist +++ b/iphone/iphone/Titanium.plist @@ -78,5 +78,22 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + TiApp + + + + diff --git a/support/iphone/Info.plist b/support/iphone/Info.plist index f9500da5954..72b06667636 100644 --- a/support/iphone/Info.plist +++ b/support/iphone/Info.plist @@ -36,5 +36,22 @@ 1.0 LSRequiresIPhoneOS + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + TiApp + + + + From e41650cd9d088435e8e9641ceae5a2802223a3d2 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 8 Feb 2024 15:42:18 +0100 Subject: [PATCH 022/145] feat(android): update gradle (#13682) * feat(android): update gradle * fix module build warning * chore: update android dependencies * update version * downgrade version --------- Co-authored-by: Chris Barber --- android/cli/commands/_buildModule.js | 1 + android/gradle/wrapper/gradle-wrapper.jar | Bin 59821 -> 62076 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 ++- android/gradlew | 25 +++++++++++++----- android/gradlew.bat | 15 ++++++----- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/android/cli/commands/_buildModule.js b/android/cli/commands/_buildModule.js index c4d196d67b8..71d41a8d499 100644 --- a/android/cli/commands/_buildModule.js +++ b/android/cli/commands/_buildModule.js @@ -495,6 +495,7 @@ AndroidModuleBuilder.prototype.generateRootProjectFiles = async function generat // Create a "gradle.properties" file. Will add network proxy settings if needed. const gradleProperties = await gradlew.fetchDefaultGradleProperties(); gradleProperties.push({ key: 'android.useAndroidX', value: 'true' }); + gradleProperties.push({ key: 'android.suppressUnsupportedCompileSdk', value: '33' }); gradleProperties.push({ key: 'org.gradle.jvmargs', value: `-Xmx${this.javacMaxMemory} -Dkotlin.daemon.jvm.options="-Xmx${this.javacMaxMemory}"` diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index 41d9927a4d4fb3f96a785543079b8df6723c946b..c1962a79e29d3e0ab67b14947c167a862655af9b 100644 GIT binary patch delta 40199 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 delta 37942 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/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. diff --git a/android/gradlew.bat b/android/gradlew.bat index ac1b06f9382..6689b85beec 100644 --- a/android/gradlew.bat +++ b/android/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,8 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal From 6e40edbeab8cf39eee91d916c98aa6a3c6921812 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sun, 11 Feb 2024 10:10:08 +0100 Subject: [PATCH 023/145] fix(ios): fix various issues related to the scene migration (#13981) * fix: map lifecycle events to scene delegates * fix(ios): migrate launch options to scene connection options * chore: restore remote notifications handler * fix: fix typo --- .../TitaniumKit/Sources/API/TiApp.m | 220 +++++++----------- 1 file changed, 85 insertions(+), 135 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index 2c6780f08ca..ec6803de5a6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -316,106 +316,10 @@ - (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdenti - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions_ { - started = [NSDate timeIntervalSinceReferenceDate]; - [TiExceptionHandler defaultExceptionHandler]; - if ([[TiSharedConfig defaultConfig] logServerEnabled]) { - [[TiLogServer defaultLogServer] start]; - } - - // Initialize the launch options to be used by the client - launchOptions = [[NSMutableDictionary alloc] initWithDictionary:launchOptions_]; - - // If we have a APNS-UUID, assign it - NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; - if (apnsUUID != nil) { - remoteDeviceUUID = [apnsUUID copy]; - } - - [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; - - // Get some launch options to validate before finish launching. Some of them - // need to be mapepd from native to JS-types to be used by the client - NSURL *urlOptions = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; - NSString *sourceBundleId = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; - NSDictionary *_remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; - UILocalNotification *_localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; - NSNumber *launchedLocation = [launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]; - UIApplicationShortcutItem *shortcut = [launchOptions objectForKey:UIApplicationLaunchOptionsShortcutItemKey]; - NSDictionary *userActivityDictionary = launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey]; - - // Map user activity if exists - NSUserActivity *userActivity = userActivityDictionary[@"UIApplicationLaunchOptionsUserActivityKey"]; - if (userActivity != nil && [userActivity isKindOfClass:[NSUserActivity class]]) { - NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:@{ @"activityType" : [userActivity activityType] }]; - - if ([TiUtils isIOSVersionOrGreater:@"9.0"] && [[userActivity activityType] isEqualToString:CSSearchableItemActionType]) { - if ([userActivity userInfo] != nil) { - [dict setObject:[[userActivity userInfo] objectForKey:CSSearchableItemActivityIdentifier] forKey:@"searchableItemActivityIdentifier"]; - } - } - - if ([userActivity title] != nil) { - [dict setObject:[userActivity title] forKey:@"title"]; - } - - if ([userActivity webpageURL] != nil) { - [dict setObject:[[userActivity webpageURL] absoluteString] forKey:@"webpageURL"]; - } - - if ([userActivity userInfo] != nil) { - [dict setObject:[userActivity userInfo] forKey:@"userInfo"]; - } - - // Update launchOptions so that we send only expected values rather than NSUserActivity - [launchOptions setObject:@{ @"UIApplicationLaunchOptionsUserActivityKey" : dict } - forKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; - } - - // Map background location key - if (launchedLocation != nil) { - [launchOptions setObject:launchedLocation forKey:@"launchOptionsLocationKey"]; - [launchOptions removeObjectForKey:UIApplicationLaunchOptionsLocationKey]; - } - - // Map local notification - if (_localNotification != nil) { - localNotification = [[[self class] dictionaryWithLocalNotification:_localNotification] retain]; - [launchOptions removeObjectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; - - // Queue the "localnotificationaction" event for iOS 9 and lower. - // For iOS 10+, the "userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler" delegate handles it - if ([TiUtils isIOSVersionLower:@"9.0"]) { - [self tryToPostNotification:localNotification withNotificationName:kTiLocalNotificationAction completionHandler:nil]; - } - } - - // Map launched URL - if (urlOptions != nil) { - [launchOptions setObject:[urlOptions absoluteString] forKey:@"url"]; - [launchOptions removeObjectForKey:UIApplicationLaunchOptionsURLKey]; - } - - // Map launched App-ID - if (sourceBundleId != nil) { - [launchOptions setObject:sourceBundleId forKey:@"source"]; - [launchOptions removeObjectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; - } - - // Generate remote notification of available - if (_remoteNotification != nil) { - [self generateNotification:_remoteNotification]; - } - if (shortcut != nil) { - launchedShortcutItem = [shortcut retain]; - } - // Queue selector for usage in modules / Hyperloop [self tryToInvokeSelector:@selector(application:didFinishLaunchingWithOptions:) withArguments:[NSOrderedSet orderedSetWithObjects:application, launchOptions_, nil]]; - // If a "application-launch-url" is set, launch it directly - [self launchToUrl]; - return YES; } @@ -445,31 +349,6 @@ - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDiction return YES; } -// Handle URL-schemes / iOS < 9 -- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation -{ - [self tryToInvokeSelector:@selector(application:sourceApplication:annotation:) - withArguments:[NSOrderedSet orderedSetWithObjects:application, sourceApplication, annotation, nil]]; - - [launchOptions removeObjectForKey:UIApplicationLaunchOptionsURLKey]; - [launchOptions setObject:[url absoluteString] forKey:@"url"]; - [launchOptions removeObjectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; - - if (sourceApplication != nil) { - [launchOptions setObject:sourceApplication forKey:@"source"]; - } else { - [launchOptions removeObjectForKey:@"source"]; - } - - if (appBooted) { - [[NSNotificationCenter defaultCenter] postNotificationName:kTiApplicationLaunchedFromURL object:self userInfo:launchOptions]; - } else { - [[self queuedBootEvents] setObject:launchOptions forKey:kTiApplicationLaunchedFromURL]; - } - - return YES; -} - #pragma mark Background Fetch #ifdef USE_TI_FETCH @@ -1024,10 +903,10 @@ - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application [Webcolor flushCache]; } -- (void)applicationWillResignActive:(UIApplication *)application +- (void)sceneWillResignActive:(UIScene *)scene { - [self tryToInvokeSelector:@selector(applicationWillResignActive:) - withArguments:[NSOrderedSet orderedSetWithObject:application]]; + [self tryToInvokeSelector:@selector(sceneWillResignActive:) + withArguments:[NSOrderedSet orderedSetWithObject:scene]]; if ([self forceSplashAsSnapshot]) { [window addSubview:[self splashScreenView]]; @@ -1039,13 +918,11 @@ - (void)applicationWillResignActive:(UIApplication *)application [kjsBridge gc]; } -- (void)applicationDidBecomeActive:(UIApplication *)application +- (void)sceneDidBecomeActive:(UIScene *)scene { - [self tryToInvokeSelector:@selector(applicationDidBecomeActive:) - withArguments:[NSOrderedSet orderedSetWithObject:application]]; + [self tryToInvokeSelector:@selector(sceneDidBecomeActive:) + withArguments:[NSOrderedSet orderedSetWithObject:scene]]; - // We should think about placing this inside "applicationWillBecomeActive" instead to make - // the UI re-useable again more quickly if ([self forceSplashAsSnapshot] && splashScreenView != nil) { [[self splashScreenView] removeFromSuperview]; RELEASE_TO_NIL(splashScreenView); @@ -1059,10 +936,10 @@ - (void)applicationDidBecomeActive:(UIApplication *)application [[ImageLoader sharedLoader] resume]; } -- (void)applicationDidEnterBackground:(UIApplication *)application +- (void)sceneDidEnterBackground:(UIScene *)scene { - [self tryToInvokeSelector:@selector(applicationDidEnterBackground:) - withArguments:[NSOrderedSet orderedSetWithObject:application]]; + [self tryToInvokeSelector:@selector(sceneDidEnterBackground:) + withArguments:[NSOrderedSet orderedSetWithObject:scene]]; [[NSNotificationCenter defaultCenter] postNotificationName:kTiPausedNotification object:self]; @@ -1091,10 +968,10 @@ - (void)applicationDidEnterBackground:(UIApplication *)application }); } -- (void)applicationWillEnterForeground:(UIApplication *)application +- (void)sceneWillEnterForeground:(UIScene *)scene { - [self tryToInvokeSelector:@selector(applicationWillEnterForeground:) - withArguments:[NSOrderedSet orderedSetWithObject:application]]; + [self tryToInvokeSelector:@selector(sceneWillEnterForeground:) + withArguments:[NSOrderedSet orderedSetWithObject:scene]]; [self flushCompletionHandlerQueue]; [sessionId release]; @@ -1230,6 +1107,79 @@ - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session op // Initialize the root-window window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; + // Initialize the launch options to be used by the client + launchOptions = [[NSMutableDictionary alloc] init]; + + // If we have a APNS-UUID, assign it + NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; + if (apnsUUID != nil) { + remoteDeviceUUID = [apnsUUID copy]; + } + + [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; + + // Get some launch options to validate before finish launching. Some of them + // need to be mapepd from native to JS-types to be used by the client + NSURL *urlOptions = connectionOptions.URLContexts.allObjects.firstObject.URL; + NSString *sourceBundleId = connectionOptions.sourceApplication; + UNNotificationResponse *notification = connectionOptions.notificationResponse; + UIApplicationShortcutItem *shortcut = connectionOptions.shortcutItem; + + // Map user activity if exists + NSUserActivity *userActivity = connectionOptions.userActivities.allObjects.firstObject; + if (userActivity != nil) { + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:@{ @"activityType" : [userActivity activityType] }]; + + if ([TiUtils isIOSVersionOrGreater:@"9.0"] && [[userActivity activityType] isEqualToString:CSSearchableItemActionType]) { + if ([userActivity userInfo] != nil) { + [dict setObject:[[userActivity userInfo] objectForKey:CSSearchableItemActivityIdentifier] forKey:@"searchableItemActivityIdentifier"]; + } + } + + if ([userActivity title] != nil) { + [dict setObject:[userActivity title] forKey:@"title"]; + } + + if ([userActivity webpageURL] != nil) { + [dict setObject:[[userActivity webpageURL] absoluteString] forKey:@"webpageURL"]; + } + + if ([userActivity userInfo] != nil) { + [dict setObject:[userActivity userInfo] forKey:@"userInfo"]; + } + + // Update launchOptions so that we send only expected values rather than NSUserActivity + [launchOptions setObject:@{ @"UIApplicationLaunchOptionsUserActivityKey" : dict } + forKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; + } + + // Map launched URL + if (urlOptions != nil) { + [launchOptions setObject:[urlOptions absoluteString] forKey:@"url"]; + } + + // Map launched App-ID + if (sourceBundleId != nil) { + [launchOptions setObject:sourceBundleId forKey:@"source"]; + } + + // Generate remote notification if available + if (notification != nil && [notification.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { + [self generateNotification:@{ @"aps" : notification.notification.request.content.userInfo }]; + } + + // Save shortcut item for later + if (shortcut != nil) { + launchedShortcutItem = [shortcut retain]; + } + + // Queue selector for usage in modules / Hyperloop + [self tryToInvokeSelector:@selector(scene:willConnectToSession:options:) + withArguments:[NSOrderedSet orderedSetWithObjects:scene, connectionOptions, nil]]; + + // If a "application-launch-url" is set, launch it directly + [self launchToUrl]; + // Initialize the root-controller [self initController]; From 60cb3f535cbd2af8526dbcfb60c9a454cd25e36e Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sun, 11 Feb 2024 10:10:35 +0100 Subject: [PATCH 024/145] fix(android): fix Android FAB tintColor (#13972) * fix(android): fix Android FAB tintColor * remove from excludes --- .../titanium/ui/widget/TiUIFloatingActionButton.java | 12 ++++++++++++ apidoc/Titanium/UI/Android/FloatingActionButton.yml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIFloatingActionButton.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIFloatingActionButton.java index 956f203d3da..c63fd5d79a1 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIFloatingActionButton.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIFloatingActionButton.java @@ -7,6 +7,7 @@ package ti.modules.titanium.ui.widget; import android.content.res.ColorStateList; +import android.graphics.PorterDuff; import com.google.android.material.floatingactionbutton.FloatingActionButton; @@ -54,6 +55,9 @@ public void processProperties(KrollDict d) if (d.containsKey("maxImageSize")) { setMaxImageSize(TiConvert.toInt(d.get("maxImageSize"))); } + if (d.containsKey(TiC.PROPERTY_TINT_COLOR)) { + setTintColor(d.getString("tintColor")); + } if (d.containsKeyAndNotNull(TiC.PROPERTY_TOUCH_FEEDBACK_COLOR)) { ColorStateList colorStateList = null; colorStateList = ColorStateList.valueOf( @@ -91,6 +95,12 @@ private void setImage(Object obj) } } + public void setTintColor(String color) + { + int tintColor = TiConvert.toColor(color, TiApplication.getAppCurrentActivity()); + fab.setColorFilter(tintColor, PorterDuff.Mode.SRC_IN); + } + @Override public void propertyChanged(String key, Object oldValue, Object newValue, KrollProxy proxy) { @@ -106,6 +116,8 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP ColorStateList colorStateList = null; colorStateList = ColorStateList.valueOf(TiConvert.toColor(newValue, proxy.getActivity())); fab.setRippleColor(colorStateList); + } else if (key.equals(TiC.PROPERTY_TINT_COLOR)) { + setTintColor(TiConvert.toString(newValue)); } } } diff --git a/apidoc/Titanium/UI/Android/FloatingActionButton.yml b/apidoc/Titanium/UI/Android/FloatingActionButton.yml index 02d016ba4f5..b42eda0f788 100644 --- a/apidoc/Titanium/UI/Android/FloatingActionButton.yml +++ b/apidoc/Titanium/UI/Android/FloatingActionButton.yml @@ -17,7 +17,7 @@ excludes: backgroundImage, backgroundLeftCap, backgroundRepeat, backgroundSelectedColor, backgroundSelectedImage, backgroundTopCap, borderColor, borderRadius, borderWidth, center, children, clipMode, focusable, height, horizontalWrap, keepScreenOn, layout, opacity, overrideCurrentAnimation, - pullBackgroundColor, rect, size, softKeyboardOnFocus, tintColor, touchEnabled, touchFeedback, transform, + pullBackgroundColor, rect, size, softKeyboardOnFocus, touchEnabled, touchFeedback, transform, viewShadowColor, viewShadowOffset, viewShadowRadius, width, zIndex] events: From f97a27b72d7c3195badc3fecac725f5888f3a572 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sun, 11 Feb 2024 10:15:13 +0100 Subject: [PATCH 025/145] chore(docs): update 12.3.0 changelog # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28d3efcfea2..e696c3926b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [12.3.0](https://github.com/tidev/titanium_mobile/compare/12_2_X...12.3.0) (2024-01-19) +# [12.3.0](https://github.com/tidev/titanium_mobile/compare/12_2_X...12.3.0) (2024-02-12) ## About this release @@ -7,7 +7,7 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu ## Community Credits * Michael Gangolf - * update ti.map ([241ba55](https://github.com/tidev/titanium_mobile/commit/241ba55b130671ac07e7309941520b2ed1a86058)) + * fix Android FAB tintColor ([0c1bf92](https://github.com/tidev/titanium_mobile/commit/0c1bf9238593fd364dd8a887a7b190f339602def)) * update minimum node.js version to 16.x ([af08e72](https://github.com/tidev/titanium_mobile/commit/af08e72c3fccdeade7f10e4e983c2c48dea6f491)) * set correct title after titleAttributes update ([53738a1](https://github.com/tidev/titanium_mobile/commit/53738a1d05f0945841cb2247bc0e86fb413e0bc3)) * optimize TiProperties ([e364209](https://github.com/tidev/titanium_mobile/commit/e3642099bacfebaaa0c0835a9a39dd9c2a521934)) @@ -31,6 +31,8 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu * add empty build.gradle ([2c965e4](https://github.com/tidev/titanium_mobile/commit/2c965e4e1e0950a34f7ef777614260c86b063b7a)) * Hans Knöchel + * fix various issues related to the scene migration ([21c2861](https://github.com/tidev/titanium_mobile/commit/21c28613d906cbe210b5fc1dc1f4ca4193e3e1a5)) + * fix debug issues with scenes ([34e0086](https://github.com/tidev/titanium_mobile/commit/34e00861ea8aeeeacddd2155a9013b480e7aa8d0)) * move issue ([f83062b](https://github.com/tidev/titanium_mobile/commit/f83062b6cda6e2a1aa26fc06abe9b99228f1d6cb)) * add 12.3.0 changelog ([1e58137](https://github.com/tidev/titanium_mobile/commit/1e58137bb4886324ceb4bcf527b7550e963b10bc)) * support multi-scene applications ([bfc87a6](https://github.com/tidev/titanium_mobile/commit/bfc87a6517f0b70b82ea760b8d052381bddf1ff4)) @@ -46,15 +48,18 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu ### Android platform +* fix Android FAB tintColor ([0c1bf92](https://github.com/tidev/titanium_mobile/commit/0c1bf9238593fd364dd8a887a7b190f339602def)) * fix TextArea hinttextid ([845a08d](https://github.com/tidev/titanium_mobile/commit/845a08d650134950ab7ef7325d362f6406b3eada)) * null check in ScrollView getAttributeSet ([c3c6cde](https://github.com/tidev/titanium_mobile/commit/c3c6cde3aa596dc7db8db66bf0665137e5eaece5)) * return more httpclient errors to Ti ([fafdde6](https://github.com/tidev/titanium_mobile/commit/fafdde61c520ac09c374aad3c97c9b8c1c34422f)) * set correct title after titleAttributes update ([53738a1](https://github.com/tidev/titanium_mobile/commit/53738a1d05f0945841cb2247bc0e86fb413e0bc3)) * xml parser null check ([3c0794f](https://github.com/tidev/titanium_mobile/commit/3c0794f1c7610ccf6870da0ac2d85be7b843e998)) -### Multiple platforms +### iOS platform * simulator and macos builds don't require wwdr ([8c70a0d](https://github.com/tidev/titanium_mobile/commit/8c70a0db7ad33e62e15128061237935bece49843)) +* fix debug issues with scenes ([34e0086](https://github.com/tidev/titanium_mobile/commit/34e00861ea8aeeeacddd2155a9013b480e7aa8d0)) +* fix various issues related to the scene migration ([21c2861](https://github.com/tidev/titanium_mobile/commit/21c28613d906cbe210b5fc1dc1f4ca4193e3e1a5)) ## Features @@ -83,7 +88,7 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu | Module | Android version | iOS Version | | ----------- | --------------- | ----------- | | facebook | 12.1.0 | 14.0.0 | -| ti.map | 5.6.1 | 7.3.1 | +| ti.map | 5.6.0 | 7.3.1 | | ti.webdialog | 2.3.0 | 3.0.2 | | ti.playservices | 18.2.0 | n/a | | ti.identity | 3.1.0 | 5.0.0 | From 047b21be9fd2d4d0a7d41ea9325291ba829f9e02 Mon Sep 17 00:00:00 2001 From: Chris Barber Date: Mon, 12 Feb 2024 11:09:06 -0600 Subject: [PATCH 026/145] ci: add more release type tags (#13986) --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 94865fe8c3f..9ab7e263666 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,13 @@ on: options: - GA - RC + - RC2 + - RC3 + - RC4 - Beta + - Beta2 + - Beta3 + - Beta4 jobs: validate: From 3a44b3d3ef37c2f7f252479da9a9e9919c540fa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Thu, 15 Feb 2024 13:07:33 +0100 Subject: [PATCH 027/145] fix(ios): restore compatibility for Ti.App._resumeRestart() (#13989) * fix(ios): restore compatibility for Ti.App._resumeRestart() * chore: save session configuration, add warning for private API usage * chore: make sure to select the foreground/active scene, not only the first --- iphone/Classes/AppModule.m | 23 +++++++++++++++---- .../TitaniumKit/Sources/API/TiApp.h | 8 +++++++ .../TitaniumKit/Sources/API/TiApp.m | 8 +++++++ .../Sources/API/TiRootViewController.m | 9 +++++--- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/iphone/Classes/AppModule.m b/iphone/Classes/AppModule.m index 010b7bf3748..4c6ff86d0b6 100644 --- a/iphone/Classes/AppModule.m +++ b/iphone/Classes/AppModule.m @@ -48,9 +48,23 @@ - (void)_resumeRestart:(id)unused #ifndef TI_USE_AUTOLAYOUT [TiLayoutQueue resetQueue]; #endif + + // Get the currently active scene + UIScene *activeScene = nil; + for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive) { + activeScene = scene; + break; + } + } + + if (activeScene == nil) { + NSLog(@"[ERROR] No active scene connected - this may lead to an undefined behavior"); + } + /* Begin backgrounding simulation */ - [appDelegate applicationWillResignActive:app]; - [appDelegate applicationDidEnterBackground:app]; + [appDelegate sceneWillResignActive:activeScene]; + [appDelegate sceneDidEnterBackground:activeScene]; [appDelegate endBackgrounding]; /* End backgrounding simulation */ @@ -76,8 +90,9 @@ - (void)_resumeRestart:(id)unused /* Begin foregrounding simulation */ [appDelegate application:app didFinishLaunchingWithOptions:[appDelegate launchOptions]]; - [appDelegate applicationWillEnterForeground:app]; - [appDelegate applicationDidBecomeActive:app]; + [appDelegate scene:activeScene willConnectToSession:activeScene.session options:TiApp.app.connectionOptions]; + [appDelegate sceneWillEnterForeground:activeScene]; + [appDelegate sceneDidBecomeActive:activeScene]; /* End foregrounding simulation */ } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index a9fe584766f..909962df8c5 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -26,6 +26,7 @@ KrollBridge *kjsBridge; NSMutableDictionary *launchOptions; + UISceneConnectionOptions *_connectionOptions; NSTimeInterval started; int32_t networkActivityCount; @@ -112,6 +113,13 @@ */ @property (nonatomic, readonly) NSDictionary *localNotification; +/** + Returns details for the last remote notification. + + Dictionary containing details about remote notification, or _nil_. + */ +@property (nonatomic, readonly) UISceneConnectionOptions *connectionOptions; + /** Returns the application's root view controller. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index ec6803de5a6..bf4558f7789 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -48,6 +48,7 @@ @implementation TiApp @synthesize localNotification; @synthesize appBooted; @synthesize userAgent; +@synthesize connectionOptions; + (TiApp *)app { @@ -1062,6 +1063,7 @@ - (void)dealloc RELEASE_TO_NIL(queuedBootEvents); RELEASE_TO_NIL(_queuedApplicationSelectors); RELEASE_TO_NIL(_applicationDelegates); + RELEASE_TO_NIL(_connectionOptions); [super dealloc]; } @@ -1110,6 +1112,12 @@ - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session op // Initialize the launch options to be used by the client launchOptions = [[NSMutableDictionary alloc] init]; + // Retain connectionOptions for later use + if (_connectionOptions != connectionOptions) { + [_connectionOptions release]; // Release any existing object + _connectionOptions = [connectionOptions retain]; // Retain the new object + } + // If we have a APNS-UUID, assign it NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; if (apnsUUID != nil) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m index 9f2ce2ff219..0d84e415f16 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m @@ -696,7 +696,8 @@ - (void)shutdownUi:(id)arg if (![TiSharedConfig defaultConfig].debugEnabled) { return; } - //FIRST DISMISS ALL MODAL WINDOWS + + // Dismiss all currently opened windows UIViewController *topVC = [self topPresentedController]; if (topVC != self) { UIViewController *presenter = [topVC presentingViewController]; @@ -706,7 +707,8 @@ - (void)shutdownUi:(id)arg }]; return; } - //At this point all modal stuff is done. Go ahead and clean up proxies. + + // Clean up proxies. NSArray *modalCopy = [modalWindows copy]; NSArray *windowCopy = [containedWindows copy]; @@ -725,7 +727,8 @@ - (void)shutdownUi:(id)arg [windowCopy release]; } - DebugLog(@"[INFO] UI SHUTDOWN COMPLETE. TRYING TO RESUME RESTART"); + DebugLog(@"[WARN] Calling the private `_restart()` API should not be done in production, as restarting an app is not a recommended native concept."); + if ([arg respondsToSelector:@selector(_resumeRestart:)]) { [arg performSelector:@selector(_resumeRestart:) withObject:nil]; } else { From d1a827d17fe473cf0eab75b69d18b9f59500d40f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Thu, 15 Feb 2024 16:19:59 +0100 Subject: [PATCH 028/145] chore: update 12.3.0 changelog for GA --- CHANGELOG.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e696c3926b4..85b21dd319a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# [12.3.0](https://github.com/tidev/titanium_mobile/compare/12_2_X...12.3.0) (2024-02-12) +# [12.3.0](https://github.com/tidev/titanium_mobile/compare/12_2_X...12.3.0) (2024-02-16) ## About this release @@ -31,6 +31,8 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu * add empty build.gradle ([2c965e4](https://github.com/tidev/titanium_mobile/commit/2c965e4e1e0950a34f7ef777614260c86b063b7a)) * Hans Knöchel + * restore compatibility for Ti.App._resumeRestart() ([4b34d5f](https://github.com/tidev/titanium_mobile/commit/4b34d5ff8660ce3d717ca2e104fcbcfc09462b14)) + * update 12.3.0 changelog ([5272d8a](https://github.com/tidev/titanium_mobile/commit/5272d8a72a58dc96ee9cfd625d6fd172553ff57e)) * fix various issues related to the scene migration ([21c2861](https://github.com/tidev/titanium_mobile/commit/21c28613d906cbe210b5fc1dc1f4ca4193e3e1a5)) * fix debug issues with scenes ([34e0086](https://github.com/tidev/titanium_mobile/commit/34e00861ea8aeeeacddd2155a9013b480e7aa8d0)) * move issue ([f83062b](https://github.com/tidev/titanium_mobile/commit/f83062b6cda6e2a1aa26fc06abe9b99228f1d6cb)) @@ -44,6 +46,7 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu * Brianggalvez * support for html in AttributedStrings ([ca4a7a9](https://github.com/tidev/titanium_mobile/commit/ca4a7a9e77a3c88d9790671eb8abf8d837c409bd)) + ## Bug Fixes ### Android platform @@ -55,11 +58,15 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu * set correct title after titleAttributes update ([53738a1](https://github.com/tidev/titanium_mobile/commit/53738a1d05f0945841cb2247bc0e86fb413e0bc3)) * xml parser null check ([3c0794f](https://github.com/tidev/titanium_mobile/commit/3c0794f1c7610ccf6870da0ac2d85be7b843e998)) -### iOS platform +### Multiple platforms * simulator and macos builds don't require wwdr ([8c70a0d](https://github.com/tidev/titanium_mobile/commit/8c70a0db7ad33e62e15128061237935bece49843)) + +### iOS platform + * fix debug issues with scenes ([34e0086](https://github.com/tidev/titanium_mobile/commit/34e00861ea8aeeeacddd2155a9013b480e7aa8d0)) * fix various issues related to the scene migration ([21c2861](https://github.com/tidev/titanium_mobile/commit/21c28613d906cbe210b5fc1dc1f4ca4193e3e1a5)) +* restore compatibility for Ti.App._resumeRestart() ([4b34d5f](https://github.com/tidev/titanium_mobile/commit/4b34d5ff8660ce3d717ca2e104fcbcfc09462b14)) ## Features @@ -83,6 +90,9 @@ Titanium SDK 12.3.0 is a minor release of the SDK, addressing high-priority issu * support multi-scene applications ([bfc87a6](https://github.com/tidev/titanium_mobile/commit/bfc87a6517f0b70b82ea760b8d052381bddf1ff4)) * view rotation parity ([5c7edd8](https://github.com/tidev/titanium_mobile/commit/5c7edd8588f4f66c74040ad0febb83ce687e925a)) +## BREAKING CHANGES + + ## SDK Module Versions | Module | Android version | iOS Version | From e963c721567cfd643f9bb3a974f7e6085c5b0a8a Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Fri, 16 Feb 2024 14:49:33 +0000 Subject: [PATCH 029/145] ci(android): install ccache via action (#13993) --- .github/actions/build-android/action.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/actions/build-android/action.yml b/.github/actions/build-android/action.yml index 3f150d06384..ac6d0389498 100644 --- a/.github/actions/build-android/action.yml +++ b/.github/actions/build-android/action.yml @@ -49,18 +49,10 @@ runs: run: npm run lint:android shell: bash - - name: Set up Homebrew - id: set-up-homebrew - uses: Homebrew/actions/setup-homebrew@master - - name: Install ccache - run: brew install ccache - shell: bash - - - name: Retrieve ccache - uses: actions/cache@v3 + uses: hendrikmuhs/ccache-action@v1.2 with: - path: ${{ env.CCACHE_DIR }} + create-symlink: true key: ${{ runner.os }}-ccache-${{ github.sha }} restore-keys: | ${{ runner.os }}-ccache- From e4cb309372361c325f48fde657291ad8d7eb1821 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Sun, 17 Mar 2024 00:05:53 +0000 Subject: [PATCH 030/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4bfe6081f7c..185a1572e0c 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited ## Features From ee5c6356a4e30935e3ea5da73e36e2c42120eb4b Mon Sep 17 00:00:00 2001 From: Chris Barber Date: Tue, 19 Mar 2024 14:30:56 -0500 Subject: [PATCH 031/145] Update cla.yaml (#14001) --- .github/workflows/cla.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cla.yaml b/.github/workflows/cla.yaml index ac0fe2322be..bbfcc73f82c 100644 --- a/.github/workflows/cla.yaml +++ b/.github/workflows/cla.yaml @@ -8,6 +8,6 @@ jobs: name: Verify contributor steps: - - uses: tidev/tidev-cla-action@v1 + - uses: tidev/tidev-cla-action@v2 with: repo-token: ${{ secrets.GITHUB_TOKEN }} From 02144ddb7d1e5701682bfa7be8344e5be3cbaae1 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Tue, 26 Mar 2024 00:05:14 +0000 Subject: [PATCH 032/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 185a1572e0c..4bfe6081f7c 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited ## Features From 76dc1db45175669cd5c59ea1c5d217052a16cc09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Thu, 28 Mar 2024 09:52:51 +0100 Subject: [PATCH 033/145] chore: handle first privacy manifest changes (#14007) --- apidoc/Titanium/App/Properties/Properties.yml | 9 ++++---- apidoc/Titanium/App/iOS/UserDefaults.yml | 3 +++ apidoc/Titanium/Filesystem/File.yml | 9 ++++++++ apidoc/Titanium/Platform/Platform.yml | 3 +++ iphone/Classes/PlatformModule.m | 2 ++ iphone/Classes/TiFilesystemBlobProxy.m | 8 +++---- .../Sources/Modules/TiFilesystemFileProxy.m | 22 ++++++++++++------- iphone/iphone/project.xcconfig | 2 +- 8 files changed, 40 insertions(+), 18 deletions(-) diff --git a/apidoc/Titanium/App/Properties/Properties.yml b/apidoc/Titanium/App/Properties/Properties.yml index 4fbd0fc1a77..b4f8da99569 100644 --- a/apidoc/Titanium/App/Properties/Properties.yml +++ b/apidoc/Titanium/App/Properties/Properties.yml @@ -21,10 +21,10 @@ description: | Then, you can retrieve the property during runtime with the following API call: ``` js - var foo = Ti.App.Properties.getString('foo'); + const foo = Ti.App.Properties.getString('foo'); ``` - As of Release 3.2.0, any application properties defined in the `tiapp.xml` file are stored in the + Any application properties defined in the `tiapp.xml` file are stored in the device's secure storage, making them read-only. Additionally, external access to these properties is now restricted. Other iOS applications cannot access these properties and native Android modules must use the Titanium module API TiApplication.getAppProperties() @@ -33,9 +33,8 @@ description: | If you need to change the values during runtime, initially create the property with these APIs rather than defining them in the `tiapp.xml` file. - Prior to Release 3.2.0, application properties defined in the `tiapp.xml` file could be - overwritten by these APIs and accessed externally by other applications and modules. - + **Important**: Using this API in the Apple ecosystem requires the `NSPrivacyAccessedAPICategoryUserDefaults` + property set in the privacy manifest that was introduced in iOS 17. You can learn more about it [here](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). extends: Titanium.Module since: "0.5" diff --git a/apidoc/Titanium/App/iOS/UserDefaults.yml b/apidoc/Titanium/App/iOS/UserDefaults.yml index 7b67ff2fd22..b3c9e57c123 100644 --- a/apidoc/Titanium/App/iOS/UserDefaults.yml +++ b/apidoc/Titanium/App/iOS/UserDefaults.yml @@ -4,6 +4,9 @@ summary: | The UserDefaults module is used for storing application-related data in property/value pairs that persist beyond application sessions and device power cycles. UserDefaults allows the suiteName of the UserDefaults to be specified at creation time. + + **Important**: Using this API requires the `NSPrivacyAccessedAPICategoryUserDefaults` property set in the + privacy manifest that was introduced in iOS 17. You can learn more about it [here](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). description: | Unlike Titanium.App.Properties, Titanium.App.iOS.UserDefaults does not pull properties defined in the `tiapp.xml` file. diff --git a/apidoc/Titanium/Filesystem/File.yml b/apidoc/Titanium/Filesystem/File.yml index c4e5cb8aad7..e2a5f2b16d4 100644 --- a/apidoc/Titanium/Filesystem/File.yml +++ b/apidoc/Titanium/Filesystem/File.yml @@ -165,6 +165,9 @@ methods: summary: Returns the creation Date for the file identified by this file object. description: | On Android, returns a Date whose `getTime()` value is 0 for resource files. + + **Important**: When developing for the Apple ecosystem, using this API requires the `NSPrivacyAccessedAPICategoryFileTimestamp` + property set in the privacy manifest that was introduced in iOS 17. You can learn more about it [here](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). returns: type: Date platforms: [iphone, ipad, android, macos] @@ -255,6 +258,9 @@ methods: summary: Returns the last modification Date for the file identified by this file object. description: | On Android, returns a Date whose `getTime()` value is 0 for resource files. + + **Important**: When developing for the Apple ecosystem, using this API requires the `NSPrivacyAccessedAPICategoryFileTimestamp` + property set in the privacy manifest that was introduced in iOS 17. You can learn more about it [here](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). returns: type: Date platforms: [iphone, ipad, android, macos] @@ -346,6 +352,9 @@ methods: identified by this file object is stored. description: | Free space is returned in bytes. + + **Important**: When developing for the Apple ecosystem, using this API requires the `NSPrivacyAccessedAPICategoryDiskSpace` + property set in the privacy manifest that was introduced in iOS 17. You can learn more about it [here](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). returns: type: Number diff --git a/apidoc/Titanium/Platform/Platform.yml b/apidoc/Titanium/Platform/Platform.yml index 83e0d06fca8..a5542c59056 100644 --- a/apidoc/Titanium/Platform/Platform.yml +++ b/apidoc/Titanium/Platform/Platform.yml @@ -392,6 +392,9 @@ properties: - name: uptime summary: System uptime since last boot in seconds. + description: | + **Important**: When developing for the Apple ecosystem, using this API requires the `NSPrivacyAccessedAPICategorySystemBootTime` + property set in the privacy manifest that was introduced in iOS 17. You can learn more about it [here](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). type: Number permission: read-only platforms: [android, iphone, ipad, macos] diff --git a/iphone/Classes/PlatformModule.m b/iphone/Classes/PlatformModule.m index 7386c731986..bc6ecc5cec0 100644 --- a/iphone/Classes/PlatformModule.m +++ b/iphone/Classes/PlatformModule.m @@ -223,10 +223,12 @@ - (NSString *)macaddress } GETTER_IMPL(NSString *, macaddress, Macaddress); +#ifdef USE_TI_PLATFORMUPTIME - (NSNumber *)uptime { return [NSNumber numberWithDouble:[[NSProcessInfo processInfo] systemUptime]]; } +#endif - (NSString *)identifierForVendor { diff --git a/iphone/Classes/TiFilesystemBlobProxy.m b/iphone/Classes/TiFilesystemBlobProxy.m index 20d7e363112..f9bdd299e15 100644 --- a/iphone/Classes/TiFilesystemBlobProxy.m +++ b/iphone/Classes/TiFilesystemBlobProxy.m @@ -95,8 +95,8 @@ -(id)name \ - (NSDate *)createTimestamp:(id)unused { - DEPRECATED_REPLACED(@"Filesystem.File.createTimestamp()", @"7.3.0", @"Filesystem.File.createdAt()"); - return [self createdAt:unused]; + DEPRECATED_REPLACED_REMOVED(@"Filesystem.Blob.createTimestamp()", @"7.3.0", @"12.4.0", @"Filesystem.File.createdAt()"); + return [NSDate new]; } - (NSDate *)createdAt:(id)unused @@ -106,8 +106,8 @@ - (NSDate *)createdAt:(id)unused - (NSDate *)modificationTimestamp:(id)unused { - DEPRECATED_REPLACED(@"Filesystem.File.modificationTimestamp()", @"7.3.0", @"Filesystem.File.modifiedAt()"); - return [self modifiedAt:nil]; + DEPRECATED_REPLACED_REMOVED(@"Filesystem.File.modificationTimestamp()", @"7.3.0", @"12.4.0", @"Filesystem.File.modifiedAt()"); + return [NSDate new]; } - (NSDate *)modifiedAt:(id)unused diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m index 8988e7c6320..e109208b2af 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m @@ -58,16 +58,17 @@ - (NSNumber *)readonly - (NSDate *)createTimestamp { - DEPRECATED_REPLACED(@"Filesystem.File.createTimestamp", @"7.3.0", @"Filesystem.File.createdAt()"); - return [self createdAt:nil]; + DEPRECATED_REPLACED_REMOVED(@"Filesystem.File.createTimestamp", @"7.3.0", @"12.4.0", @"Filesystem.File.createdAt()"); + return [NSDate new]; } - (NSDate *)createTimestamp:(id)unused { - DEPRECATED_REPLACED(@"Filesystem.File.createTimestamp()", @"7.3.0", @"Filesystem.File.createdAt()"); - return [self createdAt:unused]; + DEPRECATED_REPLACED_REMOVED(@"Filesystem.File.createTimestamp()", @"7.3.0", @"12.4.0", @"Filesystem.File.createdAt()"); + return [NSDate new]; } +#ifdef USE_TI_FILESYSTEMCREATEDAT - (NSDate *)createdAt:(id)unused { NSError *error = nil; @@ -82,19 +83,21 @@ - (NSDate *)createdAt:(id)unused } return result; } +#endif - (NSDate *)modificationTimestamp { - DEPRECATED_REPLACED(@"Filesystem.File.modificationTimestamp", @"7.3.0", @"Filesystem.File.modifiedAt()"); - return [self modifiedAt:nil]; + DEPRECATED_REPLACED_REMOVED(@"Filesystem.File.modificationTimestamp", @"7.3.0", @"12.4.0", @"Filesystem.File.modifiedAt()"); + return [NSDate new]; } - (NSDate *)modificationTimestamp:(id)unused { - DEPRECATED_REPLACED(@"Filesystem.File.modificationTimestamp()", @"7.3.0", @"Filesystem.File.modifiedAt()"); - return [self modifiedAt:nil]; + DEPRECATED_REPLACED_REMOVED(@"Filesystem.File.modificationTimestamp()", @"7.3.0", @"12.4.0", @"Filesystem.File.modifiedAt()"); + return [NSDate new]; } +#ifdef USE_TI_FILESYSTEMMODIFIEDAT - (NSDate *)modifiedAt:(id)unused { NSError *error = nil; @@ -104,6 +107,7 @@ - (NSDate *)modifiedAt:(id)unused } return [resultDict objectForKey:NSFileModificationDate]; } +#endif - (NSNumber *)symbolicLink { @@ -147,6 +151,7 @@ - (NSArray *)getDirectoryListing:(id)args return resultArray; } +#ifdef USE_TI_FILESYSTEMSPACEAVAILABLE - (NSNumber *)spaceAvailable:(id)unused { NSError *error = nil; @@ -157,6 +162,7 @@ - (NSNumber *)spaceAvailable:(id)unused } return [resultDict objectForKey:NSFileSystemFreeSize]; } +#endif - (NSString *)getProtectionKey:(id)args { diff --git a/iphone/iphone/project.xcconfig b/iphone/iphone/project.xcconfig index ee1abd3b3e7..c82a63c70fd 100644 --- a/iphone/iphone/project.xcconfig +++ b/iphone/iphone/project.xcconfig @@ -1,5 +1,5 @@ TI_VERSION=0.0.0 JSCORE_LD_FLAGS=-weak_framework JavaScriptCore GCC_DEFINITIONS= -TI_SYMBOL_MACROS=USE_JSCORE_FRAMEWORK USE_TI_STREAM USE_TI_CODEC USE_TI_UTILS USE_TI_XML USE_TI_ACCELEROMETER USE_TI_API USE_TI_APP USE_TI_APPTRACKUSERINTERACTION USE_TI_CALENDAR USE_TI_CONTACTS USE_TI_DATABASE USE_TI_FILESYSTEM USE_TI_GEOLOCATION USE_TI_GESTURE USE_TI_MEDIA USE_TI_NETWORK USE_TI_NETWORKSOCKET USE_TI_PLATFORM USE_TI_PLATFORMIDENTIFIERFORADVERTISING USE_TI_PLATFORMGETIDENTIFIERFORADVERTISING USE_TI_WATCHSESSION USE_TI_UI USE_TI_UITAB USE_TI_UILABEL USE_TI_UIBUTTON USE_TI_UIPROGRESSBAR USE_TI_UISEARCHBAR USE_TI_UIACTIVITYINDICATOR USE_TI_UIOPTIONBAR USE_TI_UISLIDER USE_TI_UISWITCH USE_TI_UIPICKER USE_TI_UITEXTAREA USE_TI_UITEXTFIELD USE_TI_UIIMAGEVIEW USE_TI_UIMASKEDIMAGE USE_TI_UIWEBVIEW USE_TI_UIWINDOW USE_TI_UIVIEW USE_TI_UIOPTIONDIALOG USE_TI_UIEMAILDIALOG USE_TI_UIDASHBOARDVIEW USE_TI_UISCROLLVIEW USE_TI_UISCROLLABLEVIEW USE_TI_UITABLEVIEW USE_TI_UILISTVIEW USE_TI_UIANIMATION USE_TI_UIATTRIBUTEDSTRING USE_TI_UIACTIVITYINDICATORSTYLE USE_TI_UITOOLBAR USE_TI_UITABBEDBAR USE_TI_UIAPPLICATIONSHORTCUTS USE_TI_UINAVIGATIONWINDOW USE_TI_UICLIPBOARD USE_TI_UIIPAD USE_TI_UIIPADPOPOVER USE_TI_UIIPADSPLITWINDOW USE_TI_UIIPADSPLITWINDOWBUTTON USE_TI_UIIOS USE_TI_UIIOSADVIEW USE_TI_UIIOSCOVERFLOWVIEW USE_TI_UIIOSTOOLBAR USE_TI_UIIOSTABBEDBAR USE_TI_UIIOSDOCUMENTVIEWER USE_TI_UIIOSNAVIGATIONWINDOW USE_TI_UIIOSSPLITWINDOW USE_TI_UIIOSPREVIEWCONTEXT USE_TI_UIIOSMENUPOPUP USE_TI_UIIOSLIVEPHOTOVIEW USE_TI_UIIOSLIVEPHOTOBADGE USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_OVER_CONTENT USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_LIVE_OFF USE_TI_UIIOSALERTDIALOGSTYLE USE_TI_UIIOSANIMATIONSTYLE USE_TI_UIIOSLISTVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWSCROLLPOSITION USE_TI_UIIOSLISTVIEWSCROLLPOSITION USE_TI_UIIOSTABLEVIEWSTYLE USE_TI_UIIOSLISTVIEWSTYLE USE_TI_UIIOSPROGRESSBARSTYLE USE_TI_UIIOSROWANIMATIONSTYLE USE_TI_UIIOSSCROLLINDICATORSTYLE USE_TI_UIIOSSTATUSBAR USE_TI_UIIOSSYSTEMBUTTONSTYLE USE_TI_UIIOSSYSTEMBUTTON USE_TI_UIIOSSYSTEMICON USE_TI_UIIOSFEEDBACKGENERATOR USE_TI_UIIOSSTEPPER USE_TI_APPIOS USE_TI_APPIOSSEARCHABLEINDEX USE_TI_APPIOSSEARCHABLEITEM USE_TI_APPIOSSEARCHABLEITEMATTRIBUTESET USE_TI_APPIOSSEARCHQUERY USE_TI_APPIOSUSERACTIVITY USE_TI_APPIOSUSERNOTIFICATIONCENTER USE_TI_UIIOSANIMATOR USE_TI_UIIOSSNAPBEHAVIOR USE_TI_UIIOSPUSHBEHAVIOR USE_TI_UIIOSGRAVITYBEHAVIOR USE_TI_UIIOSANCHORATTACHMENTBEHAVIOR USE_TI_UIIOSVIEWATTACHMENTBEHAVIOR USE_TI_UIIOSCOLLISIONBEHAVIOR USE_TI_UIIOSDYNAMICITEMBEHAVIOR USE_TI_UIIOSTRANSITIONANIMATION USE_TI_UIREFRESHCONTROL USE_TI_UIIOSAPPLICATIONSHORTCUTS USE_TI_UISHORTCUT USE_TI_UISHORTCUTITEM USE_TI_UIIOSBLURVIEW USE_TI_NETWORKREGISTERFORPUSHNOTIFICATIONS USE_TI_SILENTPUSH USE_TI_FETCH USE_TI_MEDIASHOWCAMERA USE_TI_MEDIAHIDECAMERA USE_TI_MEDIAOPENPHOTOGALLERY USE_TI_MEDIATAKEPICTURE USE_TI_MEDIASTARTVIDEOCAPTURE USE_TI_MEDIASTOPVIDEOCAPTURE USE_TI_MEDIASWITCHCAMERA USE_TI_MEDIAREQUESTCAMERAPERMISSIONS USE_TI_MEDIAHASCAMERAPERMISSIONS USE_TI_MEDIAHASPHOTOGALLERYPERMISSIONS USE_TI_MEDIAREQUESTPHOTOGALLERYPERMISSIONS USE_TI_MEDIAOPENMUSICLIBRARY USE_TI_MEDIAHIDEMUSICLIBRARY USE_TI_MEDIAQUERYMUSICLIBRARY USE_TI_MEDIAREQUESTAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIOPERMISSIONS USE_TI_MEDIAHASMUSICLIBRARYPERMISSIONS USE_TI_MEDIAREQUESTMUSICLIBRARYPERMISSIONS USE_TI_MEDIACANRECORD USE_TI_MEDIAISCAMERASUPPORTED USE_TI_MEDIAISMEDIATYPESUPPORTED USE_TI_MEDIASAVETOPHOTOGALLERY USE_TI_MEDIASTARTVIDEOEDITING USE_TI_MEDIASTOPVIDEOEDITING USE_TI_MEDIAAUDIOPLAYER USE_TI_MEDIAAUDIORECORDER USE_TI_MEDIAMUSICPLAYER USE_TI_MEDIASYSTEMMUSICPLAYER USE_TI_MEDIASYSTEMALERT USE_TI_MEDIAGETSYSTEMMUSICPLAYER USE_TI_MEDIAAPPMUSICPLAYER USE_TI_MEDIAGETAPPMUSICPLAYER USE_TI_MEDIAVIDEOPLAYER USE_TI_MEDIASOUND USE_TI_MEDIACAMERA_AUTHORIZATION_AUTHORIZED USE_TI_MEDIACAMERA_AUTHORIZATION_DENIED USE_TI_MEDIACAMERA_AUTHORIZATION_RESTRICTED USE_TI_MEDIACAMERA_AUTHORIZATION_UNKNOWN USE_TI_MEDIACAMERA_FRONT USE_TI_MEDIACAMERA_REAR USE_TI_MEDIACAMERA_FLASH_OFF USE_TI_MEDIACAMERA_FLASH_AUTO USE_TI_MEDIACAMERA_FLASH_ON USE_TI_MEDIACAMERAFLASHMODE USE_TI_MEDIAAVAILABLECAMERAMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOGALLERYMEDIATYPES USE_TI_MEDIAAVAILABLECAMERAS USE_TI_MEDIACAMERAAUTHORIZATION USE_TI_MEDIAVOLUME USE_TI_MEDIAAUDIOPLAYING USE_TI_MEDIACURRENTROUTE USE_TI_MEDIAVIBRATE USE_TI_MEDIABEEP USE_TI_MEDIASTARTMICROPHONEMONITOR USE_TI_MEDIASTOPMICROPHONEMONITOR USE_TI_MEDIAPEAKMICROPHONEPOWER USE_TI_MEDIAGETPEAKMICROPHONEPOWER USE_TI_MEDIAAVERAGEMICROPHONEPOWER USE_TI_MEDIAGETAVERAGEMICROPHONEPOWER USE_TI_UITABLEVIEWSCROLLPOSITION USE_TI_UILISTVIEWSCROLLPOSITION +TI_SYMBOL_MACROS=USE_JSCORE_FRAMEWORK USE_TI_STREAM USE_TI_CODEC USE_TI_UTILS USE_TI_XML USE_TI_ACCELEROMETER USE_TI_API USE_TI_APP USE_TI_APPTRACKUSERINTERACTION USE_TI_CALENDAR USE_TI_CONTACTS USE_TI_DATABASE USE_TI_FILESYSTEM USE_TI_GEOLOCATION USE_TI_GESTURE USE_TI_MEDIA USE_TI_NETWORK USE_TI_NETWORKSOCKET USE_TI_PLATFORM USE_TI_PLATFORMIDENTIFIERFORADVERTISING USE_TI_PLATFORMGETIDENTIFIERFORADVERTISING USE_TI_WATCHSESSION USE_TI_UI USE_TI_UITAB USE_TI_UILABEL USE_TI_UIBUTTON USE_TI_UIPROGRESSBAR USE_TI_UISEARCHBAR USE_TI_UIACTIVITYINDICATOR USE_TI_UIOPTIONBAR USE_TI_UISLIDER USE_TI_UISWITCH USE_TI_UIPICKER USE_TI_UITEXTAREA USE_TI_UITEXTFIELD USE_TI_UIIMAGEVIEW USE_TI_UIMASKEDIMAGE USE_TI_UIWEBVIEW USE_TI_UIWINDOW USE_TI_UIVIEW USE_TI_UIOPTIONDIALOG USE_TI_UIEMAILDIALOG USE_TI_UIDASHBOARDVIEW USE_TI_UISCROLLVIEW USE_TI_UISCROLLABLEVIEW USE_TI_UITABLEVIEW USE_TI_UILISTVIEW USE_TI_UIANIMATION USE_TI_UIATTRIBUTEDSTRING USE_TI_UIACTIVITYINDICATORSTYLE USE_TI_UITOOLBAR USE_TI_UITABBEDBAR USE_TI_UIAPPLICATIONSHORTCUTS USE_TI_UINAVIGATIONWINDOW USE_TI_UICLIPBOARD USE_TI_UIIPAD USE_TI_UIIPADPOPOVER USE_TI_UIIPADSPLITWINDOW USE_TI_UIIPADSPLITWINDOWBUTTON USE_TI_UIIOS USE_TI_UIIOSADVIEW USE_TI_UIIOSCOVERFLOWVIEW USE_TI_UIIOSTOOLBAR USE_TI_UIIOSTABBEDBAR USE_TI_UIIOSDOCUMENTVIEWER USE_TI_UIIOSNAVIGATIONWINDOW USE_TI_UIIOSSPLITWINDOW USE_TI_UIIOSPREVIEWCONTEXT USE_TI_UIIOSMENUPOPUP USE_TI_UIIOSLIVEPHOTOVIEW USE_TI_UIIOSLIVEPHOTOBADGE USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_OVER_CONTENT USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_LIVE_OFF USE_TI_UIIOSALERTDIALOGSTYLE USE_TI_UIIOSANIMATIONSTYLE USE_TI_UIIOSLISTVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWSCROLLPOSITION USE_TI_UIIOSLISTVIEWSCROLLPOSITION USE_TI_UIIOSTABLEVIEWSTYLE USE_TI_UIIOSLISTVIEWSTYLE USE_TI_UIIOSPROGRESSBARSTYLE USE_TI_UIIOSROWANIMATIONSTYLE USE_TI_UIIOSSCROLLINDICATORSTYLE USE_TI_UIIOSSTATUSBAR USE_TI_UIIOSSYSTEMBUTTONSTYLE USE_TI_UIIOSSYSTEMBUTTON USE_TI_UIIOSSYSTEMICON USE_TI_UIIOSFEEDBACKGENERATOR USE_TI_UIIOSSTEPPER USE_TI_APPIOS USE_TI_APPIOSSEARCHABLEINDEX USE_TI_APPIOSSEARCHABLEITEM USE_TI_APPIOSSEARCHABLEITEMATTRIBUTESET USE_TI_APPIOSSEARCHQUERY USE_TI_APPIOSUSERACTIVITY USE_TI_APPIOSUSERNOTIFICATIONCENTER USE_TI_UIIOSANIMATOR USE_TI_UIIOSSNAPBEHAVIOR USE_TI_UIIOSPUSHBEHAVIOR USE_TI_UIIOSGRAVITYBEHAVIOR USE_TI_UIIOSANCHORATTACHMENTBEHAVIOR USE_TI_UIIOSVIEWATTACHMENTBEHAVIOR USE_TI_UIIOSCOLLISIONBEHAVIOR USE_TI_UIIOSDYNAMICITEMBEHAVIOR USE_TI_UIIOSTRANSITIONANIMATION USE_TI_UIREFRESHCONTROL USE_TI_UIIOSAPPLICATIONSHORTCUTS USE_TI_UISHORTCUT USE_TI_UISHORTCUTITEM USE_TI_UIIOSBLURVIEW USE_TI_NETWORKREGISTERFORPUSHNOTIFICATIONS USE_TI_SILENTPUSH USE_TI_FETCH USE_TI_MEDIASHOWCAMERA USE_TI_MEDIAHIDECAMERA USE_TI_MEDIAOPENPHOTOGALLERY USE_TI_MEDIATAKEPICTURE USE_TI_MEDIASTARTVIDEOCAPTURE USE_TI_MEDIASTOPVIDEOCAPTURE USE_TI_MEDIASWITCHCAMERA USE_TI_MEDIAREQUESTCAMERAPERMISSIONS USE_TI_MEDIAHASCAMERAPERMISSIONS USE_TI_MEDIAHASPHOTOGALLERYPERMISSIONS USE_TI_MEDIAREQUESTPHOTOGALLERYPERMISSIONS USE_TI_MEDIAOPENMUSICLIBRARY USE_TI_MEDIAHIDEMUSICLIBRARY USE_TI_MEDIAQUERYMUSICLIBRARY USE_TI_MEDIAREQUESTAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIOPERMISSIONS USE_TI_MEDIAHASMUSICLIBRARYPERMISSIONS USE_TI_MEDIAREQUESTMUSICLIBRARYPERMISSIONS USE_TI_MEDIACANRECORD USE_TI_MEDIAISCAMERASUPPORTED USE_TI_MEDIAISMEDIATYPESUPPORTED USE_TI_MEDIASAVETOPHOTOGALLERY USE_TI_MEDIASTARTVIDEOEDITING USE_TI_MEDIASTOPVIDEOEDITING USE_TI_MEDIAAUDIOPLAYER USE_TI_MEDIAAUDIORECORDER USE_TI_MEDIAMUSICPLAYER USE_TI_MEDIASYSTEMMUSICPLAYER USE_TI_MEDIASYSTEMALERT USE_TI_MEDIAGETSYSTEMMUSICPLAYER USE_TI_MEDIAAPPMUSICPLAYER USE_TI_MEDIAGETAPPMUSICPLAYER USE_TI_MEDIAVIDEOPLAYER USE_TI_MEDIASOUND USE_TI_MEDIACAMERA_AUTHORIZATION_AUTHORIZED USE_TI_MEDIACAMERA_AUTHORIZATION_DENIED USE_TI_MEDIACAMERA_AUTHORIZATION_RESTRICTED USE_TI_MEDIACAMERA_AUTHORIZATION_UNKNOWN USE_TI_MEDIACAMERA_FRONT USE_TI_MEDIACAMERA_REAR USE_TI_MEDIACAMERA_FLASH_OFF USE_TI_MEDIACAMERA_FLASH_AUTO USE_TI_MEDIACAMERA_FLASH_ON USE_TI_MEDIACAMERAFLASHMODE USE_TI_MEDIAAVAILABLECAMERAMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOGALLERYMEDIATYPES USE_TI_MEDIAAVAILABLECAMERAS USE_TI_MEDIACAMERAAUTHORIZATION USE_TI_MEDIAVOLUME USE_TI_MEDIAAUDIOPLAYING USE_TI_MEDIACURRENTROUTE USE_TI_MEDIAVIBRATE USE_TI_MEDIABEEP USE_TI_MEDIASTARTMICROPHONEMONITOR USE_TI_MEDIASTOPMICROPHONEMONITOR USE_TI_MEDIAPEAKMICROPHONEPOWER USE_TI_MEDIAGETPEAKMICROPHONEPOWER USE_TI_MEDIAAVERAGEMICROPHONEPOWER USE_TI_MEDIAGETAVERAGEMICROPHONEPOWER USE_TI_UITABLEVIEWSCROLLPOSITION USE_TI_UILISTVIEWSCROLLPOSITION USE_TI_FILESYSTEMSPACEAVAILABLE USE_TI_FILESYSTEMCREATEDAT USE_TI_FILESYSTEMMODIFIEDAT USE_TI_PLATFORMUPTIME From 115bbb24214374228d06a299ce720e72661785cb Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 16 Apr 2024 18:26:27 +0200 Subject: [PATCH 034/145] chore(android): try/catch around unlink snapshots (#14000) * chore(android): try/catch around unlink snapshots * use remove --------- Co-authored-by: Chris Barber --- android/titanium/libv8-services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/titanium/libv8-services.js b/android/titanium/libv8-services.js index b30a6d7c6ca..d3e8100e0fe 100644 --- a/android/titanium/libv8-services.js +++ b/android/titanium/libv8-services.js @@ -125,7 +125,7 @@ async function generateSnapshot(v8SnapshotHeaderFilePath, rollupFileContent) { } // Delete snapshot blob. - await fs.unlink(blobPath); + await fs.remove(blobPath); } // Generate 'V8Snapshots.h' from template From eb5bf9af67646577ed1a95fdf0bb4a73d958bd10 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 29 Apr 2024 21:58:49 +0200 Subject: [PATCH 035/145] chore: node-titanium-sdk update (#14026) --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb0e9c320a1..b47ee97599b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "markdown": "0.5.0", "moment": "2.29.4", "node-appc": "1.1.6", - "node-titanium-sdk": "5.1.9", + "node-titanium-sdk": "6.0.0", "node-uuid": "1.4.8", "nodeify": "1.0.1", "p-limit": "3.1.0", @@ -11923,9 +11923,9 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" }, "node_modules/node-titanium-sdk": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/node-titanium-sdk/-/node-titanium-sdk-5.1.9.tgz", - "integrity": "sha512-pIX1zji5Enwx7V3JW+mr/BZnBBbaa9UcrVmEj0L+Rp/w3v8YhsAnZrDlAj0/mQ6XkIl8pbjZsL4CQQ1XurlsWg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-titanium-sdk/-/node-titanium-sdk-6.0.0.tgz", + "integrity": "sha512-CQwGAD2ZRz7UgaISySLgr66miRgfZnXBsH7wQTj1Awf4fBZxUuTXImksWdBYxAeX89kZO7SbSn6Xv9wIQE5f4w==", "dependencies": { "@babel/core": "7.11.6", "@babel/parser": "7.11.5", @@ -11943,7 +11943,7 @@ "xmldom": "0.6.0" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/node-titanium-sdk/node_modules/@babel/parser": { @@ -25815,9 +25815,9 @@ "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" }, "node-titanium-sdk": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/node-titanium-sdk/-/node-titanium-sdk-5.1.9.tgz", - "integrity": "sha512-pIX1zji5Enwx7V3JW+mr/BZnBBbaa9UcrVmEj0L+Rp/w3v8YhsAnZrDlAj0/mQ6XkIl8pbjZsL4CQQ1XurlsWg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-titanium-sdk/-/node-titanium-sdk-6.0.0.tgz", + "integrity": "sha512-CQwGAD2ZRz7UgaISySLgr66miRgfZnXBsH7wQTj1Awf4fBZxUuTXImksWdBYxAeX89kZO7SbSn6Xv9wIQE5f4w==", "requires": { "@babel/core": "7.11.6", "@babel/parser": "7.11.5", diff --git a/package.json b/package.json index 01e4d231884..31704bc65cd 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "markdown": "0.5.0", "moment": "2.29.4", "node-appc": "1.1.6", - "node-titanium-sdk": "5.1.9", + "node-titanium-sdk": "6.0.0", "node-uuid": "1.4.8", "nodeify": "1.0.1", "p-limit": "3.1.0", From 760ca45c9b63c0aa06940a36010d051b7bb2cbed Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 30 Apr 2024 17:20:07 +0200 Subject: [PATCH 036/145] chore: pass platform to tiappxml (#14017) Co-authored-by: Chris Barber --- cli/commands/build.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/commands/build.js b/cli/commands/build.js index 1458177278d..40c3c6e91cb 100644 --- a/cli/commands/build.js +++ b/cli/commands/build.js @@ -121,7 +121,7 @@ exports.config = function config(logger, config, cli) { if (fs.existsSync(path.join(projectDir, 'tiapp.xml'))) { let tiapp; try { - tiapp = cli.tiapp = new tiappxml(path.join(projectDir, 'tiapp.xml')); + tiapp = cli.tiapp = new tiappxml(path.join(projectDir, 'tiapp.xml'), cli.argv.platform); } catch (ex) { logger.error(ex); logger.log(); From 07e9a6ac58a72178c35bda6fdf298860d7786885 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 30 Apr 2024 21:39:51 +0200 Subject: [PATCH 037/145] feat(android): defaultLang option in tiapp.xml (#14027) * feat(android): defaultLang option in tiapp.xml * Update android/cli/commands/_build.js Co-authored-by: Chris Barber --------- Co-authored-by: Chris Barber --- android/cli/commands/_build.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android/cli/commands/_build.js b/android/cli/commands/_build.js index b230e62b55b..052395b4446 100644 --- a/android/cli/commands/_build.js +++ b/android/cli/commands/_build.js @@ -3206,7 +3206,8 @@ AndroidBuilder.prototype.generateI18N = async function generateI18N() { root.appendChild(dom.createTextNode('\n')); // Create the XML file under the Android "res/values-" folder. - const localeSuffixName = (locale === 'en' ? '' : '-' + resolveRegionName(locale)); + const defaultLang = this.tiapp.defaultLang || 'en'; + const localeSuffixName = (locale === defaultLang ? '' : '-' + resolveRegionName(locale)); const dirPath = path.join(this.buildAppMainResDir, `values${localeSuffixName}`); const filePath = path.join(dirPath, 'ti_i18n_strings.xml'); this.logger.debug(__('Writing %s strings => %s', locale.cyan, filePath.cyan)); From 9038a653d741f96763a6cca59fc4846192a20e07 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Fri, 3 May 2024 00:05:44 +0000 Subject: [PATCH 038/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4bfe6081f7c..1e9c697bb97 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited ## Features From a0a3aeaf666b864fbcb75e57f011a142dbae715c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Fri, 3 May 2024 22:02:30 +0200 Subject: [PATCH 039/145] fix(ios): fix some open issues related to scenes (#14020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(ios): fix “handleurl” event when using scenes * fix(ios): fix log server from not being started on physical device --- .../TitaniumKit/Sources/API/TiApp.m | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index bf4558f7789..e1f0efd6090 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -324,7 +324,20 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( return YES; } -// Handle URL-schemes / iOS >= 9 +- (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts +{ + UIOpenURLContext *primaryContext = URLContexts.allObjects.firstObject; + + NSDictionary *options = @{ + UIApplicationOpenURLOptionsSourceApplicationKey : NULL_IF_NIL(primaryContext.options.sourceApplication) + }; + + [self application:[UIApplication sharedApplication] openURL:primaryContext.URL options:options]; +} + +// Handle URL-schemes. Note that this selector is not called automatically anymore in iOS 13+ +// because of the scene management. Instead, the above "scene:openURLContexts:" selector is called +// that forwards the call for maximum backwards compatibility - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { [self tryToInvokeSelector:@selector(application:openURL:options:) @@ -1185,12 +1198,20 @@ - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session op [self tryToInvokeSelector:@selector(scene:willConnectToSession:options:) withArguments:[NSOrderedSet orderedSetWithObjects:scene, connectionOptions, nil]]; - // If a "application-launch-url" is set, launch it directly - [self launchToUrl]; + // Catch exceptions + [TiExceptionHandler defaultExceptionHandler]; + + // Enable device logs (e.g. for physical devices) + if ([[TiSharedConfig defaultConfig] logServerEnabled]) { + [[TiLogServer defaultLogServer] start]; + } // Initialize the root-controller [self initController]; + // If a "application-launch-url" is set, launch it directly + [self launchToUrl]; + // Boot our kroll-core [self boot]; From 4f78a79cc51b9a90fa7eb2226e98fad471a6db8d Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 4 May 2024 22:00:25 +0200 Subject: [PATCH 040/145] feat(ios): backgroundColor for RefreshControl (#14016) * feat(ios): backgroundColor for RefreshControl * fix version number --- apidoc/Titanium/UI/RefreshControl.yml | 8 ++++++++ iphone/Classes/TiUIRefreshControlProxy.m | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/apidoc/Titanium/UI/RefreshControl.yml b/apidoc/Titanium/UI/RefreshControl.yml index 4300aad4161..1abd9a4c6c8 100644 --- a/apidoc/Titanium/UI/RefreshControl.yml +++ b/apidoc/Titanium/UI/RefreshControl.yml @@ -55,6 +55,14 @@ properties: platforms: [android, iphone, ipad, macos] since: { android: "6.2.0", iphone: "3.2.0", ipad: "3.2.0" } + - name: backgroundColor + summary: The background color for the refresh control, as a color name or hex triplet. + description: | + For information about color values, see the "Colors" section of . + type: [String, Titanium.UI.Color] + platforms: [iphone, ipad, macos] + since: { iphone: "12.4.0", ipad: "12.4.0", macos: "12.4.0" } + events: - name: refreshstart summary: | diff --git a/iphone/Classes/TiUIRefreshControlProxy.m b/iphone/Classes/TiUIRefreshControlProxy.m index 5e59edac3f0..67854608e52 100644 --- a/iphone/Classes/TiUIRefreshControlProxy.m +++ b/iphone/Classes/TiUIRefreshControlProxy.m @@ -78,6 +78,17 @@ - (void)setTintColor:(id)value NO); } +- (void)setBackgroundColor:(id)value +{ + [self replaceValue:value forKey:@"backgroundColor" notification:NO]; + + TiThreadPerformOnMainThread( + ^{ + [[self control] setBackgroundColor:[[TiUtils colorValue:value] color]]; + }, + NO); +} + - (void)beginRefreshing:(id)unused { TiThreadPerformOnMainThread( From 90c4d1fa7bf4cfb8b9e20698fc4e247ceb59aa71 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 13 May 2024 06:03:16 +0200 Subject: [PATCH 041/145] fix(android): Ti.UI.Tab selected event returns no data (#14004) --- .../ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java index a884904d3a2..c1849cdc9de 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java @@ -569,7 +569,7 @@ public void onTabSelected(TabProxy tabProxy) tabProxy.onSelectionChanged(true); tabProxy.onFocusChanged(true, focusEventData); - tabProxy.fireEvent(TiC.EVENT_SELECTED, null, false); + tabProxy.fireEvent(TiC.EVENT_SELECTED, focusEventData, false); } @Override From 20735d4edbf51c1e0e10c46f8290c93bb3ffa699 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 13 May 2024 06:46:45 +0200 Subject: [PATCH 042/145] fix(android): touchFeedbackColor not working for a bottomNavigation tab (#14003) Co-authored-by: Chris Barber --- .../widget/tabgroup/TiUIBottomNavigationTabGroup.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java index d3173de3d9f..517d1191022 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java @@ -344,11 +344,17 @@ public void updateTabBackgroundDrawable(int index) try { // BottomNavigationMenuView rebuilds itself after adding a new item, so we need to reset the colors each time. TiViewProxy tabProxy = tabs.get(index).getProxy(); - if (hasCustomBackground(tabProxy) || hasCustomIconTint(tabProxy)) { + boolean hasTouchFeedbackColor = tabProxy.hasPropertyAndNotNull(TiC.PROPERTY_TOUCH_FEEDBACK_COLOR); + if (hasCustomBackground(tabProxy) || hasCustomIconTint(tabProxy) || hasTouchFeedbackColor) { BottomNavigationMenuView bottomMenuView = ((BottomNavigationMenuView) this.mBottomNavigationView.getChildAt(0)); Drawable drawable = createBackgroundDrawableForState(tabProxy, android.R.attr.state_checked); - drawable = new RippleDrawable(createRippleColorStateListFrom(getActiveColor(tabProxy)), drawable, null); + int color = getActiveColor(tabProxy); + if (hasTouchFeedbackColor) { + color = TiConvert.toColor(tabProxy.getProperty(TiC.PROPERTY_TOUCH_FEEDBACK_COLOR), + tabProxy.getActivity()); + } + drawable = new RippleDrawable(createRippleColorStateListFrom(color), drawable, null); bottomMenuView.getChildAt(index).setBackground(drawable); } } catch (Exception e) { From a7b145d5668b661f903fdfe53b380bd35a82265a Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 13 May 2024 07:02:13 +0200 Subject: [PATCH 043/145] feat(android): indent log correctly (#14030) Co-authored-by: Chris Barber --- android/cli/hooks/run.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/cli/hooks/run.js b/android/cli/hooks/run.js index 42bc7fa36fa..af2a72d81ec 100644 --- a/android/cli/hooks/run.js +++ b/android/cli/hooks/run.js @@ -254,10 +254,10 @@ exports.init = function (logger, config, cli) { // start of a new log message if (device.appPidRegExp.test(line)) { - line = line.trim().replace(device.appPidRegExp, ':'); + line = line.replace(/^ {1,2}/, '').replace(device.appPidRegExp, ':'); logLevel = line.charAt(0).toLowerCase(); if (tiapiRegExp.test(line)) { - line = line.replace(tiapiRegExp, '').trim(); + line = line.replace(tiapiRegExp, '').replace(/^ {1,2}/, ''); } else { line = line.replace(/^\w\/(\w+)\s*:/g, '$1:').grey; } From 6642ed16ec984331cafa62658a887b33c6a9cd2f Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 13 May 2024 14:31:54 +0200 Subject: [PATCH 044/145] feat(android): hide scrollbars in WebView (#14031) * feat(android): hide scrollbars in WebView * docs --------- Co-authored-by: Chris Barber --- .../ti/modules/titanium/ui/WebViewProxy.java | 3 +- .../titanium/ui/android/AndroidModule.java | 9 ++++++ .../ui/widget/webview/TiUIWebView.java | 14 ++++++++++ .../java/org/appcelerator/titanium/TiC.java | 1 + apidoc/Titanium/UI/Android/Android.yml | 28 +++++++++++++++++++ apidoc/Titanium/UI/WebView.yml | 8 ++++++ 6 files changed, 62 insertions(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java index c1f9e1a34d6..8be6063b52b 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java @@ -54,7 +54,8 @@ TiC.PROPERTY_OVER_SCROLL_MODE, TiC.PROPERTY_CACHE_MODE, TiC.PROPERTY_LIGHT_TOUCH_ENABLED, - TiC.PROPERTY_ON_LINK + TiC.PROPERTY_ON_LINK, + TiC.PROPERTY_SCROLLBARS }) public class WebViewProxy extends ViewProxy implements Handler.Callback, OnLifecycleEvent, interceptOnBackPressedEvent { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java b/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java index bc9e666347c..e5905f249d4 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java @@ -253,6 +253,15 @@ public class AndroidModule extends KrollModule @Kroll.constant public static final int SCROLL_FLAG_SNAP_MARGINS = 32; + @Kroll.constant + public static final int WEBVIEW_SCROLLBARS_DEFAULT = 0; + @Kroll.constant + public static final int WEBVIEW_SCROLLBARS_HIDE_VERTICAL = 1; + @Kroll.constant + public static final int WEBVIEW_SCROLLBARS_HIDE_HORIZONTAL = 2; + @Kroll.constant + public static final int WEBVIEW_SCROLLBARS_HIDE_ALL = 3; + public AndroidModule() { super(); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java index be414648747..e7099c1dee4 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiUIWebView.java @@ -456,6 +456,14 @@ public void processProperties(KrollDict d) if (d.containsKey(TiC.PROPERTY_ZOOM_LEVEL)) { zoomBy(getWebView(), TiConvert.toFloat(d, TiC.PROPERTY_ZOOM_LEVEL)); } + + if (d.containsKey(TiC.PROPERTY_SCROLLBARS)) { + int scrollbarValue = TiConvert.toInt(d, TiC.PROPERTY_SCROLLBARS); + webView.setVerticalScrollBarEnabled(scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_DEFAULT + || scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_HIDE_HORIZONTAL); + webView.setHorizontalScrollBarEnabled(scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_DEFAULT + || scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_HIDE_VERTICAL); + } } @Override @@ -496,6 +504,12 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP zoomBy(webView, TiConvert.toFloat(newValue, 1.0f)); } else if (TiC.PROPERTY_USER_AGENT.equals(key)) { ((WebViewProxy) getProxy()).setUserAgent(TiConvert.toString(newValue)); + } else if (TiC.PROPERTY_SCROLLBARS.equals(key)) { + int scrollbarValue = TiConvert.toInt(newValue); + webView.setVerticalScrollBarEnabled(scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_DEFAULT + || scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_HIDE_HORIZONTAL); + webView.setHorizontalScrollBarEnabled(scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_DEFAULT + || scrollbarValue == AndroidModule.WEBVIEW_SCROLLBARS_HIDE_VERTICAL); } else { super.propertyChanged(key, oldValue, newValue, proxy); } diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index 704af44e031..a09ba8969b5 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -689,6 +689,7 @@ public class TiC public static final String PROPERTY_SCROLL_ENABLED = "scrollEnabled"; public static final String PROPERTY_SCROLL_TYPE = "scrollType"; public static final String PROPERTY_SCROLLABLE = "scrollable"; + public static final String PROPERTY_SCROLLBARS = "scrollbars"; public static final String PROPERTY_SEARCH = "search"; public static final String PROPERTY_SEARCH_AS_CHILD = "searchAsChild"; public static final String PROPERTY_SEARCH_TEXT = "searchText"; diff --git a/apidoc/Titanium/UI/Android/Android.yml b/apidoc/Titanium/UI/Android/Android.yml index cb0788372eb..da74d51c6f0 100644 --- a/apidoc/Titanium/UI/Android/Android.yml +++ b/apidoc/Titanium/UI/Android/Android.yml @@ -957,6 +957,34 @@ properties: platforms: [android] since: "12.1.0" + - name: WEBVIEW_SCROLLBARS_DEFAULT + summary: Show horizontal and vertical scrollbar in a Ti.UI.WebView. + type: Number + permission: read-only + platforms: [android] + since: "12.3.0" + + - name: WEBVIEW_SCROLLBARS_HIDE_VERTICAL + summary: Hide vertical scrollbar in a Ti.UI.WebView. + type: Number + permission: read-only + platforms: [android] + since: "12.3.0" + + - name: WEBVIEW_SCROLLBARS_HIDE_HORIZONTAL + summary: Hide horizontal scrollbar in a Ti.UI.WebView. + type: Number + permission: read-only + platforms: [android] + since: "12.3.0" + + - name: WEBVIEW_SCROLLBARS_HIDE_ALL + summary: Hide all scrollbars in a Ti.UI.WebView. + type: Number + permission: read-only + platforms: [android] + since: "12.3.0" + examples: - title: Android Preferences Example example: | diff --git a/apidoc/Titanium/UI/WebView.yml b/apidoc/Titanium/UI/WebView.yml index 0c715e3f03e..3b447f95fb3 100644 --- a/apidoc/Titanium/UI/WebView.yml +++ b/apidoc/Titanium/UI/WebView.yml @@ -1130,6 +1130,14 @@ properties: platforms: [android, iphone, ipad, macos] since: {android: "7.3.0", iphone: "7.3.0", ipad: "7.3.0", macos: "9.2.0"} + - name: scrollbars + summary: Enable or disable horizontal/vertical scrollbars in a WebView. + type: Number + constants: Titanium.UI.Android.WEBVIEW_SCROLLBARS_* + platforms: [android] + since: "12.3.0" + default: + - name: allowsBackForwardNavigationGestures summary: | A Boolean value indicating whether horizontal swipe gestures will trigger back-forward list navigations. From 48afddf5652602ae2f8cc376d9a37156c828d9c1 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 14 May 2024 06:19:00 +0200 Subject: [PATCH 045/145] chore: npm packages (#13886) * chore: npm packages * downgrade clang-format * format objc files * update * update files * update * eslint fixes * ios lint * ios linting * lint file * Update iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.h Co-authored-by: Chris Barber * Update iphone/Classes/TiUINavBarButton.m Co-authored-by: Chris Barber * Update iphone/Classes/TiUIScrollableView.m Co-authored-by: Chris Barber * Update iphone/Classes/TiUITableViewProxy.m Co-authored-by: Chris Barber * Update iphone/Classes/TiUIiOSProxy.h Co-authored-by: Chris Barber * Update iphone/Classes/TiUIiOSStepper.m Co-authored-by: Chris Barber * Update iphone/Classes/TiUITableView.m Co-authored-by: Chris Barber * Update iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m Co-authored-by: Chris Barber * Update iphone/TitaniumKit/TitaniumKit/Sources/API/TiStylesheet.m Co-authored-by: Chris Barber * Update iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m Co-authored-by: Chris Barber * Update iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m Co-authored-by: Chris Barber * Update iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m Co-authored-by: Chris Barber * fix(ios): fix indentation --------- Co-authored-by: Chris Barber --- .eslintrc | 8 +- android/cli/lib/gradle-wrapper.js | 1 - iphone/Classes/AppModule.m | 20 +- iphone/Classes/ApplicationDefaults.h | 2 +- iphone/Classes/AsyncSocket.h | 202 +- iphone/Classes/AsyncSocket.m | 122 +- iphone/Classes/AsyncUdpSocket.h | 116 +- iphone/Classes/AsyncUdpSocket.m | 56 +- iphone/Classes/CalendarModule.m | 4 +- iphone/Classes/ContactsModule.m | 18 +- iphone/Classes/FilesystemModule.m | 12 +- iphone/Classes/GDataXMLNode.h | 6 +- iphone/Classes/GeolocationModule.h | 2 +- iphone/Classes/GeolocationModule.m | 8 +- iphone/Classes/GestureModule.m | 6 +- iphone/Classes/LauncherButton.m | 2 +- iphone/Classes/Layout/TiLayoutDimension.h | 8 +- iphone/Classes/MediaModule.m | 46 +- iphone/Classes/NetworkModule.m | 8 +- iphone/Classes/Reachability.h | 2 +- iphone/Classes/Reachability.m | 2 +- iphone/Classes/TIDOMDOMImplementationProxy.m | 8 +- iphone/Classes/TIDOMDocumentTypeProxy.m | 4 +- iphone/Classes/TiAnchorAttachBehavior.m | 2 +- iphone/Classes/TiAnimatorProxy.m | 8 +- iphone/Classes/TiApp+Addons.m | 4 +- iphone/Classes/TiAppPropertiesProxy.m | 16 +- iphone/Classes/TiAppiOSProxy.m | 2 +- iphone/Classes/TiAppiOSSearchableIndexProxy.m | 2 +- .../TiAppiOSSearchableItemAttributeSetProxy.m | 270 +- iphone/Classes/TiAppiOSUserDefaultsProxy.m | 16 +- iphone/Classes/TiCalendarCalendar.h | 2 +- iphone/Classes/TiContactsGroup.m | 2 +- iphone/Classes/TiContactsPerson.m | 2 +- iphone/Classes/TiController.h | 2 +- iphone/Classes/TiDOMAttrProxy.m | 2 +- iphone/Classes/TiDOMDocumentProxy.m | 16 +- iphone/Classes/TiDOMElementProxy.m | 46 +- iphone/Classes/TiDOMEntityProxy.m | 6 +- iphone/Classes/TiDOMNamedNodeMapProxy.h | 2 +- iphone/Classes/TiDOMNamedNodeMapProxy.m | 12 +- iphone/Classes/TiDOMNodeProxy.m | 14 +- iphone/Classes/TiDOMNotationProxy.m | 4 +- iphone/Classes/TiDOMTextNodeProxy.m | 14 +- iphone/Classes/TiDOMValidator.m | 2 +- iphone/Classes/TiDatabaseProxy.m | 12 +- iphone/Classes/TiDatabaseResultSetProxy.m | 4 +- iphone/Classes/TiFilesystemBlobProxy.m | 2 +- iphone/Classes/TiGravityBehavior.m | 2 +- iphone/Classes/TiMediaAudioPlayerProxy.m | 2 +- iphone/Classes/TiMediaMusicPlayer.m | 12 +- iphone/Classes/TiMediaSoundProxy.m | 2 +- iphone/Classes/TiMediaSystemAlertProxy.m | 2 +- iphone/Classes/TiMediaVideoPlayerProxy.m | 4 +- iphone/Classes/TiNetworkHTTPClientProxy.m | 48 +- iphone/Classes/TiPushBehavior.m | 2 +- iphone/Classes/TiSnapBehavior.m | 2 +- iphone/Classes/TiUIActivityIndicator.m | 8 +- iphone/Classes/TiUIAlertDialogProxy.m | 2 +- iphone/Classes/TiUIButton.h | 4 +- iphone/Classes/TiUIButton.m | 4 +- iphone/Classes/TiUIButtonBar.m | 2 +- iphone/Classes/TiUIButtonProxy.m | 18 +- iphone/Classes/TiUICanvasView.m | 20 +- iphone/Classes/TiUIDashboardView.m | 8 +- iphone/Classes/TiUIDashboardViewProxy.m | 4 +- iphone/Classes/TiUIImageView.m | 18 +- iphone/Classes/TiUIImageViewProxy.m | 12 +- iphone/Classes/TiUILabel.m | 22 +- iphone/Classes/TiUIListItem.m | 12 +- iphone/Classes/TiUIListItemProxy.m | 14 +- iphone/Classes/TiUIListView.m | 108 +- iphone/Classes/TiUIListViewProxy.m | 8 +- iphone/Classes/TiUIMaskedImage.m | 2 +- iphone/Classes/TiUINavBarButton.m | 8 +- iphone/Classes/TiUINavigationWindowProxy.m | 12 +- iphone/Classes/TiUIOptionDialogProxy.m | 6 +- iphone/Classes/TiUIPicker.m | 16 +- iphone/Classes/TiUIPickerProxy.m | 6 +- iphone/Classes/TiUIPickerRowProxy.m | 12 +- iphone/Classes/TiUIRefreshControlProxy.m | 2 +- iphone/Classes/TiUIScrollView.m | 22 +- iphone/Classes/TiUIScrollViewProxy.m | 30 +- iphone/Classes/TiUIScrollableView.m | 40 +- iphone/Classes/TiUIScrollableViewProxy.m | 10 +- iphone/Classes/TiUISearchBar.m | 8 +- iphone/Classes/TiUISearchBarProxy.m | 4 +- iphone/Classes/TiUIShortcutItemProxy.h | 10 +- iphone/Classes/TiUIShortcutItemProxy.m | 10 +- iphone/Classes/TiUIShortcutProxy.h | 10 +- iphone/Classes/TiUIShortcutProxy.m | 10 +- iphone/Classes/TiUISlider.h | 2 +- iphone/Classes/TiUISlider.m | 2 +- iphone/Classes/TiUISwitch.m | 2 +- iphone/Classes/TiUITabGroup.h | 2 +- iphone/Classes/TiUITabGroup.m | 18 +- iphone/Classes/TiUITabGroupProxy.m | 6 +- iphone/Classes/TiUITabProxy.h | 2 +- iphone/Classes/TiUITabProxy.m | 30 +- iphone/Classes/TiUITableView.m | 134 +- iphone/Classes/TiUITableViewProxy.h | 4 +- iphone/Classes/TiUITableViewProxy.m | 52 +- iphone/Classes/TiUITableViewRowProxy.h | 4 +- iphone/Classes/TiUITableViewRowProxy.m | 12 +- iphone/Classes/TiUITableViewSectionProxy.m | 4 +- iphone/Classes/TiUITextArea.m | 30 +- iphone/Classes/TiUITextField.m | 20 +- iphone/Classes/TiUITextWidget.m | 2 +- iphone/Classes/TiUITextWidgetProxy.h | 10 +- iphone/Classes/TiUITextWidgetProxy.m | 12 +- iphone/Classes/TiUIToolbar.m | 4 +- iphone/Classes/TiUIToolbarProxy.m | 8 +- iphone/Classes/TiUIWebView.m | 18 +- iphone/Classes/TiUIiOSBlurView.m | 2 +- iphone/Classes/TiUIiOSDocumentViewerProxy.m | 8 +- iphone/Classes/TiUIiOSLivePhotoView.m | 2 +- iphone/Classes/TiUIiOSProxy.h | 6 +- iphone/Classes/TiUIiOSProxy.m | 6 +- iphone/Classes/TiUIiOSSplitWindow.m | 16 +- iphone/Classes/TiUIiOSStepper.m | 2 +- iphone/Classes/TiUIiPadPopoverProxy.h | 8 +- iphone/Classes/TiUIiPadPopoverProxy.m | 6 +- iphone/Classes/TiViewAttachBehavior.m | 2 +- iphone/Classes/UIModule.h | 2 +- iphone/Classes/UIModule.m | 20 +- iphone/Classes/WatchSessionModule.m | 14 +- iphone/Classes/XMLModule.m | 18 +- .../TitaniumKit/Sources/API/ImageLoader.h | 2 +- .../TitaniumKit/Sources/API/ImageLoader.m | 18 +- .../TitaniumKit/Sources/API/JSValue+Addons.h | 8 +- .../TitaniumKit/Sources/API/JSValue+Addons.m | 8 +- .../TitaniumKit/Sources/API/KrollBridge.h | 4 +- .../TitaniumKit/Sources/API/KrollBridge.m | 28 +- .../Sources/API/LayoutConstraint.m | 48 +- .../TitaniumKit/Sources/API/Mimetypes.h | 4 +- .../TitaniumKit/Sources/API/Mimetypes.m | 20 +- .../Sources/API/NSData+Additions.m | 16 +- .../TitaniumKit/Sources/API/ObjcProxy.m | 2 +- .../TitaniumKit/Sources/API/OperationQueue.h | 2 +- .../TitaniumKit/Sources/API/OperationQueue.m | 2 +- .../TitaniumKit/Sources/API/SBJSON.h | 2 +- .../TitaniumKit/Sources/API/SBJSON.m | 30 +- .../TitaniumKit/Sources/API/TiAnimation.h | 4 +- .../TitaniumKit/Sources/API/TiAnimation.m | 18 +- .../TitaniumKit/Sources/API/TiApp.h | 34 +- .../TitaniumKit/Sources/API/TiApp.m | 22 +- .../TitaniumKit/Sources/API/TiBase.h | 12 +- .../TitaniumKit/Sources/API/TiBindingEvent.m | 92 +- .../Sources/API/TiBindingTiValue.m | 2 +- .../TitaniumKit/Sources/API/TiBlob.h | 4 +- .../TitaniumKit/Sources/API/TiBlob.m | 2 +- .../TitaniumKit/Sources/API/TiBuffer.h | 6 +- .../TitaniumKit/Sources/API/TiBuffer.m | 4 +- .../TitaniumKit/Sources/API/TiColor.m | 4 +- .../Sources/API/TiControllerProtocols.h | 8 +- .../TitaniumKit/Sources/API/TiDimension.h | 8 +- .../Sources/API/TiErrorController.m | 2 +- .../TitaniumKit/Sources/API/TiEvaluator.h | 8 +- .../Sources/API/TiExceptionHandler.h | 2 +- .../TitaniumKit/Sources/API/TiFile.m | 4 +- .../TitaniumKit/Sources/API/TiGradient.h | 2 +- .../TitaniumKit/Sources/API/TiGradient.m | 4 +- .../TitaniumKit/Sources/API/TiHost.m | 4 +- .../TitaniumKit/Sources/API/TiLayoutQueue.m | 10 +- .../TitaniumKit/Sources/API/TiLocale.h | 2 +- .../TitaniumKit/Sources/API/TiModule.m | 6 +- .../TitaniumKit/Sources/API/TiProxy.h | 28 +- .../TitaniumKit/Sources/API/TiProxy.m | 94 +- .../TitaniumKit/Sources/API/TiPublicAPI.h | 6 +- .../Sources/API/TiRootViewController.h | 24 +- .../Sources/API/TiRootViewController.m | 98 +- .../TitaniumKit/Sources/API/TiStylesheet.m | 10 +- .../TitaniumKit/Sources/API/TiThreading.h | 12 +- .../TitaniumKit/Sources/API/TiUIView.h | 10 +- .../TitaniumKit/Sources/API/TiUIView.m | 62 +- .../TitaniumKit/Sources/API/TiUtils.m | 36 +- .../Sources/API/TiViewController.m | 14 +- .../TitaniumKit/Sources/API/TiViewProxy.h | 60 +- .../TitaniumKit/Sources/API/TiViewProxy.m | 196 +- .../TitaniumKit/Sources/API/TiWindowProxy.m | 26 +- .../TitaniumKit/Sources/API/WebFont.m | 8 +- .../TitaniumKit/Sources/API/Webcolor.h | 2 +- .../TitaniumKit/Sources/API/Webcolor.m | 8 +- .../TitaniumKit/Sources/Kroll/KrollCallback.m | 2 +- .../TitaniumKit/Sources/Kroll/KrollContext.h | 4 +- .../TitaniumKit/Sources/Kroll/KrollContext.m | 4 +- .../TitaniumKit/Sources/Kroll/KrollMethod.m | 6 +- .../TitaniumKit/Sources/Kroll/KrollObject.h | 12 +- .../TitaniumKit/Sources/Kroll/KrollObject.m | 20 +- .../TitaniumKit/Sources/Kroll/KrollPromise.h | 2 +- .../Sources/Modules/TiFilesystemFileProxy.m | 12 +- .../Modules/TiFilesystemFileStreamProxy.m | 28 +- .../Sources/Modules/TiUIWindowProxy.h | 2 +- .../Sources/Modules/TiUIWindowProxy.m | 42 +- package-lock.json | 12453 +++++++--------- package.json | 40 +- tests/Resources/assert.test.js | 2 - tests/Resources/buffer.test.js | 3 - tests/Resources/console.test.js | 3 - tests/Resources/fs.test.js | 2 - tests/Resources/os.test.js | 1 - tests/Resources/path.test.js | 1 - tests/Resources/process.test.js | 1 - tests/Resources/stream.test.js | 2 - 204 files changed, 7489 insertions(+), 8480 deletions(-) diff --git a/.eslintrc b/.eslintrc index 6eabf12f624..655e3fad978 100644 --- a/.eslintrc +++ b/.eslintrc @@ -33,9 +33,7 @@ "kroll": "readonly" }, "rules": { - "node/no-deprecated-api": "off", - "node/no-unsupported-features/es-syntax": "off", - "node/no-unsupported-features/node-builtins": ["warn", { "version": "10.11.0" }] + "node/no-unsupported-features/es-syntax": "off" } }, { @@ -61,9 +59,7 @@ "sourceType": "module" }, "rules": { - "node/no-deprecated-api": "off", - "node/no-unsupported-features/es-syntax": "off", - "node/no-unsupported-features/node-builtins": ["warn", { "version": "10.11.0" }] + "node/no-unsupported-features/es-syntax": "off" } }, { diff --git a/android/cli/lib/gradle-wrapper.js b/android/cli/lib/gradle-wrapper.js index 7c45bcaf8b4..8668a2a1393 100644 --- a/android/cli/lib/gradle-wrapper.js +++ b/android/cli/lib/gradle-wrapper.js @@ -297,7 +297,6 @@ class GradleWrapper { appc.subprocess.run('appc', [ '-q', 'config', 'get', 'proxyServer' ], runOptions, (exitCode, out) => { try { if (!exitCode && out && (out.length > 0)) { - // eslint-disable-next-line node/no-deprecated-api proxyUrl = url.parse(out.trim()); } } catch (ex) { diff --git a/iphone/Classes/AppModule.m b/iphone/Classes/AppModule.m index 4c6ff86d0b6..cd12e306ba4 100644 --- a/iphone/Classes/AppModule.m +++ b/iphone/Classes/AppModule.m @@ -169,11 +169,11 @@ - (void)removeEventListener:(NSArray *)args BOOL needsScanning; do { needsScanning = NO; - for (entry in l) //The fast iteration is blindly fast when l is nil or count. + for (entry in l) // The fast iteration is blindly fast when l is nil or count. { - if ([listener isEqual:[entry listener]]) //NSNumber does the right thing with this too. + if ([listener isEqual:[entry listener]]) // NSNumber does the right thing with this too. { - [l removeObject:entry]; //It's safe to modify the array as long as you break right after. + [l removeObject:entry]; // It's safe to modify the array as long as you break right after. needsScanning = [l count] > 0; break; } @@ -268,7 +268,7 @@ - (void)setProximityDetection:(NSNumber *)value { BOOL yn = [TiUtils boolValue:value]; [UIDevice currentDevice].proximityMonitoringEnabled = yn; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! if (yn) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityDetectionChanged:) @@ -302,7 +302,7 @@ - (void)handleUserInteraction:(id)notification } } -//To fire the keyboard frame change event. +// To fire the keyboard frame change event. - (void)keyboardFrameChanged:(NSNotification *)notification { if (![self _hasListeners:@"keyboardframechanged"]) { @@ -385,7 +385,7 @@ - (void)willShutdownContext:(NSNotification *)note - (void)startup { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(willShutdown:) name:kTiWillShutdownNotification object:nil]; [nc addObserver:self selector:@selector(willShutdownContext:) name:kTiContextShutdownNotification object:nil]; @@ -412,7 +412,7 @@ - (void)shutdown:(id)sender { // make sure we force any changes made on shutdown [[NSUserDefaults standardUserDefaults] synchronize]; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self]; [super shutdown:sender]; } @@ -606,9 +606,9 @@ - (NSNumber *)keyboardVisible - (void)setForceSplashAsSnapshot:(id)args { ENSURE_SINGLE_ARG(args, NSNumber) - [self replaceValue:args - forKey:@"forceSplashAsSnapshot" - notification:NO]; + [self replaceValue:args + forKey:@"forceSplashAsSnapshot" + notification:NO]; BOOL flag = [TiUtils boolValue:args def:NO]; [[TiApp app] setForceSplashAsSnapshot:flag]; } diff --git a/iphone/Classes/ApplicationDefaults.h b/iphone/Classes/ApplicationDefaults.h index 8595742c263..1dfedcef49e 100644 --- a/iphone/Classes/ApplicationDefaults.h +++ b/iphone/Classes/ApplicationDefaults.h @@ -3,7 +3,7 @@ * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. * Licensed under the terms of the Apache Public License * Please see the LICENSE included with this distribution for details. - * + * * WARNING: This is generated code. Modify at your own risk and without support. */ diff --git a/iphone/Classes/AsyncSocket.h b/iphone/Classes/AsyncSocket.h index 67abecfb8d0..e9c266add6d 100644 --- a/iphone/Classes/AsyncSocket.h +++ b/iphone/Classes/AsyncSocket.h @@ -36,34 +36,34 @@ typedef enum AsyncSocketError AsyncSocketError; * You may call "unreadData" during this call-back to get the last bit of data off the socket. * When connecting, this delegate method may be called * before"onSocket:didAcceptNewSocket:" or "onSocket:didConnectToHost:". -**/ + **/ - (BOOL)onSocket:(AsyncSocket *)sock shouldDisconnectWithError:(NSError *)err; /** * Called when a socket disconnects with or without error. If you want to release a socket after it disconnects, * do so here. It is not safe to do that during "onSocket:willDisconnectWithError:". - * + * * If you call the disconnect method, and the socket wasn't already disconnected, * this delegate method will be called before the disconnect method returns. -**/ + **/ - (void)onSocketDidDisconnect:(AsyncSocket *)sock; /** * Called when a socket accepts a connection (listening w/autoaccept 'YES'). Another socket is spawned to handle it. The new socket will have * the same delegate and will call "onSocket:didConnectToHost:port:". -**/ + **/ - (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket; /** * Called when there is a connection to accept (listening w/autoaccept 'NO'). Can retrieve the BSD socket * handle from the passed socket and call accept() on it, guaranteed to nonblock -**/ + **/ - (void)onSocketHasConnectionToAccept:(AsyncSocket *)sock; /** * Called when a new socket is spawned to handle a connection. This method should return the run-loop of the * thread on which the new socket and its delegate should operate. If omitted, [NSRunLoop currentRunLoop] is used. -**/ + **/ - (NSRunLoop *)onSocket:(AsyncSocket *)sock wantsRunLoopForNewSocket:(AsyncSocket *)newSocket; /** @@ -74,44 +74,44 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Called when a socket is about to connect. This method should return YES to continue, or NO to abort. * If aborted, will result in AsyncSocketCanceledError. - * + * * If the connectToHost:onPort:error: method was called, the delegate will be able to access and configure the * CFReadStream and CFWriteStream as desired prior to connection. * * If the connectToAddress:error: method was called, the delegate will be able to access and configure the * CFSocket and CFSocketNativeHandle (BSD socket) as desired prior to connection. You will be able to access and * configure the CFReadStream and CFWriteStream in the onSocket:didConnectToHost:port: method. -**/ + **/ - (BOOL)onSocketWillConnect:(AsyncSocket *)sock; /** * Called when a socket connects and is ready for reading and writing. * The host parameter will be an IP address, not a DNS name. -**/ + **/ - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port; /** * Called when a socket has completed reading the requested data into memory. * Not called if there is an error. -**/ + **/ - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag; /** * Called when a socket has read in data, but has not yet completed the read. * This would occur if using readToData: or readToLength: methods. * It may be used to for things such as updating progress bars. -**/ + **/ - (void)onSocket:(AsyncSocket *)sock didReadPartialDataOfLength:(NSUInteger)partialLength tag:(long)tag; /** * Called when a socket has completed writing the requested data. Not called if there is an error. -**/ + **/ - (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag; /** * Called when a socket has written some data, but has not yet completed the entire write. * It may be used to for things such as updating progress bars. -**/ + **/ - (void)onSocket:(AsyncSocket *)sock didWritePartialDataOfLength:(NSUInteger)partialLength tag:(long)tag; /** @@ -119,12 +119,12 @@ typedef enum AsyncSocketError AsyncSocketError; * This method allows you to optionally extend the timeout. * If you return a positive time interval (> 0) the read's timeout will be extended by the given amount. * If you don't implement this method, or return a non-positive time interval (<= 0) the read will timeout as usual. - * + * * The elapsed parameter is the sum of the original timeout, plus any additions previously added via this method. * The length parameter is the number of bytes that have been read so far for the read operation. - * + * * Note that this method may be called multiple times for a single read if you return positive numbers. -**/ + **/ - (NSTimeInterval)onSocket:(AsyncSocket *)sock shouldTimeoutReadWithTag:(long)tag elapsed:(NSTimeInterval)elapsed @@ -135,12 +135,12 @@ typedef enum AsyncSocketError AsyncSocketError; * This method allows you to optionally extend the timeout. * If you return a positive time interval (> 0) the write's timeout will be extended by the given amount. * If you don't implement this method, or return a non-positive time interval (<= 0) the write will timeout as usual. - * + * * The elapsed parameter is the sum of the original timeout, plus any additions previously added via this method. * The length parameter is the number of bytes that have been written so far for the write operation. - * + * * Note that this method may be called multiple times for a single write if you return positive numbers. -**/ + **/ - (NSTimeInterval)onSocket:(AsyncSocket *)sock shouldTimeoutWriteWithTag:(long)tag elapsed:(NSTimeInterval)elapsed @@ -149,10 +149,10 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Called after the socket has successfully completed SSL/TLS negotiation. * This method is not called unless you use the provided startTLS method. - * + * * If a SSL/TLS negotiation fails (invalid certificate, etc) then the socket will immediately close, * and the onSocket:willDisconnectWithError: delegate method will be called with the specific SSL error code. -**/ + **/ - (void)onSocketDidSecure:(AsyncSocket *)sock; @end @@ -204,7 +204,7 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Use "canSafelySetDelegate" to see if there is any pending business (reads and writes) with the current delegate * before changing it. It is, of course, safe to change the delegate before connecting or accepting connections. -**/ + **/ - (id)delegate; - (BOOL)canSafelySetDelegate; - (void)setDelegate:(id)delegate; @@ -244,7 +244,7 @@ typedef enum AsyncSocketError AsyncSocketError; * Tells the socket to begin listening and accepting connections on the given port. * When a connection comes in, the AsyncSocket instance will call the various delegate methods (see above). * The socket will listen on all available interfaces (e.g. wifi, ethernet, etc) -**/ + **/ - (BOOL)acceptOnPort:(UInt16)port error:(NSError **)errPtr; /** @@ -254,9 +254,9 @@ typedef enum AsyncSocketError AsyncSocketError; * to specify that the socket should only accept connections over ethernet, and not other interfaces such as wifi. * You may also use the special strings "localhost" or "loopback" to specify that * the socket only accept connections from the local machine. - * + * * To accept connections on any interface pass nil, or simply use the acceptOnPort:error: method. -**/ + **/ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port error:(NSError **)errPtr; /** @@ -264,25 +264,25 @@ typedef enum AsyncSocketError AsyncSocketError; * of specifying whether or not the listening socket will autoaccept incoming connections. If 'YES', * then the onSocket:didAcceptNewSocket: callback is called; otherwise, onSocketHasConnectionToAccept: * is called. -**/ + **/ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port autoaccept:(BOOL)autoaccept error:(NSError **)errPtr; /** * This method is used to create a new async socket from an accepted socket, and fires the onSocket:didAcceptNewSocket: delegate callback. * Returns the new async socket, or nil if the accept failed. -**/ + **/ - (AsyncSocket *)doAcceptFromSocket:(CFSocketRef)parentSocket withNewNativeSocket:(CFSocketNativeHandle)newNativeSocket; /** * Connects to the given host and port. * The host may be a domain name (e.g. "deusty.com") or an IP address string (e.g. "192.168.0.2") -**/ + **/ - (BOOL)connectToHost:(NSString *)hostname onPort:(UInt16)port error:(NSError **)errPtr; /** * This method is the same as connectToHost:onPort:error: with an additional timeout option. * To not time out use a negative time interval, or simply use the connectToHost:onPort:error: method. -**/ + **/ - (BOOL)connectToHost:(NSString *)hostname onPort:(UInt16)port withTimeout:(NSTimeInterval)timeout @@ -291,17 +291,17 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Connects to the given address, specified as a sockaddr structure wrapped in a NSData object. * For example, a NSData object returned from NSNetservice's addresses method. - * + * * If you have an existing struct sockaddr you can convert it to a NSData object like so: * struct sockaddr sa -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len]; * struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len]; -**/ + **/ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr; /** * This method is the same as connectToAddress:error: with an additional timeout option. * To not time out use a negative time interval, or simply use the connectToAddress:error: method. -**/ + **/ - (BOOL)connectToAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr; - (BOOL)connectToAddress:(NSData *)remoteAddr @@ -313,32 +313,32 @@ typedef enum AsyncSocketError AsyncSocketError; * Disconnects immediately. Any pending reads or writes are dropped. * If the socket is not already disconnected, the onSocketDidDisconnect delegate method * will be called immediately, before this method returns. - * + * * Please note the recommended way of releasing an AsyncSocket instance (e.g. in a dealloc method) * [asyncSocket setDelegate:nil]; * [asyncSocket disconnect]; * [asyncSocket release]; -**/ + **/ - (void)disconnect; /** * Disconnects after all pending reads have completed. * After calling this, the read and write methods will do nothing. * The socket will disconnect even if there are still pending writes. -**/ + **/ - (void)disconnectAfterReading; /** * Disconnects after all pending writes have completed. * After calling this, the read and write methods will do nothing. * The socket will disconnect even if there are still pending reads. -**/ + **/ - (void)disconnectAfterWriting; /** * Disconnects after all pending reads and writes have completed. * After calling this, the read and write methods will do nothing. -**/ + **/ - (void)disconnectAfterReadingAndWriting; /* Returns YES if the socket and streams are open, connected, and ready for reading and writing. */ @@ -347,7 +347,7 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Returns the local or remote host and port to which this socket is connected, or nil and 0 if not connected. * The host will be an IP address. -**/ + **/ - (NSString *)connectedHost; - (UInt16)connectedPort; @@ -357,16 +357,16 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Returns the local or remote address to which this socket is connected, * specified as a sockaddr structure wrapped in a NSData object. - * + * * See also the connectedHost, connectedPort, localHost and localPort methods. -**/ + **/ - (NSData *)connectedAddress; - (NSData *)localAddress; /** * Returns whether the socket is IPv4 or IPv6. * An accepting socket may be both. -**/ + **/ - (BOOL)isIPv4; - (BOOL)isIPv6; @@ -385,26 +385,26 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Reads the first available bytes that become available on the socket. - * + * * If the timeout value is negative, the read operation will not use a timeout. -**/ + **/ - (void)readDataWithTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Reads the first available bytes that become available on the socket. * The bytes will be appended to the given byte buffer starting at the given offset. * The given buffer will automatically be increased in size if needed. - * + * * If the timeout value is negative, the read operation will not use a timeout. * If the buffer if nil, the socket will create a buffer for you. - * + * * If the bufferOffset is greater than the length of the given buffer, * the method will do nothing, and the delegate will not be called. - * + * * If you pass a buffer, you must not alter it in any way while AsyncSocket is using it. * After completion, the data returned in onSocket:didReadData:withTag: will be a subset of the given buffer. * That is, it will reference the bytes that were appended to the given buffer. -**/ + **/ - (void)readDataWithTimeout:(NSTimeInterval)timeout buffer:(NSMutableData *)buffer bufferOffset:(NSUInteger)offset @@ -415,18 +415,18 @@ typedef enum AsyncSocketError AsyncSocketError; * The bytes will be appended to the given byte buffer starting at the given offset. * The given buffer will automatically be increased in size if needed. * A maximum of length bytes will be read. - * + * * If the timeout value is negative, the read operation will not use a timeout. * If the buffer if nil, a buffer will automatically be created for you. * If maxLength is zero, no length restriction is enforced. - * + * * If the bufferOffset is greater than the length of the given buffer, * the method will do nothing, and the delegate will not be called. - * + * * If you pass a buffer, you must not alter it in any way while AsyncSocket is using it. * After completion, the data returned in onSocket:didReadData:withTag: will be a subset of the given buffer. * That is, it will reference the bytes that were appended to the given buffer. -**/ + **/ - (void)readDataWithTimeout:(NSTimeInterval)timeout buffer:(NSMutableData *)buffer bufferOffset:(NSUInteger)offset @@ -435,29 +435,29 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Reads the given number of bytes. - * + * * If the timeout value is negative, the read operation will not use a timeout. - * + * * If the length is 0, this method does nothing and the delegate is not called. -**/ + **/ - (void)readDataToLength:(NSUInteger)length withTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Reads the given number of bytes. * The bytes will be appended to the given byte buffer starting at the given offset. * The given buffer will automatically be increased in size if needed. - * + * * If the timeout value is negative, the read operation will not use a timeout. * If the buffer if nil, a buffer will automatically be created for you. - * + * * If the length is 0, this method does nothing and the delegate is not called. * If the bufferOffset is greater than the length of the given buffer, * the method will do nothing, and the delegate will not be called. - * + * * If you pass a buffer, you must not alter it in any way while AsyncSocket is using it. * After completion, the data returned in onSocket:didReadData:withTag: will be a subset of the given buffer. * That is, it will reference the bytes that were appended to the given buffer. -**/ + **/ - (void)readDataToLength:(NSUInteger)length withTimeout:(NSTimeInterval)timeout buffer:(NSMutableData *)buffer @@ -466,37 +466,37 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Reads bytes until (and including) the passed "data" parameter, which acts as a separator. - * + * * If the timeout value is negative, the read operation will not use a timeout. - * + * * If you pass nil or zero-length data as the "data" parameter, * the method will do nothing, and the delegate will not be called. - * + * * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the "data" parameter. * Note that this method is not character-set aware, so if a separator can occur naturally as part of the encoding for * a character, the read will prematurely end. -**/ + **/ - (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Reads bytes until (and including) the passed "data" parameter, which acts as a separator. * The bytes will be appended to the given byte buffer starting at the given offset. * The given buffer will automatically be increased in size if needed. - * + * * If the timeout value is negative, the read operation will not use a timeout. * If the buffer if nil, a buffer will automatically be created for you. - * + * * If the bufferOffset is greater than the length of the given buffer, * the method will do nothing, and the delegate will not be called. - * + * * If you pass a buffer, you must not alter it in any way while AsyncSocket is using it. * After completion, the data returned in onSocket:didReadData:withTag: will be a subset of the given buffer. * That is, it will reference the bytes that were appended to the given buffer. - * + * * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the "data" parameter. * Note that this method is not character-set aware, so if a separator can occur naturally as part of the encoding for * a character, the read will prematurely end. -**/ + **/ - (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout buffer:(NSMutableData *)buffer @@ -505,23 +505,23 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Reads bytes until (and including) the passed "data" parameter, which acts as a separator. - * + * * If the timeout value is negative, the read operation will not use a timeout. - * + * * If maxLength is zero, no length restriction is enforced. * Otherwise if maxLength bytes are read without completing the read, * it is treated similarly to a timeout - the socket is closed with a AsyncSocketReadMaxedOutError. * The read will complete successfully if exactly maxLength bytes are read and the given data is found at the end. - * + * * If you pass nil or zero-length data as the "data" parameter, * the method will do nothing, and the delegate will not be called. * If you pass a maxLength parameter that is less than the length of the data parameter, * the method will do nothing, and the delegate will not be called. - * + * * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the "data" parameter. * Note that this method is not character-set aware, so if a separator can occur naturally as part of the encoding for * a character, the read will prematurely end. -**/ + **/ - (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout maxLength:(NSUInteger)length tag:(long)tag; /** @@ -529,28 +529,28 @@ typedef enum AsyncSocketError AsyncSocketError; * The bytes will be appended to the given byte buffer starting at the given offset. * The given buffer will automatically be increased in size if needed. * A maximum of length bytes will be read. - * + * * If the timeout value is negative, the read operation will not use a timeout. * If the buffer if nil, a buffer will automatically be created for you. - * + * * If maxLength is zero, no length restriction is enforced. * Otherwise if maxLength bytes are read without completing the read, * it is treated similarly to a timeout - the socket is closed with a AsyncSocketReadMaxedOutError. * The read will complete successfully if exactly maxLength bytes are read and the given data is found at the end. - * + * * If you pass a maxLength parameter that is less than the length of the data parameter, * the method will do nothing, and the delegate will not be called. * If the bufferOffset is greater than the length of the given buffer, * the method will do nothing, and the delegate will not be called. - * + * * If you pass a buffer, you must not alter it in any way while AsyncSocket is using it. * After completion, the data returned in onSocket:didReadData:withTag: will be a subset of the given buffer. * That is, it will reference the bytes that were appended to the given buffer. - * + * * To read a line from the socket, use the line separator (e.g. CRLF for HTTP, see below) as the "data" parameter. * Note that this method is not character-set aware, so if a separator can occur naturally as part of the encoding for * a character, the read will prematurely end. -**/ + **/ - (void)readDataToData:(NSData *)data withTimeout:(NSTimeInterval)timeout buffer:(NSMutableData *)buffer @@ -560,27 +560,27 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Writes data to the socket, and calls the delegate when finished. - * + * * If you pass in nil or zero-length data, this method does nothing and the delegate will not be called. * If the timeout value is negative, the write operation will not use a timeout. -**/ + **/ - (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Returns progress of current read or write, from 0.0 to 1.0, or NaN if no read/write (use isnan() to check). * "tag", "done" and "total" will be filled in if they aren't NULL. -**/ + **/ - (float)progressOfReadReturningTag:(long *)tag bytesDone:(NSUInteger *)done total:(NSUInteger *)total; - (float)progressOfWriteReturningTag:(long *)tag bytesDone:(NSUInteger *)done total:(NSUInteger *)total; /** * Secures the connection using SSL/TLS. - * + * * This method may be called at any time, and the TLS handshake will occur after all pending reads and writes * are finished. This allows one the option of sending a protocol dependent StartTLS message, and queuing * the upgrade to TLS at the same time, without having to wait for the write to finish. * Any reads or writes scheduled after this method is called will occur over the secured connection. - * + * * The possible keys and values for the TLS settings are well documented. * Some possible keys are: * - kCFStreamSSLLevel @@ -591,11 +591,11 @@ typedef enum AsyncSocketError AsyncSocketError; * - kCFStreamSSLPeerName * - kCFStreamSSLCertificates * - kCFStreamSSLIsServer - * + * * Please refer to Apple's documentation for associated values, as well as other possible keys. - * + * * If you pass in nil or an empty dictionary, the default settings will be used. - * + * * The default settings will check to make sure the remote party's certificate is signed by a * trusted 3rd party certificate agency (e.g. verisign) and that the certificate is not expired. * However it will not verify the name on the certificate unless you @@ -611,7 +611,7 @@ typedef enum AsyncSocketError AsyncSocketError; * if it will be "domain.com" or "www.domain.com"), then you can use the default settings to validate the * certificate, and then use the X509Certificate class to verify the issuer after the socket has been secured. * The X509Certificate class is part of the CocoaAsyncSocket open source project. -**/ + **/ - (void)startTLS:(NSDictionary *)tlsSettings; /** @@ -620,43 +620,43 @@ typedef enum AsyncSocketError AsyncSocketError; * store any overflow in a small internal buffer. * This is termed pre-buffering, as some data may be read for you before you ask for it. * If you use readDataToData a lot, enabling pre-buffering will result in better performance, especially on the iPhone. - * + * * The default pre-buffering state is controlled by the DEFAULT_PREBUFFERING definition. * It is highly recommended one leave this set to YES. - * + * * This method exists in case pre-buffering needs to be disabled by default for some unforeseen reason. * In that case, this method exists to allow one to easily enable pre-buffering when ready. -**/ + **/ - (void)enablePreBuffering; /** * When you create an AsyncSocket, it is added to the runloop of the current thread. * So for manually created sockets, it is easiest to simply create the socket on the thread you intend to use it. - * + * * If a new socket is accepted, the delegate method onSocket:wantsRunLoopForNewSocket: is called to * allow you to place the socket on a separate thread. This works best in conjunction with a thread pool design. - * + * * If, however, you need to move the socket to a separate thread at a later time, this * method may be used to accomplish the task. - * + * * This method must be called from the thread/runloop the socket is currently running on. - * + * * Note: After calling this method, all further method calls to this object should be done from the given runloop. * Also, all delegate calls will be sent on the given runloop. -**/ + **/ - (BOOL)moveToRunLoop:(NSRunLoop *)runLoop; /** * Allows you to configure which run loop modes the socket uses. * The default set of run loop modes is NSDefaultRunLoopMode. - * + * * If you'd like your socket to continue operation during other modes, you may want to add modes such as * NSModalPanelRunLoopMode or NSEventTrackingRunLoopMode. Or you may simply want to use NSRunLoopCommonModes. - * + * * Accepted sockets will automatically inherit the same run loop modes as the listening socket. - * + * * Note: NSRunLoopCommonModes is defined in 10.5. For previous versions one can use kCFRunLoopCommonModes. -**/ + **/ - (BOOL)setRunLoopModes:(NSArray *)runLoopModes; - (BOOL)addRunLoopMode:(NSString *)runLoopMode; - (BOOL)removeRunLoopMode:(NSString *)runLoopMode; @@ -664,7 +664,7 @@ typedef enum AsyncSocketError AsyncSocketError; /** * Returns the current run loop modes the AsyncSocket instance is operating in. * The default set of run loop modes is NSDefaultRunLoopMode. -**/ + **/ - (NSArray *)runLoopModes; /** @@ -676,7 +676,7 @@ typedef enum AsyncSocketError AsyncSocketError; /** * In the event of an error, this method may be called during onSocket:willDisconnectWithError: to read * any data that's left on the socket. -**/ + **/ - (NSData *)unreadData; /* A few common line separators, for use with the readDataToData:... methods. */ diff --git a/iphone/Classes/AsyncSocket.m b/iphone/Classes/AsyncSocket.m index 5ce3fdf6df8..b570bb56df3 100644 --- a/iphone/Classes/AsyncSocket.m +++ b/iphone/Classes/AsyncSocket.m @@ -178,7 +178,7 @@ - (void)doCFWriteStreamCallback:(CFStreamEventType)type forStream:(CFWriteStream * - reading to a certain length * - reading to a certain separator * - or simply reading the first chunk of available data -**/ + **/ @interface AsyncReadPacket : NSObject { @public NSMutableData *buffer; @@ -248,7 +248,7 @@ - (id)initWithData:(NSMutableData *)d /** * For read packets without a set terminator, returns the safe length of data that can be read * without exceeding the maxLength, or forcing a resize of the buffer if at all possible. -**/ + **/ - (NSUInteger)readLengthForNonTerm { NSAssert(term == nil, @"This method does not apply to term reads"); @@ -291,9 +291,9 @@ - (NSUInteger)readLengthForNonTerm /** * For read packets with a set terminator, returns the safe length of data that can be read * without going over a terminator, or the maxLength, or forcing a resize of the buffer if at all possible. - * + * * It is assumed the terminator has not already been read. -**/ + **/ - (NSUInteger)readLengthForTerm { NSAssert(term != nil, @"This method does not apply to non-term reads"); @@ -366,9 +366,9 @@ - (NSUInteger)readLengthForTerm * For read packets with a set terminator, * returns the safe length of data that can be read from the given preBuffer, * without going over a terminator or the maxLength. - * + * * It is assumed the terminator has not already been read. -**/ + **/ - (NSUInteger)readLengthForTermWithPreBuffer:(NSData *)preBuffer found:(BOOL *)foundPtr { NSAssert(term != nil, @"This method does not apply to non-term reads"); @@ -483,7 +483,7 @@ - (NSUInteger)readLengthForTermWithPreBuffer:(NSData *)preBuffer found:(BOOL *)f /** * Assuming pre-buffering is enabled, returns the amount of data that can be read * without going over the maxLength. -**/ + **/ - (NSUInteger)prebufferReadLengthForTerm { NSAssert(term != nil, @"This method does not apply to non-term reads"); @@ -515,12 +515,12 @@ - (NSUInteger)prebufferReadLengthForTerm /** * For read packets with a set terminator, scans the packet buffer for the term. * It is assumed the terminator had not been fully read prior to the new bytes. - * + * * If the term is found, the number of excess bytes after the term are returned. * If the term is not found, this method will return -1. - * + * * Note: A return value of zero means the term was found at the very end. -**/ + **/ - (NSInteger)searchForTermAfterPreBuffering:(NSUInteger)numBytes { NSAssert(term != nil, @"This method does not apply to non-term reads"); @@ -570,7 +570,7 @@ - (void)dealloc /** * The AsyncWritePacket encompasses the instructions for any given write. -**/ + **/ @interface AsyncWritePacket : NSObject { @public NSData *buffer; @@ -609,7 +609,7 @@ - (void)dealloc /** * The AsyncSpecialPacket encompasses special instructions for interruptions in the read/write queues. * This class my be altered to support more than just TLS in the future. -**/ + **/ @interface AsyncSpecialPacket : NSObject { @public NSDictionary *tlsSettings; @@ -965,7 +965,7 @@ - (void)runLoopUnscheduleWriteStream /** * See the header file for a full explanation of pre-buffering. -**/ + **/ - (void)enablePreBuffering { #if DEBUG_THREAD_SAFETY @@ -977,7 +977,7 @@ - (void)enablePreBuffering /** * See the header file for a full explanation of this method. -**/ + **/ - (BOOL)moveToRunLoop:(NSRunLoop *)runLoop { NSAssert((theRunLoop == NULL) || (theRunLoop == CFRunLoopGetCurrent()), @@ -1045,7 +1045,7 @@ - (BOOL)moveToRunLoop:(NSRunLoop *)runLoop /** * See the header file for a full explanation of this method. -**/ + **/ - (BOOL)setRunLoopModes:(NSArray *)runLoopModes { NSAssert((theRunLoop == NULL) || (theRunLoop == CFRunLoopGetCurrent()), @@ -1228,7 +1228,7 @@ - (BOOL)acceptOnPort:(UInt16)port error:(NSError **)errPtr * To accept on a certain interface, pass the address to accept on. * To accept on any interface, pass nil or an empty string. * To accept only connections from localhost pass "localhost" or "loopback". -**/ + **/ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port error:(NSError **)errPtr { return [self acceptOnInterface:interface port:port autoaccept:YES error:errPtr]; @@ -1237,7 +1237,7 @@ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port error:(NSError /** * To automatically accept incoming connections, set autoaccept to YES (default) * To manually accept connections via BSD accept() and the onSocketHasConnectionToAccept, set autoaccept to NO -**/ + **/ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port autoaccept:(BOOL)autoaccept error:(NSError **)errPtr { if (theDelegate == NULL) { @@ -1374,7 +1374,7 @@ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port autoaccept:(BO if (err != kCFSocketSuccess) goto Failed; - //NSLog(@"theSocket4: %hu", [self localPortFromCFSocket4:theSocket4]); + // NSLog(@"theSocket4: %hu", [self localPortFromCFSocket4:theSocket4]); } if (port == 0 && theSocket4 && theSocket6) { @@ -1393,7 +1393,7 @@ - (BOOL)acceptOnInterface:(NSString *)interface port:(UInt16)port autoaccept:(BO if (err != kCFSocketSuccess) goto Failed; - //NSLog(@"theSocket6: %hu", [self localPortFromCFSocket6:theSocket6]); + // NSLog(@"theSocket6: %hu", [self localPortFromCFSocket6:theSocket6]); } theFlags |= kDidStartDelegate; @@ -1430,7 +1430,7 @@ - (BOOL)connectToHost:(NSString *)hostname onPort:(UInt16)port error:(NSError ** * * Thus the delegate will have access to the CFReadStream and CFWriteStream prior to connection, * specifically in the onSocketWillConnect: method. -**/ + **/ - (BOOL)connectToHost:(NSString *)hostname onPort:(UInt16)port withTimeout:(NSTimeInterval)timeout @@ -1480,13 +1480,13 @@ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr * * Thus the delegate will have access to the CFSocket and CFSocketNativeHandle (BSD socket) prior to connection, * specifically in the onSocketWillConnect: method. - * + * * Note: The NSData parameter is expected to be a sockaddr structure. For example, an NSData object returned from * NSNetservice addresses method. * If you have an existing struct sockaddr you can convert it to an NSData object like so: * struct sockaddr sa -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len]; * struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len]; -**/ + **/ - (BOOL)connectToAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr { return [self connectToAddress:remoteAddr viaInterfaceAddress:nil withTimeout:timeout error:errPtr]; @@ -1495,7 +1495,7 @@ - (BOOL)connectToAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeou /** * This method is similar to the one above, but allows you to specify which socket interface * the connection should run over. E.g. ethernet, wifi, bluetooth, etc. -**/ + **/ - (BOOL)connectToAddress:(NSData *)remoteAddr viaInterfaceAddress:(NSData *)interfaceAddr withTimeout:(NSTimeInterval)timeout @@ -1569,7 +1569,7 @@ - (void)doConnectTimeout:(NSTimer *)timer * Creates the accept sockets. * Returns true if either IPv4 or IPv6 is created. * If either is missing, an error is returned (even though the method may return true). -**/ + **/ - (CFSocketRef)newAcceptSocketForAddress:(NSData *)addr autoaccept:(BOOL)autoaccept error:(NSError **)errPtr { struct sockaddr *pSockAddr = (struct sockaddr *)[addr bytes]; @@ -1673,7 +1673,7 @@ - (BOOL)bindSocketToAddress:(NSData *)interfaceAddr error:(NSError **)errPtr /** * Adds the CFSocket's to the run-loop so that callbacks will work properly. -**/ + **/ - (BOOL)attachSocketsToRunLoop:(NSRunLoop *)runLoop error:(NSError **)errPtr { #pragma unused(errPtr) @@ -1697,7 +1697,7 @@ - (BOOL)attachSocketsToRunLoop:(NSRunLoop *)runLoop error:(NSError **)errPtr /** * Allows the delegate method to configure the CFSocket or CFNativeSocket as desired before we connect. * Note that the CFReadStream and CFWriteStream will not be available until after the connection is opened. -**/ + **/ - (BOOL)configureSocketAndReturnError:(NSError **)errPtr { // Call the delegate method for further configuration. @@ -1737,7 +1737,7 @@ - (BOOL)connectSocketToAddress:(NSData *)remoteAddr error:(NSError **)errPtr /** * Attempt to make the new socket. * If an error occurs, ignore this event. -**/ + **/ - (AsyncSocket *)doAcceptFromSocket:(CFSocketRef)parentSocket withNewNativeSocket:(CFSocketNativeHandle)newNativeSocket { if (newNativeSocket) { @@ -1786,7 +1786,7 @@ - (AsyncSocket *)doAcceptFromSocket:(CFSocketRef)parentSocket withNewNativeSocke /** * This method is called as a result of connectToAddress:withTimeout:error:. * At this point we have an open CFSocket from which we need to create our read and write stream. -**/ + **/ - (void)doSocketOpen:(CFSocketRef)sock withCFSocketError:(CFSocketError)socketError { NSParameterAssert((sock == theSocket4) || (sock == theSocket6)); @@ -1854,9 +1854,9 @@ - (void)doSocketOpen:(CFSocketRef)sock withCFSocketError:(CFSocketError)socketEr /** * Creates the CFReadStream and CFWriteStream from the given native socket. * The CFSocket may be extracted from either stream after the streams have been opened. - * + * * Note: The given native socket must already be connected! -**/ + **/ - (BOOL)createStreamsFromNative:(CFSocketNativeHandle)native error:(NSError **)errPtr { // Create the socket & streams. @@ -1881,7 +1881,7 @@ - (BOOL)createStreamsFromNative:(CFSocketNativeHandle)native error:(NSError **)e /** * Creates the CFReadStream and CFWriteStream from the given hostname and port number. * The CFSocket may be extracted from either stream after the streams have been opened. -**/ + **/ - (BOOL)createStreamsToHost:(NSString *)hostname onPort:(UInt16)port error:(NSError **)errPtr { // Create the socket & streams. @@ -1952,10 +1952,10 @@ - (BOOL)attachStreamsToRunLoop:(NSRunLoop *)runLoop error:(NSError **)errPtr /** * Allows the delegate method to configure the CFReadStream and/or CFWriteStream as desired before we connect. - * + * * If being called from a connect method, * the CFSocket and CFNativeSocket will not be available until after the connection is opened. -**/ + **/ - (BOOL)configureStreamsAndReturnError:(NSError **)errPtr { // Call the delegate method for further configuration. @@ -1994,7 +1994,7 @@ - (BOOL)openStreamsAndReturnError:(NSError **)errPtr /** * Called when read or write streams open. * When the socket is connected and both streams are open, consider the AsyncSocket instance to be ready. -**/ + **/ - (void)doStreamOpen { if ((theFlags & kDidCompleteOpenForRead) && (theFlags & kDidCompleteOpenForWrite)) { @@ -2149,7 +2149,7 @@ - (void)emptyQueues /** * Disconnects. This is called for both error and clean disconnections. -**/ + **/ - (void)close { // Empty queues @@ -2227,7 +2227,7 @@ - (void)close /** * Disconnects immediately. Any pending reads or writes are dropped. -**/ + **/ - (void)disconnect { #if DEBUG_THREAD_SAFETY @@ -2239,7 +2239,7 @@ - (void)disconnect /** * Diconnects after all pending reads have completed. -**/ + **/ - (void)disconnectAfterReading { #if DEBUG_THREAD_SAFETY @@ -2253,7 +2253,7 @@ - (void)disconnectAfterReading /** * Disconnects after all pending writes have completed. -**/ + **/ - (void)disconnectAfterWriting { #if DEBUG_THREAD_SAFETY @@ -2267,7 +2267,7 @@ - (void)disconnectAfterWriting /** * Disconnects after all pending reads and writes have completed. -**/ + **/ - (void)disconnectAfterReadingAndWriting { #if DEBUG_THREAD_SAFETY @@ -2283,7 +2283,7 @@ - (void)disconnectAfterReadingAndWriting * Schedules a call to disconnect if possible. * That is, if all writes have completed, and we're set to disconnect after writing, * or if all reads have completed, and we're set to disconnect after reading. -**/ + **/ - (void)maybeScheduleDisconnect { BOOL shouldDisconnect = NO; @@ -2312,7 +2312,7 @@ - (void)maybeScheduleDisconnect /** * In the event of an error, this method may be called during onSocket:willDisconnectWithError: to read * any data that's left on the socket. -**/ + **/ - (NSData *)unreadData { #if DEBUG_THREAD_SAFETY @@ -2364,7 +2364,7 @@ - (NSData *)unreadData /** * Returns a standard error object for the current errno value. * Errno is used for low-level BSD socket errors. -**/ + **/ - (NSError *)getErrnoError { NSString *errorMsg = [NSString stringWithUTF8String:strerror(errno)]; @@ -2376,7 +2376,7 @@ - (NSError *)getErrnoError /** * Returns a standard error message for a CFSocket error. * Unfortunately, CFSocket offers no feedback on its errors. -**/ + **/ - (NSError *)getSocketError { NSString *errMsg = NSLocalizedStringWithDefaultValue(@"AsyncSocketCFSocketError", @@ -2408,7 +2408,7 @@ - (NSError *)getStreamError /** * Returns a standard AsyncSocket abort error. -**/ + **/ - (NSError *)getAbortError { NSString *errMsg = NSLocalizedStringWithDefaultValue(@"AsyncSocketCanceledError", @@ -2422,7 +2422,7 @@ - (NSError *)getAbortError /** * Returns a standard AsyncSocket connect timeout error. -**/ + **/ - (NSError *)getConnectTimeoutError { NSString *errMsg = NSLocalizedStringWithDefaultValue(@"AsyncSocketConnectTimeoutError", @@ -2436,7 +2436,7 @@ - (NSError *)getConnectTimeoutError /** * Returns a standard AsyncSocket maxed out error. -**/ + **/ - (NSError *)getReadMaxedOutError { NSString *errMsg = NSLocalizedStringWithDefaultValue(@"AsyncSocketReadMaxedOutError", @@ -2450,7 +2450,7 @@ - (NSError *)getReadMaxedOutError /** * Returns a standard AsyncSocket read timeout error. -**/ + **/ - (NSError *)getReadTimeoutError { NSString *errMsg = NSLocalizedStringWithDefaultValue(@"AsyncSocketReadTimeoutError", @@ -2464,7 +2464,7 @@ - (NSError *)getReadTimeoutError /** * Returns a standard AsyncSocket write timeout error. -**/ + **/ - (NSError *)getWriteTimeoutError { NSString *errMsg = NSLocalizedStringWithDefaultValue(@"AsyncSocketWriteTimeoutError", @@ -3319,9 +3319,9 @@ - (void)readDataToData:(NSData *)data } /** - * Puts a maybeDequeueRead on the run loop. + * Puts a maybeDequeueRead on the run loop. * An assumption here is that selectors will be performed consecutively within their priority. -**/ + **/ - (void)scheduleDequeueRead { if ((theFlags & kDequeueReadScheduled) == 0) { @@ -3334,7 +3334,7 @@ - (void)scheduleDequeueRead * This method starts a new read, if needed. * It is called when a user requests a read, * or when a stream opens that may have requested reads sitting in the queue, etc. -**/ + **/ - (void)maybeDequeueRead { // Unset the flag indicating a call to this method is scheduled @@ -3382,7 +3382,7 @@ - (void)maybeDequeueRead /** * Call this method in doBytesAvailable instead of CFReadStreamHasBytesAvailable(). * This method supports pre-buffering properly as well as the kSocketHasBytesAvailable flag. -**/ + **/ - (BOOL)hasBytesAvailable { if ((theFlags & kSocketHasBytesAvailable) || ([partialReadBuffer length] > 0)) { @@ -3395,7 +3395,7 @@ - (BOOL)hasBytesAvailable /** * Call this method in doBytesAvailable instead of CFReadStreamRead(). * This method support pre-buffering properly. -**/ + **/ - (CFIndex)readIntoBuffer:(void *)buffer maxLength:(NSUInteger)length { if ([partialReadBuffer length] > 0) { @@ -3419,7 +3419,7 @@ - (CFIndex)readIntoBuffer:(void *)buffer maxLength:(NSUInteger)length /** * This method is called when a new read is taken from the read queue or when new data becomes available on the stream. -**/ + **/ - (void)doBytesAvailable { // If data is available on the stream, but there is no read request, then we don't need to process the data yet. @@ -3719,13 +3719,13 @@ - (void)scheduleDequeueWrite /** * Conditionally starts a new write. - * + * * IF there is not another write in process * AND there is a write queued * AND we have a write stream available - * + * * This method also handles auto-disconnect post read/write completion. -**/ + **/ - (void)maybeDequeueWrite { // Unset the flag indicating a call to this method is scheduled @@ -3773,7 +3773,7 @@ - (void)maybeDequeueWrite /** * Call this method in doSendBytes instead of CFWriteStreamCanAcceptBytes(). * This method supports the kSocketCanAcceptBytes flag. -**/ + **/ - (BOOL)canAcceptBytes { if (theFlags & kSocketCanAcceptBytes) { @@ -4064,7 +4064,7 @@ - (void)doCFWriteStreamCallback:(CFStreamEventType)type forStream:(CFWriteStream /** * This is the callback we setup for CFSocket. * This method does nothing but forward the call to it's Objective-C counterpart -**/ + **/ static void MyCFSocketCallback(CFSocketRef sref, CFSocketCallBackType type, CFDataRef address, const void *pData, void *pInfo) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -4078,7 +4078,7 @@ static void MyCFSocketCallback(CFSocketRef sref, CFSocketCallBackType type, CFDa /** * This is the callback we setup for CFReadStream. * This method does nothing but forward the call to it's Objective-C counterpart -**/ + **/ static void MyCFReadStreamCallback(CFReadStreamRef stream, CFStreamEventType type, void *pInfo) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -4092,7 +4092,7 @@ static void MyCFReadStreamCallback(CFReadStreamRef stream, CFStreamEventType typ /** * This is the callback we setup for CFWriteStream. * This method does nothing but forward the call to it's Objective-C counterpart -**/ + **/ static void MyCFWriteStreamCallback(CFWriteStreamRef stream, CFStreamEventType type, void *pInfo) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; diff --git a/iphone/Classes/AsyncUdpSocket.h b/iphone/Classes/AsyncUdpSocket.h index 91f74aaa01f..17937477ac9 100644 --- a/iphone/Classes/AsyncUdpSocket.h +++ b/iphone/Classes/AsyncUdpSocket.h @@ -61,7 +61,7 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; /** * Creates new instances of AsyncUdpSocket. -**/ + **/ - (id)init; - (id)initWithDelegate:(id)delegate; - (id)initWithDelegate:(id)delegate userData:(long)userData; @@ -70,7 +70,7 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * Creates new instances of AsyncUdpSocket that support only IPv4 or IPv6. * The other init methods will support both, unless specifically binded or connected to one protocol. * If you know you'll only be using one protocol, these init methods may be a bit more efficient. -**/ + **/ - (id)initIPv4; - (id)initIPv6; @@ -82,19 +82,19 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; /** * Returns the local address info for the socket. - * + * * Note: Address info may not be available until after the socket has been bind'ed, * or until after data has been sent. -**/ + **/ - (NSString *)localHost; - (UInt16)localPort; /** * Returns the remote address info for the socket. - * + * * Note: Since UDP is connectionless by design, connected address info * will not be available unless the socket is explicitly connected to a remote host/port -**/ + **/ - (NSString *)connectedHost; - (UInt16)connectedPort; @@ -102,40 +102,40 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * Returns whether or not this socket has been connected to a single host. * By design, UDP is a connectionless protocol, and connecting is not needed. * If connected, the socket will only be able to send/receive data to/from the connected host. -**/ + **/ - (BOOL)isConnected; /** * Returns whether or not this socket has been closed. * The only way a socket can be closed is if you explicitly call one of the close methods. -**/ + **/ - (BOOL)isClosed; /** * Returns whether or not this socket supports IPv4. * By default this will be true, unless the socket is specifically initialized as IPv6 only, * or is binded or connected to an IPv6 address. -**/ + **/ - (BOOL)isIPv4; /** * Returns whether or not this socket supports IPv6. * By default this will be true, unless the socket is specifically initialized as IPv4 only, * or is binded or connected to an IPv4 address. - * + * * This method will also return false on platforms that do not support IPv6. * Note: The iPhone does not currently support IPv6. -**/ + **/ - (BOOL)isIPv6; /** * Returns the mtu of the socket. * If unknown, returns zero. - * + * * Sending data larger than this may result in an error. * This is an advanced topic, and one should understand the wide range of mtu's on networks and the internet. * Therefore this method is only for reference and may be of little use in many situations. -**/ + **/ - (unsigned int)maximumTransmissionUnit; /** @@ -143,35 +143,35 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * Binding should be done for server sockets that receive data prior to sending it. * Client sockets can skip binding, * as the OS will automatically assign the socket an available port when it starts sending data. - * + * * You cannot bind a socket after its been connected. * You can only bind a socket once. * You can still connect a socket (if desired) after binding. - * + * * On success, returns YES. * Otherwise returns NO, and sets errPtr. If you don't care about the error, you can pass nil for errPtr. -**/ + **/ - (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr; - (BOOL)bindToAddress:(NSString *)localAddr port:(UInt16)port error:(NSError **)errPtr; /** * Connects the UDP socket to the given host and port. * By design, UDP is a connectionless protocol, and connecting is not needed. - * + * * Choosing to connect to a specific host/port has the following effect: * - You will only be able to send data to the connected host/port. * - You will only be able to receive data from the connected host/port. * - You will receive ICMP messages that come from the connected host/port, such as "connection refused". - * + * * Connecting a UDP socket does not result in any communication on the socket. * It simply changes the internal state of the socket. - * + * * You cannot bind a socket after its been connected. * You can only connect a socket once. - * + * * On success, returns YES. * Otherwise returns NO, and sets errPtr. If you don't care about the error, you can pass nil for errPtr. -**/ + **/ - (BOOL)connectToHost:(NSString *)host onPort:(UInt16)port error:(NSError **)errPtr; - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr; @@ -179,63 +179,63 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * Join multicast group * * Group should be an IP address (eg @"225.228.0.1") -**/ + **/ - (BOOL)joinMulticastGroup:(NSString *)group error:(NSError **)errPtr; - (BOOL)joinMulticastGroup:(NSString *)group withAddress:(NSString *)interface error:(NSError **)errPtr; /** * By default, the underlying socket in the OS will not allow you to send broadcast messages. * In order to send broadcast messages, you need to enable this functionality in the socket. - * + * * A broadcast is a UDP message to addresses like "192.168.255.255" or "255.255.255.255" that is * delivered to every host on the network. * The reason this is generally disabled by default is to prevent * accidental broadcast messages from flooding the network. -**/ + **/ - (BOOL)enableBroadcast:(BOOL)flag error:(NSError **)errPtr; /** * Asynchronously sends the given data, with the given timeout and tag. - * + * * This method may only be used with a connected socket. - * + * * If data is nil or zero-length, this method does nothing and immediately returns NO. * If the socket is not connected, this method does nothing and immediately returns NO. -**/ + **/ - (BOOL)sendData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Asynchronously sends the given data, with the given timeout and tag, to the given host and port. - * + * * This method cannot be used with a connected socket. - * + * * If data is nil or zero-length, this method does nothing and immediately returns NO. * If the socket is connected, this method does nothing and immediately returns NO. * If unable to resolve host to a valid IPv4 or IPv6 address, this method returns NO. -**/ + **/ - (BOOL)sendData:(NSData *)data toHost:(NSString *)host port:(UInt16)port withTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Asynchronously sends the given data, with the given timeout and tag, to the given address. - * + * * This method cannot be used with a connected socket. - * + * * If data is nil or zero-length, this method does nothing and immediately returns NO. * If the socket is connected, this method does nothing and immediately returns NO. -**/ + **/ - (BOOL)sendData:(NSData *)data toAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Asynchronously receives a single datagram packet. - * + * * If the receive succeeds, the onUdpSocket:didReceiveData:fromHost:port:tag delegate method will be called. * Otherwise, a timeout will occur, and the onUdpSocket:didNotReceiveDataWithTag: delegate method will be called. -**/ + **/ - (void)receiveWithTimeout:(NSTimeInterval)timeout tag:(long)tag; /** * Closes the socket immediately. Any pending send or receive operations are dropped. -**/ + **/ - (void)close; /** @@ -243,7 +243,7 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * After calling this, the sendData: and receive: methods will do nothing. * In other words, you won't be able to add any more send or receive operations to the queue. * The socket will close even if there are still pending receive operations. -**/ + **/ - (void)closeAfterSending; /** @@ -251,62 +251,62 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * After calling this, the sendData: and receive: methods will do nothing. * In other words, you won't be able to add any more send or receive operations to the queue. * The socket will close even if there are still pending send operations. -**/ + **/ - (void)closeAfterReceiving; /** * Closes after all pending send and receive operations have completed. * After calling this, the sendData: and receive: methods will do nothing. * In other words, you won't be able to add any more send or receive operations to the queue. -**/ + **/ - (void)closeAfterSendingAndReceiving; /** * Gets/Sets the maximum size of the buffer that will be allocated for receive operations. * The default size is 9216 bytes. - * + * * The theoretical maximum size of any IPv4 UDP packet is UINT16_MAX = 65535. * The theoretical maximum size of any IPv6 UDP packet is UINT32_MAX = 4294967295. - * + * * In practice, however, the size of UDP packets will be much smaller. * Indeed most protocols will send and receive packets of only a few bytes, * or will set a limit on the size of packets to prevent fragmentation in the IP layer. - * + * * If you set the buffer size too small, the sockets API in the OS will silently discard * any extra data, and you will not be notified of the error. -**/ + **/ - (UInt32)maxReceiveBufferSize; - (void)setMaxReceiveBufferSize:(UInt32)max; /** * When you create an AsyncUdpSocket, it is added to the runloop of the current thread. * So it is easiest to simply create the socket on the thread you intend to use it. - * + * * If, however, you need to move the socket to a separate thread at a later time, this * method may be used to accomplish the task. - * + * * This method must be called from the thread/runloop the socket is currently running on. - * + * * Note: After calling this method, all further method calls to this object should be done from the given runloop. * Also, all delegate calls will be sent on the given runloop. -**/ + **/ - (BOOL)moveToRunLoop:(NSRunLoop *)runLoop; /** * Allows you to configure which run loop modes the socket uses. * The default set of run loop modes is NSDefaultRunLoopMode. - * + * * If you'd like your socket to continue operation during other modes, you may want to add modes such as * NSModalPanelRunLoopMode or NSEventTrackingRunLoopMode. Or you may simply want to use NSRunLoopCommonModes. - * + * * Note: NSRunLoopCommonModes is defined in 10.5. For previous versions one can use kCFRunLoopCommonModes. -**/ + **/ - (BOOL)setRunLoopModes:(NSArray *)runLoopModes; /** * Returns the current run loop modes the AsyncSocket instance is operating in. * The default set of run loop modes is NSDefaultRunLoopMode. -**/ + **/ - (NSArray *)runLoopModes; @end @@ -320,18 +320,18 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; /** * Called when the datagram with the given tag has been sent. -**/ + **/ - (void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag; /** * Called if an error occurs while trying to send a datagram. * This could be due to a timeout, or something more serious such as the data being too large to fit in a sigle packet. -**/ + **/ - (void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error; /** * Called when the socket has received the requested datagram. - * + * * Due to the nature of UDP, you may occasionally receive undesired packets. * These may be rogue UDP packets from unknown hosts, * or they may be delayed packets arriving after retransmissions have already occurred. @@ -344,21 +344,21 @@ typedef enum AsyncUdpSocketError AsyncUdpSocketError; * If rogue data arrives after 250 milliseconds, this delegate method would be invoked, and you could simply return NO. * If the expected data then arrives within the next 250 milliseconds, * this delegate method will be invoked, with a tag of 15, just as if the rogue data never appeared. - * + * * Under normal circumstances, you simply return YES from this method. -**/ + **/ - (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port; /** * Called if an error occurs while trying to receive a requested datagram. * This is generally due to a timeout, but could potentially be something else if some kind of OS error occurred. -**/ + **/ - (void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error; /** * Called when the socket is closed. * A socket is only closed if you explicitly call one of the close methods. -**/ + **/ - (void)onUdpSocketDidClose:(AsyncUdpSocket *)sock; @end diff --git a/iphone/Classes/AsyncUdpSocket.m b/iphone/Classes/AsyncUdpSocket.m index 5742a55ded9..d83a36127d1 100644 --- a/iphone/Classes/AsyncUdpSocket.m +++ b/iphone/Classes/AsyncUdpSocket.m @@ -116,7 +116,7 @@ - (void)doReceiveTimeout:(NSTimer *)timer; /** * The AsyncSendPacket encompasses the instructions for a single send/write. -**/ + **/ @interface AsyncSendPacket : NSObject { @public NSData *buffer; @@ -155,7 +155,7 @@ - (void)dealloc /** * The AsyncReceivePacket encompasses the instructions for a single receive/read. -**/ + **/ @interface AsyncReceivePacket : NSObject { @public NSTimeInterval timeout; @@ -395,7 +395,7 @@ - (void)setMaxReceiveBufferSize:(UInt32)max /** * See the header file for a full explanation of this method. -**/ + **/ - (BOOL)moveToRunLoop:(NSRunLoop *)runLoop { NSAssert((theRunLoop == NULL) || (theRunLoop == CFRunLoopGetCurrent()), @@ -452,7 +452,7 @@ - (BOOL)moveToRunLoop:(NSRunLoop *)runLoop /** * See the header file for a full explanation of this method. -**/ + **/ - (BOOL)setRunLoopModes:(NSArray *)runLoopModes { NSAssert((theRunLoop == NULL) || (theRunLoop == CFRunLoopGetCurrent()), @@ -522,7 +522,7 @@ - (NSArray *)runLoopModes * The data structure is of type sockaddr_in for IPv4 and sockaddr_in6 for IPv6. * * Returns zero on success, or one of the error codes listed in gai_strerror if an error occurs (as per getaddrinfo). -**/ + **/ - (int)convertForBindHost:(NSString *)host port:(UInt16)port intoAddress4:(NSData **)address4 @@ -623,7 +623,7 @@ - (int)convertForBindHost:(NSString *)host * The data structure is of type sockaddr_in for IPv4 and sockaddr_in6 for IPv6. * * Returns zero on success, or one of the error codes listed in gai_strerror if an error occurs (as per getaddrinfo). -**/ + **/ - (int)convertForSendHost:(NSString *)host port:(UInt16)port intoAddress4:(NSData **)address4 @@ -736,10 +736,10 @@ - (NSString *)addressHost:(struct sockaddr *)pSockaddr /** * Binds the underlying socket(s) to the given port. * The socket(s) will be able to receive data on any interface. - * + * * On success, returns YES. * Otherwise returns NO, and sets errPtr. If you don't care about the error, you can pass nil for errPtr. -**/ + **/ - (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr { return [self bindToAddress:nil port:port error:errPtr]; @@ -748,13 +748,13 @@ - (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr /** * Binds the underlying socket(s) to the given address and port. * The sockets(s) will be able to receive data only on the given interface. - * + * * To receive data on any interface, pass nil or "". * To receive data only on the loopback interface, pass "localhost" or "loopback". - * + * * On success, returns YES. * Otherwise returns NO, and sets errPtr. If you don't care about the error, you can pass nil for errPtr. -**/ + **/ - (BOOL)bindToAddress:(NSString *)host port:(UInt16)port error:(NSError **)errPtr { if (theFlags & kDidClose) { @@ -846,10 +846,10 @@ - (BOOL)bindToAddress:(NSString *)host port:(UInt16)port error:(NSError **)errPt * Connects the underlying UDP socket to the given host and port. * If an IPv4 address is resolved, the IPv4 socket is connected, and the IPv6 socket is invalidated and released. * If an IPv6 address is resolved, the IPv6 socket is connected, and the IPv4 socket is invalidated and released. - * + * * On success, returns YES. * Otherwise returns NO, and sets errPtr. If you don't care about the error, you can pass nil for errPtr. -**/ + **/ - (BOOL)connectToHost:(NSString *)host onPort:(UInt16)port error:(NSError **)errPtr { if (theFlags & kDidClose) { @@ -934,13 +934,13 @@ - (BOOL)connectToHost:(NSString *)host onPort:(UInt16)port error:(NSError **)err * Connects the underlying UDP socket to the remote address. * If the address is an IPv4 address, the IPv4 socket is connected, and the IPv6 socket is invalidated and released. * If the address is an IPv6 address, the IPv6 socket is connected, and the IPv4 socket is invalidated and released. - * + * * The address is a native address structure, as may be returned from API's such as Bonjour. * An address may be created manually by simply wrapping a sockaddr_in or sockaddr_in6 in an NSData object. - * + * * On success, returns YES. * Otherwise returns NO, and sets errPtr. If you don't care about the error, you can pass nil for errPtr. -**/ + **/ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr { if (theFlags & kDidClose) { @@ -1013,7 +1013,7 @@ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr * * Group should be a multicast IP address (eg. @"239.255.250.250" for IPv4). * Address is local interface for IPv4, but currently defaults under IPv6. -**/ + **/ - (BOOL)joinMulticastGroup:(NSString *)group error:(NSError **)errPtr { return [self joinMulticastGroup:group withAddress:nil error:errPtr]; @@ -1138,12 +1138,12 @@ - (BOOL)joinMulticastGroup:(NSString *)group withAddress:(NSString *)address err /** * By default, the underlying socket in the OS will not allow you to send broadcast messages. * In order to send broadcast messages, you need to enable this functionality in the socket. - * + * * A broadcast is a UDP message to addresses like "192.168.255.255" or "255.255.255.255" that is * delivered to every host on the network. * The reason this is generally disabled by default is to prevent * accidental broadcast messages from flooding the network. -**/ + **/ - (BOOL)enableBroadcast:(BOOL)flag error:(NSError **)errPtr { if (theSocket4) { @@ -1294,7 +1294,7 @@ - (void)maybeScheduleClose /** * Returns a standard error object for the current errno value. * Errno is used for low-level BSD socket errors. -**/ + **/ - (NSError *)getErrnoError { NSString *errorMsg = [NSString stringWithUTF8String:strerror(errno)]; @@ -1306,7 +1306,7 @@ - (NSError *)getErrnoError /** * Returns a standard error message for a CFSocket error. * Unfortunately, CFSocket offers no feedback on its errors. -**/ + **/ - (NSError *)getSocketError { NSString *errMsg = @"General CFSocket error"; @@ -1723,7 +1723,7 @@ - (CFSocketRef)socketForPacket:(AsyncSendPacket *)packet /** * Puts a maybeDequeueSend on the run loop. -**/ + **/ - (void)scheduleDequeueSend { if ((theFlags & kDequeueSendScheduled) == 0) { @@ -1735,7 +1735,7 @@ - (void)scheduleDequeueSend /** * This method starts a new send, if needed. * It is called when a user requests a send. -**/ + **/ - (void)maybeDequeueSend { // Unset the flag indicating a call to this method is scheduled @@ -1774,7 +1774,7 @@ - (void)maybeDequeueSend /** * This method is called when a new read is taken from the read queue or when new data becomes available on the stream. -**/ + **/ - (void)doSend:(CFSocketRef)theSocket { if (theCurrentSend != nil) { @@ -1847,7 +1847,7 @@ - (void)failCurrentSend:(NSError *)error /** * Ends the current send, and all associated variables such as the send timer. -**/ + **/ - (void)endCurrentSend { NSAssert(theCurrentSend, @"Trying to end current send when there is no current send."); @@ -1918,7 +1918,7 @@ - (BOOL)hasBytesAvailable:(CFSocketRef)sockRef /** * Puts a maybeDequeueReceive on the run loop. -**/ + **/ - (void)scheduleDequeueReceive { if ((theFlags & kDequeueReceiveScheduled) == 0) { @@ -1929,7 +1929,7 @@ - (void)scheduleDequeueReceive /** * Starts a new receive operation if needed -**/ + **/ - (void)maybeDequeueReceive { // Unset the flag indicating a call to this method is scheduled @@ -2190,7 +2190,7 @@ - (void)doCFSocketCallback:(CFSocketCallBackType)type /** * This is the callback we setup for CFSocket. * This method does nothing but forward the call to it's Objective-C counterpart -**/ + **/ static void MyCFSocketCallback(CFSocketRef sref, CFSocketCallBackType type, CFDataRef address, const void *pData, void *pInfo) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; diff --git a/iphone/Classes/CalendarModule.m b/iphone/Classes/CalendarModule.m index 6054f178140..dc018f1e66b 100644 --- a/iphone/Classes/CalendarModule.m +++ b/iphone/Classes/CalendarModule.m @@ -146,8 +146,8 @@ - (TiCalendarCalendar *)getCalendarById:(NSString *)calendarId } EKCalendar *calendar_ = NULL; - //Instead of getting calendar by identifier, have to get all and check for match - //not optimal but best way to fix non existing shared calendar error + // Instead of getting calendar by identifier, have to get all and check for match + // not optimal but best way to fix non existing shared calendar error NSArray *allCalendars = [ourStore calendarsForEntityType:EKEntityTypeEvent]; for (EKCalendar *cal in allCalendars) { if ([cal.calendarIdentifier isEqualToString:calendarId]) { diff --git a/iphone/Classes/ContactsModule.m b/iphone/Classes/ContactsModule.m index bd5c6c5c0d6..b4dafd405ed 100644 --- a/iphone/Classes/ContactsModule.m +++ b/iphone/Classes/ContactsModule.m @@ -62,7 +62,7 @@ - (void)startup _includeNote = YES; } -//used for fetch predicates. +// used for fetch predicates. + (NSArray *)contactKeysWithImage { if (contactKeysWithImage == nil) { @@ -71,7 +71,7 @@ + (NSArray *)contactKeysWithImage return contactKeysWithImage; } -//reserved for future use +// reserved for future use + (NSArray *)contactKeysWithoutImage { if (contactKeysWithoutImage == nil) { @@ -90,9 +90,9 @@ - (void)dealloc RELEASE_TO_NIL(contactStore) saveRequest = nil; RELEASE_TO_NIL(contactPicker) - [[NSNotificationCenter defaultCenter] removeObserver:self - name:CNContactStoreDidChangeNotification - object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:CNContactStoreDidChangeNotification + object:nil]; [super dealloc]; } @@ -326,7 +326,7 @@ - (NSArray *)getPeopleWithName:(id)arg if (!_includeNote) { [contactKeys removeObject:CNContactNoteKey]; } - //returns empty array or nil if there's an error + // returns empty array or nil if there's an error contacts = [ourContactStore unifiedContactsMatchingPredicate:[CNContact predicateForContactsMatchingName:arg] keysToFetch:contactKeys error:&error]; if (!contacts) { return nil; @@ -562,9 +562,9 @@ - (void)contactPicker:(nonnull CNContactPickerViewController *)picker didSelectC result = value; } if ([value isKindOfClass:[NSDateComponents class]]) { - //this part of the code is supposed to work for birthday and alternateBirthday - //but iOS9 Beta is giving a null value for these properties in `value`, so only - //processing `anniversary` and `other` here. + // this part of the code is supposed to work for birthday and alternateBirthday + // but iOS9 Beta is giving a null value for these properties in `value`, so only + // processing `anniversary` and `other` here. // if ([contactProperty.key isEqualToString:CNContactNonGregorianBirthdayKey]) { // NSDateComponents *dateComps = (NSDateComponents*)value; // result = [NSDictionary dictionaryWithObjectsAndKeys: dateComps.calendar.calendarIdentifier,@"calendarIdentifier",NUMLONG(dateComps.era),@"era",NUMLONG(dateComps.year),@"year",NUMLONG(dateComps.month),@"month",NUMLONG(dateComps.day),@"day",NUMBOOL(dateComps.isLeapMonth),@"isLeapMonth", nil]; diff --git a/iphone/Classes/FilesystemModule.m b/iphone/Classes/FilesystemModule.m index 6dd780edd3e..ab5ea489f5e 100644 --- a/iphone/Classes/FilesystemModule.m +++ b/iphone/Classes/FilesystemModule.m @@ -37,7 +37,7 @@ - (NSString *)pathFromComponents:(NSArray *)args NSString *first = [[args objectAtIndex:0] toString]; if ([first hasPrefix:@"file://"]) { NSURL *fileUrl = [NSURL URLWithString:first]; - //Why not just crop? Because the url may have some things escaped that need to be unescaped. + // Why not just crop? Because the url may have some things escaped that need to be unescaped. newpath = [fileUrl path]; } else if ([first characterAtIndex:0] != '/') { NSURL *url = [NSURL URLWithString:[self resourcesDirectory]]; @@ -83,7 +83,7 @@ - (JSValue *)openStream:(TiStreamMode)mode if (fileProxy != nil) { NSArray *payload = @[ [NSNumber numberWithInt:mode] ]; TiStreamProxy *streamProxy = [fileProxy open:payload]; - streamProxy.executionContext = self.executionContext; //TIMOB-28324 Should we pass this executionContext in open function of TiFilesystemFileProxy? + streamProxy.executionContext = self.executionContext; // TIMOB-28324 Should we pass this executionContext in open function of TiFilesystemFileProxy? if (streamProxy != nil) { return [self NativeToJSValue:streamProxy]; } @@ -112,8 +112,8 @@ - (TiStreamMode)MODE_WRITE - (bool)isExternalStoragePresent { - //IOS treats the camera connection kit as just that, and does not allow - //R/W access to it, which is just as well as it'd mess up cameras. + // IOS treats the camera connection kit as just that, and does not allow + // R/W access to it, which is just as well as it'd mess up cameras. return NO; } @@ -218,11 +218,11 @@ - (TiBlob *)getAsset if (range.location != NSNotFound) { NSString *imageArg = nil; if ([TiUtils isMacOS]) { - imageArg = [newpath substringFromIndex:range.location + 24]; //Contents/Resources/ for mac + imageArg = [newpath substringFromIndex:range.location + 24]; // Contents/Resources/ for mac } else { imageArg = [newpath substringFromIndex:range.location + 5]; } - //remove suffixes. + // remove suffixes. imageArg = [imageArg stringByReplacingOccurrencesOfString:@"@3x" withString:@""]; imageArg = [imageArg stringByReplacingOccurrencesOfString:@"@2x" withString:@""]; imageArg = [imageArg stringByReplacingOccurrencesOfString:@"~iphone" withString:@""]; diff --git a/iphone/Classes/GDataXMLNode.h b/iphone/Classes/GDataXMLNode.h index 2965471d6e6..9eb14bf11e2 100644 --- a/iphone/Classes/GDataXMLNode.h +++ b/iphone/Classes/GDataXMLNode.h @@ -160,7 +160,7 @@ typedef NSUInteger GDataXMLNodeKind; + (id)nodeBorrowingXMLNode:(xmlNodePtr)theXMLNode; + (id)nodeConsumingXMLNode:(xmlNodePtr)theXMLNode; -//ADDITIONS FOR DOM MODULE +// ADDITIONS FOR DOM MODULE - (void)setShouldFreeXMLNode:(BOOL)flag; + (id)createNewDocFragment; @@ -190,7 +190,7 @@ typedef NSUInteger GDataXMLNodeKind; - (void)addAttribute:(GDataXMLNode *)attribute; - (NSString *)resolvePrefixForNamespaceURI:(NSString *)namespaceURI; -//Need to make this visible. Used in appendChild of ElementProxy +// Need to make this visible. Used in appendChild of ElementProxy + (void)fixUpNamespacesForNode:(xmlNodePtr)nodeToFix graftingToTreeNode:(xmlNodePtr)graftPointNode; @end @@ -224,7 +224,7 @@ typedef NSUInteger GDataXMLNodeKind; - (NSString *)description; -//ADDITIONS FOR DOM MODULE +// ADDITIONS FOR DOM MODULE - (id)importNode:(GDataXMLNode *)theNode recursive:(BOOL)deep; - (id)entityRefForName:(NSString *)theName; - (xmlDtdPtr)intDTD; diff --git a/iphone/Classes/GeolocationModule.h b/iphone/Classes/GeolocationModule.h index a9e645e29bb..8d383c7c4f4 100644 --- a/iphone/Classes/GeolocationModule.h +++ b/iphone/Classes/GeolocationModule.h @@ -46,7 +46,7 @@ CONSTANT(NSNumber *, AUTHORIZATION_RESTRICTED); CONSTANT(NSNumber *, AUTHORIZATION_UNKNOWN); CONSTANT(NSNumber *, AUTHORIZATION_WHEN_IN_USE); -//Accuracy Authorization to use location +// Accuracy Authorization to use location CONSTANT(NSNumber *, ACCURACY_AUTHORIZATION_FULL); CONSTANT(NSNumber *, ACCURACY_AUTHORIZATION_REDUCED); diff --git a/iphone/Classes/GeolocationModule.m b/iphone/Classes/GeolocationModule.m index 992bb8e3f1b..c0a70906140 100644 --- a/iphone/Classes/GeolocationModule.m +++ b/iphone/Classes/GeolocationModule.m @@ -28,7 +28,7 @@ @implementation GeolocationCallback - (id)initWithCallback:(JSValue *)callback_ andPromise:(KrollPromise *)promise_ { - //Ignore analyzer warning here. Delegate will call autorelease onLoad or onError. + // Ignore analyzer warning here. Delegate will call autorelease onLoad or onError. if (self = [super init]) { // FIXME Use JSManagedValue here? if (![callback_ isUndefined]) { // guard against user not supplying a callback function! @@ -1107,13 +1107,13 @@ - (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatu } } -//Using new delegate instead of the old deprecated method - (void)locationManager:didUpdateToLocation:fromLocation: +// Using new delegate instead of the old deprecated method - (void)locationManager:didUpdateToLocation:fromLocation: - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { NSDictionary *todict = [self locationDictionary:[locations lastObject]]; - //Must use dictionary because of singleshot. + // Must use dictionary because of singleshot. NSMutableDictionary *event = [TiUtils dictionaryWithCode:0 message:nil]; [event setObject:todict forKey:@"coords"]; if ([self _hasListeners:@"location"]) { @@ -1159,7 +1159,7 @@ - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError * - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { - //Unfortunately, because of the single shot overloaded here, we can't use the faster eventing. + // Unfortunately, because of the single shot overloaded here, we can't use the faster eventing. NSMutableDictionary *event = [TiUtils dictionaryWithCode:0 message:nil]; [event setObject:[self headingDictionary:newHeading] forKey:@"heading"]; diff --git a/iphone/Classes/GestureModule.m b/iphone/Classes/GestureModule.m index d7d862b01e3..58fa2a98f2f 100644 --- a/iphone/Classes/GestureModule.m +++ b/iphone/Classes/GestureModule.m @@ -42,7 +42,7 @@ - (void)rotateEvent:(NSNotification *)sender - (void)registerForShake { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shakeEvent:) name:kTiGestureShakeNotification @@ -52,7 +52,7 @@ - (void)registerForShake - (void)registerForOrientation { [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rotateEvent:) name:UIDeviceOrientationDidChangeNotification @@ -79,7 +79,7 @@ - (void)_listenerAdded:(NSString *)type count:(int)count - (void)unregisterForNotificationNamed:(NSString *)oldNotification { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self name:oldNotification object:nil]; } diff --git a/iphone/Classes/LauncherButton.m b/iphone/Classes/LauncherButton.m index 41098bda9fb..10de4f71b88 100644 --- a/iphone/Classes/LauncherButton.m +++ b/iphone/Classes/LauncherButton.m @@ -65,7 +65,7 @@ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *superResult = [super hitTest:point withEvent:event]; if (!editing && (superResult == self)) { - //TIMOB-11275 Ignore all touches if not in button frame and not editing + // TIMOB-11275 Ignore all touches if not in button frame and not editing CGRect buttonFrame = [button frame]; if (CGRectContainsPoint(buttonFrame, point)) { return superResult; diff --git a/iphone/Classes/Layout/TiLayoutDimension.h b/iphone/Classes/Layout/TiLayoutDimension.h index f10167bface..92d5d33c60a 100644 --- a/iphone/Classes/Layout/TiLayoutDimension.h +++ b/iphone/Classes/Layout/TiLayoutDimension.h @@ -27,7 +27,7 @@ extern NSString *const kTiUnitPercent; #define TI_INLINE static __inline__ -//Not a class for speed reasons, like LayoutConstraint. +// Not a class for speed reasons, like LayoutConstraint. typedef enum { TiDimensionTypeUndefined, @@ -44,8 +44,8 @@ typedef enum { struct TiDimension { TiDimensionType type; CGFloat value; - //If type is TiDimensionTypeDip, value is a Dip constant, - //If type is TiDimensionTypePercent, value ranges from 0 (0%) to 1.0 (100%) + // If type is TiDimensionTypeDip, value is a Dip constant, + // If type is TiDimensionTypePercent, value ranges from 0 (0%) to 1.0 (100%) }; typedef struct TiDimension TiDimension; @@ -154,7 +154,7 @@ TI_INLINE CGFloat TiDimensionCalculateMargins(TiDimension dimension1, TiDimensio return boundingValue - (TiDimensionCalculateValue(dimension1, boundingValue) + TiDimensionCalculateValue(dimension2, boundingValue)); } -//TODO: Do these ALL have to be TI_INLINE? +// TODO: Do these ALL have to be TI_INLINE? TI_INLINE CGRect TiDimensionLayerContentCenter(TiDimension top, TiDimension left, TiDimension bottom, TiDimension right, CGSize imageSize) { CGRect result; diff --git a/iphone/Classes/MediaModule.m b/iphone/Classes/MediaModule.m index 5fd040994d1..84438b21a69 100644 --- a/iphone/Classes/MediaModule.m +++ b/iphone/Classes/MediaModule.m @@ -234,7 +234,7 @@ - (NSString *)apiName MAKE_SYSTEM_STR(AUDIO_SESSION_PORT_BLUETOOTHLE, AVAudioSessionPortBluetoothLE) MAKE_SYSTEM_STR(AUDIO_SESSION_PORT_CARAUDIO, AVAudioSessionPortCarAudio) -//Constants for AudioSessions +// Constants for AudioSessions MAKE_SYSTEM_STR(AUDIO_SESSION_CATEGORY_AMBIENT, AVAudioSessionCategoryAmbient); MAKE_SYSTEM_STR(AUDIO_SESSION_CATEGORY_SOLO_AMBIENT, AVAudioSessionCategorySoloAmbient); MAKE_SYSTEM_STR(AUDIO_SESSION_CATEGORY_PLAYBACK, AVAudioSessionCategoryPlayback); @@ -269,7 +269,7 @@ - (NSString *)apiName MAKE_SYSTEM_PROP(AUDIO_STATE_STOPPED, TiAudioPlayerStateStopped); MAKE_SYSTEM_PROP(AUDIO_STATE_PAUSED, TiAudioPlayerStatePaused); -//Constants for Camera +// Constants for Camera #if defined(USE_TI_MEDIACAMERA_FRONT) || defined(USE_TI_MEDIACAMERA_REAR) || defined(USE_TI_MEDIACAMERA_FLASH_OFF) || defined(USE_TI_MEDIACAMERA_FLASH_AUTO) || defined(USE_TI_MEDIACAMERA_FLASH_ON) MAKE_SYSTEM_PROP(CAMERA_FRONT, UIImagePickerControllerCameraDeviceFront); MAKE_SYSTEM_PROP(CAMERA_REAR, UIImagePickerControllerCameraDeviceRear); @@ -279,7 +279,7 @@ - (NSString *)apiName MAKE_SYSTEM_PROP(CAMERA_FLASH_ON, UIImagePickerControllerCameraFlashModeOn); #endif -//Constants for mediaTypes in openMusicLibrary +// Constants for mediaTypes in openMusicLibrary #if defined(USE_TI_MEDIAOPENMUSICLIBRARY) || defined(USE_TI_MEDIAQUERYMUSICLIBRARY) MAKE_SYSTEM_PROP(MUSIC_MEDIA_TYPE_MUSIC, MPMediaTypeMusic); MAKE_SYSTEM_PROP(MUSIC_MEDIA_TYPE_PODCAST, MPMediaTypePodcast); @@ -290,7 +290,7 @@ - (NSNumber *)MUSIC_MEDIA_TYPE_ALL return NUMUINTEGER(MPMediaTypeAny); } -//Constants for grouping in queryMusicLibrary +// Constants for grouping in queryMusicLibrary MAKE_SYSTEM_PROP(MUSIC_MEDIA_GROUP_TITLE, MPMediaGroupingTitle); MAKE_SYSTEM_PROP(MUSIC_MEDIA_GROUP_ALBUM, MPMediaGroupingAlbum); MAKE_SYSTEM_PROP(MUSIC_MEDIA_GROUP_ARTIST, MPMediaGroupingArtist); @@ -302,7 +302,7 @@ - (NSNumber *)MUSIC_MEDIA_TYPE_ALL #endif #if defined(USE_TI_MEDIAGETAPPMUSICPLAYER) || defined(USE_TI_MEDIAAPPMUSICPLAYER) || defined(USE_TI_MEDIAGETSYSTEMMUSICPLAYER) || defined(USE_TI_MEDIASYSTEMMUSICPLAYER) -//Constants for MusicPlayer playback state +// Constants for MusicPlayer playback state MAKE_SYSTEM_PROP(MUSIC_PLAYER_STATE_STOPPED, MPMusicPlaybackStateStopped); MAKE_SYSTEM_PROP(MUSIC_PLAYER_STATE_PLAYING, MPMusicPlaybackStatePlaying); MAKE_SYSTEM_PROP(MUSIC_PLAYER_STATE_PAUSED, MPMusicPlaybackStatePaused); @@ -310,32 +310,32 @@ - (NSNumber *)MUSIC_MEDIA_TYPE_ALL MAKE_SYSTEM_PROP(MUSIC_PLAYER_STATE_SEEK_FORWARD, MPMusicPlaybackStateSeekingForward); MAKE_SYSTEM_PROP(MUSIC_PLAYER_STATE_SEEK_BACKWARD, MPMusicPlaybackStateSeekingBackward); -//Constants for MusicPlayer repeatMode +// Constants for MusicPlayer repeatMode MAKE_SYSTEM_PROP(MUSIC_PLAYER_REPEAT_DEFAULT, MPMusicRepeatModeDefault); MAKE_SYSTEM_PROP(MUSIC_PLAYER_REPEAT_NONE, MPMusicRepeatModeNone); MAKE_SYSTEM_PROP(MUSIC_PLAYER_REPEAT_ONE, MPMusicRepeatModeOne); MAKE_SYSTEM_PROP(MUSIC_PLAYER_REPEAT_ALL, MPMusicRepeatModeAll); -//Constants for MusicPlayer shuffleMode +// Constants for MusicPlayer shuffleMode MAKE_SYSTEM_PROP(MUSIC_PLAYER_SHUFFLE_DEFAULT, MPMusicShuffleModeDefault); MAKE_SYSTEM_PROP(MUSIC_PLAYER_SHUFFLE_NONE, MPMusicShuffleModeOff); MAKE_SYSTEM_PROP(MUSIC_PLAYER_SHUFFLE_SONGS, MPMusicShuffleModeSongs); MAKE_SYSTEM_PROP(MUSIC_PLAYER_SHUFFLE_ALBUMS, MPMusicShuffleModeAlbums); #endif -//Error constants for MediaModule +// Error constants for MediaModule MAKE_SYSTEM_PROP(UNKNOWN_ERROR, MediaModuleErrorUnknown); MAKE_SYSTEM_PROP(DEVICE_BUSY, MediaModuleErrorBusy); MAKE_SYSTEM_PROP(NO_CAMERA, MediaModuleErrorNoCamera); MAKE_SYSTEM_PROP(NO_VIDEO, MediaModuleErrorNoVideo); MAKE_SYSTEM_PROP(NO_MUSIC_PLAYER, MediaModuleErrorNoMusicPlayer); -//Constants for mediaTypes in showCamera +// Constants for mediaTypes in showCamera #if defined(USE_TI_MEDIASHOWCAMERA) || defined(USE_TI_MEDIAOPENPHOTOGALLERY) MAKE_SYSTEM_STR(MEDIA_TYPE_VIDEO, kUTTypeMovie); MAKE_SYSTEM_STR(MEDIA_TYPE_PHOTO, kUTTypeImage); MAKE_SYSTEM_STR(MEDIA_TYPE_LIVEPHOTO, kUTTypeLivePhoto); -//Constants for videoQuality for Video Editing +// Constants for videoQuality for Video Editing MAKE_SYSTEM_PROP(QUALITY_HIGH, UIImagePickerControllerQualityTypeHigh); MAKE_SYSTEM_PROP(QUALITY_MEDIUM, UIImagePickerControllerQualityTypeMedium); MAKE_SYSTEM_PROP(QUALITY_LOW, UIImagePickerControllerQualityTypeLow); @@ -450,11 +450,11 @@ - (void)setOverrideAudioRoute:(NSNumber *)mode - (void)_listenerAdded:(NSString *)type count:(int)count { if (count == 1 && [type isEqualToString:@"routechange"]) { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe [[TiMediaAudioSession sharedSession] startAudioSession]; // Have to start a session to get a listener [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioRouteChanged:) name:kTiMediaAudioSessionRouteChange object:[TiMediaAudioSession sharedSession]]; } else if (count == 1 && [type isEqualToString:@"volume"]) { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[TiMediaAudioSession sharedSession] startAudioSession]; // Have to start a session to get a listener [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioVolumeChanged:) name:kTiMediaAudioSessionVolumeChange object:[TiMediaAudioSession sharedSession]]; } @@ -463,11 +463,11 @@ - (void)_listenerAdded:(NSString *)type count:(int)count - (void)_listenerRemoved:(NSString *)type count:(int)count { if (count == 0 && [type isEqualToString:@"routechange"]) { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[TiMediaAudioSession sharedSession] stopAudioSession]; [[NSNotificationCenter defaultCenter] removeObserver:self name:kTiMediaAudioSessionRouteChange object:[TiMediaAudioSession sharedSession]]; } else if (count == 0 && [type isEqualToString:@"volume"]) { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[TiMediaAudioSession sharedSession] stopAudioSession]; [[NSNotificationCenter defaultCenter] removeObserver:self name:kTiMediaAudioSessionVolumeChange object:[TiMediaAudioSession sharedSession]]; } @@ -577,7 +577,7 @@ - (void)beep:(id)unused - (void)vibrate:(id)args { - //No pattern support on iOS + // No pattern support on iOS [self beep:nil]; } #endif @@ -895,7 +895,7 @@ - (void)showCamera:(id)args - (void)hideCamera:(id)args { [self destroyPickerCallbacks]; - //Hopefully, if we remove the callbacks before going to the main thread, we may reduce deadlock. + // Hopefully, if we remove the callbacks before going to the main thread, we may reduce deadlock. ENSURE_UI_THREAD(hideCamera, args); if (picker != nil) { if (cameraView != nil) { @@ -973,7 +973,7 @@ - (void)switchCamera:(id)args } #endif -//Undocumented property +// Undocumented property #ifdef USE_TI_MEDIASHOWCAMERA - (id)camera { @@ -985,7 +985,7 @@ - (id)camera #endif #if defined(USE_TI_MEDIAREQUESTCAMERAPERMISSIONS) -//request camera access. for >= IOS7 +// request camera access. for >= IOS7 - (void)requestCameraPermissions:(id)arg { ENSURE_SINGLE_ARG(arg, KrollCallback); @@ -1276,7 +1276,7 @@ - (void)startVideoEditing:(id)args ENSURE_TYPE_OR_NIL(pickerCancelCallback, KrollCallback); [editorCancelCallback retain]; - //TODO: check canEditVideoAtPath + // TODO: check canEditVideoAtPath editor = [[UIVideoEditorController alloc] init]; editor.delegate = self; @@ -1373,7 +1373,7 @@ - (void)dispatchCallback:(NSArray *)args [self _fireEventToListener:type withObject:object listener:listener thisObject:nil]; [pool release]; - //TIMOB-24389: Force the heap to be GC'd to avoid Ti.Blob references to be dumped. + // TIMOB-24389: Force the heap to be GC'd to avoid Ti.Blob references to be dumped. KrollContext *krollContext = [self.pageContext krollContext]; [krollContext forceGarbageCollectNow]; } @@ -1639,7 +1639,7 @@ - (void)showPicker:(NSDictionary *)args isCamera:(BOOL)isCamera ENSURE_TYPE(transform, Ti2DMatrix); [picker setCameraViewTransform:[transform matrix]]; } else if (cameraView != nil && customPicker && ![TiUtils boolValue:@"showControls" properties:args def:YES]) { - //No transforms in popover + // No transforms in popover CGSize screenSize = [[UIScreen mainScreen] bounds].size; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if (!UIInterfaceOrientationIsPortrait(orientation)) { @@ -1933,7 +1933,7 @@ - (void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popover } } - //Fell through. + // Fell through. UIViewController *presentingController = [popoverPresentationController presentingViewController]; popoverPresentationController.sourceView = [presentingController view]; CGRect viewrect = [[presentingController view] bounds]; @@ -1945,7 +1945,7 @@ - (void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popover - (void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView **)view { - //This will never be called when using bar button item + // This will never be called when using bar button item UIView *theSourceView = *view; BOOL canUseSourceRect = (theSourceView == self.popoverView); rect->origin = CGPointMake(theSourceView.bounds.origin.x, theSourceView.bounds.origin.y); diff --git a/iphone/Classes/NetworkModule.m b/iphone/Classes/NetworkModule.m index 0571dd3125b..4af171a7ecd 100644 --- a/iphone/Classes/NetworkModule.m +++ b/iphone/Classes/NetworkModule.m @@ -49,7 +49,7 @@ - (void)_configure [super _configure]; // default to unknown network type on startup until reachability has figured it out state = TiNetworkConnectionStateUnknown; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; // wait until done is important to get the right state TiThreadPerformOnMainThread( @@ -66,7 +66,7 @@ - (void)_destroy [self stopReachability]; }, YES); - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil]; RELEASE_TO_NIL(pushNotificationCallback); RELEASE_TO_NIL(pushNotificationError); @@ -243,8 +243,8 @@ - (void)registerForPushNotifications:(id)args UIApplication *app = [UIApplication sharedApplication]; - //for iOS8 or greater only - //Note adviced to register user notification settings in Ti.App.iOS first before register for remote notifications + // for iOS8 or greater only + // Note adviced to register user notification settings in Ti.App.iOS first before register for remote notifications [app registerForRemoteNotifications]; if ([args objectForKey:@"types"] != nil) { diff --git a/iphone/Classes/Reachability.h b/iphone/Classes/Reachability.h index 4e0b427fe70..71317e73743 100644 --- a/iphone/Classes/Reachability.h +++ b/iphone/Classes/Reachability.h @@ -1,7 +1,7 @@ /* Copyright (C) 2016 Apple Inc. All Rights Reserved. See LICENSE.txt for this sample’s licensing information - + Abstract: Basic demonstration of how to use the SystemConfiguration Reachablity APIs. */ diff --git a/iphone/Classes/Reachability.m b/iphone/Classes/Reachability.m index b6c8bff99e7..c5a31e8e63d 100644 --- a/iphone/Classes/Reachability.m +++ b/iphone/Classes/Reachability.m @@ -1,7 +1,7 @@ /* Copyright (C) 2016 Apple Inc. All Rights Reserved. See LICENSE.txt for this sample’s licensing information - + Abstract: Basic demonstration of how to use the SystemConfiguration Reachablity APIs. */ diff --git a/iphone/Classes/TIDOMDOMImplementationProxy.m b/iphone/Classes/TIDOMDOMImplementationProxy.m index b2d4aebbf4e..ef61e871fc9 100644 --- a/iphone/Classes/TIDOMDOMImplementationProxy.m +++ b/iphone/Classes/TIDOMDOMImplementationProxy.m @@ -75,7 +75,7 @@ - (id)createDocument:(id)args ENSURE_STRING(qualifiedName); ENSURE_TYPE_OR_NIL(docType, TIDOMDocumentTypeProxy); - //Validate the parameters + // Validate the parameters NSString *error = nil; NSString *suberror = nil; @@ -88,7 +88,7 @@ - (id)createDocument:(id)args NSString *prefix = [GDataXMLNode prefixForName:qualifiedName]; NSString *localName = [GDataXMLNode localNameForName:qualifiedName]; - //Create the new NS pointer + // Create the new NS pointer xmlChar *pre = NULL; xmlChar *href = NULL; if (theURI != nil) { @@ -100,7 +100,7 @@ - (id)createDocument:(id)args xmlNsPtr theNewNs = xmlNewNs(NULL, // parent node href, pre); - //Create the doc node with root element + // Create the doc node with root element xmlNodePtr rootPtr = xmlNewNode(theNewNs, (xmlChar *)[localName UTF8String]); rootPtr->nsDef = theNewNs; xmlDocPtr doc = xmlNewDoc(NULL); @@ -110,7 +110,7 @@ - (id)createDocument:(id)args GDataXMLNode *docTypeNode = [docType node]; xmlNodePtr ret = xmlAddChild((xmlNodePtr)doc, [docTypeNode XMLNode]); if (ret != NULL) { - //Now it is part of the tree so switch flag to ensur it gets freed when doc is released + // Now it is part of the tree so switch flag to ensur it gets freed when doc is released [docTypeNode setShouldFreeXMLNode:NO]; } } diff --git a/iphone/Classes/TIDOMDocumentTypeProxy.m b/iphone/Classes/TIDOMDocumentTypeProxy.m index 84b9ba1a9b4..34027ac1699 100644 --- a/iphone/Classes/TIDOMDocumentTypeProxy.m +++ b/iphone/Classes/TIDOMDocumentTypeProxy.m @@ -22,12 +22,12 @@ - (id)nodeValue } - (id)entities { - //TODO + // TODO return [NSNull null]; } - (id)notations { - //TODO + // TODO return [NSNull null]; } - (id)name diff --git a/iphone/Classes/TiAnchorAttachBehavior.m b/iphone/Classes/TiAnchorAttachBehavior.m index bad603989e7..5e699beba29 100644 --- a/iphone/Classes/TiAnchorAttachBehavior.m +++ b/iphone/Classes/TiAnchorAttachBehavior.m @@ -61,7 +61,7 @@ - (UIDynamicBehavior *)behaviorObject - (void)updateItems { - //Nothing to do here + // Nothing to do here } - (void)updatePositioning diff --git a/iphone/Classes/TiAnimatorProxy.m b/iphone/Classes/TiAnimatorProxy.m index d20f27adb63..b739563ec21 100644 --- a/iphone/Classes/TiAnimatorProxy.m +++ b/iphone/Classes/TiAnimatorProxy.m @@ -74,13 +74,13 @@ - (void)setBehaviors:(id)args { ENSURE_TYPE(args, NSArray); NSArray *curBehaviors = [self behaviors]; - //Remove the old behaviors that no longer exist + // Remove the old behaviors that no longer exist for (id theArg in curBehaviors) { if (![args containsObject:theArg]) { [self removeBehavior:theArg]; } } - //Add the new behaviors + // Add the new behaviors for (id theArg in args) { if (![_behaviors containsObject:theArg]) { [self addBehavior:theArg]; @@ -153,8 +153,8 @@ - (void)startAnimator:(id)unused DebugLog(@"[INFO] Animator is already started"); return; } - //Need to get the parent view for children since this is the view that provides the animation context. - //Right now scrollable View will not work. + // Need to get the parent view for children since this is the view that provides the animation context. + // Right now scrollable View will not work. UIView *refView = [_referenceView parentViewForChild:nil]; if (refView == nil) { refView = [_referenceView view]; diff --git a/iphone/Classes/TiApp+Addons.m b/iphone/Classes/TiApp+Addons.m index 7a46fee2507..a0e29a6bb05 100644 --- a/iphone/Classes/TiApp+Addons.m +++ b/iphone/Classes/TiApp+Addons.m @@ -21,7 +21,7 @@ - (void)application:(UIApplication *)application performFetchWithCompletionHandl [self tryToInvokeSelector:@selector(application:performFetchWithCompletionHandler:) withArguments:[NSOrderedSet orderedSetWithObjects:application, [completionHandler copy], nil]]; - //Only for simulator builds + // Only for simulator builds NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; if ([backgroundModes containsObject:@"fetch"]) { @@ -65,7 +65,7 @@ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(N [self tryToInvokeSelector:@selector(application:didReceiveRemoteNotification:fetchCompletionHandler:) withArguments:[NSOrderedSet orderedSetWithObjects:application, userInfo, [completionHandler copy], nil]]; - //This only here for Simulator builds. + // This only here for Simulator builds. NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; if ([backgroundModes containsObject:@"remote-notification"]) { diff --git a/iphone/Classes/TiAppPropertiesProxy.m b/iphone/Classes/TiAppPropertiesProxy.m index 501967299d9..7e62f299198 100644 --- a/iphone/Classes/TiAppPropertiesProxy.m +++ b/iphone/Classes/TiAppPropertiesProxy.m @@ -179,32 +179,32 @@ - (NSDictionary *)bridgedDictionaryFromDictionary:(NSDictionary *)dictionary wit - (void)setBool:(id)args { SETPROP - [defaultsObject setBool:[TiUtils boolValue:value] - forKey:key]; + [defaultsObject setBool:[TiUtils boolValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setDouble:(id)args { SETPROP - [defaultsObject setDouble:[TiUtils doubleValue:value] - forKey:key]; + [defaultsObject setDouble:[TiUtils doubleValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setInt:(id)args { SETPROP - [defaultsObject setInteger:[TiUtils intValue:value] - forKey:key]; + [defaultsObject setInteger:[TiUtils intValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setString:(id)args { SETPROP - [defaultsObject setObject:[TiUtils stringValue:value] - forKey:key]; + [defaultsObject setObject:[TiUtils stringValue:value] + forKey:key]; [defaultsObject synchronize]; } diff --git a/iphone/Classes/TiAppiOSProxy.m b/iphone/Classes/TiAppiOSProxy.m index 8ecde547704..695bade5536 100644 --- a/iphone/Classes/TiAppiOSProxy.m +++ b/iphone/Classes/TiAppiOSProxy.m @@ -317,7 +317,7 @@ - (TiAppiOSSearchableItemAttributeSetProxy *)createSearchableItemAttributeSet:(i ENSURE_ARG_FOR_KEY(itemContentType, args, @"itemContentType", NSString); NSMutableDictionary *props = [NSMutableDictionary dictionaryWithDictionary:args]; - [props removeObjectForKey:@"itemContentType"]; //remove to avoid duplication + [props removeObjectForKey:@"itemContentType"]; // remove to avoid duplication TiAppiOSSearchableItemAttributeSetProxy *proxy = [[[TiAppiOSSearchableItemAttributeSetProxy alloc] initWithItemContentType:itemContentType withProps:props] autorelease]; diff --git a/iphone/Classes/TiAppiOSSearchableIndexProxy.m b/iphone/Classes/TiAppiOSSearchableIndexProxy.m index 33c3ab578c9..55ec59e3de1 100644 --- a/iphone/Classes/TiAppiOSSearchableIndexProxy.m +++ b/iphone/Classes/TiAppiOSSearchableIndexProxy.m @@ -32,7 +32,7 @@ - (void)addToDefaultSearchableIndex:(id)args ENSURE_UI_THREAD(addToDefaultSearchableIndex, args); - //Convert from Proxy to search item + // Convert from Proxy to search item NSMutableArray *items = [[[NSMutableArray alloc] init] autorelease]; for (TiAppiOSSearchableItemProxy *item in searchItems) { [items addObject:item.item]; diff --git a/iphone/Classes/TiAppiOSSearchableItemAttributeSetProxy.m b/iphone/Classes/TiAppiOSSearchableItemAttributeSetProxy.m index 9bdd5adc2b7..889a779cdfc 100644 --- a/iphone/Classes/TiAppiOSSearchableItemAttributeSetProxy.m +++ b/iphone/Classes/TiAppiOSSearchableItemAttributeSetProxy.m @@ -53,19 +53,19 @@ - (void)applyLoadTimeProperties:(NSDictionary *)props { [props enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop) { if ([_attributes respondsToSelector:NSSelectorFromString(key)]) { - //Check this is a supported type + // Check this is a supported type if (![unsupportedFieldTypes containsObject:key]) { if ([dateFieldTypes containsObject:key]) { - //Use date logic to add + // Use date logic to add [_attributes setValue:[TiUtils dateForUTCDate:object] forKey:key]; } else if ([urlFieldTypes containsObject:key]) { - //Use URL logic to add + // Use URL logic to add [_attributes setValue:[self sanitizeURL:object] forKey:key]; } else { [_attributes setValue:object forKey:key]; } } else { - //Use blob to add + // Use blob to add [_attributes setValue:[object data] forKey:key]; } } else { @@ -78,7 +78,7 @@ - (void)applyLoadTimeProperties:(NSDictionary *)props // CSGeneral Section //********************************* -//A localized string to be displayed in the UI for this item. +// A localized string to be displayed in the UI for this item. - (NSString *)displayName { return _attributes.displayName; @@ -91,7 +91,7 @@ - (void)setDisplayName:(id)value _attributes.displayName = value; } -//An array of localized strings of alternate display names for this item. +// An array of localized strings of alternate display names for this item. - (NSArray *)alternateNames { return _attributes.alternateNames; @@ -104,7 +104,7 @@ - (void)setAlternateNames:(NSArray *)value _attributes.alternateNames = value; } -//This is the complete path to the item. +// This is the complete path to the item. - (NSString *)path { return _attributes.path; @@ -117,7 +117,7 @@ - (void)setPath:(id)value _attributes.path = value; } -//Optional file URL representing the content to be indexed +// Optional file URL representing the content to be indexed - (NSString *)contentURL { return [_attributes.contentURL absoluteString]; @@ -130,7 +130,7 @@ - (void)setContentURL:(id)value _attributes.contentURL = [self sanitizeURL:value]; } -//Optional file URL pointing to a thumbnail image for this item +// Optional file URL pointing to a thumbnail image for this item - (NSString *)thumbnailURL { return [_attributes.thumbnailURL absoluteString]; @@ -143,7 +143,7 @@ - (void)setThumbnailURL:(id)value _attributes.thumbnailURL = [self sanitizeURL:value]; } -//Optional image data for thumbnail for this item +// Optional image data for thumbnail for this item - (TiBlob *)thumbnailData { return [[[TiBlob alloc] initWithData:_attributes.thumbnailData mimetype:_attributes.contentType] autorelease]; @@ -156,7 +156,7 @@ - (void)setThumbnailData:(id)value _attributes.thumbnailData = [value data]; } -//For activities, this is the unique identifier for the item this activity is related to +// For activities, this is the unique identifier for the item this activity is related to - (NSString *)relatedUniqueIdentifier { return _attributes.relatedUniqueIdentifier; @@ -169,7 +169,7 @@ - (void)setRelatedUniqueIdentifier:(id)identifier _attributes.relatedUniqueIdentifier = identifier; } -//This is the date that the last metadata attribute was changed. +// This is the date that the last metadata attribute was changed. - (NSString *)metadataModificationDate { if (_attributes.metadataModificationDate == nil) { @@ -186,7 +186,7 @@ - (void)setMetadataModificationDate:(id)value _attributes.metadataModificationDate = [TiUtils dateForUTCDate:value]; } -//UTI Type pedigree for an item. Common types can be found in UTCoreTypes.h +// UTI Type pedigree for an item. Common types can be found in UTCoreTypes.h - (NSString *)contentType { return _attributes.contentType; @@ -204,8 +204,8 @@ - (void)setContentTypeTree:(id)value _attributes.contentTypeTree = value; } -//Represents keywords associated with this particular item. -//Example Keywords might be Birthday,Important etc. +// Represents keywords associated with this particular item. +// Example Keywords might be Birthday,Important etc. - (NSArray *)keywords { return _attributes.keywords; @@ -218,8 +218,8 @@ - (void)setKeywords:(id)words _attributes.keywords = words; } -//The title of this particular item. -//Title of the document, or it could be the title of this mp3 or a subject of a mail message. +// The title of this particular item. +// Title of the document, or it could be the title of this mp3 or a subject of a mail message. - (NSString *)title { return _attributes.title; @@ -236,7 +236,7 @@ - (void)setTitle:(id)value // CSDocuments Section //********************************* -//Subject of the this item. +// Subject of the this item. - (NSString *)subject { return _attributes.subject; @@ -249,7 +249,7 @@ - (void)setSubject:(id)value _attributes.subject = value; } -//Theme of the this item. +// Theme of the this item. - (NSString *)theme { return _attributes.theme; @@ -262,10 +262,10 @@ - (void)setTheme:(id)value _attributes.theme = value; } -//An account of the content of the resource. Description may include -//but is not limited to: an abstract, table of contents, reference -//to a graphical representation of content or a free-text account of -//the content. +// An account of the content of the resource. Description may include +// but is not limited to: an abstract, table of contents, reference +// to a graphical representation of content or a free-text account of +// the content. - (NSString *)contentDescription { return _attributes.contentDescription; @@ -278,9 +278,9 @@ - (void)setContentDescription:(id)value _attributes.contentDescription = value; } -//Used to reference to the resource within a given -//context. Recommended best practice is to identify the resource by -//means of a string or number conforming to a formal identification system. +// Used to reference to the resource within a given +// context. Recommended best practice is to identify the resource by +// means of a string or number conforming to a formal identification system. - (NSString *)identifier { return _attributes.identifier; @@ -293,9 +293,9 @@ - (void)setIdentifier:(id)identifier _attributes.identifier = identifier; } -//A class of entity for whom the resource is intended or useful. A -//class of entity may be determined by the creator or the publisher -//or by a third party. +// A class of entity for whom the resource is intended or useful. A +// class of entity may be determined by the creator or the publisher +// or by a third party. - (NSArray *)audiences { return _attributes.audiences; @@ -308,7 +308,7 @@ - (void)setAudiences:(id)value _attributes.audiences = value; } -//Size of the document in MB. +// Size of the document in MB. - (NSNumber *)fileSize { return _attributes.fileSize; @@ -321,7 +321,7 @@ - (void)setFileSize:(id)value _attributes.fileSize = value; } -//Number of pages in the item. +// Number of pages in the item. - (NSNumber *)pageCount { return _attributes.pageCount; @@ -334,9 +334,9 @@ - (void)setPageCount:(id)value _attributes.pageCount = value; } -//Width in points (72 points per inch) of the document page +// Width in points (72 points per inch) of the document page //(first page only for PDF's - other pages within the PDF may -//not be the same width). +// not be the same width). - (NSNumber *)pageWidth { return _attributes.pageWidth; @@ -349,9 +349,9 @@ - (void)setPageWidth:(id)value _attributes.pageWidth = value; } -//Height in points (72 points per inch) of the document page +// Height in points (72 points per inch) of the document page //(first page only for PDF's - other pages within the PDF may -//not be the same height). +// not be the same height). - (NSNumber *)pageHeight { return _attributes.pageHeight; @@ -364,7 +364,7 @@ - (void)setPageHeight:(id)value _attributes.pageHeight = value; } -//Security (encryption) method used in the file +// Security (encryption) method used in the file - (NSString *)securityMethod { return _attributes.securityMethod; @@ -377,7 +377,7 @@ - (void)setSecurityMethod:(id)value _attributes.securityMethod = value; } -//Application used to create the document content (e.g. "Word","Framemaker", etc.). +// Application used to create the document content (e.g. "Word","Framemaker", etc.). - (NSString *)creator { return _attributes.creator; @@ -390,7 +390,7 @@ - (void)setCreator:(id)value _attributes.creator = value; } -//Software used to convert the original content into a PDF stream +// Software used to convert the original content into a PDF stream //(e.g. "Distiller", etc.). - (NSArray *)encodingApplications { @@ -404,7 +404,7 @@ - (void)setEncodingApplications:(id)value _attributes.encodingApplications = value; } -//Kind that this item represents. +// Kind that this item represents. - (NSString *)kind { return _attributes.kind; @@ -417,7 +417,7 @@ - (void)setKind:(id)value _attributes.kind = value; } -//Array of font names used in the item. +// Array of font names used in the item. - (NSArray *)fontNames { return _attributes.fontNames; @@ -434,8 +434,8 @@ - (void)setFontNames:(id)value // CSMusic Section //********************************* -//The sample rate of the audio data contained in the file. The sample rate is a -//float value representing hz (audio_frames/second). For example: 44100.0, 22254.54. +// The sample rate of the audio data contained in the file. The sample rate is a +// float value representing hz (audio_frames/second). For example: 44100.0, 22254.54. - (NSNumber *)audioSampleRate { return _attributes.audioSampleRate; @@ -449,9 +449,9 @@ - (void)setAudioSampleRate:(id)value _attributes.audioSampleRate = value; } -//The number of channels in the audio data contained in the file. This item only represents -//the number of discreet channels of audio data found in the file. It does not indicate -//any configuration of the data in regards to a user's speaker setup. +// The number of channels in the audio data contained in the file. This item only represents +// the number of discreet channels of audio data found in the file. It does not indicate +// any configuration of the data in regards to a user's speaker setup. - (NSNumber *)audioChannelCount { return _attributes.audioChannelCount; @@ -464,7 +464,7 @@ - (void)setAudioChannelCount:(id)value _attributes.audioChannelCount = value; } -//The tempo of the music contained in the audio file in Beats Per Minute. +// The tempo of the music contained in the audio file in Beats Per Minute. - (NSNumber *)tempo { return _attributes.tempo; @@ -477,8 +477,8 @@ - (void)setTempo:(id)value _attributes.tempo = value; } -//The musical key of the song/composition contained in an audio file. -//For example: C, Dm, F#m, Bb. +// The musical key of the song/composition contained in an audio file. +// For example: C, Dm, F#m, Bb. - (NSString *)keySignature { return _attributes.keySignature; @@ -491,8 +491,8 @@ - (void)setKeySignature:(id)value _attributes.keySignature = value; } -//The time signature of the musical composition contained in the audio/MIDI file. -//For example: "4/4", "7/8". +// The time signature of the musical composition contained in the audio/MIDI file. +// For example: "4/4", "7/8". - (NSString *)timeSignature { return _attributes.timeSignature; @@ -505,7 +505,7 @@ - (void)setTimeSignature:(id)value _attributes.timeSignature = value; } -//The name of the application that encoded the data contained in the audio file. +// The name of the application that encoded the data contained in the audio file. - (NSString *)audioEncodingApplication { return _attributes.audioEncodingApplication; @@ -518,7 +518,7 @@ - (void)setAudioEncodingApplication:(id)value _attributes.audioEncodingApplication = value; } -//The composer of the song/composition contained in the audio file. +// The composer of the song/composition contained in the audio file. - (NSString *)composer { return _attributes.composer; @@ -531,7 +531,7 @@ - (void)setComposer:(id)value _attributes.composer = value; } -//The lyricist/text writer for song/composition contained in the audio file. +// The lyricist/text writer for song/composition contained in the audio file. - (NSString *)lyricist { return _attributes.lyricist; @@ -544,8 +544,8 @@ - (void)setLyricist:(id)value _attributes.lyricist = value; } -//The title for a collection of media. This is analagous to a record album, -//or photo album whichs are collections of audio or images. +// The title for a collection of media. This is analagous to a record album, +// or photo album whichs are collections of audio or images. - (NSString *)album { return _attributes.album; @@ -558,7 +558,7 @@ - (void)setAlbum:(id)value _attributes.album = value; } -//The artist for the media +// The artist for the media - (NSString *)artist { return _attributes.artist; @@ -571,7 +571,7 @@ - (void)setArtist:(id)value _attributes.artist = value; } -//The track number of a song/composition when it is part of an album +// The track number of a song/composition when it is part of an album - (NSNumber *)audioTrackNumber { return _attributes.audioTrackNumber; @@ -584,10 +584,10 @@ - (void)setAudioTrackNumber:(id)value _attributes.audioTrackNumber = value; } -//The recording date of the song/composition. This information differs from -//the contentCreationDate attribute as it indicates the date that the +// The recording date of the song/composition. This information differs from +// the contentCreationDate attribute as it indicates the date that the //'art' was created, in contrast to contentCreationDate which for example, could indicate -//the creation date of an edited or 'mastered' version of the original art. +// the creation date of an edited or 'mastered' version of the original art. - (NSString *)recordingDate { if (_attributes.recordingDate == nil) { @@ -603,8 +603,8 @@ - (void)setRecordingDate:(id)value _attributes.recordingDate = [TiUtils dateForUTCDate:value]; } -//The musical genre of the song/composition contained in the audio file. -//For example: Jazz, Pop, Rock, Classical. +// The musical genre of the song/composition contained in the audio file. +// For example: Jazz, Pop, Rock, Classical. - (NSString *)musicalGenre { return _attributes.musicalGenre; @@ -617,7 +617,7 @@ - (void)setMusicalGenre:(id)value _attributes.musicalGenre = value; } -//This attribute indicates whether the MIDI sequence contained in the file is setup for use with a General MIDI device. Should be 1 if true, 0 otherwise. +// This attribute indicates whether the MIDI sequence contained in the file is setup for use with a General MIDI device. Should be 1 if true, 0 otherwise. - (NSNumber *)generalMIDISequence { return _attributes.generalMIDISequence; @@ -630,11 +630,11 @@ - (void)setGeneralMIDISequence:(id)value _attributes.generalMIDISequence = value; } -//Meta data attribute that stores the category of -//instrument. Files should have an instrument associated with -//them ("Other Instrument" is provided as a catch-all). For some -//categories, like "Keyboards" there are instrument names which -//provide a more detailed instrument definition (e.g., Piano,Organ, etc.) +// Meta data attribute that stores the category of +// instrument. Files should have an instrument associated with +// them ("Other Instrument" is provided as a catch-all). For some +// categories, like "Keyboards" there are instrument names which +// provide a more detailed instrument definition (e.g., Piano,Organ, etc.) - (NSString *)musicalInstrumentCategory { return _attributes.musicalInstrumentCategory; @@ -647,11 +647,11 @@ - (void)setMusicalInstrumentCategory:(id)value _attributes.musicalInstrumentCategory = value; } -//Meta data attribute that stores the name of instrument +// Meta data attribute that stores the name of instrument //(relative to the instrument category) Files can have an -//instrument name associated with them if they have certain -//instrument categories (e.g., the category Percussion has -// multiple instruments, including Conga and Bongo). +// instrument name associated with them if they have certain +// instrument categories (e.g., the category Percussion has +// multiple instruments, including Conga and Bongo). - (NSString *)musicalInstrumentName { return _attributes.musicalInstrumentName; @@ -750,7 +750,7 @@ - (void)setContainerOrder:(id)value // CSMedia Section //********************************* -//The list of editor/editors that have worked on this item. +// The list of editor/editors that have worked on this item. - (NSArray *)editors { return _attributes.editors; @@ -763,7 +763,7 @@ - (void)setEditors:(id)value _attributes.editors = value; } -//The list of people who are visible in an image or movie or written about in a document. +// The list of people who are visible in an image or movie or written about in a document. - (NSArray *)participants { return _attributes.participants; @@ -776,9 +776,9 @@ - (void)setParticipants:(id)value _attributes.participants = value; } -//The list of projects that this item is part of. -//For example if you were working on a movie, all of the movie files could be marked -//as belonging to the project "My movie" +// The list of projects that this item is part of. +// For example if you were working on a movie, all of the movie files could be marked +// as belonging to the project "My movie" - (NSArray *)projects { return _attributes.projects; @@ -808,8 +808,8 @@ - (void)setDownloadedDate:(id)value _attributes.downloadedDate = [TiUtils dateForUTCDate:value]; } -//This attribute indicates where the item was obtained from. -//Examples: +// This attribute indicates where the item was obtained from. +// Examples: //- downloaded file may refer to the site they were downloaded from,the refering URL, etc //- files received by email may indicate who sent the file, the message subject, etc - (NSArray *)contentSources @@ -824,7 +824,7 @@ - (void)setContentSources:(id)value _attributes.contentSources = value; } -//This is a comment related to a file. +// This is a comment related to a file. - (NSString *)comment { return _attributes.comment; @@ -837,7 +837,7 @@ - (void)setComment:(id)value _attributes.comment = value; } -//This is the copyright of the content. +// This is the copyright of the content. - (NSString *)copyright { return _attributes.copyright; @@ -850,7 +850,7 @@ - (void)setCopyright:(id)value _attributes.copyright = value; } -//This is the date that the item was last used +// This is the date that the item was last used - (NSString *)lastUsedDate { if (_attributes.lastUsedDate == nil) { @@ -866,8 +866,8 @@ - (void)setLastUsedDate:(id)value _attributes.lastUsedDate = [TiUtils dateForUTCDate:value]; } -//This is the date that the contents of the item were created -//This is the date that the contents of the item were created +// This is the date that the contents of the item were created +// This is the date that the contents of the item were created - (NSString *)contentCreationDate { if (_attributes.contentCreationDate == nil) { @@ -883,7 +883,7 @@ - (void)setContentCreationDate:(id)value _attributes.contentCreationDate = [TiUtils dateForUTCDate:value]; } -//This is the date that the contents of the item were last modified +// This is the date that the contents of the item were last modified - (NSString *)contentModificationDate { if (_attributes.contentModificationDate == nil) { @@ -899,7 +899,7 @@ - (void)setContentModificationDate:(id)value _attributes.contentModificationDate = [TiUtils dateForUTCDate:value]; } -//This is the date that the item was moved into the current location. +// This is the date that the item was moved into the current location. - (NSString *)addedDate { if (_attributes.addedDate == nil) { @@ -915,7 +915,7 @@ - (void)setAddedDate:(id)value _attributes.addedDate = [TiUtils dateForUTCDate:value]; } -//This is the duration, in seconds, of the content of the item (if appropriate). +// This is the duration, in seconds, of the content of the item (if appropriate). - (NSNumber *)duration { return _attributes.duration; @@ -928,7 +928,7 @@ - (void)setDuration:(id)value _attributes.duration = value; } -//A list of contacts that are somehow associated with this document, beyond what is captured as Author. +// A list of contacts that are somehow associated with this document, beyond what is captured as Author. - (NSArray *)contactKeywords { return _attributes.contactKeywords; @@ -941,7 +941,7 @@ - (void)setContactKeywords:(id)value _attributes.contactKeywords = value; } -//A version specifier for this item. +// A version specifier for this item. - (NSString *)version { return _attributes.version; @@ -954,7 +954,7 @@ - (void)setVersion:(id)value _attributes.version = value; } -//The codecs used to encode/decode the media +// The codecs used to encode/decode the media - (NSArray *)codecs { return _attributes.codecs; @@ -967,7 +967,7 @@ - (void)setCodecs:(id)value _attributes.codecs = value; } -//Media types present in the content +// Media types present in the content - (NSArray *)mediaTypes { return _attributes.mediaTypes; @@ -980,7 +980,7 @@ - (void)setMediaTypes:(id)value _attributes.mediaTypes = value; } -//Whether the content is prepared for streaming. Should be 0 for not streamable, 1 for streamable. +// Whether the content is prepared for streaming. Should be 0 for not streamable, 1 for streamable. - (NSNumber *)streamable { return _attributes.streamable; @@ -993,7 +993,7 @@ - (void)setStreamable:(id)value _attributes.streamable = value; } -//The total bit rate (audio & video combined) of the media +// The total bit rate (audio & video combined) of the media - (NSNumber *)totalBitRate { return _attributes.totalBitRate; @@ -1005,7 +1005,7 @@ - (void)setTotalBitRate:(id)value ENSURE_UI_THREAD(setTotalBitRate, value); _attributes.totalBitRate = value; } -//The video bit rate +// The video bit rate - (NSNumber *)videoBitRate { return _attributes.videoBitRate; @@ -1017,7 +1017,7 @@ - (void)setVideoBitRate:(id)value ENSURE_UI_THREAD(setVideoBitRate, value); _attributes.videoBitRate = value; } -//The audio bit rate +// The audio bit rate - (NSNumber *)audioBitRate { return _attributes.audioBitRate; @@ -1030,7 +1030,7 @@ - (void)setAudioBitRate:(id)value _attributes.audioBitRate = value; } -//The delivery type of the item. Should be 0 for fast start and 1 for RTSP. +// The delivery type of the item. Should be 0 for fast start and 1 for RTSP. - (NSNumber *)deliveryType { return _attributes.deliveryType; @@ -1043,7 +1043,7 @@ - (void)setDeliveryType:(id)value _attributes.deliveryType = value; } -//Used to indicate company/Organization that created the document. +// Used to indicate company/Organization that created the document. - (NSArray *)organizations { return _attributes.organizations; @@ -1056,7 +1056,7 @@ - (void)setOrganizations:(id)value _attributes.organizations = value; } -//Used to indicate the role of the document creator +// Used to indicate the role of the document creator - (NSString *)role { return _attributes.role; @@ -1069,9 +1069,9 @@ - (void)setRole:(id)value _attributes.role = value; } -//Used to designate the languages of the intellectual content of the -//resource. Recommended best practice for the values of the Language -//element is defined by BCP 47. +// Used to designate the languages of the intellectual content of the +// resource. Recommended best practice for the values of the Language +// element is defined by BCP 47. - (NSArray *)languages { return _attributes.languages; @@ -1084,14 +1084,14 @@ - (void)setLanguages:(id)value _attributes.languages = value; } -//Used to provide a link to information about rights held in and -//over the resource. Typically a Rights element will contain a -//rights management statement for the resource, or reference a -//service providing such information. Rights information often -//encompasses Intellectual Property Rights (IPR), Copyright, and -//various Property Rights. If the rights element is absent, no -//assumptions can be made about the status of these and other rights -//with respect to the resource. +// Used to provide a link to information about rights held in and +// over the resource. Typically a Rights element will contain a +// rights management statement for the resource, or reference a +// service providing such information. Rights information often +// encompasses Intellectual Property Rights (IPR), Copyright, and +// various Property Rights. If the rights element is absent, no +// assumptions can be made about the status of these and other rights +// with respect to the resource. - (NSString *)rights { return _attributes.rights; @@ -1104,10 +1104,10 @@ - (void)setRights:(id)value _attributes.rights = value; } -//Used to designate the entity responsible for making the resource -//available. Examples of a Publisher include a person, an -//organization, or a service. Typically, the name of a Publisher -//should be used to indicate the entity. +// Used to designate the entity responsible for making the resource +// available. Examples of a Publisher include a person, an +// organization, or a service. Typically, the name of a Publisher +// should be used to indicate the entity. - (NSArray *)publishers { return _attributes.publishers; @@ -1120,10 +1120,10 @@ - (void)setPublishers:(id)value _attributes.publishers = value; } -//Used to designate the entity responsible for making contributions -//to the content of the resource. Examples of a Contributor include -//a person, an organization or a service. Typically, the name of a -//Contributor should be used to indicate the entity. +// Used to designate the entity responsible for making contributions +// to the content of the resource. Examples of a Contributor include +// a person, an organization or a service. Typically, the name of a +// Contributor should be used to indicate the entity. - (NSArray *)contributors { return _attributes.contributors; @@ -1136,12 +1136,12 @@ - (void)setContributors:(id)value _attributes.contributors = value; } -//Used to designate the extent or scope of the content of the -//resource. Coverage will typically include spatial location +// Used to designate the extent or scope of the content of the +// resource. Coverage will typically include spatial location //(a place name or geographic co-ordinates), temporal period (a period label, date, or date range) -//or jurisdiction (such as a named administrative entity). -//Recommended best practice is to select a value from a controlled vocabulary, and that, where appropriate, -//named places or time periods be used in preference to numeric identifiers such as sets of co-ordinates or date ranges. +// or jurisdiction (such as a named administrative entity). +// Recommended best practice is to select a value from a controlled vocabulary, and that, where appropriate, +// named places or time periods be used in preference to numeric identifiers such as sets of co-ordinates or date ranges. - (NSArray *)coverage { return _attributes.coverage; @@ -1154,7 +1154,7 @@ - (void)setCoverage:(id)value _attributes.coverage = value; } -//User rating of this item out of 5 stars +// User rating of this item out of 5 stars - (NSNumber *)rating { return _attributes.rating; @@ -1167,7 +1167,7 @@ - (void)setRating:(id)value _attributes.rating = value; } -//A description of the rating. E.g. the number of reviewers. +// A description of the rating. E.g. the number of reviewers. - (NSString *)ratingDescription { return _attributes.ratingDescription; @@ -1180,7 +1180,7 @@ - (void)setRatingDescription:(id)value _attributes.ratingDescription = value; } -//User play count of this item +// User play count of this item - (NSNumber *)playCount { return _attributes.playCount; @@ -1193,7 +1193,7 @@ - (void)setPlayCount:(id)value _attributes.playCount = value; } -//Information about the item +// Information about the item - (NSString *)information { return _attributes.information; @@ -1206,7 +1206,7 @@ - (void)setInformation:(id)value _attributes.information = value; } -//Director of the item (e.g. movie director) +// Director of the item (e.g. movie director) - (NSString *)director { return _attributes.director; @@ -1219,7 +1219,7 @@ - (void)setDirector:(id)value _attributes.director = value; } -//Producer of the content +// Producer of the content - (NSString *)producer { return _attributes.producer; @@ -1232,7 +1232,7 @@ - (void)setProducer:(id)value _attributes.producer = value; } -//Genre of the item (e.g. movie genre) +// Genre of the item (e.g. movie genre) - (NSString *)genre { return _attributes.genre; @@ -1245,7 +1245,7 @@ - (void)setGenre:(id)value _attributes.genre = value; } -//Performers in the movie +// Performers in the movie - (NSArray *)performers { return _attributes.performers; @@ -1258,7 +1258,7 @@ - (void)setPerformers:(id)value _attributes.performers = value; } -//Original format of the movie +// Original format of the movie - (NSString *)originalFormat { return _attributes.originalFormat; @@ -1271,7 +1271,7 @@ - (void)setOriginalFormat:(id)value _attributes.originalFormat = value; } -//Original source of the movie +// Original source of the movie - (NSString *)originalSource { return _attributes.originalSource; @@ -1284,7 +1284,7 @@ - (void)setOriginalSource:(id)value _attributes.originalSource = value; } -//Whether or not the item is local. Should be 1 if true, 0 otherwise. +// Whether or not the item is local. Should be 1 if true, 0 otherwise. - (NSNumber *)local { return _attributes.local; @@ -1297,7 +1297,7 @@ - (void)setLocal:(id)value _attributes.local = value; } -//Whether or not the item has explicit content. Should be 1 if explicit, 0 for clean. +// Whether or not the item has explicit content. Should be 1 if explicit, 0 for clean. - (NSNumber *)contentRating { return _attributes.contentRating; @@ -1309,7 +1309,7 @@ - (void)setContentRating:(id)value ENSURE_UI_THREAD(setContentRating, value); _attributes.contentRating = value; } -//URL of the item +// URL of the item - (NSString *)url { return [_attributes.URL absoluteString]; diff --git a/iphone/Classes/TiAppiOSUserDefaultsProxy.m b/iphone/Classes/TiAppiOSUserDefaultsProxy.m index eb4ed48696a..ec93b684a2e 100644 --- a/iphone/Classes/TiAppiOSUserDefaultsProxy.m +++ b/iphone/Classes/TiAppiOSUserDefaultsProxy.m @@ -138,32 +138,32 @@ - (id)getObject:(id)args - (void)setBool:(id)args { SETPROP - [self.defaultsObject setBool:[TiUtils boolValue:value] - forKey:key]; + [self.defaultsObject setBool:[TiUtils boolValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setDouble:(id)args { SETPROP - [self.defaultsObject setDouble:[TiUtils doubleValue:value] - forKey:key]; + [self.defaultsObject setDouble:[TiUtils doubleValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setInt:(id)args { SETPROP - [self.defaultsObject setInteger:[TiUtils intValue:value] - forKey:key]; + [self.defaultsObject setInteger:[TiUtils intValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setString:(id)args { SETPROP - [self.defaultsObject setObject:[TiUtils stringValue:value] - forKey:key]; + [self.defaultsObject setObject:[TiUtils stringValue:value] + forKey:key]; [self.defaultsObject synchronize]; } diff --git a/iphone/Classes/TiCalendarCalendar.h b/iphone/Classes/TiCalendarCalendar.h index dd2a3155afb..9209cc6e0a4 100644 --- a/iphone/Classes/TiCalendarCalendar.h +++ b/iphone/Classes/TiCalendarCalendar.h @@ -17,7 +17,7 @@ READONLY_PROPERTY(bool, hidden, Hidden); READONLY_PROPERTY(NSString *, id, Id); READONLY_PROPERTY(NSString *, name, Name); -//READONLY_PROPERTY(BOOL, selected, Selected); // not implemented on iOS +// READONLY_PROPERTY(BOOL, selected, Selected); // not implemented on iOS READONLY_PROPERTY(NSString *, sourceIdentifier, SourceIdentifier); READONLY_PROPERTY(NSString *, sourceTitle, SourceTitle); READONLY_PROPERTY(EKSourceType, sourceType, SourceType); diff --git a/iphone/Classes/TiContactsGroup.m b/iphone/Classes/TiContactsGroup.m index f73e2b3edcf..465471aff5b 100644 --- a/iphone/Classes/TiContactsGroup.m +++ b/iphone/Classes/TiContactsGroup.m @@ -222,7 +222,7 @@ - (void)remove:(id)arg #endif } -//For iOS9 deleting contact +// For iOS9 deleting contact #ifndef __clang_analyzer__ - (CNSaveRequest *)getSaveRequestForDeletion { diff --git a/iphone/Classes/TiContactsPerson.m b/iphone/Classes/TiContactsPerson.m index 06dfea3e9e9..505e3a59402 100644 --- a/iphone/Classes/TiContactsPerson.m +++ b/iphone/Classes/TiContactsPerson.m @@ -198,7 +198,7 @@ - (NSDictionary *)dictionaryFromiOS9MultiValueArray:(NSArray *)property // For case where address is added via contact card import. This should be nonnull as according to apple docs but quick fix for now til apple fixes it. key = @"address"; } else { - //must be a custom label + // must be a custom label key = [NSString stringWithString:genericProperty.label]; } } diff --git a/iphone/Classes/TiController.h b/iphone/Classes/TiController.h index 557f66f034d..cf3eaeb9183 100644 --- a/iphone/Classes/TiController.h +++ b/iphone/Classes/TiController.h @@ -7,7 +7,7 @@ #import -//TODO: rename tab controller +// TODO: rename tab controller @protocol TiController diff --git a/iphone/Classes/TiDOMAttrProxy.m b/iphone/Classes/TiDOMAttrProxy.m index 724f140c63d..003edbbc0b8 100644 --- a/iphone/Classes/TiDOMAttrProxy.m +++ b/iphone/Classes/TiDOMAttrProxy.m @@ -94,7 +94,7 @@ - (id)ownerElement - (id)specified { - //TODO - Support for default values specified in the DTD. + // TODO - Support for default values specified in the DTD. if ([node XMLNode]->parent == nil) return NUMBOOL(YES); diff --git a/iphone/Classes/TiDOMDocumentProxy.m b/iphone/Classes/TiDOMDocumentProxy.m index b38989ba8a0..c52be29dbec 100644 --- a/iphone/Classes/TiDOMDocumentProxy.m +++ b/iphone/Classes/TiDOMDocumentProxy.m @@ -29,7 +29,7 @@ @implementation TiDOMDocumentProxy - (void)dealloc { if ([document docNode] != NULL) { - //Ensure that docNode is removed from nodeRegistry + // Ensure that docNode is removed from nodeRegistry [TiDOMNodeProxy removeNodeForXMLNode:(xmlNodePtr)[document docNode]]; } [super dealloc]; @@ -74,7 +74,7 @@ - (id)createAttribute:(id)args ENSURE_ARG_COUNT(args, 1); NSString *tagName = nil; ENSURE_ARG_AT_INDEX(tagName, args, 0, NSString); - //Check name validity + // Check name validity if (![TiDOMValidator checkAttributeName:tagName]) { [self throwException:@"Invalid attribute name" subreason:[NSString stringWithFormat:@"Offending tagName %@", tagName] location:CODELOCATION]; return [NSNull null]; @@ -115,8 +115,8 @@ - (id)createAttributeNS:(id)args [self throwException:error subreason:suberror location:CODELOCATION]; } - //THIS WILL NOT WORK UNTIL ADD CHILD IS CALLED SO CREATE A NAMESPACE POINTER AND SET IT EXPLICITLY - //GDataXMLNode* resultNode = (GDataXMLNode*)[GDataXMLElement attributeWithName:tagName URI:theURI stringValue:@""]; + // THIS WILL NOT WORK UNTIL ADD CHILD IS CALLED SO CREATE A NAMESPACE POINTER AND SET IT EXPLICITLY + // GDataXMLNode* resultNode = (GDataXMLNode*)[GDataXMLElement attributeWithName:tagName URI:theURI stringValue:@""]; NSString *localName = [GDataXMLNode localNameForName:tagName]; id context = ([self executionContext] == nil) ? [self pageContext] : [self executionContext]; @@ -230,8 +230,8 @@ - (id)createElementNS:(id)args [self throwException:error subreason:suberror location:CODELOCATION]; } - //THIS WILL NOT WORK UNTIL ADD CHILD IS CALLED SO CREATE A NAMESPACE POINTER AND SET IT EXPLICITLY - //GDataXMLElement * resultElement = [GDataXMLElement elementWithName:tagName URI:theURI]; + // THIS WILL NOT WORK UNTIL ADD CHILD IS CALLED SO CREATE A NAMESPACE POINTER AND SET IT EXPLICITLY + // GDataXMLElement * resultElement = [GDataXMLElement elementWithName:tagName URI:theURI]; NSString *localName = [GDataXMLNode localNameForName:tagName]; id context = ([self executionContext] == nil) ? [self pageContext] : [self executionContext]; @@ -255,7 +255,7 @@ - (id)createElementNS:(id)args xmlNsPtr theNewNs = xmlNewNs(NULL, // parent node href, pre); [resultElement XMLNode]->ns = theNewNs; - //Assume that this NS is defined on this node. Will be fixed later when added to tree + // Assume that this NS is defined on this node. Will be fixed later when added to tree [resultElement XMLNode]->nsDef = theNewNs; [result setDocument:[self document]]; [result setElement:resultElement]; @@ -387,7 +387,7 @@ - (id)getElementsByTagNameNS:(id)args } NSError *error = nil; - //PARAMETER IS SPECIFIED AS LOCAL NAME + // PARAMETER IS SPECIFIED AS LOCAL NAME NSString *xpath = [NSString stringWithFormat:@"//*[local-name()='%@' and namespace-uri()='%@']", localName, theURI]; NSArray *nodes = [document nodesForXPath:xpath error:&error]; diff --git a/iphone/Classes/TiDOMElementProxy.m b/iphone/Classes/TiDOMElementProxy.m index e55412f1e5c..a58b69da3b7 100644 --- a/iphone/Classes/TiDOMElementProxy.m +++ b/iphone/Classes/TiDOMElementProxy.m @@ -91,7 +91,7 @@ - (id)getElementsByTagNameNS:(id)args } NSError *error = nil; - //PARAMETER IS SPECIFIED AS LOCAL NAME + // PARAMETER IS SPECIFIED AS LOCAL NAME NSString *xpath = [NSString stringWithFormat:@"self::node()/descendant::*[local-name()='%@' and namespace-uri()='%@']", localName, theURI]; NSArray *nodes = [element nodesForXPath:xpath error:&error]; @@ -243,9 +243,9 @@ - (void)removeAttribute:(id)args xmlNodePtr oldNodePtr = [attributeNode XMLNode]; TiDOMAttrProxy *result = [TiDOMNodeProxy nodeForXMLNode:oldNodePtr]; - //Retain it here so that the node does not get freed when cached values are released + // Retain it here so that the node does not get freed when cached values are released [attributeNode retain]; - //Switch the flag here so that the node is freed only when the object is freed + // Switch the flag here so that the node is freed only when the object is freed [attributeNode setShouldFreeXMLNode:YES]; [element removeChild:attributeNode]; @@ -255,7 +255,7 @@ - (void)removeAttribute:(id)args [result setAttribute:[attributeNode name] value:[attributeNode stringValue] owner:element]; } - //Release now and this will free the underlying memory if result is nil + // Release now and this will free the underlying memory if result is nil [attributeNode release]; } } @@ -278,9 +278,9 @@ - (void)removeAttributeNS:(id)args xmlNodePtr oldNodePtr = [attributeNode XMLNode]; TiDOMAttrProxy *result = [TiDOMNodeProxy nodeForXMLNode:oldNodePtr]; - //Retain it here so that the node does not get freed when cached values are released + // Retain it here so that the node does not get freed when cached values are released [attributeNode retain]; - //Switch the flag here so that the node is freed only when the object is freed + // Switch the flag here so that the node is freed only when the object is freed [attributeNode setShouldFreeXMLNode:YES]; [element removeChild:attributeNode]; if (result != nil) { @@ -288,7 +288,7 @@ - (void)removeAttributeNS:(id)args [result setNode:attributeNode]; [result setAttribute:[attributeNode name] value:[attributeNode stringValue] owner:element]; } - //Release now and this will free the underlying memory if result is nil + // Release now and this will free the underlying memory if result is nil [attributeNode release]; } } @@ -380,10 +380,10 @@ - (id)setAttributeNode:(id)args [attributeNode setShouldFreeXMLNode:YES]; oldNodePtr = [attributeNode XMLNode]; result = [TiDOMNodeProxy nodeForXMLNode:oldNodePtr]; - //Remove Child Now + // Remove Child Now [element removeChild:attributeNode]; if (result == nil) { - //Need to return the old attribute node + // Need to return the old attribute node id context = ([self executionContext] == nil) ? [self pageContext] : [self executionContext]; result = [[[TiDOMAttrProxy alloc] _initWithPageContext:context] autorelease]; [result setAttribute:[attributeNode name] value:[attributeNode stringValue] owner:element]; @@ -394,7 +394,7 @@ - (id)setAttributeNode:(id)args [result setNode:attributeNode]; [result setAttribute:[attributeNode name] value:[attributeNode stringValue] owner:element]; } - //Release now and this will free the underlying memory when proxy is released + // Release now and this will free the underlying memory when proxy is released [attributeNode release]; } @@ -402,7 +402,7 @@ - (id)setAttributeNode:(id)args if (oldNodePtr != NULL) { [TiDOMNodeProxy removeNodeForXMLNode:oldNodePtr]; } - //This adds by copying + // This adds by copying [element addAttribute:[attProxy node]]; attributeNode = [element attributeForName:name]; [attProxy setNode:attributeNode]; @@ -442,10 +442,10 @@ - (id)setAttributeNodeNS:(id)args [attributeNode setShouldFreeXMLNode:YES]; oldNodePtr = [attributeNode XMLNode]; result = [TiDOMNodeProxy nodeForXMLNode:oldNodePtr]; - //Remove Child Now + // Remove Child Now [element removeChild:attributeNode]; if (result == nil) { - //Need to return the old attribute node + // Need to return the old attribute node id context = ([self executionContext] == nil) ? [self pageContext] : [self executionContext]; result = [[[TiDOMAttrProxy alloc] _initWithPageContext:context] autorelease]; [result setAttribute:[attributeNode name] value:[attributeNode stringValue] owner:element]; @@ -456,7 +456,7 @@ - (id)setAttributeNodeNS:(id)args [result setNode:attributeNode]; [result setAttribute:[attributeNode name] value:[attributeNode stringValue] owner:element]; } - //Release now and this will free the underlying memory when proxy is released + // Release now and this will free the underlying memory when proxy is released [attributeNode release]; } @@ -464,7 +464,7 @@ - (id)setAttributeNodeNS:(id)args if (oldNodePtr != NULL) { [TiDOMNodeProxy removeNodeForXMLNode:oldNodePtr]; } - //Duplicate methodology in setAttributeNS + // Duplicate methodology in setAttributeNS [element releaseCachedValues]; xmlNodePtr curNode = [element XMLNode]; xmlNodePtr curAttr = [[attProxy node] XMLNode]; @@ -506,7 +506,7 @@ - (id)removeAttributeNode:(id)args [self throwException:@"no node found to remove" subreason:nil location:CODELOCATION]; return nil; } else { - //Switch the flag here so that the node is freed only when the object is freed + // Switch the flag here so that the node is freed only when the object is freed [nodeToRemove retain]; [nodeToRemove setShouldFreeXMLNode:YES]; [element removeChild:nodeToRemove]; @@ -552,7 +552,7 @@ - (id)insertBefore:(id)args if (returnNodePtr == newNodePtr) { return newChild; } else { - //This should not happen + // This should not happen id result = [TiDOMNodeProxy nodeForXMLNode:returnNodePtr]; if (result == nil) { GDataXMLNode *retVal = [GDataXMLNode nodeConsumingXMLNode:returnNodePtr]; @@ -563,7 +563,7 @@ - (id)insertBefore:(id)args } } else { - //Will get here if there in an internal API error + // Will get here if there in an internal API error return [NSNull null]; } } else { @@ -605,7 +605,7 @@ - (id)replaceChild:(id)args [[refChild node] setShouldFreeXMLNode:YES]; return refChild; } else { - //This should not happen + // This should not happen id result = [TiDOMNodeProxy nodeForXMLNode:returnNodePtr]; if (result == nil) { GDataXMLNode *retVal = [GDataXMLNode nodeConsumingXMLNode:returnNodePtr]; @@ -616,7 +616,7 @@ - (id)replaceChild:(id)args } } else { - //Will get here if there in an internal API error + // Will get here if there in an internal API error return [NSNull null]; } } else { @@ -669,13 +669,13 @@ - (id)appendChild:(id)args if (needsReconciliateNS) { [GDataXMLElement fixUpNamespacesForNode:resultPtr graftingToTreeNode:parent]; } - //Child added successfully + // Child added successfully if (resultPtr == oldNodePtr) { - //Child pointer not modified + // Child pointer not modified [[newChild node] setShouldFreeXMLNode:NO]; return newChild; } else { - //Child pointer modified + // Child pointer modified [[newChild node] setShouldFreeXMLNode:YES]; if (oldNodePtr != NULL) { [TiDOMNodeProxy removeNodeForXMLNode:oldNodePtr]; diff --git a/iphone/Classes/TiDOMEntityProxy.m b/iphone/Classes/TiDOMEntityProxy.m index c8498f3943e..2a5947767db 100644 --- a/iphone/Classes/TiDOMEntityProxy.m +++ b/iphone/Classes/TiDOMEntityProxy.m @@ -22,17 +22,17 @@ - (id)nodeValue - (id)notationName { - //TODO + // TODO return [NSNull null]; } - (id)publicId { - //TODO + // TODO return [NSNull null]; } - (id)systemId { - //TODO + // TODO return [NSNull null]; } @end diff --git a/iphone/Classes/TiDOMNamedNodeMapProxy.h b/iphone/Classes/TiDOMNamedNodeMapProxy.h index e925d89ac55..e20b4f40ac6 100644 --- a/iphone/Classes/TiDOMNamedNodeMapProxy.h +++ b/iphone/Classes/TiDOMNamedNodeMapProxy.h @@ -8,7 +8,7 @@ /** * This supports the NamedNodeMap for the property "attributes" * defined by Interface Node. - * The support for NamedNodeMap for the properties "entites" and "notations" + * The support for NamedNodeMap for the properties "entites" and "notations" * defined by Interface DocumentType is not yet implemented. */ #if defined(USE_TI_XML) || defined(USE_TI_NETWORK) diff --git a/iphone/Classes/TiDOMNamedNodeMapProxy.m b/iphone/Classes/TiDOMNamedNodeMapProxy.m index 9ddb4a95b7b..99263652598 100644 --- a/iphone/Classes/TiDOMNamedNodeMapProxy.m +++ b/iphone/Classes/TiDOMNamedNodeMapProxy.m @@ -119,14 +119,14 @@ - (id)item:(id)args /* Because of parity, we cannot enable this just yet, but this code will allow for treating index properties the same as foo.item(index). - + -(id)valueForUndefinedKey:(NSString *)key { - if ([[key stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]] length]==0) - { - return [self item:key]; - } - return [super valueForUndefinedKey:key]; + if ([[key stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]] length]==0) + { + return [self item:key]; + } + return [super valueForUndefinedKey:key]; } */ diff --git a/iphone/Classes/TiDOMNodeProxy.m b/iphone/Classes/TiDOMNodeProxy.m index df9fdba529c..1ba6801b1cd 100644 --- a/iphone/Classes/TiDOMNodeProxy.m +++ b/iphone/Classes/TiDOMNodeProxy.m @@ -121,7 +121,7 @@ + (void)validateAttributeParameters:(NSString *)tagName withUri:(NSString *)theU NSString *localName = [GDataXMLNode localNameForName:tagName]; if (![[tagName lowercaseString] isEqualToString:@"xmlns"]) { - //Check name validity + // Check name validity if (![TiDOMValidator checkAttributeName:localName]) { *error = @"Invalid attribute name"; *suberror = [NSString stringWithFormat:@"Offending localName %@", localName]; @@ -146,13 +146,13 @@ + (void)validateAttributeParameters:(NSString *)tagName withUri:(NSString *)theU return; } } else { - //Check prefix validity + // Check prefix validity if (![TiDOMValidator checkNamespacePrefix:prefix]) { *error = @"Invalid prefix"; *suberror = [NSString stringWithFormat:@"Offending prefix %@", prefix]; return; } - //Check URI validity + // Check URI validity if (![TiDOMValidator checkNamespaceURI:theURI]) { *error = @"Invalid URI"; *suberror = [NSString stringWithFormat:@"Offending URI %@", theURI]; @@ -173,7 +173,7 @@ + (void)validateElementParameters:(NSString *)tagName withUri:(NSString *)theURI NSString *prefix = [GDataXMLNode prefixForName:tagName]; NSString *localName = [GDataXMLNode localNameForName:tagName]; - //Check name validity + // Check name validity if (![TiDOMValidator checkElementName:localName]) { *error = @"Invalid element name"; *suberror = [NSString stringWithFormat:@"Offending localName %@", localName]; @@ -192,13 +192,13 @@ + (void)validateElementParameters:(NSString *)tagName withUri:(NSString *)theURI return; } } else { - //Check prefix validity + // Check prefix validity if (![TiDOMValidator checkNamespacePrefix:prefix]) { *error = @"Invalid prefix"; *suberror = [NSString stringWithFormat:@"Offending prefix %@", prefix]; return; } - //Check URI validity + // Check URI validity if (![TiDOMValidator checkNamespaceURI:theURI]) { *error = @"Invalid URI"; *suberror = [NSString stringWithFormat:@"Offending URI %@", theURI]; @@ -474,7 +474,7 @@ - (id)hasChildNodes:(id)args - (void)normalize:(id)args { - //TODO + // TODO } - (id)isSupported:(id)args diff --git a/iphone/Classes/TiDOMNotationProxy.m b/iphone/Classes/TiDOMNotationProxy.m index 2c761df6178..070552cd546 100644 --- a/iphone/Classes/TiDOMNotationProxy.m +++ b/iphone/Classes/TiDOMNotationProxy.m @@ -23,12 +23,12 @@ - (id)nodeValue - (id)publicId { - //TODO + // TODO return [NSNull null]; } - (id)systemId { - //TODO + // TODO return [NSNull null]; } @end diff --git a/iphone/Classes/TiDOMTextNodeProxy.m b/iphone/Classes/TiDOMTextNodeProxy.m index d959a611710..164c61709f0 100644 --- a/iphone/Classes/TiDOMTextNodeProxy.m +++ b/iphone/Classes/TiDOMTextNodeProxy.m @@ -30,14 +30,14 @@ - (TiDOMTextNodeProxy *)splitText:(id)args NSString *newNodeData = [ourData substringFromIndex:offsetArg]; NSString *ourNewData = [ourData substringToIndex:offsetArg]; - //Update out Text + // Update out Text [node setStringValue:ourNewData]; - //Create new node with data from offset + // Create new node with data from offset id context = ([self executionContext] == nil) ? [self pageContext] : [self executionContext]; TiDOMTextNodeProxy *result = [[[TiDOMTextNodeProxy alloc] _initWithPageContext:context] autorelease]; GDataXMLNode *resultElement = [GDataXMLNode textWithStringValue:newNodeData]; - //Now it is part of the tree so switch flag to ensur it gets freed when doc is released + // Now it is part of the tree so switch flag to ensur it gets freed when doc is released [resultElement setShouldFreeXMLNode:NO]; [result setDocument:[self document]]; [result setNode:resultElement]; @@ -47,11 +47,11 @@ - (TiDOMTextNodeProxy *)splitText:(id)args xmlNodePtr ourParent = ourRealNode->parent; - //Set Parent and Doc + // Set Parent and Doc resultRealNode->parent = ourParent; resultRealNode->doc = ourRealNode->doc; - //Set up next and prev pointers + // Set up next and prev pointers if (ourRealNode->next != nil) { ourRealNode->next->prev = resultRealNode; resultRealNode->next = ourRealNode->next; @@ -64,8 +64,8 @@ - (TiDOMTextNodeProxy *)splitText:(id)args } [TiDOMNodeProxy setNode:result forXMLNode:resultRealNode]; return result; - //THIS DOES NOT WORK SINCE LIBXML MERGES ADJACENT TEXT NODES WHEN ADDING SIBLINGS,CHILDREN - //xmlAddNextSibling([node XMLNode], [resultElement XMLNode]); + // THIS DOES NOT WORK SINCE LIBXML MERGES ADJACENT TEXT NODES WHEN ADDING SIBLINGS,CHILDREN + // xmlAddNextSibling([node XMLNode], [resultElement XMLNode]); } @end diff --git a/iphone/Classes/TiDOMValidator.m b/iphone/Classes/TiDOMValidator.m index 37a56aa3b3a..da729941832 100644 --- a/iphone/Classes/TiDOMValidator.m +++ b/iphone/Classes/TiDOMValidator.m @@ -30,7 +30,7 @@ + (BOOL)checkAttributeName:(NSString *)pName + (BOOL)checkNamespacePrefix:(NSString *)pName { - //Can be nil or empty + // Can be nil or empty if ([pName length] == 0) { return YES; } diff --git a/iphone/Classes/TiDatabaseProxy.m b/iphone/Classes/TiDatabaseProxy.m index 8c389b360f9..d1d1ceb84ac 100644 --- a/iphone/Classes/TiDatabaseProxy.m +++ b/iphone/Classes/TiDatabaseProxy.m @@ -33,7 +33,7 @@ - (void)shutdown:(id)sender - (void)_destroy { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self name:kTiShutdownNotification object:nil]; [self shutdown:nil]; [super _destroy]; @@ -41,7 +41,7 @@ - (void)_destroy - (void)_configure { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shutdown:) name:kTiShutdownNotification object:nil]; [super _configure]; } @@ -81,7 +81,7 @@ - (NSString *)dbDir BOOL oldCopyExists = [fm fileExistsAtPath:oldPath isDirectory:&isDirectory]; if (oldCopyExists && isDirectory) { NSDirectoryEnumerator *contents = [fm enumeratorAtPath:oldPath]; - //This gives relative paths. So create full path before moving + // This gives relative paths. So create full path before moving for (NSString *oldFile in contents) { [fm moveItemAtPath:[oldPath stringByAppendingPathComponent:oldFile] toPath:[dbPath stringByAppendingPathComponent:oldFile] error:nil]; } @@ -122,9 +122,9 @@ - (void)install:(NSString *)path name:(NSString *)name_ path = [url path]; #if TARGET_OS_SIMULATOR - //TIMOB-6081. Resources are right now symbolic links when running in simulator) so the copy method - //of filemanager just creates a link to the original resource. - //Resolve the symbolic link if running in simulator + // TIMOB-6081. Resources are right now symbolic links when running in simulator) so the copy method + // of filemanager just creates a link to the original resource. + // Resolve the symbolic link if running in simulator NSError *pathError = nil; NSDictionary *attributes = [fm attributesOfItemAtPath:path error:&pathError]; if (pathError != nil) { diff --git a/iphone/Classes/TiDatabaseResultSetProxy.m b/iphone/Classes/TiDatabaseResultSetProxy.m index 598678be678..501af7ffd30 100644 --- a/iphone/Classes/TiDatabaseResultSetProxy.m +++ b/iphone/Classes/TiDatabaseResultSetProxy.m @@ -138,7 +138,7 @@ - (JSValue *)field:(NSInteger)index withType:(JSValue *)optionalType if ([optionalType isNumber] || [optionalType isString]) { DatabaseFieldType type = [optionalType toInt32]; if (type != FieldTypeUnknown) { - //cast result on the way out if type constant was passed + // cast result on the way out if type constant was passed result = [self _transformObject:result toType:type]; } } @@ -158,7 +158,7 @@ - (JSValue *)fieldByName:(NSString *)name withType:(JSValue *)optionalType if ([optionalType isNumber] || [optionalType isString]) { DatabaseFieldType type = [optionalType toInt32]; if (type != FieldTypeUnknown) { - //cast result on the way out if type constant was passed + // cast result on the way out if type constant was passed result = [self _transformObject:result toType:type]; } } diff --git a/iphone/Classes/TiFilesystemBlobProxy.m b/iphone/Classes/TiFilesystemBlobProxy.m index f9bdd299e15..69710487f9b 100644 --- a/iphone/Classes/TiFilesystemBlobProxy.m +++ b/iphone/Classes/TiFilesystemBlobProxy.m @@ -39,7 +39,7 @@ - (void)dealloc - (NSString *)apiName { - //Should we return Ti.FileSystem.Blob? + // Should we return Ti.FileSystem.Blob? return @"Ti.Filesystem.File"; } diff --git a/iphone/Classes/TiGravityBehavior.m b/iphone/Classes/TiGravityBehavior.m index 2021da167cd..2b6be9dc3ad 100644 --- a/iphone/Classes/TiGravityBehavior.m +++ b/iphone/Classes/TiGravityBehavior.m @@ -61,7 +61,7 @@ - (UIDynamicBehavior *)behaviorObject - (void)updateItems { - //Update params for reinitialization + // Update params for reinitialization _angle = [_gravityBehavior angle]; _magnitude = [_gravityBehavior magnitude]; _vector = [_gravityBehavior gravityDirection]; diff --git a/iphone/Classes/TiMediaAudioPlayerProxy.m b/iphone/Classes/TiMediaAudioPlayerProxy.m index d6549e42196..59e47ad36a9 100644 --- a/iphone/Classes/TiMediaAudioPlayerProxy.m +++ b/iphone/Classes/TiMediaAudioPlayerProxy.m @@ -377,7 +377,7 @@ + (NSString *)_stateToString:(NSInteger)state - (void)addNotificationObserver { - WARN_IF_BACKGROUND_THREAD; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; // For playbackState property / playbackstate event diff --git a/iphone/Classes/TiMediaMusicPlayer.m b/iphone/Classes/TiMediaMusicPlayer.m index ac4c457ce4a..d743fa76caf 100644 --- a/iphone/Classes/TiMediaMusicPlayer.m +++ b/iphone/Classes/TiMediaMusicPlayer.m @@ -17,7 +17,7 @@ @implementation TiMediaMusicPlayer // Has to happen on main thread or notifications screw up - (void)initializePlayer { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(stateDidChange:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:player]; [nc addObserver:self selector:@selector(playingDidChange:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:player]; @@ -30,7 +30,7 @@ - (id)_initWithPageContext:(id)context player:(MPMusicPlayerControl { if (self = [super _initWithPageContext:context]) { player = player_; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(stateDidChange:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:player]; [nc addObserver:self selector:@selector(playingDidChange:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:player]; @@ -43,7 +43,7 @@ - (id)_initWithPageContext:(id)context player:(MPMusicPlayerControl - (void)dealloc { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc removeObserver:self name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:player]; [nc removeObserver:self name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:player]; @@ -252,7 +252,7 @@ - (void)setVolume:(NSNumber *)vol // TODO: Change to KrollCallback properties for faster response times? - (void)stateDidChange:(NSNotification *)note { - if ([self _hasListeners:@"stateChange"]) { //TODO: Deprecate old event. + if ([self _hasListeners:@"stateChange"]) { // TODO: Deprecate old event. [self fireEvent:@"stateChange"]; } if ([self _hasListeners:@"statechange"]) { @@ -262,7 +262,7 @@ - (void)stateDidChange:(NSNotification *)note - (void)playingDidChange:(NSNotification *)note { - if ([self _hasListeners:@"playingChange"]) { //TODO: Deprecate old event. + if ([self _hasListeners:@"playingChange"]) { // TODO: Deprecate old event. [self fireEvent:@"playingChange"]; } if ([self _hasListeners:@"playingchange"]) { @@ -272,7 +272,7 @@ - (void)playingDidChange:(NSNotification *)note - (void)volumeDidChange:(NSNotification *)note { - if ([self _hasListeners:@"volumeChange"]) { //TODO: Deprecate old event. + if ([self _hasListeners:@"volumeChange"]) { // TODO: Deprecate old event. [self fireEvent:@"volumeChange"]; } if ([self _hasListeners:@"volumechange"]) { diff --git a/iphone/Classes/TiMediaSoundProxy.m b/iphone/Classes/TiMediaSoundProxy.m index 4ad8a7bcbd5..c3e8552146b 100644 --- a/iphone/Classes/TiMediaSoundProxy.m +++ b/iphone/Classes/TiMediaSoundProxy.m @@ -281,7 +281,7 @@ - (void)setUrl:(id)url_ } } else if ([url_ isKindOfClass:[TiBlob class]]) { TiBlob *blob = (TiBlob *)url_; - //TODO: for now we're only supporting File-type blobs + // TODO: for now we're only supporting File-type blobs if ([blob type] == TiBlobTypeFile) { url = [[NSURL fileURLWithPath:[blob path]] retain]; } diff --git a/iphone/Classes/TiMediaSystemAlertProxy.m b/iphone/Classes/TiMediaSystemAlertProxy.m index 4832b33e214..6c7c0187a18 100644 --- a/iphone/Classes/TiMediaSystemAlertProxy.m +++ b/iphone/Classes/TiMediaSystemAlertProxy.m @@ -53,7 +53,7 @@ - (void)setUrl:(id)url_ // we need to download it and save it off into temp file NSData *data = [NSData dataWithContentsOfURL:url]; NSString *ext = [[[url path] lastPathComponent] pathExtension]; - //ignore this on static analyzer, as commented, it'll be auto-deleted on release + // ignore this on static analyzer, as commented, it'll be auto-deleted on release TiFile *tempFile = [[TiFile createTempFile:ext] retain]; // file auto-deleted on release [data writeToFile:[tempFile path] atomically:YES]; RELEASE_TO_NIL(url); diff --git a/iphone/Classes/TiMediaVideoPlayerProxy.m b/iphone/Classes/TiMediaVideoPlayerProxy.m index 3b0a45e8a57..64d8d1bbca4 100644 --- a/iphone/Classes/TiMediaVideoPlayerProxy.m +++ b/iphone/Classes/TiMediaVideoPlayerProxy.m @@ -83,7 +83,7 @@ - (NSString *)apiName - (void)addNotificationObserver { - WARN_IF_BACKGROUND_THREAD; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; // For durationavailable event @@ -226,7 +226,7 @@ - (void)setOverlayView:(id)proxy - (void)setBackgroundView:(id)proxy { DEPRECATED_REPLACED(@"Media.VideoPlayer.backgroundView", @"7.0.0", @"Media.VideoPlayer.overlayView") - [self setOverlayView:proxy]; + [self setOverlayView:proxy]; } - (NSNumber *)playing diff --git a/iphone/Classes/TiNetworkHTTPClientProxy.m b/iphone/Classes/TiNetworkHTTPClientProxy.m index 8932a81d898..483dd80e13f 100644 --- a/iphone/Classes/TiNetworkHTTPClientProxy.m +++ b/iphone/Classes/TiNetworkHTTPClientProxy.m @@ -69,7 +69,7 @@ - (void)open:(id)args if ([httpRequest response] != nil) { APSHTTPResponseState curState = [[httpRequest response] readyState]; if ((curState == APSHTTPResponseStateUnsent) || (curState == APSHTTPResponseStateDone)) { - //Clear out the client + delegate and continue + // Clear out the client + delegate and continue RELEASE_TO_NIL(httpRequest); RELEASE_TO_NIL(apsConnectionDelegate); } else { @@ -326,11 +326,11 @@ - (void)request:(APSHTTPRequest *)request onLoad:(APSHTTPResponse *)response } NSInteger responseCode = [response status]; /** - * Per customer request, successful communications that resulted in an - * 4xx or 5xx response is treated as an error instead of an onload. - * For backwards compatibility, if no error handler is provided, even - * an 4xx or 5xx response will fall back onto an onload. - */ + * Per customer request, successful communications that resulted in an + * 4xx or 5xx response is treated as an error instead of an onload. + * For backwards compatibility, if no error handler is provided, even + * an 4xx or 5xx response will fall back onto an onload. + */ if (hasOnerror && (responseCode >= 400) && (responseCode <= 599)) { NSMutableDictionary *event = [TiUtils dictionaryWithCode:responseCode message:@"HTTP error"]; [event setObject:@"error" forKey:@"type"]; @@ -395,53 +395,53 @@ - (void)request:(APSHTTPRequest *)request onRedirect:(APSHTTPResponse *)response - (void)setOnload:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onload" - notification:NO]; + [self replaceValue:callback + forKey:@"onload" + notification:NO]; hasOnload = (callback == nil) ? NO : YES; } - (void)setOnerror:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onerror" - notification:NO]; + [self replaceValue:callback + forKey:@"onerror" + notification:NO]; hasOnerror = (callback == nil) ? NO : YES; ; } - (void)setOnreadystatechange:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onreadystatechange" - notification:NO]; + [self replaceValue:callback + forKey:@"onreadystatechange" + notification:NO]; hasOnreadystatechange = (callback == nil) ? NO : YES; ; } - (void)setOndatastream:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"ondatastream" - notification:NO]; + [self replaceValue:callback + forKey:@"ondatastream" + notification:NO]; hasOndatastream = (callback == nil) ? NO : YES; ; } - (void)setOnsendstream:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onsendstream" - notification:NO]; + [self replaceValue:callback + forKey:@"onsendstream" + notification:NO]; hasOnsendstream = (callback == nil) ? NO : YES; ; } - (void)setOnredirect:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onredirect" - notification:NO]; + [self replaceValue:callback + forKey:@"onredirect" + notification:NO]; hasOnredirect = (callback == nil) ? NO : YES; ; } diff --git a/iphone/Classes/TiPushBehavior.m b/iphone/Classes/TiPushBehavior.m index af1c8071c8c..d9f5b8fc471 100644 --- a/iphone/Classes/TiPushBehavior.m +++ b/iphone/Classes/TiPushBehavior.m @@ -64,7 +64,7 @@ - (UIDynamicBehavior *)behaviorObject - (void)updateItems { - //Update params for reinitialization + // Update params for reinitialization _angle = [_pushBehavior angle]; _magnitude = [_pushBehavior magnitude]; _vector = [_pushBehavior pushDirection]; diff --git a/iphone/Classes/TiSnapBehavior.m b/iphone/Classes/TiSnapBehavior.m index 843253fde47..81b54a64609 100644 --- a/iphone/Classes/TiSnapBehavior.m +++ b/iphone/Classes/TiSnapBehavior.m @@ -49,7 +49,7 @@ - (UIDynamicBehavior *)behaviorObject - (void)updateItems { - //Nothing to do here + // Nothing to do here } - (void)updatePositioning diff --git a/iphone/Classes/TiUIActivityIndicator.m b/iphone/Classes/TiUIActivityIndicator.m index 3c61001b363..802acc2e363 100644 --- a/iphone/Classes/TiUIActivityIndicator.m +++ b/iphone/Classes/TiUIActivityIndicator.m @@ -92,9 +92,9 @@ - (UIActivityIndicatorView *)indicatorView { if (indicatorView == nil) { indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:style]; - //TIMOB-17572. When a cell is reused all animations are removed. That will hide the - //ActivityIndicator. Setting it to false ensures that visibility is controlled by the - //visible property of the ActivityIndicator (initialized to false) + // TIMOB-17572. When a cell is reused all animations are removed. That will hide the + // ActivityIndicator. Setting it to false ensures that visibility is controlled by the + // visible property of the ActivityIndicator (initialized to false) [indicatorView setHidesWhenStopped:NO]; if (spinnerColor != nil) { [indicatorView setColor:spinnerColor]; @@ -287,7 +287,7 @@ - (void)didMoveToWindow messageLabel = [self messageLabel]; indicatorView = [self indicatorView]; #endif - //TIMOB-15293 + // TIMOB-15293 if (([self window] != nil) && (indicatorView != nil) && (![indicatorView isAnimating])) { BOOL visible = [TiUtils boolValue:[[self proxy] valueForKey:@"visible"] def:NO]; if (visible) { diff --git a/iphone/Classes/TiUIAlertDialogProxy.m b/iphone/Classes/TiUIAlertDialogProxy.m index 74e21a84054..7c1df526edc 100644 --- a/iphone/Classes/TiUIAlertDialogProxy.m +++ b/iphone/Classes/TiUIAlertDialogProxy.m @@ -151,7 +151,7 @@ - (void)show:(id)unused [alertController setPreferredAction:[[alertController actions] objectAtIndex:preferredIndex]]; } - //Configure the TextFields + // Configure the TextFields if ((style == UIAlertViewStylePlainTextInput) || (style == UIAlertViewStyleSecureTextInput)) { [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) { textField.secureTextEntry = (style == UIAlertViewStyleSecureTextInput); diff --git a/iphone/Classes/TiUIButton.h b/iphone/Classes/TiUIButton.h index 0a4b006c2ce..28eff92199b 100644 --- a/iphone/Classes/TiUIButton.h +++ b/iphone/Classes/TiUIButton.h @@ -13,8 +13,8 @@ UIButton *button; #ifndef TI_USE_AUTOLAYOUT - //In the rare case where the button is treated as a view group, we must have - //an empty wrapper for -[parentViewForChild:] + // In the rare case where the button is treated as a view group, we must have + // an empty wrapper for -[parentViewForChild:] UIView *viewGroupWrapper; #endif UIImage *backgroundImageCache; diff --git a/iphone/Classes/TiUIButton.m b/iphone/Classes/TiUIButton.m index 2530c03bca7..7de4cfa9179 100644 --- a/iphone/Classes/TiUIButton.m +++ b/iphone/Classes/TiUIButton.m @@ -98,8 +98,8 @@ - (void)updateBackgroundImage if ((bounds.size.width >= imageSize.width) && (bounds.size.height >= imageSize.height)) { [button setBackgroundImage:backgroundImageCache forState:UIControlStateNormal]; } else { - //If the bounds are smaller than the image size render it in an imageView and get the image of the view. - //Should be pretty inexpensive since it happens rarely. TIMOB-9166 + // If the bounds are smaller than the image size render it in an imageView and get the image of the view. + // Should be pretty inexpensive since it happens rarely. TIMOB-9166 CGSize unstrechedSize = (backgroundImageUnstretchedCache != nil) ? [backgroundImageUnstretchedCache size] : CGSizeZero; if (backgroundImageUnstretchedCache == nil || !CGSizeEqualToSize(unstrechedSize, bounds.size)) { UIImageView *theView = [[UIImageView alloc] initWithFrame:bounds]; diff --git a/iphone/Classes/TiUIButtonBar.m b/iphone/Classes/TiUIButtonBar.m index 617a116affa..7ed157f2c3d 100644 --- a/iphone/Classes/TiUIButtonBar.m +++ b/iphone/Classes/TiUIButtonBar.m @@ -82,7 +82,7 @@ - (UIColor *)reverseColorOf:(UIColor *)oldColor UIColor *newColor = [UIColor colorWithCGColor:newCGColor]; CGColorRelease(newCGColor); - //For the GRAY colors 'Middle level colors' + // For the GRAY colors 'Middle level colors' CGFloat white = 0; [oldColor getWhite:&white alpha:nil]; diff --git a/iphone/Classes/TiUIButtonProxy.m b/iphone/Classes/TiUIButtonProxy.m index 8f71bed450f..6f7864883f7 100644 --- a/iphone/Classes/TiUIButtonProxy.m +++ b/iphone/Classes/TiUIButtonProxy.m @@ -45,12 +45,12 @@ - (NSString *)apiName - (UIBarButtonItem *)barButtonItem { /* - id backgroundImageValue = [self valueForKey:@"backgroundImage"]; - if (!IS_NULL_OR_NIL(backgroundImageValue)) - { - return [super barButtonItem]; - } - */ + id backgroundImageValue = [self valueForKey:@"backgroundImage"]; + if (!IS_NULL_OR_NIL(backgroundImageValue)) + { + return [super barButtonItem]; + } + */ if (button == nil || !isUsingBarButtonItem) { isUsingBarButtonItem = YES; @@ -112,11 +112,11 @@ - (BOOL)attachedToToolbar return toolbar != nil; } -//TODO: Remove when deprecated +// TODO: Remove when deprecated - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(int)code message:(NSString *)message; { if (![TiUtils boolValue:[self valueForKey:@"enabled"] def:YES]) { - //Rogue event. We're supposed to be disabled! + // Rogue event. We're supposed to be disabled! return; } [super fireEvent:type withObject:obj withSource:source propagate:propagate reportSuccess:report errorCode:code message:message]; @@ -125,7 +125,7 @@ - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source prop - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(NSInteger)code message:(NSString *)message; { if (![TiUtils boolValue:[self valueForKey:@"enabled"] def:YES]) { - //Rogue event. We're supposed to be disabled! + // Rogue event. We're supposed to be disabled! return; } [super fireEvent:type withObject:obj propagate:propagate reportSuccess:report errorCode:code message:message]; diff --git a/iphone/Classes/TiUICanvasView.m b/iphone/Classes/TiUICanvasView.m index 5114d63285d..21eea3294b7 100644 --- a/iphone/Classes/TiUICanvasView.m +++ b/iphone/Classes/TiUICanvasView.m @@ -40,10 +40,10 @@ TiCanvasFillText, }; -//TODO: font, textAlign, textBaseline, fillText -//TODO: measureText, strokeText, drawImage -//TODO: gradients, patterns, toImage -//TODO: rotate, scale, transform, translate +// TODO: font, textAlign, textBaseline, fillText +// TODO: measureText, strokeText, drawImage +// TODO: gradients, patterns, toImage +// TODO: rotate, scale, transform, translate @implementation TiUICanvasView @@ -138,7 +138,7 @@ - (CGBlendMode)blendModeFromString:(NSString *)value BLEND_MODE(source - out, kCGBlendModeSourceOut); BLEND_MODE(source - over, kCGBlendModeNormal); BLEND_MODE(xor, kCGBlendModeXOR); - return kCGBlendModeNormal; //default by HTML canvas spec + return kCGBlendModeNormal; // default by HTML canvas spec } - (void)draw:(CGContextRef)context operation:(int)operation args:(NSArray *)args @@ -257,23 +257,23 @@ - (void)draw:(CGContextRef)context operation:(int)operation args:(NSArray *)args case TiCanvasFont: { ENSURE_ARG_COUNT(args, 1); CGContextSelectFont(context, [[args objectAtIndex:0] UTF8String], 40, kCGEncodingMacRoman); - //CGContextSetFont(context, fontRef); + // CGContextSetFont(context, fontRef); break; } case TiCanvasTextAlign: { - //TODO: how to do this in core graphics? + // TODO: how to do this in core graphics? break; } case TiCanvasTextBaseline: { - //TODO: how to do this in core graphics? + // TODO: how to do this in core graphics? break; } case TiCanvasFillText: { - //NOTE: Core Graphics doesn't support Unicode text drawing. Suggests ATSUI or Cocoa + // NOTE: Core Graphics doesn't support Unicode text drawing. Suggests ATSUI or Cocoa NSString *text = [args objectAtIndex:0]; CGFloat x = [TiUtils floatValue:[args objectAtIndex:1]]; CGFloat y = [TiUtils floatValue:[args objectAtIndex:2]]; - //TODO: max support + // TODO: max support CGContextShowTextAtPoint(context, x, y, [text UTF8String], [text length]); break; } diff --git a/iphone/Classes/TiUIDashboardView.m b/iphone/Classes/TiUIDashboardView.m index b621ed06480..1fe58be5d27 100644 --- a/iphone/Classes/TiUIDashboardView.m +++ b/iphone/Classes/TiUIDashboardView.m @@ -131,10 +131,10 @@ - (void)launcherView:(LauncherView *)launcher_ willDragItem:(LauncherItem *)item // the actual item being moved [event setObject:item.userData forKey:@"item"]; - if ([self.proxy _hasListeners:@"dragStart"]) { //TODO: Deprecate old event + if ([self.proxy _hasListeners:@"dragStart"]) { // TODO: Deprecate old event [self.proxy fireEvent:@"dragStart" withObject:event]; } - if ([item.userData _hasListeners:@"dragStart"]) { //TODO: Deprecate old event + if ([item.userData _hasListeners:@"dragStart"]) { // TODO: Deprecate old event [item.userData fireEvent:@"dragStart" withObject:event]; } if ([self.proxy _hasListeners:@"dragstart"]) { @@ -151,10 +151,10 @@ - (void)launcherView:(LauncherView *)launcher_ didDragItem:(LauncherItem *)item // the actual item being moved [event setObject:item.userData forKey:@"item"]; - if ([self.proxy _hasListeners:@"dragEnd"]) { //TODO: Deprecate old event + if ([self.proxy _hasListeners:@"dragEnd"]) { // TODO: Deprecate old event [self.proxy fireEvent:@"dragEnd" withObject:event]; } - if ([item.userData _hasListeners:@"dragEnd"]) { //TODO: Deprecate old event + if ([item.userData _hasListeners:@"dragEnd"]) { // TODO: Deprecate old event [item.userData fireEvent:@"dragEnd" withObject:event]; } if ([self.proxy _hasListeners:@"dragend"]) { diff --git a/iphone/Classes/TiUIDashboardViewProxy.m b/iphone/Classes/TiUIDashboardViewProxy.m index 6a5e793c073..372714e7da9 100644 --- a/iphone/Classes/TiUIDashboardViewProxy.m +++ b/iphone/Classes/TiUIDashboardViewProxy.m @@ -49,7 +49,7 @@ - (void)stopEditing:(id)args [self makeViewPerformSelector:@selector(stopEditing) withObject:nil createIfNeeded:YES waitUntilDone:NO]; } -//TODO: Remove when deprication is done. +// TODO: Remove when deprication is done. - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(int)code message:(NSString *)message; { if ([type isEqual:@"click"]) { @@ -78,7 +78,7 @@ - (void)setData:(id)data { for (TiViewProxy *proxy in data) { ENSURE_TYPE(proxy, TiUIDashboardItemProxy) - [self rememberProxy:proxy]; + [self rememberProxy:proxy]; } [self replaceValue:data forKey:@"data" notification:NO]; diff --git a/iphone/Classes/TiUIImageView.m b/iphone/Classes/TiUIImageView.m index 6dd07fb816f..2bf4bc7a453 100644 --- a/iphone/Classes/TiUIImageView.m +++ b/iphone/Classes/TiUIImageView.m @@ -59,7 +59,7 @@ - (void)dealloc - (CGFloat)contentWidthForWidth:(CGFloat)suggestedWidth { if (autoWidth > 0) { - //If height is DIP returned a scaled autowidth to maintain aspect ratio + // If height is DIP returned a scaled autowidth to maintain aspect ratio if (TiDimensionIsDip(height) && autoHeight > 0) { return roundf(autoWidth * height.value / autoHeight); } @@ -199,7 +199,7 @@ - (void)startTimerWithEvent:(NSString *)eventName } if ([eventName isEqualToString:@"start"] && previous == nil) { - //TIMOB-18830. Load the first image immediately + // TIMOB-18830. Load the first image immediately [self timerFired:nil]; } @@ -234,7 +234,7 @@ - (void)updateTimer - (UIImage *)rotatedImage:(UIImage *)originalImage { - //If autorotate is set to false and the image orientation is not UIImageOrientationUp create new image + // If autorotate is set to false and the image orientation is not UIImageOrientationUp create new image if (![TiUtils boolValue:[[self proxy] valueForUndefinedKey:@"autorotate"] def:YES] && (originalImage.imageOrientation != UIImageOrientationUp)) { UIImage *theImage = [UIImage imageWithCGImage:[originalImage CGImage] scale:[originalImage scale] orientation:UIImageOrientationUp]; return theImage; @@ -404,8 +404,8 @@ - (void)loadImageInBackground:(NSNumber *)pos } if (ready) { - //NOTE: for now i'm just making sure you have at least one frame loaded before starting the timer - //but in the future we may want to be more sophisticated + // NOTE: for now i'm just making sure you have at least one frame loaded before starting the timer + // but in the future we may want to be more sophisticated int min = 1; readyCount++; if (readyCount >= min) { @@ -446,7 +446,7 @@ - (void)loadDefaultImage:(CGSize)imageSize // if not specified NSURL *defURL = [TiUtils toURL:[self.proxy valueForKey:@"defaultImage"] proxy:self.proxy]; - if ((defURL == nil) && ![TiUtils boolValue:[self.proxy valueForKey:@"preventDefaultImage"] def:NO]) { //This is a special case, because it IS built into the bundle despite being in the simulator. + if ((defURL == nil) && ![TiUtils boolValue:[self.proxy valueForKey:@"preventDefaultImage"] def:NO]) { // This is a special case, because it IS built into the bundle despite being in the simulator. NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"modules/ui/images/photoDefault.png"]; defURL = [NSURL fileURLWithPath:filePath]; } @@ -488,13 +488,13 @@ - (void)loadUrl:(NSURL *)img NSString *imageArg = nil; if (range.location != NSNotFound) { if ([TiUtils isMacOS]) { - imageArg = [pathStr substringFromIndex:range.location + 24]; //Contents/Resources/ for mac + imageArg = [pathStr substringFromIndex:range.location + 24]; // Contents/Resources/ for mac } else { imageArg = [pathStr substringFromIndex:range.location + 5]; } } - //remove suffixes. + // remove suffixes. imageArg = [imageArg stringByReplacingOccurrencesOfString:@"@3x" withString:@""]; imageArg = [imageArg stringByReplacingOccurrencesOfString:@"@2x" withString:@""]; imageArg = [imageArg stringByReplacingOccurrencesOfString:@"~iphone" withString:@""]; @@ -787,7 +787,7 @@ - (void)imageLoadSuccess:(ImageLoaderRequest *)request image:(UIImage *)image autoWidth = imageToUse.size.width; autoHeight = imageToUse.size.height; - //Setting hires to true causes image to de displayed at 50% + // Setting hires to true causes image to de displayed at 50% if ([TiUtils boolValue:[[self proxy] valueForKey:@"hires"]]) { autoWidth = autoWidth / 2; autoHeight = autoHeight / 2; diff --git a/iphone/Classes/TiUIImageViewProxy.m b/iphone/Classes/TiUIImageViewProxy.m index bfa1a34d5f0..5a69e03ae0d 100644 --- a/iphone/Classes/TiUIImageViewProxy.m +++ b/iphone/Classes/TiUIImageViewProxy.m @@ -39,7 +39,7 @@ - (NSString *)apiName - (void)propagateLoadEvent:(NSString *)stateString { #ifndef TI_USE_AUTOLAYOUT - //Send out a content change message if we are auto sizing + // Send out a content change message if we are auto sizing if (TiDimensionIsAuto(layoutProperties.width) || TiDimensionIsAutoSize(layoutProperties.width) || TiDimensionIsUndefined(layoutProperties.width) || TiDimensionIsAuto(layoutProperties.height) || TiDimensionIsAutoSize(layoutProperties.height) || TiDimensionIsUndefined(layoutProperties.height)) { [self refreshSize]; [self willChangeSize]; @@ -74,9 +74,9 @@ - (void)start:(id)args - (void)stop:(id)args { - //Don't put this in UIThread, because it doesn't need to go in UIThread. - //Furthermore, by the time this is run, if this stop was called by a destroy - //Bad things(tm) happen. + // Don't put this in UIThread, because it doesn't need to go in UIThread. + // Furthermore, by the time this is run, if this stop was called by a destroy + // Bad things(tm) happen. [destroyLock lock]; if ([self viewAttached]) { @@ -138,7 +138,7 @@ - (id)toBlob:(id)args id imageValue = [self valueForKey:@"image"]; if ([imageValue isKindOfClass:[TiBlob class]]) { - //We already have it right here already! + // We already have it right here already! return imageValue; } @@ -183,7 +183,7 @@ - (void)setImage:(id)newImage - (void)startImageLoad:(NSURL *)url; { - [self cancelPendingImageLoads]; //Just in case we have a crusty old urlRequest. + [self cancelPendingImageLoads]; // Just in case we have a crusty old urlRequest. NSDictionary *info = nil; NSNumber *hires = [self valueForKey:@"hires"]; if (hires) { diff --git a/iphone/Classes/TiUILabel.m b/iphone/Classes/TiUILabel.m index ea1ae0ac281..6424f3fac0e 100644 --- a/iphone/Classes/TiUILabel.m +++ b/iphone/Classes/TiUILabel.m @@ -77,8 +77,8 @@ - (CGSize)sizeForFont:(CGFloat)suggestedWidth - (CGFloat)contentWidthForWidth:(CGFloat)suggestedWidth { /* - Why both? sizeThatFits returns the width with line break mode tail truncation and we like to - have atleast enough space to display one word. On the otherhand font measurement is unsuitable for + Why both? sizeThatFits returns the width with line break mode tail truncation and we like to + have atleast enough space to display one word. On the otherhand font measurement is unsuitable for attributed strings till we move to the new measurement API. Hence take both and return MAX. */ CGFloat sizeThatFitsResult = [[self label] sizeThatFits:CGSizeMake(suggestedWidth, 0)].width; @@ -97,7 +97,7 @@ - (void)padLabel CGSize actualLabelSize = [[self label] sizeThatFits:CGSizeMake(initialLabelFrame.size.width, 0)]; UIControlContentVerticalAlignment alignment = verticalAlign; if (alignment == UIControlContentVerticalAlignmentFill) { - //IOS7 layout issue fix with attributed string. + // IOS7 layout issue fix with attributed string. if (actualLabelSize.height < initialLabelFrame.size.height) { alignment = UIControlContentVerticalAlignmentCenter; } else { @@ -307,7 +307,7 @@ - (void)recognizedTap:(UITapGestureRecognizer *)recognizer if ([recognizer numberOfTouchesRequired] == 2) { [self.proxy fireEvent:@"twofingertap" withObject:event]; } else if ([recognizer numberOfTapsRequired] == 2) { - //Because double-tap suppresses touchStart and double-click, we must do this: + // Because double-tap suppresses touchStart and double-click, we must do this: if ([self.proxy _hasListeners:@"touchstart"]) { [self.proxy fireEvent:@"touchstart" withObject:event propagate:YES]; } @@ -368,11 +368,11 @@ - (void)setHighlighted:(BOOL)newValue - (void)didMoveToSuperview { /* - * Because of how we re-use the same cells in both a tableview and its - * search table, there is the chance that the label is transported between - * the two views before a selected search row is deselected. In other - * words, make sure we're not highlighted when changing superviews. - */ + * Because of how we re-use the same cells in both a tableview and its + * search table, there is the chance that the label is transported between + * the two views before a selected search row is deselected. In other + * words, make sure we're not highlighted when changing superviews. + */ [self setHighlighted:NO]; [super didMoveToSuperview]; } @@ -380,8 +380,8 @@ - (void)didMoveToSuperview - (void)didMoveToWindow { /* - * See above - */ + * See above + */ [self setHighlighted:NO]; [super didMoveToWindow]; } diff --git a/iphone/Classes/TiUIListItem.m b/iphone/Classes/TiUIListItem.m index 1dce31a1207..603056f49f9 100644 --- a/iphone/Classes/TiUIListItem.m +++ b/iphone/Classes/TiUIListItem.m @@ -141,7 +141,7 @@ - (void)layoutSubviews } } -//TIMOB-17373. Workaround for separators disappearing on iOS7 and above +// TIMOB-17373. Workaround for separators disappearing on iOS7 and above - (void)ensureVisibleSelectorWithTableView:(UITableView *)tableView { if ([self selectedOrHighlighted]) { @@ -177,7 +177,7 @@ - (void)updateGradientLayer:(BOOL)useSelected withAnimation:(BOOL)animated if (currentGradient == nil) { [gradientLayer removeFromSuperlayer]; - //Because there's the chance that the other state still has the gradient, let's keep it around. + // Because there's the chance that the other state still has the gradient, let's keep it around. return; } @@ -320,7 +320,7 @@ - (BOOL)canApplyDataItem:(NSDictionary *)otherItem; if (same) { same = [self compareDataItemValue:@"height" withItem:otherItem]; } - //These properties are applied in willDisplayCell. So force reload. + // These properties are applied in willDisplayCell. So force reload. if (same) { same = [self compareDataItemValue:@"backgroundColor" withItem:otherItem]; } @@ -335,7 +335,7 @@ - (BOOL)canApplyDataItem:(NSDictionary *)otherItem; - (void)configureCellBackground { - //Ensure that we store the default backgroundColor + // Ensure that we store the default backgroundColor if ([_initialValues objectForKey:@"backgroundColor"] == nil) { id initialValue = nil; if (_templateStyle == TiUIListItemTemplateStyleCustom) { @@ -360,7 +360,7 @@ - (void)configureCellBackground } self.backgroundColor = color; - //Ensure that we store the backgroundImage + // Ensure that we store the backgroundImage if ([_initialValues objectForKey:@"backgroundImage"] == nil) { id initialValue = nil; if (_templateStyle == TiUIListItemTemplateStyleCustom) { @@ -374,7 +374,7 @@ - (void)configureCellBackground } UIImage *bgImage = [[ImageLoader sharedLoader] loadImmediateStretchableImage:[TiUtils toURL:backgroundImage proxy:_proxy] withLeftCap:TiDimensionAuto topCap:TiDimensionAuto]; if (bgImage != nil) { - //Set the backgroundView to ImageView and set its backgroundColor to bgColor + // Set the backgroundView to ImageView and set its backgroundColor to bgColor if ([self.backgroundView isKindOfClass:[UIImageView class]]) { [(UIImageView *)self.backgroundView setImage:bgImage]; [(UIImageView *)self.backgroundView setBackgroundColor:[UIColor clearColor]]; diff --git a/iphone/Classes/TiUIListItemProxy.m b/iphone/Classes/TiUIListItemProxy.m index 1c77ac9763e..0dcede704dc 100644 --- a/iphone/Classes/TiUIListItemProxy.m +++ b/iphone/Classes/TiUIListItemProxy.m @@ -27,8 +27,8 @@ - (id)initWithListViewProxy:(TiUIListViewProxy *)listViewProxy inContext:(id)context { - //Aggressive removal of children on deallocation of cell + // Aggressive removal of children on deallocation of cell [self removeAllChildren:nil]; [self windowDidClose]; - //Go ahead and unprotect JS object and mark context closed + // Go ahead and unprotect JS object and mark context closed //(Since cell no longer exists, the proxy is inaccessible) [context.krollContext invokeBlockOnThread:^{ [self forgetSelf]; diff --git a/iphone/Classes/TiUIListView.m b/iphone/Classes/TiUIListView.m index 6efad8e2b35..f1ca5250794 100644 --- a/iphone/Classes/TiUIListView.m +++ b/iphone/Classes/TiUIListView.m @@ -403,7 +403,7 @@ - (void)setDictTemplates_:(id)args - (TiUIView *)sectionView:(NSInteger)section forLocation:(NSString *)location section:(TiUIListSectionProxy **)sectionResult { TiUIListSectionProxy *proxy = [self.listViewProxy sectionForIndex:section]; - //In the event that proxy is nil, this all flows out to returning nil safely anyways. + // In the event that proxy is nil, this all flows out to returning nil safely anyways. if (sectionResult != nil) { *sectionResult = proxy; } @@ -411,7 +411,7 @@ - (TiUIView *)sectionView:(NSInteger)section forLocation:(NSString *)location se if (viewproxy != nil && [viewproxy isKindOfClass:[TiViewProxy class]]) { #ifndef TI_USE_AUTOLAYOUT LayoutConstraint *viewLayout = [viewproxy layoutProperties]; - //If height is not dip, explicitly set it to SIZE + // If height is not dip, explicitly set it to SIZE if (viewLayout->height.type != TiDimensionTypeDip) { viewLayout->height = TiDimensionAutoSize; } @@ -493,14 +493,14 @@ - (void)buildResultsForSearchText RELEASE_TO_NIL(filteredTitles); if (searchActive) { BOOL hasResults = NO; - //Initialize + // Initialize if (_searchResults == nil) { _searchResults = [[NSMutableArray alloc] init]; } - //Clear Out + // Clear Out [_searchResults removeAllObjects]; - //Search Options + // Search Options NSStringCompareOptions searchOpts = (caseInsensitiveSearch ? NSCaseInsensitiveSearch : 0); NSUInteger maxSection = [[self.listViewProxy sectionCount] unsignedIntegerValue]; @@ -1078,7 +1078,7 @@ - (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSS - (BOOL)canEditRowAtIndexPath:(NSIndexPath *)indexPath { id editValue = [self valueWithKey:@"canEdit" atIndexPath:indexPath]; - //canEdit if undefined is false + // canEdit if undefined is false return [TiUtils boolValue:editValue def:NO]; } @@ -1271,7 +1271,7 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEd NSDictionary *theItem = [[theSection itemAtIndex:realIndexPath.row] retain]; - //Delete Data + // Delete Data [theSection deleteItemAtIndex:realIndexPath.row]; [self fireEditEventWithName:@"delete" andSection:theSection atIndexPath:realIndexPath item:theItem]; @@ -1301,28 +1301,28 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEd [_searchResults insertObject:[NSArray array] atIndex:indexPath.section]; } - //Reload the data now. + // Reload the data now. [tableView beginUpdates]; if (emptyTable) { - //Table is empty. Just reload fake section with FADE animation to clear out header and footers + // Table is empty. Just reload fake section with FADE animation to clear out header and footers NSIndexSet *theSet = [NSIndexSet indexSetWithIndex:0]; [tableView reloadSections:theSet withRowAnimation:UITableViewRowAnimationFade]; } else if (emptySection) { - //Section is empty. + // Section is empty. if (pruneSections) { if (!keepSectionsInSearch && searchActive) { [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } else { - //Delete the section + // Delete the section BOOL needsReload = (indexPath.section < sectionCount); - //If this is not the last section we need to set indices for all the sections coming in after this that are visible. - //Otherwise the events will not work properly since the indexPath stored in the cell will be incorrect. + // If this is not the last section we need to set indices for all the sections coming in after this that are visible. + // Otherwise the events will not work properly since the indexPath stored in the cell will be incorrect. if (needsReload) { NSArray *visibleRows = [tableView indexPathsForVisibleRows]; [visibleRows enumerateObjectsUsingBlock:^(NSIndexPath *vIndexPath, NSUInteger idx, BOOL *stop) { if (vIndexPath.section > indexPath.section) { - //This belongs to the next section. So set the right indexPath otherwise events wont work properly. + // This belongs to the next section. So set the right indexPath otherwise events wont work properly. NSIndexPath *newIndex = [NSIndexPath indexPathForRow:vIndexPath.row inSection:(vIndexPath.section - 1)]; UITableViewCell *theCell = [tableView cellForRowAtIndexPath:vIndexPath]; if ([theCell isKindOfClass:[TiUIListItem class]]) { @@ -1335,20 +1335,20 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEd [tableView deleteSections:deleteSet withRowAnimation:UITableViewRowAnimationFade]; } } else { - //Just delete the row. Section stays + // Just delete the row. Section stays [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } else { - //Just delete the row. + // Just delete the row. BOOL needsReload = (indexPath.row < [theSection itemCount]); - //If this is not the last row need to set indices for all rows in the section following this row. - //Otherwise the events will not work properly since the indexPath stored in the cell will be incorrect. + // If this is not the last row need to set indices for all rows in the section following this row. + // Otherwise the events will not work properly since the indexPath stored in the cell will be incorrect. if (needsReload) { NSArray *visibleRows = [tableView indexPathsForVisibleRows]; [visibleRows enumerateObjectsUsingBlock:^(NSIndexPath *vIndexPath, NSUInteger idx, BOOL *stop) { if ((vIndexPath.section == indexPath.section) && (vIndexPath.row > indexPath.row)) { - //This belongs to the same section. So set the right indexPath otherwise events wont work properly. + // This belongs to the same section. So set the right indexPath otherwise events wont work properly. NSIndexPath *newIndex = [NSIndexPath indexPathForRow:(vIndexPath.row - 1) inSection:(vIndexPath.section)]; UITableViewCell *theCell = [tableView cellForRowAtIndexPath:vIndexPath]; if ([theCell isKindOfClass:[TiUIListItem class]]) { @@ -1449,17 +1449,17 @@ - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fro if (fromRowIndex == toRowIndex) { return; } - //Moving a row in the same index. Just move and reload section + // Moving a row in the same index. Just move and reload section TiUIListSectionProxy *theSection = [[self.listViewProxy sectionForIndex:fromSectionIndex] retain]; NSDictionary *theItem = [[theSection itemAtIndex:fromRowIndex] retain]; - //Delete Data + // Delete Data [theSection deleteItemAtIndex:fromRowIndex]; - //Insert the data + // Insert the data [theSection addItem:theItem atIndex:toRowIndex]; - //Fire the move Event if required + // Fire the move Event if required NSString *eventName = @"move"; if ([self.proxy _hasListeners:eventName]) { @@ -1495,13 +1495,13 @@ - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fro NSDictionary *theItem = [[fromSection itemAtIndex:fromRowIndex] retain]; TiUIListSectionProxy *toSection = [[self.listViewProxy sectionForIndex:toSectionIndex] retain]; - //Delete Data + // Delete Data [fromSection deleteItemAtIndex:fromRowIndex]; - //Insert the data + // Insert the data [toSection addItem:theItem atIndex:toRowIndex]; - //Fire the move Event if required + // Fire the move Event if required NSString *eventName = @"move"; if ([self.proxy _hasListeners:eventName]) { @@ -1729,7 +1729,7 @@ - (NSDictionary *)listItemFromIndexPath:(NSIndexPath *)indexPath - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { - //Let the cell configure its background + // Let the cell configure its background [(TiUIListItem *)cell configureCellBackground]; NSIndexPath *realPath = [self pathForSearchPath:indexPath]; @@ -1743,7 +1743,7 @@ - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)ce if (searchActive || ([searchController isActive])) { return; } else { - //Tell the proxy about the cell to be displayed for marker event + // Tell the proxy about the cell to be displayed for marker event [self.listViewProxy willDisplayCell:indexPath]; } } @@ -1810,15 +1810,15 @@ - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSIntege #endif } /* - * This behavior is slightly more complex between iOS 4 and iOS 5 than you might believe, and Apple's - * documentation is once again misleading. It states that in iOS 4 this value was "ignored if - * -[delegate tableView:viewForHeaderInSection:] returned nil" but apparently a non-nil value for - * -[delegate tableView:titleForHeaderInSection:] is considered a valid value for height handling as well, - * provided it is NOT the empty string. - * - * So for parity with iOS 4, iOS 5 must similarly treat the empty string header as a 'nil' value and - * return a 0.0 height that is overridden by the system. - */ + * This behavior is slightly more complex between iOS 4 and iOS 5 than you might believe, and Apple's + * documentation is once again misleading. It states that in iOS 4 this value was "ignored if + * -[delegate tableView:viewForHeaderInSection:] returned nil" but apparently a non-nil value for + * -[delegate tableView:titleForHeaderInSection:] is considered a valid value for height handling as well, + * provided it is NOT the empty string. + * + * So for parity with iOS 4, iOS 5 must similarly treat the empty string header as a 'nil' value and + * return a 0.0 height that is overridden by the system. + */ else if ([sectionProxy headerTitle] != nil) { if ([[sectionProxy headerTitle] isEqualToString:@""]) { return size; @@ -1872,15 +1872,15 @@ - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSIntege #endif } /* - * This behavior is slightly more complex between iOS 4 and iOS 5 than you might believe, and Apple's - * documentation is once again misleading. It states that in iOS 4 this value was "ignored if - * -[delegate tableView:viewForHeaderInSection:] returned nil" but apparently a non-nil value for - * -[delegate tableView:titleForHeaderInSection:] is considered a valid value for height handling as well, - * provided it is NOT the empty string. - * - * So for parity with iOS 4, iOS 5 must similarly treat the empty string header as a 'nil' value and - * return a 0.0 height that is overridden by the system. - */ + * This behavior is slightly more complex between iOS 4 and iOS 5 than you might believe, and Apple's + * documentation is once again misleading. It states that in iOS 4 this value was "ignored if + * -[delegate tableView:viewForHeaderInSection:] returned nil" but apparently a non-nil value for + * -[delegate tableView:titleForHeaderInSection:] is considered a valid value for height handling as well, + * provided it is NOT the empty string. + * + * So for parity with iOS 4, iOS 5 must similarly treat the empty string header as a 'nil' value and + * return a 0.0 height that is overridden by the system. + */ else if ([sectionProxy footerTitle] != nil) { if ([[sectionProxy footerTitle] isEqualToString:@""]) { return size; @@ -1908,12 +1908,12 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPa return height.value; } else if (TiDimensionIsAutoSize(height) || TiDimensionIsUndefined(height) || TiDimensionIsAutoFill(height)) { TiUIListSectionProxy *theSection = [self.listViewProxy sectionForIndex:realPath.section]; - NSDictionary *item = [theSection itemAtIndex:realPath.row]; //get the item data + NSDictionary *item = [theSection itemAtIndex:realPath.row]; // get the item data id templateId = [item objectForKey:@"template"]; if (templateId == nil) { templateId = _defaultItemTemplate; } - //Ignore built in templates + // Ignore built in templates if (![templateId isKindOfClass:[NSNumber class]]) { TiUIListItem *theCell = [_measureProxies objectForKey:templateId]; if (theCell != nil) { @@ -1981,7 +1981,7 @@ - (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexP - (void)scrollViewDidScroll:(UIScrollView *)scrollView { - //Events - pull (maybe scroll later) + // Events - pull (maybe scroll later) if (![self.proxy _hasListeners:@"pull"] && ![self.proxy _hasListeners:@"scrolling"]) { return; } @@ -2181,7 +2181,7 @@ - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView } [self fireScrollEnd:(UITableView *)scrollView]; - //Events none (maybe scroll later) + // Events none (maybe scroll later) } #pragma mark - UISearchBarDelegate Methods @@ -2493,19 +2493,19 @@ - (CGFloat)contentHeightForWidth:(CGFloat)width CGFloat resultHeight = 0; - //Last Section rect + // Last Section rect NSInteger lastSectionIndex = [self numberOfSectionsInTableView:_tableView] - 1; if (lastSectionIndex >= 0) { CGRect refRect = [_tableView rectForSection:lastSectionIndex]; resultHeight += refRect.size.height + refRect.origin.y; } else { - //Header auto height when no sections + // Header auto height when no sections if (_headerViewProxy != nil) { resultHeight += [_headerViewProxy autoHeightForSize:refSize]; } } - //Footer auto height + // Footer auto height if (_footerViewProxy) { resultHeight += [_footerViewProxy autoHeightForSize:refSize]; } @@ -2541,7 +2541,7 @@ - (void)initSearchController:(id)sender - (void)fireEditEventWithName:(NSString *)name andSection:(TiUIListSectionProxy *)section atIndexPath:(NSIndexPath *)indexPath item:(NSDictionary *)item { - //Fire the delete Event if required + // Fire the delete Event if required if ([self.proxy _hasListeners:name]) { NSMutableDictionary *eventObject = [[NSMutableDictionary alloc] initWithObjectsAndKeys: diff --git a/iphone/Classes/TiUIListViewProxy.m b/iphone/Classes/TiUIListViewProxy.m index 09a0b73617b..80b22757d25 100644 --- a/iphone/Classes/TiUIListViewProxy.m +++ b/iphone/Classes/TiUIListViewProxy.m @@ -578,7 +578,7 @@ - (NSIndexPath *)indexPathFromDictionary:(NSDictionary *)args - (BOOL)canAddMarker:(NSIndexPath *)marker { - //Checks if the marker is part of currently visible rows. + // Checks if the marker is part of currently visible rows. __block BOOL canAddMarker = YES; TiThreadPerformOnMainThread( ^{ @@ -602,7 +602,7 @@ - (void)setMarker:(id)args; [_markerArray addObject:marker]; pthread_rwlock_unlock(&_markerLock); } else if ([self _hasListeners:@"marker" checkParent:NO]) { - //Index path is currently visible. Fire + // Index path is currently visible. Fire NSMutableDictionary *eventObject = [[NSMutableDictionary alloc] initWithObjectsAndKeys: NUMINTEGER(marker.section), @"sectionIndex", NUMINTEGER(marker.row), @"itemIndex", @@ -623,7 +623,7 @@ - (void)addMarker:(id)args } pthread_rwlock_unlock(&_markerLock); } else if ([self _hasListeners:@"marker" checkParent:NO]) { - //Index path is currently visible. Fire + // Index path is currently visible. Fire NSMutableDictionary *eventObject = [[NSMutableDictionary alloc] initWithObjectsAndKeys: NUMINTEGER(marker.section), @"sectionIndex", NUMINTEGER(marker.row), @"itemIndex", @@ -636,7 +636,7 @@ - (void)addMarker:(id)args - (void)willDisplayCell:(NSIndexPath *)indexPath { if (([_markerArray count] > 0) && [self _hasListeners:@"marker" checkParent:NO]) { - //Never block the UI thread + // Never block the UI thread int result = pthread_rwlock_trywrlock(&_markerLock); if (result != 0) { return; diff --git a/iphone/Classes/TiUIMaskedImage.m b/iphone/Classes/TiUIMaskedImage.m index 4a608908567..e18d45b4356 100644 --- a/iphone/Classes/TiUIMaskedImage.m +++ b/iphone/Classes/TiUIMaskedImage.m @@ -78,7 +78,7 @@ - (void)configurationSet - (void)setImage_:(id)newImage { RELEASE_TO_NIL(imageURL); - imageURL = [[TiUtils toURL:newImage proxy:self.proxy] retain]; //If this results in a nil, then it's a proxy. + imageURL = [[TiUtils toURL:newImage proxy:self.proxy] retain]; // If this results in a nil, then it's a proxy. [self setNeedsDisplay]; } diff --git a/iphone/Classes/TiUINavBarButton.m b/iphone/Classes/TiUINavBarButton.m index ea4c86f5951..089c150d66a 100644 --- a/iphone/Classes/TiUINavBarButton.m +++ b/iphone/Classes/TiUINavBarButton.m @@ -101,7 +101,7 @@ - (id)initWithProxy:(TiUIButtonProxy *)proxy_ if ([[proxy_ view] isKindOfClass:[UIControl class]]) { [(UIControl *)[proxy_ view] addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventTouchUpInside]; } - //Sanity check. If the view bounds are zero set the bounds to auto dimensions + // Sanity check. If the view bounds are zero set the bounds to auto dimensions CGRect bounds = [[proxy_ view] bounds]; if (bounds.size.width == 0) { CGFloat desiredWidth = [proxy_ autoWidthForSize:CGSizeMake(1000, 1000)]; @@ -136,7 +136,7 @@ - (id)initWithProxy:(TiUIButtonProxy *)proxy_ self.accessibilityIdentifier = [TiUtils composeAccessibilityIdentifier:self]; self.width = [TiUtils floatValue:[proxy_ valueForKey:@"width"] def:0.0]; - //A width of 0 is treated as Auto by the iPhone OS, so this is safe. + // A width of 0 is treated as Auto by the iPhone OS, so this is safe. // we need to listen manually to proxy change events if we want to be // able to change them dynamically proxy.modelDelegate = self; @@ -193,8 +193,8 @@ - (void)setEnabled_:(id)value UIView *buttonView = [self customView]; if ([buttonView isKindOfClass:[TiUIButton class]]) { - //TODO: when using a TiUIButton, for some reason the setEnabled doesn't work. - //So we're just going to let it do all the work of updating. + // TODO: when using a TiUIButton, for some reason the setEnabled doesn't work. + // So we're just going to let it do all the work of updating. [(TiUIButton *)buttonView setEnabled_:value]; } else { BOOL enabled = [TiUtils boolValue:value]; diff --git a/iphone/Classes/TiUINavigationWindowProxy.m b/iphone/Classes/TiUINavigationWindowProxy.m index ad83e2ae9bb..d6f2f9ac4c2 100644 --- a/iphone/Classes/TiUINavigationWindowProxy.m +++ b/iphone/Classes/TiUINavigationWindowProxy.m @@ -117,7 +117,7 @@ - (KrollPromise *)openWindow:(NSArray *)args [window setIsManaged:YES]; [window setTab:(TiViewProxy *)self]; [window setParentOrientationController:self]; - //Send to open. Will come back after _handleOpen returns true. + // Send to open. Will come back after _handleOpen returns true. if (![window opening]) { args = ([args count] > 1) ? [args objectAtIndex:1] : nil; if (args != nil) { @@ -172,7 +172,7 @@ - (void)popToRootWindow:(id)args - (void)windowClosing:(TiWindowProxy *)window animated:(BOOL)animated { - //NO OP NOW + // NO OP NOW } #pragma mark - UINavigationControllerDelegate @@ -220,9 +220,9 @@ - (void)navigationController:(UINavigationController *)navigationController will } } if (winclosing) { - //TIMOB-15033. Have to call windowWillClose so any keyboardFocussedProxies resign - //as first responders. This is ok since tab is not nil so no message will be sent to - //hosting controller. + // TIMOB-15033. Have to call windowWillClose so any keyboardFocussedProxies resign + // as first responders. This is ok since tab is not nil so no message will be sent to + // hosting controller. [current windowWillClose]; } } @@ -538,7 +538,7 @@ - (void)willChangeSize { [super willChangeSize]; - //TODO: Shouldn't this be not through UI? Shouldn't we retain the windows ourselves? + // TODO: Shouldn't this be not through UI? Shouldn't we retain the windows ourselves? for (UIViewController *thisController in [navController viewControllers]) { if ([thisController isKindOfClass:[TiViewController class]]) { TiViewProxy *thisProxy = [(TiViewController *)thisController proxy]; diff --git a/iphone/Classes/TiUIOptionDialogProxy.m b/iphone/Classes/TiUIOptionDialogProxy.m index 89e0e092d55..63561ebe66b 100644 --- a/iphone/Classes/TiUIOptionDialogProxy.m +++ b/iphone/Classes/TiUIOptionDialogProxy.m @@ -83,7 +83,7 @@ - (void)show:(id)args } int curIndex = 0; - //Configure the Buttons + // Configure the Buttons for (id btn in options) { NSString *btnName = [TiUtils stringValue:btn]; if (!IS_NULL_OR_NIL(btnName)) { @@ -200,7 +200,7 @@ - (void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popover } } - //Fell through. + // Fell through. UIViewController *presentingController = [alertController presentingViewController]; popoverPresentationController.permittedArrowDirections = 0; popoverPresentationController.sourceView = [presentingController view]; @@ -210,7 +210,7 @@ - (void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popover - (void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView **)view { - //This will never be called when using bar button item + // This will never be called when using bar button item BOOL canUseDialogRect = !CGRectEqualToRect(CGRectZero, dialogRect); UIView *theSourceView = *view; BOOL shouldUseViewBounds = ([theSourceView isKindOfClass:[UIToolbar class]] || [theSourceView isKindOfClass:[UITabBar class]]); diff --git a/iphone/Classes/TiUIPicker.m b/iphone/Classes/TiUIPicker.m index d7e882788f0..37c4daaa87e 100644 --- a/iphone/Classes/TiUIPicker.m +++ b/iphone/Classes/TiUIPicker.m @@ -69,7 +69,7 @@ - (UIControl *)picker } if (type == -1) { - //TODO: this is not the way to abstract pickers, note the cast I had to add to the following line + // TODO: this is not the way to abstract pickers, note the cast I had to add to the following line picker = (UIControl *)[[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; ((UIPickerView *)picker).delegate = self; ((UIPickerView *)picker).dataSource = self; @@ -119,11 +119,11 @@ - (void)didFirePropertyChanges - (void)reloadColumn:(id)column { - //TODO: DatePicker checking should have been done long before the main thread. + // TODO: DatePicker checking should have been done long before the main thread. if ([self isDatePicker]) { return; } - //Because the other logic checking and massaging is done in the proxy, we can jump to the chase. + // Because the other logic checking and massaging is done in the proxy, we can jump to the chase. [(UIPickerView *)[self picker] reloadAllComponents]; } @@ -135,7 +135,7 @@ - (NSArray *)columns - (TiProxy *)selectedRowForColumn:(NSInteger)column { if ([self isDatePicker]) { - //FIXME + // FIXME return nil; } NSInteger row = [(UIPickerView *)picker selectedRowInComponent:column]; @@ -251,7 +251,7 @@ - (void)setDateTimeColor_:(id)value } } -//TODO: minute interval +// TODO: minute interval - (void)setValue_:(id)date { @@ -331,7 +331,7 @@ - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSIn // returns width of column and height of row for each component. - (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { - //TODO: add blain's super duper width algorithm + // TODO: add blain's super duper width algorithm NSArray *theColumns = [self columns]; if (component >= [theColumns count]) { return 0; @@ -376,10 +376,10 @@ - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forC TiUIPickerRowProxy *rowproxy = [proxy rowAt:row]; CGRect frame = CGRectMake(0.0, 0.0, [self pickerView:pickerView widthForComponent:component] - 20, [self pickerView:pickerView rowHeightForComponent:component]); - //Get the View + // Get the View UIView *theView = [rowproxy viewWithFrame:frame reusingView:view]; - //Configure Accessibility + // Configure Accessibility theView.isAccessibilityElement = YES; theView.accessibilityLabel = [TiUtils stringValue:[rowproxy valueForUndefinedKey:@"accessibilityLabel"]]; theView.accessibilityValue = [TiUtils stringValue:[rowproxy valueForUndefinedKey:@"accessibilityValue"]]; diff --git a/iphone/Classes/TiUIPickerProxy.m b/iphone/Classes/TiUIPickerProxy.m index 6689ab060dc..6971cd7cf12 100644 --- a/iphone/Classes/TiUIPickerProxy.m +++ b/iphone/Classes/TiUIPickerProxy.m @@ -50,7 +50,7 @@ - (void)_destroy - (void)viewDidAttach { - //Window might not have opened yet, so delay till we get windowDidOpen + // Window might not have opened yet, so delay till we get windowDidOpen if (selectOnLoad != nil && windowOpened) { [self setSelectedRow:selectOnLoad]; RELEASE_TO_NIL(selectOnLoad); @@ -274,7 +274,7 @@ - (void)add:(id)args - (void)remove:(id)args { - //TODO + // TODO } - (id)getSelectedRow:(id)args @@ -327,7 +327,7 @@ - (void)reloadColumn:(id)column return; } - //TODO: This is playing with fire here. + // TODO: This is playing with fire here. NSArray *columnArray = [self columns]; NSUInteger columnIndex = NSNotFound; diff --git a/iphone/Classes/TiUIPickerRowProxy.m b/iphone/Classes/TiUIPickerRowProxy.m index 5527cdd1d01..0b77d0d00a6 100644 --- a/iphone/Classes/TiUIPickerRowProxy.m +++ b/iphone/Classes/TiUIPickerRowProxy.m @@ -23,12 +23,12 @@ - (NSString *)apiName - (UIView *)viewWithFrame:(CGRect)theFrame reusingView:(UIView *)theView { - //The picker on IOS seems to consist of 3 tableViews (or some derivative of it) each of which calls the - //delegate method. So we have a singleView from our proxy residing in 3 superViews. - //While older version of IOS somehow made this work, IOS7 seems to be completely broken. - //So what we are doing is creating a snapshot (toImage() -> UIImageView) and returning that. - //Downside -> No touch events from pickerrow or its children - //Upside -> It works and is performant. Accessibility is configured on the delegate + // The picker on IOS seems to consist of 3 tableViews (or some derivative of it) each of which calls the + // delegate method. So we have a singleView from our proxy residing in 3 superViews. + // While older version of IOS somehow made this work, IOS7 seems to be completely broken. + // So what we are doing is creating a snapshot (toImage() -> UIImageView) and returning that. + // Downside -> No touch events from pickerrow or its children + // Upside -> It works and is performant. Accessibility is configured on the delegate NSString *title = [TiUtils stringValue:[self valueForKey:@"title"]]; WebFont *pickerFont = [TiUtils fontValue:[self valueForKey:@"font"] def:[WebFont defaultFont]]; diff --git a/iphone/Classes/TiUIRefreshControlProxy.m b/iphone/Classes/TiUIRefreshControlProxy.m index 67854608e52..d1155270531 100644 --- a/iphone/Classes/TiUIRefreshControlProxy.m +++ b/iphone/Classes/TiUIRefreshControlProxy.m @@ -28,7 +28,7 @@ - (void)dealloc #pragma mark - Internal Use - (UIRefreshControl *)control { - //Must be called on main thread + // Must be called on main thread if (_refreshControl == nil) { _refreshControl = [UIRefreshControl new]; [_refreshControl addTarget:self action:@selector(refreshingDidStart) forControlEvents:UIControlEventValueChanged]; diff --git a/iphone/Classes/TiUIScrollView.m b/iphone/Classes/TiUIScrollView.m index 873f8d8536b..5e0312a0dbe 100644 --- a/iphone/Classes/TiUIScrollView.m +++ b/iphone/Classes/TiUIScrollView.m @@ -15,14 +15,14 @@ @implementation TiUIScrollViewImpl - (void)setTouchHandler:(TiUIView *)handler { - //Assign only. No retain + // Assign only. No retain touchHandler = handler; } - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view { - //If the content view is of type TiUIView touch events will automatically propagate - //If it is not of type TiUIView we will fire touch events with ourself as source + // If the content view is of type TiUIView touch events will automatically propagate + // If it is not of type TiUIView we will fire touch events with ourself as source if ([view isKindOfClass:[TiUIView class]]) { touchedContentView = view; } else { @@ -33,8 +33,8 @@ - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContent - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - //When userInteractionEnabled is false we do nothing since touch events are automatically - //propagated. If it is dragging,tracking or zooming do not do anything. + // When userInteractionEnabled is false we do nothing since touch events are automatically + // propagated. If it is dragging,tracking or zooming do not do anything. if (!self.dragging && !self.zooming && !self.tracking && self.userInteractionEnabled && (touchedContentView == nil)) { [touchHandler processTouchesBegan:touches withEvent:event]; @@ -305,7 +305,7 @@ - (void)handleContentSize - (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)visibleBounds { - //Treat this as a size change + // Treat this as a size change [(TiViewProxy *)[self proxy] willChangeSize]; [super frameSizeChanged:frame bounds:visibleBounds]; } @@ -313,9 +313,9 @@ - (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)visibleBounds - (void)scrollToBottom { /* - * Calculate the bottom height & width and, sets the offset from the - * content view’s origin that corresponds to the receiver’s origin. - */ + * Calculate the bottom height & width and, sets the offset from the + * content view’s origin that corresponds to the receiver’s origin. + */ UIScrollView *currScrollView = [self scrollView]; CGSize svContentSize = currScrollView.contentSize; @@ -432,7 +432,7 @@ - (void)setZoomScale_:(id)value withObject:(id)property CGFloat scale = [TiUtils floatValue:value def:1.0]; BOOL animated = [TiUtils boolValue:@"animated" properties:property def:NO]; [[self scrollView] setZoomScale:scale animated:animated]; - scale = [[self scrollView] zoomScale]; //Why are we doing this? Because of minZoomScale or maxZoomScale. + scale = [[self scrollView] zoomScale]; // Why are we doing this? Because of minZoomScale or maxZoomScale. [[self proxy] replaceValue:NUMFLOAT(scale) forKey:@"zoomScale" notification:NO]; if ([self.proxy _hasListeners:@"scale"]) { [self.proxy fireEvent:@"scale" @@ -523,7 +523,7 @@ - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView_ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView_ willDecelerate:(BOOL)decelerate { - //Tells the delegate when dragging ended in the scroll view. + // Tells the delegate when dragging ended in the scroll view. [(id)[self proxy] scrollViewDidEndDragging:scrollView_ willDecelerate:decelerate]; } diff --git a/iphone/Classes/TiUIScrollViewProxy.m b/iphone/Classes/TiUIScrollViewProxy.m index 0644d88d639..33f75a7fa79 100644 --- a/iphone/Classes/TiUIScrollViewProxy.m +++ b/iphone/Classes/TiUIScrollViewProxy.m @@ -17,7 +17,7 @@ @implementation TiUIScrollViewProxy - (NSArray *)keySequence { if (scrollViewKeySequence == nil) { - //URL has to be processed first since the spinner depends on URL being remote + // URL has to be processed first since the spinner depends on URL being remote scrollViewKeySequence = [[NSArray arrayWithObjects:@"minZoomScale", @"maxZoomScale", @"zoomScale", nil] retain]; } return scrollViewKeySequence; @@ -57,8 +57,8 @@ - (TiPoint *)contentOffset - (void)windowWillOpen { [super windowWillOpen]; - //Since layout children is overridden in scrollview need to make sure that - //a full layout occurs atleast once if view is attached + // Since layout children is overridden in scrollview need to make sure that + // a full layout occurs atleast once if view is attached if ([self viewAttached]) { [self contentsWillChange]; } @@ -126,7 +126,7 @@ - (CGFloat)autoWidthForSize:(CGSize)size CGFloat result = 0.0; if (TiLayoutRuleIsVertical(layoutProperties.layoutStyle)) { - //Vertical layout. Just get the maximum child width + // Vertical layout. Just get the maximum child width CGFloat thisWidth = 0.0; NSArray *subproxies = [self children]; for (TiViewProxy *thisChildProxy in subproxies) { @@ -136,11 +136,11 @@ - (CGFloat)autoWidthForSize:(CGSize)size } } } else if (TiLayoutRuleIsHorizontal(layoutProperties.layoutStyle)) { - //Horizontal Layout with auto width. Stretch Indefinitely. + // Horizontal Layout with auto width. Stretch Indefinitely. NSArray *subproxies = [self children]; for (TiViewProxy *thisChildProxy in subproxies) { if ([thisChildProxy widthIsAutoFill]) { - //result += size.width; + // result += size.width; result += [thisChildProxy minimumParentWidthForSize:size]; } else if (TiDimensionIsPercent(thisChildProxy->layoutProperties.width)) { result += [thisChildProxy minimumParentWidthForSize:size]; @@ -193,7 +193,7 @@ - (CGFloat)autoHeightForSize:(CGSize)size NSArray *subproxies = [self children]; for (TiViewProxy *thisChildProxy in subproxies) { if ([thisChildProxy heightIsAutoFill]) { - //result += size.height; + // result += size.height; result += [thisChildProxy minimumParentHeightForSize:size]; } else if (TiDimensionIsPercent(thisChildProxy->layoutProperties.height)) { result += [thisChildProxy minimumParentHeightForSize:size]; @@ -207,7 +207,7 @@ - (CGFloat)autoHeightForSize:(CGSize)size NSArray *subproxies = [self children]; for (TiViewProxy *thisChildProxy in subproxies) { if ([thisChildProxy heightIsAutoFill]) { - //thisHeight = size.height; + // thisHeight = size.height; thisHeight = [thisChildProxy minimumParentHeightForSize:contentSize]; } else if (TiDimensionIsPercent(thisChildProxy->layoutProperties.height)) { thisHeight = [thisChildProxy minimumParentHeightForSize:size]; @@ -219,7 +219,7 @@ - (CGFloat)autoHeightForSize:(CGSize)size } } } else { - //Not flexible width and wraps + // Not flexible width and wraps result = [super autoHeightForSize:contentSize]; } } else { @@ -269,7 +269,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds verticalLayoutBoundary += bounds.size.height; return bounds; } else if (flexibleContentHeight) { - //Match autoHeight behavior + // Match autoHeight behavior if ([child heightIsAutoFill]) { bounds.origin.y = verticalLayoutBoundary; bounds.size.height = [child minimumParentHeightForSize:viewBounds.size]; @@ -285,7 +285,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds } } else if (TiLayoutRuleIsHorizontal(layoutProperties.layoutStyle)) { if (flexibleContentWidth) { - //Match autoWidth behavior + // Match autoWidth behavior bounds.origin.x = horizontalLayoutBoundary; bounds.size.width = [child minimumParentWidthForSize:viewBounds.size]; horizontalLayoutBoundary += bounds.size.width; @@ -391,7 +391,7 @@ - (void)setZoomScale:(id)value withObject:(id)animated - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView_ // scrolling has ended { - if ([self _hasListeners:@"scrollEnd"]) { //TODO: Deprecate old event. + if ([self _hasListeners:@"scrollEnd"]) { // TODO: Deprecate old event. [self fireEvent:@"scrollEnd" withObject:nil]; } if ([self _hasListeners:@"scrollend"]) { @@ -430,7 +430,7 @@ - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)vi - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { - if ([self _hasListeners:@"dragStart"]) { //TODO: Deprecate old event + if ([self _hasListeners:@"dragStart"]) { // TODO: Deprecate old event [self fireEvent:@"dragStart" withObject:nil]; } if ([self _hasListeners:@"dragstart"]) { @@ -438,11 +438,11 @@ - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView } } -//listerner which tells when dragging ended in the scroll view. +// listerner which tells when dragging ended in the scroll view. - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { - if ([self _hasListeners:@"dragEnd"]) { //TODO: Deprecate old event + if ([self _hasListeners:@"dragEnd"]) { // TODO: Deprecate old event [self fireEvent:@"dragEnd" withObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:decelerate], @"decelerate", nil]]; } if ([self _hasListeners:@"dragend"]) { diff --git a/iphone/Classes/TiUIScrollableView.m b/iphone/Classes/TiUIScrollableView.m index ef4b873c3ab..ac711ed3931 100644 --- a/iphone/Classes/TiUIScrollableView.m +++ b/iphone/Classes/TiUIScrollableView.m @@ -180,27 +180,27 @@ - (void)removeSubview:(nonnull UIView *)view - (void)addSubview:(nonnull UIView *)view { WRAP_TI_VIEW(view) - [[self contentView] addSubview:wrapperView]; + [[self contentView] addSubview:wrapperView]; } - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - aboveSubview:siblingSubview]; + [[self contentView] insertSubview:wrapperView + aboveSubview:siblingSubview]; } - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - atIndex:index]; + [[self contentView] insertSubview:wrapperView + atIndex:index]; } - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - belowSubview:siblingSubview]; + [[self contentView] insertSubview:wrapperView + belowSubview:siblingSubview]; } #endif @@ -261,7 +261,7 @@ - (UIScrollView *)scrollview [scrollview setClipsToBounds:clipsToBounds]; [self insertSubview:scrollview atIndex:0]; - //Update clips to bounds only if cornerRadius and backgroundImage are not set + // Update clips to bounds only if cornerRadius and backgroundImage are not set if ((self.layer.cornerRadius == 0) && (self.backgroundImage == nil)) { [self setClipsToBounds:clipsToBounds]; } @@ -450,10 +450,10 @@ - (void)refreshScrollView:(CGRect)visibleBounds readd:(BOOL)readd NSUInteger viewsCount = [[self proxy] viewCount]; /* - Reset readd here since refreshScrollView is called from - frameSizeChanged with readd false and the views might - not yet have been added on first launch - */ + Reset readd here since refreshScrollView is called from + frameSizeChanged with readd false and the views might + not yet have been added on first launch + */ readd = ([[sv subviews] count] == 0); for (int c = 0; c < viewsCount; c++) { @@ -505,7 +505,7 @@ - (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)visibleBounds [scrollview setContentOffset:CGPointMake(lastPage * visibleBounds.size.width, 0)]; [self manageCache:[self currentPage]]; } - //To make sure all subviews are properly resized. + // To make sure all subviews are properly resized. UIScrollView *sv = [self scrollview]; for (UIView *view in [sv subviews]) { for (TiUIView *sView in [view subviews]) { @@ -568,7 +568,7 @@ - (void)setShowPagingControl_:(id)args } if ((scrollview != nil) && ([[scrollview subviews] count] > 0)) { - //No need to readd. Just set up the correct frame bounds + // No need to readd. Just set up the correct frame bounds [self refreshScrollView:[self bounds] readd:NO]; } } @@ -584,7 +584,7 @@ - (void)setPagingControlHeight_:(id)args } if (showPageControl && (scrollview != nil) && ([[scrollview subviews] count] > 0)) { - //No need to readd. Just set up the correct frame bounds + // No need to readd. Just set up the correct frame bounds [self refreshScrollView:[self bounds] readd:NO]; } } @@ -680,7 +680,7 @@ - (void)setPagingControlOnTop_:(id)args #endif pagingControlOnTop = [TiUtils boolValue:args def:NO]; if (showPageControl && (scrollview != nil) && ([[scrollview subviews] count] > 0)) { - //No need to readd. Just set up the correct frame bounds + // No need to readd. Just set up the correct frame bounds [self refreshScrollView:[self bounds] readd:NO]; } } @@ -692,7 +692,7 @@ - (void)setOverlayEnabled_:(id)args #endif overlayEnabled = [TiUtils boolValue:args def:NO]; if (showPageControl && (scrollview != nil) && ([[scrollview subviews] count] > 0)) { - //No need to readd. Just set up the correct frame bounds + // No need to readd. Just set up the correct frame bounds [self refreshScrollView:[self bounds] readd:NO]; } } @@ -817,7 +817,7 @@ - (void)scrollViewDidScroll:(UIScrollView *)sender UIPageControl *pageControl = [self pagecontrol]; NSInteger currentPage = _currentPage; #endif - //switch page control at 50% across the center - this visually looks better + // switch page control at 50% across the center - this visually looks better CGFloat pageWidth = scrollview.frame.size.width; NSInteger page = currentPage; float nextPageAsFloat = ((scrollview.contentOffset.x - pageWidth / 2) / pageWidth) + 0.5; @@ -866,7 +866,7 @@ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL UIScrollView *scrollview = [self scrollview]; UIPageControl *pageControl = [self pagecontrol]; #else - //Since we are now managing cache at end of scroll, ensure quick scroll is disabled to avoid blank screens. + // Since we are now managing cache at end of scroll, ensure quick scroll is disabled to avoid blank screens. if (pageChanged) { #endif [scrollview setUserInteractionEnabled:!decelerate]; @@ -903,7 +903,7 @@ - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView forKey:@"currentPage" notification:NO]; - if ([self.proxy _hasListeners:@"scrollEnd"]) { //TODO: Deprecate old event. + if ([self.proxy _hasListeners:@"scrollEnd"]) { // TODO: Deprecate old event. [self.proxy fireEvent:@"scrollEnd" withObject:[NSDictionary dictionaryWithObjectsAndKeys: NUMINTEGER(pageNum), @"currentPage", diff --git a/iphone/Classes/TiUIScrollableViewProxy.m b/iphone/Classes/TiUIScrollableViewProxy.m index 5059d19ee7c..38d97298e7a 100644 --- a/iphone/Classes/TiUIScrollableViewProxy.m +++ b/iphone/Classes/TiUIScrollableViewProxy.m @@ -160,7 +160,7 @@ - (void)_addView:(TiViewProxy *)proxy atIndex:(NSUInteger)index } - (void)removeView:(id)args -{ //TODO: Refactor this properly. +{ // TODO: Refactor this properly. #if defined(TI_USE_AUTOLAYOUT) ENSURE_UI_THREAD(removeView, args) #endif @@ -253,7 +253,7 @@ - (void)movePrevious:(id)unused - (void)willChangeSize { - //Ensure the size change signal goes to children + // Ensure the size change signal goes to children NSArray *curViews = [self views]; for (TiViewProxy *child in curViews) { [child parentSizeWillChange]; @@ -267,7 +267,7 @@ - (void)childWillResize:(TiViewProxy *)child if (!hasChild) { return; - //In the case of views added with addView, as they are not part of children, they should be ignored. + // In the case of views added with addView, as they are not part of children, they should be ignored. } [super childWillResize:child]; } @@ -299,14 +299,14 @@ - (UIView *)parentViewForChild:(TiViewProxy *)child if (index < [scrollWrappers count]) { return [scrollWrappers objectAtIndex:index]; } - //Hideous hack is hideous. This should stave off the bugs until layout is streamlined + // Hideous hack is hideous. This should stave off the bugs until layout is streamlined [ourView refreshScrollView:[[self view] bounds] readd:YES]; scrollWrappers = [[ourView scrollview] subviews]; if (index < [scrollWrappers count]) { return [scrollWrappers objectAtIndex:index]; } } - //Adding the view to a scrollable view is invalid. + // Adding the view to a scrollable view is invalid. return nil; } #endif diff --git a/iphone/Classes/TiUISearchBar.m b/iphone/Classes/TiUISearchBar.m index d914054b890..b88caa6cd86 100644 --- a/iphone/Classes/TiUISearchBar.m +++ b/iphone/Classes/TiUISearchBar.m @@ -234,7 +234,7 @@ - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar NSString *text = [searchBar text]; [self.proxy replaceValue:text forKey:@"value" notification:NO]; - //No need to setValue, because it's already been set. + // No need to setValue, because it's already been set. if ([self.proxy _hasListeners:@"focus"]) { [self.proxy fireEvent:@"focus" withObject:[NSDictionary dictionaryWithObject:text forKey:@"value"] propagate:NO]; } @@ -250,7 +250,7 @@ - (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar NSString *text = [searchBar text]; [self.proxy replaceValue:text forKey:@"value" notification:NO]; - //No need to setValue, because it's already been set. + // No need to setValue, because it's already been set. if ([self.proxy _hasListeners:@"blur"]) { [self.proxy fireEvent:@"blur" withObject:[NSDictionary dictionaryWithObject:text forKey:@"value"] propagate:NO]; } @@ -266,7 +266,7 @@ - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText NSString *text = [searchBar text]; [self.proxy replaceValue:text forKey:@"value" notification:NO]; - //No need to setValue, because it's already been set. + // No need to setValue, because it's already been set. if ([self.proxy _hasListeners:@"change"]) { [self.proxy fireEvent:@"change" withObject:[NSDictionary dictionaryWithObject:text forKey:@"value"]]; } @@ -282,7 +282,7 @@ - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar NSString *text = [searchBar text]; [self.proxy replaceValue:text forKey:@"value" notification:NO]; - //No need to setValue, because it's already been set. + // No need to setValue, because it's already been set. if ([self.proxy _hasListeners:@"return"]) { [self.proxy fireEvent:@"return" withObject:[NSDictionary dictionaryWithObject:text forKey:@"value"]]; } diff --git a/iphone/Classes/TiUISearchBarProxy.m b/iphone/Classes/TiUISearchBarProxy.m index baef39a9e88..73259c7f3c9 100644 --- a/iphone/Classes/TiUISearchBarProxy.m +++ b/iphone/Classes/TiUISearchBarProxy.m @@ -47,12 +47,12 @@ - (void)setShowCancel:(id)value withObject:(id)object { BOOL boolValue = [TiUtils boolValue:value]; BOOL animated = [TiUtils boolValue:@"animated" properties:object def:NO]; - //TODO: Value checking and exception generation, if necessary. + // TODO: Value checking and exception generation, if necessary. [self replaceValue:value forKey:@"showCancel" notification:NO]; showsCancelButton = boolValue; - //ViewAttached gives a false negative when not attached to a window. + // ViewAttached gives a false negative when not attached to a window. TiThreadPerformOnMainThread( ^{ UISearchBar *search = [self searchBar]; diff --git a/iphone/Classes/TiUIShortcutItemProxy.h b/iphone/Classes/TiUIShortcutItemProxy.h index 70de585fca4..1239fc1171d 100644 --- a/iphone/Classes/TiUIShortcutItemProxy.h +++ b/iphone/Classes/TiUIShortcutItemProxy.h @@ -1,9 +1,9 @@ /** -* Titanium SDK -* Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. -* Licensed under the terms of the Apache Public License -* Please see the LICENSE included with this distribution for details. -*/ + * Titanium SDK + * Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ #if defined(USE_TI_UISHORTCUT) || defined(USE_TI_UISHORTCUTITEM) #import diff --git a/iphone/Classes/TiUIShortcutItemProxy.m b/iphone/Classes/TiUIShortcutItemProxy.m index 16abe1137c0..3ce58ef4518 100644 --- a/iphone/Classes/TiUIShortcutItemProxy.m +++ b/iphone/Classes/TiUIShortcutItemProxy.m @@ -1,9 +1,9 @@ /** -* Titanium SDK -* Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. -* Licensed under the terms of the Apache Public License -* Please see the LICENSE included with this distribution for details. -*/ + * Titanium SDK + * Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ #if defined(USE_TI_UISHORTCUT) || defined(USE_TI_UISHORTCUTITEM) #import "TiUIShortcutItemProxy.h" diff --git a/iphone/Classes/TiUIShortcutProxy.h b/iphone/Classes/TiUIShortcutProxy.h index 5a4d1d72cfe..1671682cafd 100644 --- a/iphone/Classes/TiUIShortcutProxy.h +++ b/iphone/Classes/TiUIShortcutProxy.h @@ -1,9 +1,9 @@ /** -* Titanium SDK -* Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. -* Licensed under the terms of the Apache Public License -* Please see the LICENSE included with this distribution for details. -*/ + * Titanium SDK + * Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ #if defined(USE_TI_UISHORTCUT) || defined(USE_TI_UISHORTCUTITEM) diff --git a/iphone/Classes/TiUIShortcutProxy.m b/iphone/Classes/TiUIShortcutProxy.m index dacc695a74f..2d77a0521c6 100644 --- a/iphone/Classes/TiUIShortcutProxy.m +++ b/iphone/Classes/TiUIShortcutProxy.m @@ -1,9 +1,9 @@ /** -* Titanium SDK -* Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. -* Licensed under the terms of the Apache Public License -* Please see the LICENSE included with this distribution for details. -*/ + * Titanium SDK + * Copyright (c) 2020 by Appcelerator, Inc. All Rights Reserved. + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ #if defined(USE_TI_UISHORTCUT) || defined(USE_TI_UISHORTCUTITEM) #import "TiUIShortcutProxy.h" diff --git a/iphone/Classes/TiUISlider.h b/iphone/Classes/TiUISlider.h index d57752f0832..509c2565102 100644 --- a/iphone/Classes/TiUISlider.h +++ b/iphone/Classes/TiUISlider.h @@ -25,7 +25,7 @@ /** * Internal method used to trigger the value-change from the proxy instead. - * This is required in order to handle complex arguments, e.g. number and + * This is required in order to handle complex arguments, e.g. number and * animated-flag in one command. */ - (void)_setValue:(id)value; diff --git a/iphone/Classes/TiUISlider.m b/iphone/Classes/TiUISlider.m index f8e175dd972..2068f8a5d19 100644 --- a/iphone/Classes/TiUISlider.m +++ b/iphone/Classes/TiUISlider.m @@ -263,7 +263,7 @@ - (CGFloat)verifyHeight:(CGFloat)suggestedHeight { CGFloat result = [[self sliderView] sizeThatFits:CGSizeZero].height; - //IOS7 DP3 sizeThatFits always returns zero for regular slider + // IOS7 DP3 sizeThatFits always returns zero for regular slider if (result == 0) { result = 30.0; } diff --git a/iphone/Classes/TiUISwitch.m b/iphone/Classes/TiUISwitch.m index f2f15584be9..33cac24f25f 100644 --- a/iphone/Classes/TiUISwitch.m +++ b/iphone/Classes/TiUISwitch.m @@ -156,7 +156,7 @@ - (IBAction)switchChanged:(id)sender id current = [self.proxy valueForUndefinedKey:@"value"]; [self.proxy replaceValue:newValue forKey:@"value" notification:NO]; - //No need to setValue, because it's already been set. + // No need to setValue, because it's already been set. if ([self.proxy _hasListeners:@"change"] && (current != newValue) && ![current isEqual:newValue]) { [self.proxy fireEvent:@"change" withObject:[NSDictionary dictionaryWithObject:newValue forKey:@"value"]]; } diff --git a/iphone/Classes/TiUITabGroup.h b/iphone/Classes/TiUITabGroup.h index f63fd409c08..8790e19a751 100644 --- a/iphone/Classes/TiUITabGroup.h +++ b/iphone/Classes/TiUITabGroup.h @@ -8,7 +8,7 @@ #import -//To handle the more tab, we're a delegate of it. +// To handle the more tab, we're a delegate of it. @class TiUITabProxy; @interface TiUITabGroup : TiUIView { @private diff --git a/iphone/Classes/TiUITabGroup.m b/iphone/Classes/TiUITabGroup.m index bde83953801..143ba28a2a5 100644 --- a/iphone/Classes/TiUITabGroup.m +++ b/iphone/Classes/TiUITabGroup.m @@ -101,7 +101,7 @@ - (void)handleDidShowTab:(TiUITabProxy *)newFocus { // Do nothing if no tabs are being focused or blurred (or the window is opening) if (focusedTabProxy == nil && newFocus == nil) { - //TIMOB-10796. Ensure activeTab is set to focused on early return + // TIMOB-10796. Ensure activeTab is set to focused on early return if (focusedTabProxy != nil) { [self.proxy replaceValue:focusedTabProxy forKey:@"activeTab" notification:NO]; } @@ -156,7 +156,7 @@ - (void)handleDidShowTab:(TiUITabProxy *)newFocus [self.proxy fireEvent:@"focus" withObject:event]; } } - //TIMOB-15187. Dont fire focus of tabs if proxy does not have focus + // TIMOB-15187. Dont fire focus of tabs if proxy does not have focus if ([(TiUITabGroupProxy *)[self proxy] canFocusTabs]) { [focusedTabProxy handleDidFocus:event]; } @@ -180,7 +180,7 @@ - (void)updateMoreBar:(UINavigationController *)moreController if ([[moreController viewControllers] count] != 1) { return; } - //Update the actual nav bar here in case the windows changed the stuff. + // Update the actual nav bar here in case the windows changed the stuff. UINavigationBar *navBar = [moreController navigationBar]; [navBar setBarStyle:navBarStyle]; [navBar setTitleTextAttributes:theAttributes]; @@ -264,11 +264,11 @@ - (void)navigationController:(UINavigationController *)navigationController didS { NSArray *moreViewControllerStack = [navigationController viewControllers]; NSUInteger stackHeight = [moreViewControllerStack count]; - if (stackHeight < 2) { //No more faux roots. + if (stackHeight < 2) { // No more faux roots. if (focusedTabProxy != nil) { [self handleDidShowTab:nil]; } - //Ensure that the moreController has only top edge extended + // Ensure that the moreController has only top edge extended [TiUtils configureController:viewController withObject:[NSDictionary dictionaryWithObject:NUMINT(1) forKey:@"extendEdges"]]; return; } @@ -288,7 +288,7 @@ - (void)navigationController:(UINavigationController *)navigationController didS return; } - if (stackHeight == 2) { //One for the picker, one for the faux root. + if (stackHeight == 2) { // One for the picker, one for the faux root. if (tabProxy != focusedTabProxy) { [self handleDidShowTab:tabProxy]; } @@ -395,7 +395,7 @@ - (void)setTabsBackgroundColor_:(id)value { TiColor *color = [TiUtils colorValue:value]; UITabBar *tabBar = [controller tabBar]; - //A nil tintColor is fine, too. + // A nil tintColor is fine, too. [tabBar setBarTintColor:[color color]]; #if IS_SDK_IOS_15 if ([TiUtils isIOSVersionOrGreater:@"15.0"]) { @@ -442,14 +442,14 @@ - (void)setActiveTabBackgroundImage_:(id)value - (void)setShadowImage_:(id)value { - //Because we still support XCode 4.3, we cannot use the shadowImage property + // Because we still support XCode 4.3, we cannot use the shadowImage property [controller.tabBar setShadowImage:[self loadImage:value]]; } - (void)setActiveTabIconTint_:(id)value { TiColor *color = [TiUtils colorValue:value]; - //A nil tintColor is fine, too. + // A nil tintColor is fine, too. controller.tabBar.tintColor = color.color; } diff --git a/iphone/Classes/TiUITabGroupProxy.m b/iphone/Classes/TiUITabGroupProxy.m index 8d952c8f3f9..b3a0ba89b08 100644 --- a/iphone/Classes/TiUITabGroupProxy.m +++ b/iphone/Classes/TiUITabGroupProxy.m @@ -17,7 +17,7 @@ @implementation TiUITabGroupProxy - (NSArray *)keySequence { if (tabGroupKeySequence == nil) { - //URL has to be processed first since the spinner depends on URL being remote + // URL has to be processed first since the spinner depends on URL being remote tabGroupKeySequence = [[NSArray arrayWithObjects:@"tabs", @"activeTab", nil] retain]; } return tabGroupKeySequence; @@ -94,7 +94,7 @@ - (void)removeTab:(id)tabProxy } } - //TODO: close all the tabs and fire events + // TODO: close all the tabs and fire events [tabProxy removeFromTabGroup]; [tabProxy setParentOrientationController:nil]; @@ -328,7 +328,7 @@ - (void)willChangeSize [super willChangeSize]; [tabs makeObjectsPerformSelector:@selector(willChangeSize)]; - //TODO: Shouldn't tabs have a lock protecting them? + // TODO: Shouldn't tabs have a lock protecting them? } @end diff --git a/iphone/Classes/TiUITabProxy.h b/iphone/Classes/TiUITabProxy.h index 49ab1c1ad13..f44e5dadb20 100644 --- a/iphone/Classes/TiUITabProxy.h +++ b/iphone/Classes/TiUITabProxy.h @@ -17,7 +17,7 @@ UINavigationController *controller; TiWindowProxy *rootWindow; TiWindowProxy *current; - //This is an assign only property. TabGroup retains instances of tab. + // This is an assign only property. TabGroup retains instances of tab. TiUITabGroupProxy *tabGroup; NSMutableArray *controllerStack; diff --git a/iphone/Classes/TiUITabProxy.m b/iphone/Classes/TiUITabProxy.m index 02c0f29bb5d..c14e0ff3ce0 100644 --- a/iphone/Classes/TiUITabProxy.m +++ b/iphone/Classes/TiUITabProxy.m @@ -16,11 +16,11 @@ #import #import -//NOTE: this proxy is a little different than normal Proxy/View pattern -//since it's not really backed by a view in the normal way. It's given -//a root level window proxy (and view) that are passed as the root controller -//to the Nav Controller. So, we do a few things that you'd normally not -//have to do in a Proxy/View pattern. +// NOTE: this proxy is a little different than normal Proxy/View pattern +// since it's not really backed by a view in the normal way. It's given +// a root level window proxy (and view) that are passed as the root controller +// to the Nav Controller. So, we do a few things that you'd normally not +// have to do in a Proxy/View pattern. @interface TiUITabProxy () - (void)openOnUIThread:(NSArray *)args; @@ -292,7 +292,7 @@ - (KrollPromise *)openWindow:(NSArray *)args [window setTab:self]; [window setParentOrientationController:self]; - //Send to open. Will come back after _handleOpen returns true. + // Send to open. Will come back after _handleOpen returns true. if (![window opening]) { args = ([args count] > 1) ? [args objectAtIndex:1] : nil; if (args != nil) { @@ -354,7 +354,7 @@ - (KrollPromise *)close:(NSArray *)args - (void)windowClosing:(TiWindowProxy *)window animated:(BOOL)animated { - //NO OP NOW + // NO OP NOW } #pragma mark - UINavigationControllerDelegate @@ -395,7 +395,7 @@ - (void)navigationController:(UINavigationController *)navigationController didS { id activeTab = [tabGroup valueForKey:@"activeTab"]; if (activeTab == nil || activeTab == [NSNull null]) { - //Make sure that the activeTab property is set + // Make sure that the activeTab property is set [self setActive:[NSNumber numberWithBool:YES]]; } transitionIsAnimating = NO; @@ -423,9 +423,9 @@ - (void)handleWillShowViewController:(UIViewController *)viewController animated } } if (winclosing) { - //TIMOB-15033. Have to call windowWillClose so any keyboardFocussedProxies resign - //as first responders. This is ok since tab is not nil so no message will be sent to - //hosting controller. + // TIMOB-15033. Have to call windowWillClose so any keyboardFocussedProxies resign + // as first responders. This is ok since tab is not nil so no message will be sent to + // hosting controller. [current windowWillClose]; } } @@ -433,8 +433,8 @@ - (void)handleWillShowViewController:(UIViewController *)viewController animated [theWindow processForSafeArea]; if (theWindow == rootWindow) { - //This is probably too late for the root view controller. - //Figure out how to call open before this callback + // This is probably too late for the root view controller. + // Figure out how to call open before this callback [theWindow open:nil]; } else if ([theWindow opening]) { [theWindow windowWillOpen]; @@ -452,7 +452,7 @@ - (void)handleDidShowViewController:(UIViewController *)viewController animated: [current setTab:nil]; [current setParentOrientationController:nil]; [current close:nil]; - //TIMOB-15188. Tab can switch to rootView anytime by tapping the selected tab again. + // TIMOB-15188. Tab can switch to rootView anytime by tapping the selected tab again. if ((viewController == [self rootController]) && ([controllerStack count] > 1)) { [controllerStack removeObject:[self rootController]]; for (TiViewController *theController in [controllerStack reverseObjectEnumerator]) { @@ -786,7 +786,7 @@ - (void)willChangeSize { [super willChangeSize]; - //TODO: Shouldn't this be not through UI? Shouldn't we retain the windows ourselves? + // TODO: Shouldn't this be not through UI? Shouldn't we retain the windows ourselves? for (UIViewController *thisController in [controller viewControllers]) { if ([thisController isKindOfClass:[TiViewController class]]) { TiViewProxy *thisProxy = [(TiViewController *)thisController proxy]; diff --git a/iphone/Classes/TiUITableView.m b/iphone/Classes/TiUITableView.m index fa9fa13b2ce..31fba206cbb 100644 --- a/iphone/Classes/TiUITableView.m +++ b/iphone/Classes/TiUITableView.m @@ -193,7 +193,7 @@ - (void)updateGradientLayer:(BOOL)useSelected withAnimation:(BOOL)animated if (currentGradient == nil) { [gradientLayer removeFromSuperlayer]; - //Because there's the chance that the other state still has the gradient, let's keep it around. + // Because there's the chance that the other state still has the gradient, let's keep it around. return; } @@ -396,10 +396,10 @@ - (CGFloat)tableRowHeight:(CGFloat)height return height < 1 ? tableview.rowHeight : height; } -//Allows use of scrollsToTop property on a table. -//Useful when you have multiple tables in your view, you can -//set which table will respond to tap on status bar to scroll to top. -//http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html +// Allows use of scrollsToTop property on a table. +// Useful when you have multiple tables in your view, you can +// set which table will respond to tap on status bar to scroll to top. +// http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html - (void)setScrollsToTop_:(id)value { [[self tableView] setScrollsToTop:[TiUtils boolValue:value def:YES]]; @@ -459,7 +459,7 @@ - (UITableView *)tableView BOOL initBackGround = YES; id bgInitValue = [[self proxy] valueForKey:@"backgroundColor"]; if (style == UITableViewStyleGrouped) { - //If the style is grouped do not call this method unless a backgroundColor is specified + // If the style is grouped do not call this method unless a backgroundColor is specified initBackGround = (bgInitValue != nil); } if (initBackGround) { @@ -541,7 +541,7 @@ - (void)reloadDataFromCount:(NSUInteger)oldCount toCount:(NSUInteger)newCount an return; } - //Table views hate having 0 sections, so we have to act like it has at least 1. + // Table views hate having 0 sections, so we have to act like it has at least 1. oldCount = MAX(1, oldCount); newCount = MAX(1, newCount); @@ -567,8 +567,8 @@ - (void)reloadDataFromCount:(NSUInteger)oldCount toCount:(NSUInteger)newCount an - (void)replaceData:(NSMutableArray *)data animation:(UITableViewRowAnimation)animation { - //Technically, we should assert that sections is non-nil, but this code - //won't have any problems in the case that it is actually nil. + // Technically, we should assert that sections is non-nil, but this code + // won't have any problems in the case that it is actually nil. TiUITableViewProxy *ourProxy = (TiUITableViewProxy *)[self proxy]; NSUInteger oldCount = ourProxy.sectionCount.unsignedIntegerValue; @@ -588,13 +588,13 @@ - (void)replaceData:(NSMutableArray *)data animation:(UITableViewRowAnimation)an [ourProxy setInternalSections:data]; - int newCount = 0; //Since we're iterating anyways, we might as well not get count. + int newCount = 0; // Since we're iterating anyways, we might as well not get count. for (TiUITableViewSectionProxy *section in [(TiUITableViewProxy *)[self proxy] internalSections]) { [section setTable:self]; [section setSection:newCount++]; [ourProxy rememberSection:section]; - //TODO: Shouldn't this be done by Section itself? Doesn't it already? + // TODO: Shouldn't this be done by Section itself? Doesn't it already? for (TiUITableViewRowProxy *row in section) { row.section = section; row.parent = section; @@ -605,7 +605,7 @@ - (void)replaceData:(NSMutableArray *)data animation:(UITableViewRowAnimation)an } } -//Assertions no longer are needed; we ensure that the sections are not nil. +// Assertions no longer are needed; we ensure that the sections are not nil. - (void)updateRow:(TiUITableViewRowProxy *)row { row.table = self; @@ -676,10 +676,10 @@ - (void)appendRow:(TiUITableViewRowProxy *)row [row.section reorderRows]; } -//Because UITableView does not like having 0 sections, we MUST maintain the facade of having at least one section, -//albeit with 0 rows. Because of this, we might come across several times where this fictional first section will -//be asked about. Because we don't want the sections array throwing range exceptions, sectionForIndex MUST be used -//for this protection. +// Because UITableView does not like having 0 sections, we MUST maintain the facade of having at least one section, +// albeit with 0 rows. Because of this, we might come across several times where this fictional first section will +// be asked about. Because we don't want the sections array throwing range exceptions, sectionForIndex MUST be used +// for this protection. - (TiUITableViewSectionProxy *)sectionForIndex:(NSInteger)index { NSArray *sections = [(TiUITableViewProxy *)[self proxy] internalSections]; @@ -787,7 +787,7 @@ - (void)dispatchAction:(TiUITableViewAction *)action TiUITableViewRowProxy *moveRow = [[[updateSection rows] objectAtIndex:rowIndex] retain]; [removeRows addObject:[NSIndexPath indexPathForRow:i inSection:updateSectionIndex]]; - /*We need to save the row proxy before deleting it, as the KrollObject might get finalized + /*We need to save the row proxy before deleting it, as the KrollObject might get finalized before appendRow can happen and thus leaving the proxy with no KrollObject associated with it.*/ [(TiUITableViewProxy *)[self proxy] rememberProxy:moveRow]; [self deleteRow:moveRow]; @@ -808,7 +808,7 @@ - (void)dispatchAction:(TiUITableViewAction *)action [self appendRow:row]; for (TiUITableViewRowProxy *moveRow in addRows) { [self appendRow:moveRow]; - //Removing the temporarly saved proxy. + // Removing the temporarly saved proxy. [(TiUITableViewProxy *)[self proxy] forgetProxy:moveRow]; } if (![self isSearchStarted]) { @@ -1042,10 +1042,10 @@ - (void)triggerActionForIndexPath:(NSIndexPath *)indexPath [self hideSearchScreen:nil]; } else { /* - TIMOB-7397. Observed that `searchBarTextDidBeginEditing` delegate - method was being called on screen transition which was causing a - visual glitch. Checking for isFirstResponder at this point always - returns false. Calling blur here so that the UISearchBar resigns + TIMOB-7397. Observed that `searchBarTextDidBeginEditing` delegate + method was being called on screen transition which was causing a + visual glitch. Checking for isFirstResponder at this point always + returns false. Calling blur here so that the UISearchBar resigns as first responder on main thread */ [searchField performSelector:@selector(blur:) withObject:nil]; @@ -1057,8 +1057,8 @@ - (void)triggerActionForIndexPath:(NSIndexPath *)indexPath - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *result = [super hitTest:point withEvent:event]; - if (result == self) { //There is no valid reason why the TiUITableView will get an - //touch event; it should ALWAYS be a child view. + if (result == self) { // There is no valid reason why the TiUITableView will get an + // touch event; it should ALWAYS be a child view. return nil; } return result; @@ -1143,7 +1143,7 @@ - (void)recognizedSwipe:(UISwipeGestureRecognizer *)recognizer [event setObject:NUMBOOL(viaSearch) forKey:@"search"]; if (indexPath != nil) { - //We have index path. Let us fill out section and row information. Also since the + // We have index path. Let us fill out section and row information. Also since the NSInteger sectionIdx = [indexPath section]; NSArray *sections = [(TiUITableViewProxy *)[self proxy] internalSections]; TiUITableViewSectionProxy *section = [self sectionForIndex:sectionIdx]; @@ -1183,7 +1183,7 @@ - (void)recognizedTap:(UITapGestureRecognizer *)recognizer [event setObject:NUMBOOL(viaSearch) forKey:@"search"]; if (indexPath != nil) { - //We have index path. Let us fill out section and row information. Also since the + // We have index path. Let us fill out section and row information. Also since the NSInteger sectionIdx = [indexPath section]; NSArray *sections = [(TiUITableViewProxy *)[self proxy] internalSections]; TiUITableViewSectionProxy *section = [self sectionForIndex:sectionIdx]; @@ -1202,7 +1202,7 @@ - (void)recognizedTap:(UITapGestureRecognizer *)recognizer [[self proxy] fireEvent:@"twofingertap" withObject:event]; } } else if ([recognizer numberOfTapsRequired] == 2) { - //Because double-tap suppresses touchStart and double-click, we must do this: + // Because double-tap suppresses touchStart and double-click, we must do this: if ([[self proxy] _hasListeners:@"touchstart"]) { [[self proxy] fireEvent:@"touchstart" withObject:event propagate:YES]; } @@ -1230,7 +1230,7 @@ - (void)longPressGesture:(UILongPressGestureRecognizer *)recognizer BOOL search = [searchController isActive]; if (indexPath == nil) { - //indexPath will also be nil if you click the header of the first section. TableView Bug?? + // indexPath will also be nil if you click the header of the first section. TableView Bug?? TiUITableViewSectionProxy *section = [self sectionForIndex:0]; if (section != nil) { CGRect headerRect = [ourTableView rectForHeaderInSection:0]; @@ -1257,7 +1257,7 @@ - (void)longPressGesture:(UILongPressGestureRecognizer *)recognizer } if (!search) { - //Make sure that the point does not fall into the rect for header or footer views + // Make sure that the point does not fall into the rect for header or footer views CGRect headerRect = [ourTableView rectForHeaderInSection:[indexPath section]]; CGRect footerRect = [ourTableView rectForFooterInSection:[indexPath section]]; if (CGRectContainsPoint(headerRect, point) || CGRectContainsPoint(footerRect, point)) { @@ -1321,8 +1321,8 @@ - (void)updateSearchResultIndexes if ([searchString length] == 0) { RELEASE_TO_NIL(searchResultIndexes); - //Need to reload the tableview, as some of the cells might be reused as part - //of a previous search and as a result may not be visible on screen. + // Need to reload the tableview, as some of the cells might be reused as part + // of a previous search and as a result may not be visible on screen. [tableview reloadData]; return; @@ -1336,7 +1336,7 @@ - (void)updateSearchResultIndexes searchResultIndexEnumerator = [searchResultIndexes objectEnumerator]; } - //TODO: If the search is adding letters to the previous search string, do it by elimination instead of adding. + // TODO: If the search is adding letters to the previous search string, do it by elimination instead of adding. NSString *ourSearchAttribute = filterAttribute; if (ourSearchAttribute == nil) { @@ -1348,7 +1348,7 @@ - (void)updateSearchResultIndexes for (TiUITableViewSectionProxy *thisSection in [(TiUITableViewProxy *)[self proxy] internalSections]) { NSMutableIndexSet *thisIndexSet = [searchResultIndexEnumerator nextObject]; if (thisIndexSet == nil) { - searchResultIndexEnumerator = nil; //Make sure we don't use the enumerator anymore. + searchResultIndexEnumerator = nil; // Make sure we don't use the enumerator anymore. thisIndexSet = [NSMutableIndexSet indexSet]; [searchResultIndexes addObject:thisIndexSet]; } else { @@ -1622,7 +1622,7 @@ - (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar - (TiUIView *)sectionView:(NSInteger)section forLocation:(NSString *)location section:(TiUITableViewSectionProxy **)sectionResult { TiUITableViewSectionProxy *proxy = [self sectionForIndex:section]; - //In the event that proxy is nil, this all flows out to returning nil safely anyways. + // In the event that proxy is nil, this all flows out to returning nil safely anyways. if (sectionResult != nil) { *sectionResult = proxy; } @@ -1653,7 +1653,7 @@ - (void)setKeyboardDismissMode_:(id)value - (void)setSeparatorInsets_:(id)arg { DEPRECATED_REPLACED(@"UI.TableView.separatorInsets", @"5.2.0", @"UI.TableView.tableSeparatorInsets") - [self setTableSeparatorInsets_:arg]; + [self setTableSeparatorInsets_:arg]; } - (void)setTableSeparatorInsets_:(id)arg @@ -1819,9 +1819,9 @@ - (void)setSearch_:(id)search isSearchBarInNavigation = [TiUtils boolValue:[self.proxy valueForKey:@"showSearchBarInNavBar"] def:NO]; if (search != nil) { - //TODO: now that we're using the search controller, we can move away from - //doing our own custom search screen since the controller gives this to us - //for free + // TODO: now that we're using the search controller, we can move away from + // doing our own custom search screen since the controller gives this to us + // for free searchField = [search retain]; if (!isSearchBarInNavigation) { [searchField windowWillOpen]; @@ -2136,12 +2136,12 @@ - (UITableViewCell *)tableView:(UITableView *)ourTableView cellForRowAtIndexPath if (cell == nil) { if (row.callbackCell != nil) { - //Ensure that the proxy is associated with one cell only + // Ensure that the proxy is associated with one cell only [row.callbackCell setProxy:nil]; } cell = [[[TiUITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:row.tableClass row:row] autorelease]; } else { - //Ensure that the row is detached if reusing cells did not do so. + // Ensure that the row is detached if reusing cells did not do so. [row prepareTableRowForReuse]; // Have to reset the proxy on the cell, and the row's callback cell, as it may have been cleared in reuse operations (or reassigned) [(TiUITableViewCell *)cell setProxy:row]; @@ -2162,7 +2162,7 @@ - (UITableViewCell *)tableView:(UITableView *)ourTableView cellForRowAtIndexPath - (NSInteger)numberOfSectionsInTableView:(UITableView *)ourTableView { - //TIMOB-15526 + // TIMOB-15526 if ([searchController isActive] && ourTableView.backgroundColor == [UIColor clearColor]) { ourTableView.backgroundColor = [UIColor whiteColor]; } @@ -2215,7 +2215,7 @@ - (void)tableView:(UITableView *)ourTableView commitEditingStyle:(UITableViewCel NSIndexSet *thisSectionSet = [NSIndexSet indexSetWithIndex:[indexPath section]]; if ([(TiUITableViewProxy *)[self proxy] sectionCount].unsignedIntegerValue > 0) { [table deleteSections:thisSectionSet withRowAnimation:UITableViewRowAnimationFade]; - } else //There always must be at least one section. So instead, we have it reload to clear out the header and footer, etc. + } else // There always must be at least one section. So instead, we have it reload to clear out the header and footer, etc. { [table reloadSections:thisSectionSet withRowAnimation:UITableViewRowAnimationFade]; } @@ -2235,23 +2235,23 @@ - (BOOL)tableView:(UITableView *)ourTableView canEditRowAtIndexPath:(NSIndexPath TiUITableViewRowProxy *row = [self rowForIndexPath:indexPath]; - //If editable, then this is always true. + // If editable, then this is always true. if ([TiUtils boolValue:[row valueForKey:@"editable"] def:editable]) { return YES; } - //Elsewhise, when not editing nor moving, return NO, so that swipes don't trigger. + // Elsewhise, when not editing nor moving, return NO, so that swipes don't trigger. if (!editing && !moving) { return NO; } - //Otherwise, when editing or moving, make sure that both can be done. + // Otherwise, when editing or moving, make sure that both can be done. return [TiUtils boolValue:[row valueForKey:@"moveable"] def:moving || moveable] || [TiUtils boolValue:[row valueForKey:@"editable"] def:editing]; - //Why are we checking editable twice? Well, once it's with the default of editable. The second time with the default of editing. - //Effectively, editable is being tri-state. + // Why are we checking editable twice? Well, once it's with the default of editable. The second time with the default of editing. + // Effectively, editable is being tri-state. } - (BOOL)tableView:(UITableView *)ourTableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath @@ -2277,9 +2277,9 @@ - (UITableViewCellEditingStyle)tableView:(UITableView *)ourTableView editingStyl RETURN_IF_SEARCH_TABLE_VIEW(UITableViewCellEditingStyleNone); TiUITableViewRowProxy *row = [self rowForIndexPath:indexPath]; - //Yes, this looks similar to canEdit, but here we need to make the distinction between moving and editing. + // Yes, this looks similar to canEdit, but here we need to make the distinction between moving and editing. - //Actually, it's easier than that. editable or editing causes this to default true. Otherwise, it's the editable flag. + // Actually, it's easier than that. editable or editing causes this to default true. Otherwise, it's the editable flag. if ([TiUtils boolValue:[row valueForKey:@"editable"] def:editable || editing]) { return UITableViewCellEditingStyleDelete; } @@ -2295,7 +2295,7 @@ - (void)tableView:(UITableView *)ourTableView moveRowAtIndexPath:(NSIndexPath *) NSInteger toRowIndex = [destinationIndexPath row]; if ((fromSectionIndex == toSectionIndex) && (fromRowIndex == toRowIndex)) { - //No need to fire a move event if the row never moved + // No need to fire a move event if the row never moved return; } @@ -2375,7 +2375,7 @@ - (void)selectRow:(id)args TiUITableViewRowProxy *rowProxy = [self rowForIndexPath:path]; if ([rowProxy callbackCell] == nil) { - //Not displayed at present. Go ahead and scroll to row and reperform selectRow after delay + // Not displayed at present. Go ahead and scroll to row and reperform selectRow after delay [[self tableView] scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; NSDictionary *dict = [NSDictionary dictionaryWithObject:NUMBOOL(NO) forKey:@"animated"]; NSArray *newArgs = [NSArray arrayWithObjects:NUMINTEGER(index), dict, nil]; @@ -2677,15 +2677,15 @@ - (CGFloat)tableView:(UITableView *)ourTableView heightForHeaderInSection:(NSInt #endif } /* - * This behavior is slightly more complex between iOS 4 and iOS 5 than you might believe, and Apple's - * documentation is once again misleading. It states that in iOS 4 this value was "ignored if - * -[delegate tableView:viewForHeaderInSection:] returned nil" but apparently a non-nil value for - * -[delegate tableView:titleForHeaderInSection:] is considered a valid value for height handling as well, - * provided it is NOT the empty string. - * - * So for parity with iOS 4, iOS 5 must similarly treat the empty string header as a 'nil' value and - * return a 0.0 height that is overridden by the system. - */ + * This behavior is slightly more complex between iOS 4 and iOS 5 than you might believe, and Apple's + * documentation is once again misleading. It states that in iOS 4 this value was "ignored if + * -[delegate tableView:viewForHeaderInSection:] returned nil" but apparently a non-nil value for + * -[delegate tableView:titleForHeaderInSection:] is considered a valid value for height handling as well, + * provided it is NOT the empty string. + * + * So for parity with iOS 4, iOS 5 must similarly treat the empty string header as a 'nil' value and + * return a 0.0 height that is overridden by the system. + */ else if ([sectionProxy headerTitle] != nil) { if ([[sectionProxy headerTitle] isEqualToString:@""]) { return size; @@ -2836,7 +2836,7 @@ - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { // suspend image loader while we're scrolling to improve performance [[ImageLoader sharedLoader] suspend]; - if ([self.proxy _hasListeners:@"dragStart"]) { //TODO: Deprecate old event. + if ([self.proxy _hasListeners:@"dragStart"]) { // TODO: Deprecate old event. [self.proxy fireEvent:@"dragStart" withObject:nil]; } if ([self.proxy _hasListeners:@"dragstart"]) { @@ -2850,25 +2850,25 @@ - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL // resume image loader when we're done scrolling [[ImageLoader sharedLoader] resume]; } - if ([self.proxy _hasListeners:@"dragEnd"]) { //TODO: Deprecate old event + if ([self.proxy _hasListeners:@"dragEnd"]) { // TODO: Deprecate old event [self.proxy fireEvent:@"dragEnd" withObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:decelerate], @"decelerate", nil]]; } if ([self.proxy _hasListeners:@"dragend"]) { [self.proxy fireEvent:@"dragend" withObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:decelerate], @"decelerate", nil]]; } - //This section of code now moved to [TiUITextWidgetView updateKeyboardStatus] + // This section of code now moved to [TiUITextWidgetView updateKeyboardStatus] // Update keyboard status to insure that any fields actively being edited remain in view - //if ([[[TiApp app] controller] keyboardVisible]) { - // [[[TiApp app] controller] performSelector:@selector(handleNewKeyboardStatus) withObject:nil afterDelay:0.0]; - //} + // if ([[[TiApp app] controller] keyboardVisible]) { + // [[[TiApp app] controller] performSelector:@selector(handleNewKeyboardStatus) withObject:nil afterDelay:0.0]; + // } } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { // resume image loader when we're done scrolling [[ImageLoader sharedLoader] resume]; - if ([self.proxy _hasListeners:@"scrollEnd"]) { //TODO: Deprecate old event. + if ([self.proxy _hasListeners:@"scrollEnd"]) { // TODO: Deprecate old event. [self.proxy fireEvent:@"scrollEnd" withObject:[self eventObjectForScrollView:scrollView]]; } if ([self.proxy _hasListeners:@"scrollend"]) { diff --git a/iphone/Classes/TiUITableViewProxy.h b/iphone/Classes/TiUITableViewProxy.h index eaeac8e7d50..ad1678c0224 100644 --- a/iphone/Classes/TiUITableViewProxy.h +++ b/iphone/Classes/TiUITableViewProxy.h @@ -19,12 +19,12 @@ } - (void)setData:(id)args withObject:(id)properties; - (NSArray *)data; -//Sections and Data are the sanitized version. +// Sections and Data are the sanitized version. @property (nonatomic, readwrite, copy) NSArray *sections; - (NSNumber *)sectionCount; #pragma mark NON-JS functionality -//internalSections is until TODO: Stop JS from using ValueForKey +// internalSections is until TODO: Stop JS from using ValueForKey @property (nonatomic, readwrite, retain) NSMutableArray *internalSections; - (NSInteger)indexForRow:(TiUITableViewRowProxy *)row; diff --git a/iphone/Classes/TiUITableViewProxy.m b/iphone/Classes/TiUITableViewProxy.m index 9d9ac2cee08..8c69a0494c9 100644 --- a/iphone/Classes/TiUITableViewProxy.m +++ b/iphone/Classes/TiUITableViewProxy.m @@ -442,7 +442,7 @@ - (void)updateRow:(id)args newrow.row = rowProxy.row; newrow.parent = newrow.section; - //We now need to disconnect the old row proxy. + // We now need to disconnect the old row proxy. rowProxy.section = nil; rowProxy.parent = nil; rowProxy.table = nil; @@ -503,7 +503,7 @@ - (void)deleteRow:(id)args TiUITableViewAction *action = [[[TiUITableViewAction alloc] initWithObject:row animation:anim type:TiUITableViewActionDeleteRow] autorelease]; [table dispatchAction:action]; } else { - //No table, we have to do the data update ourselves. + // No table, we have to do the data update ourselves. // If we don't handle it, the row gets dropped on the ground, // but if we create the tableview, there's this horrible issue where // the uitableview isn't fully formed, it gets this message to do an action, @@ -558,7 +558,7 @@ - (void)insertRowBefore:(id)args } // Configure the new row - [newSection rememberProxy:newrow]; //If we wait until the main thread, it'll be too late! + [newSection rememberProxy:newrow]; // If we wait until the main thread, it'll be too late! newrow.section = newSection; newrow.parent = newSection; newrow.row = row.row; // HACK: Used to determine the row we're being placed before in the old section @@ -566,7 +566,7 @@ - (void)insertRowBefore:(id)args // Configure the action actionType = TiUITableViewActionInsertSectionBefore; } else { - [section rememberProxy:newrow]; //If we wait until the main thread, it'll be too late! + [section rememberProxy:newrow]; // If we wait until the main thread, it'll be too late! newrow.section = section; // TODO: Should we be updating every row after this one...? newrow.row = row.row == 0 ? 0 : row.row; @@ -577,8 +577,8 @@ - (void)insertRowBefore:(id)args TiUITableViewAction *action = [[[TiUITableViewAction alloc] initWithObject:newrow animation:anim type:actionType] autorelease]; [table dispatchAction:action]; } else { - //No table, we have to do the data update ourselves. - //TODO: Implement. Better yet, refactor. + // No table, we have to do the data update ourselves. + // TODO: Implement. Better yet, refactor. DebugLog(@"[WARN] Table view was not in place before insertRowBefore was called."); } } @@ -626,7 +626,7 @@ - (void)insertRowAfter:(id)args } // Configure the new row - [newSection rememberProxy:newrow]; //If we wait until the main thread, it'll be too late! + [newSection rememberProxy:newrow]; // If we wait until the main thread, it'll be too late! newrow.section = newSection; newrow.parent = newSection; newrow.row = row.row + 1; // HACK: Used to determine the row we're being placed after in the previous section; will be set to 0 later @@ -634,7 +634,7 @@ - (void)insertRowAfter:(id)args // Configure the action actionType = TiUITableViewActionInsertSectionAfter; } else { - [section rememberProxy:newrow]; //If we wait until the main thread, it'll be too late! + [section rememberProxy:newrow]; // If we wait until the main thread, it'll be too late! newrow.section = section; // TODO: Should we be updating every row index of the rows which appear after this row...? newrow.row = row.row + 1; @@ -645,8 +645,8 @@ - (void)insertRowAfter:(id)args TiUITableViewAction *action = [[[TiUITableViewAction alloc] initWithObject:newrow animation:anim type:actionType] autorelease]; [table dispatchAction:action]; } else { - //No table, we have to do the data update ourselves. - //TODO: Implement. Better yet, refactor. + // No table, we have to do the data update ourselves. + // TODO: Implement. Better yet, refactor. DebugLog(@"[WARN] Table view was not in place before insertRowAfter was called."); } } @@ -689,11 +689,11 @@ - (void)appendRow:(id)args row.parent = section; if (table != nil) { - [section rememberProxy:row]; //If we wait until the main thread, it'll be too late! + [section rememberProxy:row]; // If we wait until the main thread, it'll be too late! TiUITableViewAction *action = [[[TiUITableViewAction alloc] initWithObject:row animation:anim type:actionType] autorelease]; [table dispatchAction:action]; } else { - //No table, we have to do the data update ourselves. + // No table, we have to do the data update ourselves. [section add:row]; } } @@ -767,8 +767,8 @@ - (void)setData:(id)args - (NSArray *)data { __block NSArray *curSections = nil; - //TIMOB-9890. Ensure data is retrieved off of the main - //thread to ensure any pending operations are completed + // TIMOB-9890. Ensure data is retrieved off of the main + // thread to ensure any pending operations are completed TiThreadPerformOnMainThread( ^{ curSections = [sections copy]; @@ -828,7 +828,7 @@ - (void)setSections:(NSArray *)newSections withObject:(id)properties { ENSURE_TYPE_OR_NIL(newSections, NSArray); - //Step 1: Sanity check. This might be optional. + // Step 1: Sanity check. This might be optional. Class sectionClass = [TiUITableViewSectionProxy class]; int sectionIndex = 0; for (TiUITableViewSectionProxy *section in newSections) { @@ -841,13 +841,13 @@ - (void)setSections:(NSArray *)newSections withObject:(id)properties sectionIndex++; } - //Step 2: Prepare the sections for entry. Only things that will not affect + // Step 2: Prepare the sections for entry. Only things that will not affect // sections already in the table view. for (TiUITableViewSectionProxy *section in newSections) { [self rememberSection:section]; } - //Step 3: Apply on main thread. + // Step 3: Apply on main thread. TiThreadPerformOnMainThread( ^{ NSArray *oldSections = sections; @@ -891,7 +891,7 @@ - (void)willShow } - (NSNumber *)sectionCount -{ //TODO: Shouldn't this be in the main thread, too? +{ // TODO: Shouldn't this be in the main thread, too? return NUMUINTEGER((sections != nil) ? sections.count : 0); } @@ -914,7 +914,7 @@ - (TiUITableViewSectionProxy *)tableSectionFromArg:(id)arg - (void)appendSection:(id)args { - //Step one: sanity + // Step one: sanity NSUInteger argCount = [args count]; if (argCount < 1) { [self throwException:TiExceptionNotEnoughArguments @@ -922,7 +922,7 @@ - (void)appendSection:(id)args location:CODELOCATION]; } - //Step two: Prepare + // Step two: Prepare id appendum = [args objectAtIndex:0]; TiUITableViewSectionProxy *section = nil; NSMutableArray *sectionArray = nil; @@ -954,7 +954,7 @@ - (void)appendSection:(id)args options = [args objectAtIndex:1]; } - //Step three: Main thread + // Step three: Main thread TiThreadPerformOnMainThread( ^{ BOOL falseFirstSection = [sections count] == 0; @@ -967,7 +967,7 @@ - (void)appendSection:(id)args } [sections addObjectsFromArray:sectionArray]; } else { - //A nil array means a single section. + // A nil array means a single section. [section setSection:sectionRange.location]; [sections addObject:section]; } @@ -983,7 +983,7 @@ - (void)appendSection:(id)args } if (!falseFirstSection) { [ourTable insertSections:[NSIndexSet indexSetWithIndexesInRange:sectionRange] withRowAnimation:ourAnimation]; - } else { //UITableView doesn't know we had 0 sections. + } else { // UITableView doesn't know we had 0 sections. [ourTable beginUpdates]; [ourTable deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:ourAnimation]; [ourTable insertSections:[NSIndexSet indexSetWithIndexesInRange:sectionRange] withRowAnimation:ourAnimation]; @@ -997,7 +997,7 @@ - (void)appendSection:(id)args - (void)deleteSection:(id)args { - //Step one: sanity + // Step one: sanity NSUInteger argCount = [args count]; if (argCount < 1) { [self throwException:TiExceptionNotEnoughArguments @@ -1027,7 +1027,7 @@ - (void)deleteSection:(id)args UITableViewRowAnimation ourAnimation = [TiUITableViewAction animationStyleForProperties:options]; TiUITableView *ourView = (TiUITableView *)[self view]; UITableView *ourTable = [ourView tableView]; - if ([sections count] == 0) { //UITableView can't handle 0 sections. + if ([sections count] == 0) { // UITableView can't handle 0 sections. [ourTable reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:ourAnimation]; } else { [ourTable deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:ourAnimation]; @@ -1054,7 +1054,7 @@ - (void)insertSection:(TiUITableViewSectionProxy *)section atIndex:(int)sectionI TiUITableView *ourView = (TiUITableView *)[self view]; UITableView *ourTable = [ourView tableView]; [section setTable:ourView]; - if (oldSectionCount == 0) { //UITableView doesn't know we have 0 sections. + if (oldSectionCount == 0) { // UITableView doesn't know we have 0 sections. [ourTable reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:ourAnimation]; } else { [ourTable insertSections:[NSIndexSet indexSetWithIndex:boundSectionIndex] withRowAnimation:ourAnimation]; diff --git a/iphone/Classes/TiUITableViewRowProxy.h b/iphone/Classes/TiUITableViewRowProxy.h index 79b2aa62ed1..7f61b7b85fc 100644 --- a/iphone/Classes/TiUITableViewRowProxy.h +++ b/iphone/Classes/TiUITableViewRowProxy.h @@ -54,8 +54,8 @@ - (id)createEventObject:(id)initialObject; - (void)triggerAttach; - (void)updateRow:(NSDictionary *)data withObject:(NSDictionary *)properties; -- (UIView *)currentRowContainerView; //Private method :For internal use only. -- (void)triggerLayout; //Private method :For internal use only. Called from layoutSubviews of the cell. +- (UIView *)currentRowContainerView; // Private method :For internal use only. +- (void)triggerLayout; // Private method :For internal use only. Called from layoutSubviews of the cell. @end diff --git a/iphone/Classes/TiUITableViewRowProxy.m b/iphone/Classes/TiUITableViewRowProxy.m index 9fd61a5d0b1..ce630e7cb49 100644 --- a/iphone/Classes/TiUITableViewRowProxy.m +++ b/iphone/Classes/TiUITableViewRowProxy.m @@ -57,7 +57,7 @@ - (void)clearHitTarget; } } - //By now, no subviews have claimed ownership. + // By now, no subviews have claimed ownership. if ([targetView respondsToSelector:@selector(proxy)]) { return [(TiUIView *)targetView proxy]; } @@ -230,7 +230,7 @@ - (void)setBackgroundTopCap:(id)value - (void)setValue:(id)value forUndefinedKey:(NSString *)key { if ([key isEqualToString:[@"lay" stringByAppendingString:@"out"]]) { - //CAN NOT USE THE MACRO + // CAN NOT USE THE MACRO if (ENFORCE_BATCH_UPDATE) { if (updateStarted) { [self setTempProperty:value forKey:key]; @@ -351,7 +351,7 @@ - (void)configureTitle:(UITableViewCell *)cell NSString *title = [TiUtils stringValue:[self valueForKey:@"title"]]; if (title != nil) { - [textLabel setText:title]; //UILabel already checks to see if it hasn't changed. + [textLabel setText:title]; // UILabel already checks to see if it hasn't changed. UIColor *textColor = [[TiUtils colorValue:[self valueForKey:@"color"]] _color]; [textLabel setTextColor:(textColor == nil) ? [UIColor blackColor] : textColor]; @@ -565,7 +565,7 @@ - (UIView *)view return rowContainerView; } -//Private method : For internal use only +// Private method : For internal use only - (TiUITableViewRowContainer *)currentRowContainerView { if (rowContainerView == nil) { @@ -573,7 +573,7 @@ - (TiUITableViewRowContainer *)currentRowContainerView } return (TiUITableViewRowContainer *)rowContainerView; } -//Private method :For internal use only. Called from layoutSubviews of the cell. +// Private method :For internal use only. Called from layoutSubviews of the cell. - (void)triggerLayout { if (modifyingRow) { @@ -866,7 +866,7 @@ - (id)createEventObject:(id)initialObject return dict; } -//TODO: Remove when deprication is done. +// TODO: Remove when deprication is done. - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(int)code message:(NSString *)message; { // merge in any row level properties for the event diff --git a/iphone/Classes/TiUITableViewSectionProxy.m b/iphone/Classes/TiUITableViewSectionProxy.m index e614e83d93f..17cef662a43 100644 --- a/iphone/Classes/TiUITableViewSectionProxy.m +++ b/iphone/Classes/TiUITableViewSectionProxy.m @@ -104,8 +104,8 @@ - (UIView *)view - (TiUITableViewRowProxy *)rowAtIndex:(NSUInteger)index { - //Because rowAtIndex is used internally, with an int, it can't be used by the Javascript. - //The javascript passes in an NSArray pointer, not an index. And things blow up. + // Because rowAtIndex is used internally, with an int, it can't be used by the Javascript. + // The javascript passes in an NSArray pointer, not an index. And things blow up. return [rows objectAtIndex:index]; } diff --git a/iphone/Classes/TiUITextArea.m b/iphone/Classes/TiUITextArea.m index afab5fc176b..681fee765a1 100644 --- a/iphone/Classes/TiUITextArea.m +++ b/iphone/Classes/TiUITextArea.m @@ -34,7 +34,7 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender - (void)setTouchHandler:(TiUIView *)handler { - //Assign only. No retain + // Assign only. No retain touchHandler = handler; } @@ -52,8 +52,8 @@ - (NSComparisonResult)comparePosition:(UITextPosition *)position toPosition:(UIT - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view { - //If the content view is of type TiUIView touch events will automatically propagate - //If it is not of type TiUIView we will fire touch events with ourself as source + // If the content view is of type TiUIView touch events will automatically propagate + // If it is not of type TiUIView we will fire touch events with ourself as source if ([view isKindOfClass:[TiUIView class]]) { touchedContentView = view; } else { @@ -64,10 +64,10 @@ - (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContent - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { - //When userInteractionEnabled is false we do nothing since touch events are automatically - //propagated. If it is dragging do not do anything. - //The reason we are not checking tracking (like in scrollview) is because for some - //reason UITextView always returns true for tracking after the initial focus + // When userInteractionEnabled is false we do nothing since touch events are automatically + // propagated. If it is dragging do not do anything. + // The reason we are not checking tracking (like in scrollview) is because for some + // reason UITextView always returns true for tracking after the initial focus UITouch *touch = [touches anyObject]; [(TiUITextArea *)touchHandler checkLinkForTouch:touch]; @@ -268,7 +268,7 @@ - (void)setAutoLink_:(id)type_ - (void)setBorderStyle_:(id)value { - //TODO + // TODO } - (void)setScrollsToTop_:(id)value @@ -296,7 +296,7 @@ - (BOOL)hasText return [(UITextView *)[self textWidgetView] hasText]; } -//TODO: scrollRangeToVisible +// TODO: scrollRangeToVisible #pragma mark UITextViewDelegate @@ -351,7 +351,7 @@ - (void)textViewDidChangeSelection:(UITextView *)tv NSDictionary *event = [NSDictionary dictionaryWithObject:rangeDict forKey:@"range"]; [self.proxy fireEvent:@"selected" withObject:event]; } - //TIMOB-15401. Workaround for UI artifact + // TIMOB-15401. Workaround for UI artifact if ((tv == textWidgetView) && (!NSEqualRanges(tv.selectedRange, lastSelectedRange))) { lastSelectedRange.location = tv.selectedRange.location; lastSelectedRange.length = tv.selectedRange.length; @@ -382,10 +382,10 @@ - (BOOL)textView:(UITextView *)tv shouldChangeTextInRange:(NSRange)range replace return NO; } - //TIMOB-15401. Workaround for UI artifact + // TIMOB-15401. Workaround for UI artifact if ([tv isScrollEnabled] && [text isEqualToString:@"\n"]) { if (curText.length - tv.selectedRange.location == 1) { - //Last line. Adjust + // Last line. Adjust [self adjustOffsetIfRequired:tv]; } } @@ -401,7 +401,7 @@ - (void)setHandleLinks_:(id)args } /* -Text area constrains the text event though the content offset and edge insets are set to 0 +Text area constrains the text event though the content offset and edge insets are set to 0 */ #define TXT_OFFSET 20 - (CGFloat)contentWidthForWidth:(CGFloat)value @@ -426,8 +426,8 @@ - (CGFloat)contentHeightForWidth:(CGFloat)value - (void)scrollViewDidScroll:(id)scrollView { - //Ensure that system messages that cause the scrollView to - //scroll are ignored if scrollable is set to false + // Ensure that system messages that cause the scrollView to + // scroll are ignored if scrollable is set to false UITextView *ourView = (UITextView *)[self textWidgetView]; if (![ourView isScrollEnabled]) { CGPoint origin = [scrollView contentOffset]; diff --git a/iphone/Classes/TiUITextField.m b/iphone/Classes/TiUITextField.m index afb8fe23a67..49914d7b51f 100644 --- a/iphone/Classes/TiUITextField.m +++ b/iphone/Classes/TiUITextField.m @@ -58,7 +58,7 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender - (void)setTouchHandler:(TiUIView *)handler { - //Assign only. No retain + // Assign only. No retain touchHandler = handler; } @@ -269,7 +269,7 @@ - (void)initializeTiLayoutView - (void)dealloc { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil]; [super dealloc]; } @@ -289,7 +289,7 @@ - (void)dealloc [(TiTextField *)textWidgetView setTouchHandler:self]; [self addSubview:textWidgetView]; self.clipsToBounds = YES; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotificationCenter *theNC = [NSNotificationCenter defaultCenter]; [theNC addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:textWidgetView]; } @@ -441,7 +441,7 @@ - (void)setClearButtonMode_:(id)value [(TiTextField *)[self textWidgetView] setClearButtonMode:[TiUtils intValue:value]]; } -//TODO: rename +// TODO: rename - (void)setLeftButton_:(id)value { @@ -450,7 +450,7 @@ - (void)setLeftButton_:(id)value TiUIView *leftview = [vp view]; [(TiTextField *)[self textWidgetView] setLeftView:leftview]; } else { - //TODO: + // TODO: } } @@ -465,7 +465,7 @@ - (void)setRightButton_:(id)value TiViewProxy *vp = (TiViewProxy *)value; [(TiTextField *)[self textWidgetView] setRightView:[vp view]]; } else { - //TODO: + // TODO: } } @@ -503,7 +503,7 @@ - (void)textFieldDidBeginEditing:(UITextField *)tf { TiUITextWidgetProxy *ourProxy = (TiUITextWidgetProxy *)[self proxy]; - //TIMOB-14563. Set the right text value. + // TIMOB-14563. Set the right text value. if ([ourProxy suppressFocusEvents]) { NSString *theText = [ourProxy valueForKey:@"value"]; [tf setText:theText]; @@ -522,7 +522,7 @@ - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // return NO to di - (BOOL)textField:(UITextField *)tf shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { - //sanity check for undo bug. Does nothing if undo pressed for certain keyboardsTypes and under some conditions. + // sanity check for undo bug. Does nothing if undo pressed for certain keyboardsTypes and under some conditions. if (range.length + range.location > [[tf text] length]) { return NO; } @@ -541,7 +541,7 @@ - (BOOL)textField:(UITextField *)tf shouldChangeCharactersInRange:(NSRange)range - (void)textFieldDidEndEditing:(UITextField *)tf { [self textWidget:tf didBlurWithText:[tf text]]; - //TIMOB-18365. Value not updated when autocorrect is up and return is pressed + // TIMOB-18365. Value not updated when autocorrect is up and return is pressed [self textFieldDidChange:nil]; } @@ -549,7 +549,7 @@ - (void)textFieldDidChange:(NSNotification *)notification { TiUITextWidgetProxy *ourProxy = (TiUITextWidgetProxy *)[self proxy]; - //TIMOB-14563. This is incorrect when passowrd mark is used. Just ignore. + // TIMOB-14563. This is incorrect when passowrd mark is used. Just ignore. if ([ourProxy suppressFocusEvents]) { return; } diff --git a/iphone/Classes/TiUITextWidget.m b/iphone/Classes/TiUITextWidget.m index a8e4611c3f2..60981cd8f54 100644 --- a/iphone/Classes/TiUITextWidget.m +++ b/iphone/Classes/TiUITextWidget.m @@ -75,7 +75,7 @@ - (void)setSuppressReturn_:(id)value - (void)dealloc { - //Because text fields MUST be played with on main thread, we cannot release if there's the chance we're on a BG thread + // Because text fields MUST be played with on main thread, we cannot release if there's the chance we're on a BG thread TiThreadPerformOnMainThread( ^{ [textWidgetView removeFromSuperview]; diff --git a/iphone/Classes/TiUITextWidgetProxy.h b/iphone/Classes/TiUITextWidgetProxy.h index 0dff10aea67..1423153f268 100644 --- a/iphone/Classes/TiUITextWidgetProxy.h +++ b/iphone/Classes/TiUITextWidgetProxy.h @@ -10,22 +10,22 @@ @interface TiUITextWidgetProxy : TiViewProxy { - //We can't have this in the view, because it's possible for the view to go away despite there being a reason to hold onto the toolbar - //Read: When a view in the toolbar has focus instead. + // We can't have this in the view, because it's possible for the view to go away despite there being a reason to hold onto the toolbar + // Read: When a view in the toolbar has focus instead. - //Toolbar properties that are semi-exposed + // Toolbar properties that are semi-exposed TiUIView *keyboardTiView; CGFloat keyboardAccessoryHeight; NSArray *keyboardToolbarItems; - //Toolbar properties derived from the exposed ones. + // Toolbar properties derived from the exposed ones. UIToolbar *keyboardUIToolbar; BOOL suppressFocusEvents; @private } -//Internal values +// Internal values - (void)noteValueChange:(NSString *)newValue:(NSNumber *)contentHeight; @property (nonatomic, readwrite, assign) BOOL suppressFocusEvents; diff --git a/iphone/Classes/TiUITextWidgetProxy.m b/iphone/Classes/TiUITextWidgetProxy.m index 9bb0ed02bf8..7037bb78dde 100644 --- a/iphone/Classes/TiUITextWidgetProxy.m +++ b/iphone/Classes/TiUITextWidgetProxy.m @@ -136,7 +136,7 @@ - (void)noteValueChange:(NSString *)newValue:(NSNumber *)contentHeight [self contentsWillChange]; TiThreadPerformOnMainThread( ^{ - //Make sure the text widget is in view when editing. + // Make sure the text widget is in view when editing. [(TiUITextWidget *)[self view] updateKeyboardStatus]; }, NO); @@ -160,15 +160,15 @@ - (void)setKeyboardToolbarHeight:(id)value { ENSURE_UI_THREAD_1_ARG(value); keyboardAccessoryHeight = [TiUtils floatValue:value]; - //TODO: If we're focused or the toolbar is otherwise onscreen, we need to let the root view controller know and update. + // TODO: If we're focused or the toolbar is otherwise onscreen, we need to let the root view controller know and update. } - (void)setKeyboardToolbarColor:(id)value { - //Because views aren't lock-protected, ANY and all references, even checking if non-nil, should be done in the main thread. + // Because views aren't lock-protected, ANY and all references, even checking if non-nil, should be done in the main thread. ENSURE_UI_THREAD_1_ARG(value); [self replaceValue:value forKey:@"keyboardToolbarColor" notification:YES]; - if (keyboardUIToolbar != nil) { //It already exists, update it. + if (keyboardUIToolbar != nil) { // It already exists, update it. UIColor *newColor = [[TiUtils colorValue:value] _color]; [keyboardUIToolbar setBarTintColor:newColor]; } @@ -219,7 +219,7 @@ - (void)setKeyboardToolbar:(id)value } } - //Because views aren't lock-protected, ANY and all references, even checking if non-nil, should be done in the main thread. + // Because views aren't lock-protected, ANY and all references, even checking if non-nil, should be done in the main thread. // TODO: ENSURE_UI_THREAD needs to be deprecated in favor of more effective and concicse mechanisms // which use the main thread only when necessary to reduce latency. @@ -259,7 +259,7 @@ - (void)setKeyboardToolbar:(id)value if ([value isKindOfClass:[TiViewProxy class]]) { TiUIView *valueView = [(TiViewProxy *)value view]; - if (valueView == keyboardTiView) { //Nothing to do here. + if (valueView == keyboardTiView) { // Nothing to do here. return; } RELEASE_TO_NIL(keyboardTiView); diff --git a/iphone/Classes/TiUIToolbar.m b/iphone/Classes/TiUIToolbar.m index 09d73bda6bd..bc44ad601ec 100644 --- a/iphone/Classes/TiUIToolbar.m +++ b/iphone/Classes/TiUIToolbar.m @@ -98,9 +98,9 @@ - (void)setItems_:(id)value for (TiViewProxy *thisProxy in value) { ENSURE_CLASS(thisProxy, proxyClass); if (![thisProxy supportsNavBarPositioning]) { - //TODO: This is an exception that should have been raised long ago. + // TODO: This is an exception that should have been raised long ago. DebugLog(@"[ERROR] %@ does not support being in a toolbar!", thisProxy); - //continue; + // continue; } if ([thisProxy conformsToProtocol:@protocol(TiToolbarButton)]) { [(id)thisProxy setToolbar:(id)self.proxy]; diff --git a/iphone/Classes/TiUIToolbarProxy.m b/iphone/Classes/TiUIToolbarProxy.m index 9bd0c3d9a04..8be097a9c0b 100644 --- a/iphone/Classes/TiUIToolbarProxy.m +++ b/iphone/Classes/TiUIToolbarProxy.m @@ -58,10 +58,10 @@ - (void)setItems:(NSArray *)newItems NSString *errorString = [NSString stringWithFormat:@"%@ does not support being in a toolbar!", currentItem]; [self throwException:errorString subreason:nil location:CODELOCATION]; /* - * Note that this theoretically could mean proxies are improperly remembered - * if a later entry causes this exception to be thrown. However, the javascript - * should NOT be using nonproxy objects and the onus is on the Javascript - */ + * Note that this theoretically could mean proxies are improperly remembered + * if a later entry causes this exception to be thrown. However, the javascript + * should NOT be using nonproxy objects and the onus is on the Javascript + */ } if (![oldItems containsObject:currentItem]) { diff --git a/iphone/Classes/TiUIWebView.m b/iphone/Classes/TiUIWebView.m index 59791639328..5475b25c6ff 100644 --- a/iphone/Classes/TiUIWebView.m +++ b/iphone/Classes/TiUIWebView.m @@ -746,7 +746,7 @@ - (void)loadLocalURL:(NSURL *)url html = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; } if (html != nil) { - //Because local HTML may rely on JS that's stored in the app: schema, we must kee the url in the app: format. + // Because local HTML may rely on JS that's stored in the app: schema, we must kee the url in the app: format. [[self webView] loadHTMLString:html baseURL:baseURL]; } else { NSLog(@"[WARN] couldn't load URL: %@", url); @@ -822,7 +822,7 @@ - (void)userContentController:(WKUserContentController *)userContentController d } } - //If there is a cookie with a stale value, update it now. + // If there is a cookie with a stale value, update it now. if (localCookie != nil) { NSMutableDictionary *cookieProperties = [localCookie.properties mutableCopy]; cookieProperties[NSHTTPCookieValue] = cookieValue; @@ -1107,8 +1107,8 @@ - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(nonnull WK } else { BOOL valid = !ignoreNextRequest; if ([scheme hasPrefix:@"http"]) { - //UIWebViewNavigationTypeOther means we are either in a META redirect - //or it is a js request from within the page + // UIWebViewNavigationTypeOther means we are either in a META redirect + // or it is a js request from within the page valid = valid && (navigationAction.navigationType != WKNavigationTypeOther); } if (valid) { @@ -1251,7 +1251,7 @@ - (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)bounds - (CGFloat)contentWidthForWidth:(CGFloat)suggestedWidth { if (autoWidth > 0) { - //If height is DIP returned a scaled autowidth to maintain aspect ratio + // If height is DIP returned a scaled autowidth to maintain aspect ratio if (TiDimensionIsDip(height) && autoHeight > 0) { return roundf(autoWidth * height.value / autoHeight); } @@ -1324,11 +1324,11 @@ - (NSDictionary *)cookieMapForString:(NSString *)cokieStr NSArray *cookieKeyValueStrings = [cokieStr componentsSeparatedByString:@";"]; for (NSString *cookieKeyValueString in cookieKeyValueStrings) { - //Find the position of the first "=" + // Find the position of the first "=" NSRange separatorRange = [cookieKeyValueString rangeOfString:@"="]; if (separatorRange.location != NSNotFound && separatorRange.location > 0 && separatorRange.location < ([cookieKeyValueString length] - 1)) { - //The above conditions ensure that there is content before and after "=", and the key or value is not empty. + // The above conditions ensure that there is content before and after "=", and the key or value is not empty. NSRange keyRange = NSMakeRange(0, separatorRange.location); NSString *key = [cookieKeyValueString substringWithRange:keyRange]; @@ -1350,7 +1350,7 @@ - (NSDictionary *)cookiePropertiesForString:(NSString *)cookieStr for (NSString *key in [cookieMap allKeys]) { NSString *value = [cookieMap objectForKey:key]; - NSString *uppercaseKey = [key uppercaseString]; //Mainly to eliminate the problem of naming irregularities + NSString *uppercaseKey = [key uppercaseString]; // Mainly to eliminate the problem of naming irregularities if ([uppercaseKey isEqualToString:@"DOMAIN"]) { if (![value hasPrefix:@"."] && ![value hasPrefix:@"www"]) { @@ -1389,7 +1389,7 @@ - (NSDictionary *)cookiePropertiesForString:(NSString *)cookieStr } } - //Since the cookieWithProperties: method properties can not be without NSHTTPCookiePath, so you need to confirm this, if not, the default is "/" + // Since the cookieWithProperties: method properties can not be without NSHTTPCookiePath, so you need to confirm this, if not, the default is "/" if (![cookieProperties objectForKey:NSHTTPCookiePath]) { [cookieProperties setObject:@"/" forKey:NSHTTPCookiePath]; } diff --git a/iphone/Classes/TiUIiOSBlurView.m b/iphone/Classes/TiUIiOSBlurView.m index a261fea477e..ca38d923cb3 100644 --- a/iphone/Classes/TiUIiOSBlurView.m +++ b/iphone/Classes/TiUIiOSBlurView.m @@ -91,7 +91,7 @@ - (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)bounds - (CGFloat)contentWidthForWidth:(CGFloat)suggestedWidth { if (autoWidth > 0) { - //If height is DIP returned a scaled autowidth to maintain aspect ratio + // If height is DIP returned a scaled autowidth to maintain aspect ratio if (TiDimensionIsDip(height) && autoHeight > 0) { return roundf(autoWidth * height.value / autoHeight); } diff --git a/iphone/Classes/TiUIiOSDocumentViewerProxy.m b/iphone/Classes/TiUIiOSDocumentViewerProxy.m index 9580a866083..f8f5c94d911 100644 --- a/iphone/Classes/TiUIiOSDocumentViewerProxy.m +++ b/iphone/Classes/TiUIiOSDocumentViewerProxy.m @@ -88,10 +88,10 @@ - (void)setUrl:(id)value { ENSURE_TYPE(value, NSString); NSURL *url = [self _toURL:value proxy:self]; - //UIDocumentInteractionController is recommended to be a new instance for every different url - //instead of having titanium developer create a new instance every time a new document url is loaded - //we assume that setUrl is called to change doc, so we go ahead and release the controller and create - //a new one when asked to present + // UIDocumentInteractionController is recommended to be a new instance for every different url + // instead of having titanium developer create a new instance every time a new document url is loaded + // we assume that setUrl is called to change doc, so we go ahead and release the controller and create + // a new one when asked to present RELEASE_TO_NIL(controller); [self replaceValue:url forKey:@"url" notification:NO]; } diff --git a/iphone/Classes/TiUIiOSLivePhotoView.m b/iphone/Classes/TiUIiOSLivePhotoView.m index c3b655954b7..aed90700718 100644 --- a/iphone/Classes/TiUIiOSLivePhotoView.m +++ b/iphone/Classes/TiUIiOSLivePhotoView.m @@ -108,7 +108,7 @@ - (void)frameSizeChanged:(CGRect)frame bounds:(CGRect)bounds - (CGFloat)contentWidthForWidth:(CGFloat)suggestedWidth { if (autoWidth > 0) { - //If height is DIP returned a scaled autowidth to maintain aspect ratio + // If height is DIP returned a scaled autowidth to maintain aspect ratio if (TiDimensionIsDip(height) && autoHeight > 0) { return roundf(autoWidth * height.value / autoHeight); } diff --git a/iphone/Classes/TiUIiOSProxy.h b/iphone/Classes/TiUIiOSProxy.h index 8101182335c..0350a3dea11 100644 --- a/iphone/Classes/TiUIiOSProxy.h +++ b/iphone/Classes/TiUIiOSProxy.h @@ -90,7 +90,7 @@ @property (nonatomic, readonly) NSNumber *LIVEPHOTO_PLAYBACK_STYLE_HINT; @property (nonatomic, readonly) NSNumber *LIVEPHOTO_PLAYBACK_STYLE_FULL; -//Modules +// Modules #ifdef USE_TI_UIIOSANIMATIONSTYLE @property (nonatomic, readwrite, assign) TiUIiOSAnimationStyleProxy *animationStyleProxy; #endif @@ -148,7 +148,7 @@ - (NSNumber *)ALERT_SEVERITY_CRITICAL; #endif -//Modal Presentation & Transition +// Modal Presentation & Transition @property (nonatomic, readonly) NSNumber *MODAL_PRESENTATION_FULLSCREEN; @property (nonatomic, readonly) NSNumber *MODAL_PRESENTATION_PAGESHEET; @property (nonatomic, readonly) NSNumber *MODAL_PRESENTATION_FORMSHEET; @@ -173,7 +173,7 @@ @property (nonatomic, readonly) NSNumber *LARGE_TITLE_DISPLAY_MODE_NEVER; /** - Checks the force touch capibility of the current device. + * Checks the force touch capibility of the current device. */ - (NSNumber *)forceTouchSupported; diff --git a/iphone/Classes/TiUIiOSProxy.m b/iphone/Classes/TiUIiOSProxy.m index 40aa1f51857..ceb94efd132 100644 --- a/iphone/Classes/TiUIiOSProxy.m +++ b/iphone/Classes/TiUIiOSProxy.m @@ -702,7 +702,7 @@ - (id)createPushBehavior:(id)args { return [[[TiPushBehavior alloc] _initWithPageContext:[self executionContext] args:args] autorelease]; } -//TiPushBehavior Constants +// TiPushBehavior Constants MAKE_SYSTEM_PROP(PUSH_MODE_CONTINUOUS, 0); MAKE_SYSTEM_PROP(PUSH_MODE_INSTANTANEOUS, 1); #endif @@ -733,7 +733,7 @@ - (id)createCollisionBehavior:(id)args { return [[[TiCollisionBehavior alloc] _initWithPageContext:[self executionContext] args:args] autorelease]; } -//TiCollisionBehavior Constants +// TiCollisionBehavior Constants MAKE_SYSTEM_PROP(COLLISION_MODE_ITEM, 0); MAKE_SYSTEM_PROP(COLLISION_MODE_BOUNDARY, 1); MAKE_SYSTEM_PROP(COLLISION_MODE_ALL, 2); @@ -790,7 +790,7 @@ - (id)createApplicationShortcuts:(id)args MAKE_SYSTEM_PROP(SHORTCUT_ICON_TYPE_UPDATE, UIApplicationShortcutIconTypeUpdate); #endif -//Modal Transition and Presentatiom +// Modal Transition and Presentatiom MAKE_SYSTEM_PROP(MODAL_TRANSITION_STYLE_COVER_VERTICAL, UIModalTransitionStyleCoverVertical); MAKE_SYSTEM_PROP(MODAL_TRANSITION_STYLE_FLIP_HORIZONTAL, UIModalTransitionStyleFlipHorizontal); MAKE_SYSTEM_PROP(MODAL_TRANSITION_STYLE_CROSS_DISSOLVE, UIModalTransitionStyleCrossDissolve); diff --git a/iphone/Classes/TiUIiOSSplitWindow.m b/iphone/Classes/TiUIiOSSplitWindow.m index e6fb523edd6..1e2a7f53a0f 100644 --- a/iphone/Classes/TiUIiOSSplitWindow.m +++ b/iphone/Classes/TiUIiOSSplitWindow.m @@ -133,8 +133,8 @@ - (void)layoutSubviewsForOrientation:(UIInterfaceOrientation)orientation if (showMasterInPortrait) { if (masterIsOverlayed) { /* - * Detail occupies visible area. Master on top. - */ + * Detail occupies visible area. Master on top. + */ detailSize = CGSizeMake(refSize.width, refSize.height); masterSize = CGSizeMake(masterWidth, refSize.height); masterRect = CGRectMake(0, 0, masterSize.width, masterSize.height); @@ -143,8 +143,8 @@ - (void)layoutSubviewsForOrientation:(UIInterfaceOrientation)orientation detailCenter = CGPointMake(detailSize.width / 2, detailSize.height / 2); } else { /* - * Side by side. Master+Detail occupy visible area - */ + * Side by side. Master+Detail occupy visible area + */ masterSize = CGSizeMake(masterWidth, refSize.height); masterRect = CGRectMake(0, 0, masterSize.width, masterSize.height); masterCenter = CGPointMake(masterSize.width / 2, masterSize.height / 2); @@ -155,8 +155,8 @@ - (void)layoutSubviewsForOrientation:(UIInterfaceOrientation)orientation } else { /* - * Side by side. Detail in visible area. Master off screen to left. - */ + * Side by side. Detail in visible area. Master off screen to left. + */ detailSize = CGSizeMake(refSize.width, refSize.height); masterSize = CGSizeMake(masterWidth, refSize.height); masterRect = CGRectMake(0, 0, masterSize.width, masterSize.height); @@ -166,8 +166,8 @@ - (void)layoutSubviewsForOrientation:(UIInterfaceOrientation)orientation } } else { /* - * Side by side. Master+Detail occupy visible area - */ + * Side by side. Master+Detail occupy visible area + */ CGFloat masterWidth = roundf(splitRatioLandscape * refSize.width); detailSize = CGSizeMake(refSize.width - masterWidth, refSize.height); masterSize = CGSizeMake(masterWidth, refSize.height); diff --git a/iphone/Classes/TiUIiOSStepper.m b/iphone/Classes/TiUIiOSStepper.m index 12e18c90696..fc078892e58 100644 --- a/iphone/Classes/TiUIiOSStepper.m +++ b/iphone/Classes/TiUIiOSStepper.m @@ -245,7 +245,7 @@ - (void)controlAction:(id)sender forEvent:(UIEvent *)event - (UIImage *)imageWithImage:(UIImage *)image fullScale:(bool)full { - //UIGraphicsBeginImageContext(newSize); + // UIGraphicsBeginImageContext(newSize); // In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution). // Pass 1.0 to force exact pixel size. [self stepper]; diff --git a/iphone/Classes/TiUIiPadPopoverProxy.h b/iphone/Classes/TiUIiPadPopoverProxy.h index 806f348baef..5c974512790 100644 --- a/iphone/Classes/TiUIiPadPopoverProxy.h +++ b/iphone/Classes/TiUIiPadPopoverProxy.h @@ -9,15 +9,15 @@ #import #import -//The iPadPopoverProxy should be seen more as like a window or such, because -//The popover controller will contain the viewController, which has the view. -//If the view had the logic, you get some nasty dependency loops. +// The iPadPopoverProxy should be seen more as like a window or such, because +// The popover controller will contain the viewController, which has the view. +// If the view had the logic, you get some nasty dependency loops. @interface TiUIiPadPopoverProxy : TiProxy { @private UIViewController *viewController; TiViewProxy *contentViewProxy; - //We need to hold onto this information for whenever the status bar rotates. + // We need to hold onto this information for whenever the status bar rotates. TiViewProxy *popoverView; CGRect popoverRect; BOOL animated; diff --git a/iphone/Classes/TiUIiPadPopoverProxy.m b/iphone/Classes/TiUIiPadPopoverProxy.m index 8f27c313a1a..c2f24d66605 100644 --- a/iphone/Classes/TiUIiPadPopoverProxy.m +++ b/iphone/Classes/TiUIiPadPopoverProxy.m @@ -249,7 +249,7 @@ - (void)cleanup [contentViewProxy setProxyObserver:nil]; popoverInitialized = NO; - [self fireEvent:@"hide" withObject:nil]; //Checking for listeners are done by fireEvent anyways. + [self fireEvent:@"hide" withObject:nil]; // Checking for listeners are done by fireEvent anyways. [contentViewProxy windowDidClose]; if ([contentViewProxy isKindOfClass:[TiWindowProxy class]]) { @@ -385,7 +385,7 @@ - (void)prepareForPopoverPresentation:(UIPopoverPresentationController *)popover } } - //Fell through. + // Fell through. UIViewController *presentingController = [[self viewController] presentingViewController]; popoverPresentationController.permittedArrowDirections = directions; popoverPresentationController.sourceView = [presentingController view]; @@ -408,7 +408,7 @@ - (void)presentationControllerDidDismiss:(UIPresentationController *)presentatio - (void)popoverPresentationController:(UIPopoverPresentationController *)popoverPresentationController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView *_Nonnull *)view { - //This will never be called when using bar button item + // This will never be called when using bar button item BOOL canUseDialogRect = !CGRectEqualToRect(CGRectZero, popoverRect); UIView *theSourceView = *view; diff --git a/iphone/Classes/TiViewAttachBehavior.m b/iphone/Classes/TiViewAttachBehavior.m index d7c771f62bd..8b7c916cff3 100644 --- a/iphone/Classes/TiViewAttachBehavior.m +++ b/iphone/Classes/TiViewAttachBehavior.m @@ -61,7 +61,7 @@ - (UIDynamicBehavior *)behaviorObject - (void)updateItems { - //Nothing to do here + // Nothing to do here } - (void)updatePositioning diff --git a/iphone/Classes/UIModule.h b/iphone/Classes/UIModule.h index dd8d129f580..046ab93448a 100644 --- a/iphone/Classes/UIModule.h +++ b/iphone/Classes/UIModule.h @@ -43,7 +43,7 @@ NSNumber *lastEmittedMode; } -//TODO: review these, maybe they need to go on iPhone Animation Style - however, they are platform generic +// TODO: review these, maybe they need to go on iPhone Animation Style - however, they are platform generic @property (nonatomic, readonly) NSNumber *ANIMATION_CURVE_EASE_IN_OUT; @property (nonatomic, readonly) NSNumber *ANIMATION_CURVE_EASE_IN; diff --git a/iphone/Classes/UIModule.m b/iphone/Classes/UIModule.m index f1f77644984..114792f1cfb 100644 --- a/iphone/Classes/UIModule.m +++ b/iphone/Classes/UIModule.m @@ -394,12 +394,12 @@ - (void)setOrientation:(id)mode MAKE_SYSTEM_PROP(FACE_UP, UIDeviceOrientationFaceUp); MAKE_SYSTEM_PROP(FACE_DOWN, UIDeviceOrientationFaceDown); -MAKE_SYSTEM_PROP(EXTEND_EDGE_NONE, 0); //UIRectEdgeNone -MAKE_SYSTEM_PROP(EXTEND_EDGE_TOP, 1); //UIRectEdgeTop -MAKE_SYSTEM_PROP(EXTEND_EDGE_LEFT, 2); //UIEdgeRectLeft -MAKE_SYSTEM_PROP(EXTEND_EDGE_BOTTOM, 4); //UIEdgeRectBottom -MAKE_SYSTEM_PROP(EXTEND_EDGE_RIGHT, 8); //UIEdgeRectRight -MAKE_SYSTEM_PROP(EXTEND_EDGE_ALL, 15); //UIEdgeRectAll +MAKE_SYSTEM_PROP(EXTEND_EDGE_NONE, 0); // UIRectEdgeNone +MAKE_SYSTEM_PROP(EXTEND_EDGE_TOP, 1); // UIRectEdgeTop +MAKE_SYSTEM_PROP(EXTEND_EDGE_LEFT, 2); // UIEdgeRectLeft +MAKE_SYSTEM_PROP(EXTEND_EDGE_BOTTOM, 4); // UIEdgeRectBottom +MAKE_SYSTEM_PROP(EXTEND_EDGE_RIGHT, 8); // UIEdgeRectRight +MAKE_SYSTEM_PROP(EXTEND_EDGE_ALL, 15); // UIEdgeRectAll - (NSString *)TEXT_STYLE_HEADLINE { @@ -449,9 +449,9 @@ - (NSString *)TEXT_STYLE_LARGE_TITLE - (void)setOverrideUserInterfaceStyle:(id)args { ENSURE_SINGLE_ARG(args, NSNumber) - [self replaceValue:args - forKey:@"overrideUserInterfaceStyle" - notification:NO]; + [self replaceValue:args + forKey:@"overrideUserInterfaceStyle" + notification:NO]; int style = [TiUtils intValue:args def:UIUserInterfaceStyleUnspecified]; TiApp.app.window.overrideUserInterfaceStyle = style; } @@ -640,7 +640,7 @@ - (NSNumber *)convertUnits:(id)args float result = 0.0; if (convertFromValue != nil && convertToUnits != nil) { - //Convert to DIP first + // Convert to DIP first TiDimension fromVal = TiDimensionFromObject(convertFromValue); if (TiDimensionIsDip(fromVal)) { diff --git a/iphone/Classes/WatchSessionModule.m b/iphone/Classes/WatchSessionModule.m index 49dd4ae1fae..95b0239ddef 100644 --- a/iphone/Classes/WatchSessionModule.m +++ b/iphone/Classes/WatchSessionModule.m @@ -164,7 +164,7 @@ - (NSNumber *)activationState return nil; } -//copy of most recent app context sent to watch +// copy of most recent app context sent to watch - (NSDictionary *)recentApplicationContext { if ([WCSession isSupported]) { @@ -210,7 +210,7 @@ - (void)sendMessage:(id)args #endif }]; } -//sent to watch so that it can update its state when it wakes +// sent to watch so that it can update its state when it wakes - (void)updateApplicationContext:(id)value { if (![WCSession isSupported]) { @@ -230,7 +230,7 @@ - (void)updateApplicationContext:(id)value } } -//sent in background +// sent in background - (void)transferUserInfo:(id)value { if (![WCSession isSupported]) { @@ -243,10 +243,10 @@ - (void)transferUserInfo:(id)value } ENSURE_SINGLE_ARG(value, NSDictionary) - [[self watchSession] transferUserInfo:value]; + [[self watchSession] transferUserInfo:value]; } -//sent in background +// sent in background - (void)transferFile:(id)value { if (![WCSession isSupported]) { @@ -280,7 +280,7 @@ - (void)transferCurrentComplication:(id)value } ENSURE_SINGLE_ARG(value, NSDictionary) - [[self watchSession] transferCurrentComplicationUserInfo:value]; + [[self watchSession] transferCurrentComplicationUserInfo:value]; } - (void)cancelAllUserInfoTransfers:(id)value @@ -330,7 +330,7 @@ - (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictio [self fireEvent:@"receivemessage" withObject:@{ @"message" : message }]; } } -//these are context updates received right after [watchSession activateSession] +// these are context updates received right after [watchSession activateSession] - (void)session:(nonnull WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary *)applicationContext { if ([self _hasListeners:@"receiveapplicationcontext"]) { diff --git a/iphone/Classes/XMLModule.m b/iphone/Classes/XMLModule.m index ce953bf8198..1a400faac75 100644 --- a/iphone/Classes/XMLModule.m +++ b/iphone/Classes/XMLModule.m @@ -36,10 +36,10 @@ - (id)serializeToString:(id)arg return xmlString; } - //Strip out all the xmlns:xmlns="http://www.w3.org/2000/xmlns/" definitions + // Strip out all the xmlns:xmlns="http://www.w3.org/2000/xmlns/" definitions NSString *strippedString = [xmlString stringByReplacingOccurrencesOfString:@" xmlns:xmlns=\"http://www.w3.org/2000/xmlns/\"" withString:@""]; - //Clean out duplicate namespace definitions + // Clean out duplicate namespace definitions NSString *cleanString = [self cleanDuplicateNS:strippedString]; return cleanString; @@ -52,7 +52,7 @@ - (id)serializeToString:(id)arg var doc = Ti.XML.parseString(''); var feed = doc.implementation.createDocument('http://www.test.org/myns', 'myns:feed', null); feed.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:myns', 'http://www.test.org/myns'); - + When you print out feed it will print out the NS myns twice. This method cleans out the duplicate NS definitions */ - (NSString *)cleanDuplicateNS:(NSString *)xmlString @@ -64,25 +64,25 @@ - (NSString *)cleanDuplicateNS:(NSString *)xmlString searchRange.location = result.location + result.length; searchRange.length = [xmlString length] - (searchRange.location); - //Search for end of element + // Search for end of element NSRange endOfElement = [xmlString rangeOfString:@">" options:0 range:searchRange]; - //Search for end of NS definition + // Search for end of NS definition NSRange endOfNS = [xmlString rangeOfString:@" " options:0 range:searchRange]; if (endOfNS.location < endOfElement.location) { - //Get the actual xmlns definition + // Get the actual xmlns definition NSRange subStringRange = NSMakeRange(result.location, endOfNS.location - result.location); NSString *subString = [xmlString substringWithRange:subStringRange]; - //Set up a search range + // Set up a search range subStringRange.location = endOfNS.location; subStringRange.length = endOfElement.location - endOfNS.location; xmlString = [xmlString stringByReplacingOccurrencesOfString:subString withString:@"" options:0 range:subStringRange]; - //Update search range + // Update search range searchRange.location = subStringRange.location + 1; searchRange.length = [xmlString length] - searchRange.location; } else { - //Not in this element. Update search range. + // Not in this element. Update search range. searchRange.location = endOfElement.location + 1; searchRange.length = [xmlString length] - searchRange.location; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.h index f9b04c3806b..c2ff2839ce1 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.h @@ -117,7 +117,7 @@ typedef enum { /** The ImageLoader class provides a centralized point for loading images in Titanium. Using ImageLoader is the preferred way for getting images from remote sources. - + The class is singleton and not supposed to be subclassed. The instance should not be instantiated directly, but lazily created with . */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.m index c906064fbfe..3695ee740b2 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/ImageLoader.m @@ -12,7 +12,7 @@ #import "UIImage+Resize.h" #import -//#define DEBUG_IMAGE_CACHE +// #define DEBUG_IMAGE_CACHE #ifdef DEBUG_IMAGE_CACHE #import @@ -159,7 +159,7 @@ - (UIImage *)imageForSize:(CGSize)imageSize scalingStyle:(TiImageScalingStyle)sc return recentlyResizedImage; } - //TODO: Tweak quality depending on how large the result will be. + // TODO: Tweak quality depending on how large the result will be. CGInterpolationQuality quality = kCGInterpolationDefault; [self setRecentlyResizedImage:[UIImageResize @@ -319,7 +319,7 @@ @implementation ImageLoader - (id)init { if (self = [super init]) { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification @@ -331,7 +331,7 @@ - (id)init - (void)dealloc { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; @@ -440,7 +440,7 @@ - (ImageCacheEntry *)entryForKey:(NSURL *)url NSDate *currentTimeStamp = [[[NSFileManager defaultManager] attributesOfItemAtPath:result.localPath error:&error] objectForKey:NSFileModificationDate]; if (![currentTimeStamp isEqualToDate:result.lastModified]) { - //We should remove the cached image as the local file backing cached image has changed. + // We should remove the cached image as the local file backing cached image has changed. [self purge:url]; result = nil; } @@ -463,12 +463,12 @@ - (ImageCacheEntry *)entryForKey:(NSURL *)url NSString *imageArg = nil; if (range.location != NSNotFound) { if ([TiUtils isMacOS]) { - imageArg = [path substringFromIndex:range.location + 24]; //Contents/Resources/ for mac + imageArg = [path substringFromIndex:range.location + 24]; // Contents/Resources/ for mac } else { imageArg = [path substringFromIndex:range.location + 5]; } } - //remove suffixes. + // remove suffixes. imageArg = [imageArg stringByReplacingOccurrencesOfString:@"@3x" withString:@""]; imageArg = [imageArg stringByReplacingOccurrencesOfString:@"@2x" withString:@""]; imageArg = [imageArg stringByReplacingOccurrencesOfString:@"~iphone" withString:@""]; @@ -649,8 +649,8 @@ - (void)suspend - (void)cancel { - //NOTE: this should only be called on suspend - //to cause the queue to be stopped + // NOTE: this should only be called on suspend + // to cause the queue to be stopped [lock lock]; if (queue != nil) { [queue cancelAllOperations]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.h index 3e29930ef31..37a6565608a 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.h @@ -1,9 +1,9 @@ /** -* Titanium SDK + * Titanium SDK * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. -* Licensed under the terms of the Apache Public License -* Please see the LICENSE included with this distribution for details. -*/ + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ @import JavaScriptCore; NS_ASSUME_NONNULL_BEGIN diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.m index 3dd58f36ccb..622f91def18 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/JSValue+Addons.m @@ -1,9 +1,9 @@ /** -* Titanium SDK + * Titanium SDK * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. -* Licensed under the terms of the Apache Public License -* Please see the LICENSE included with this distribution for details. -*/ + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ #import "JSValue+Addons.h" diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.h index b6b19b7a53a..0defb7d73a7 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.h @@ -27,8 +27,8 @@ extern NSString *TitaniumModuleRequireFormat; NSDictionary *preload; BOOL shutdown; BOOL evaluationError; - //NOTE: Do NOT treat registeredProxies like a mutableDictionary; mutable dictionaries copy keys, - //CFMutableDictionaryRefs only retain keys, which lets them work with proxies properly. + // NOTE: Do NOT treat registeredProxies like a mutableDictionary; mutable dictionaries copy keys, + // CFMutableDictionaryRefs only retain keys, which lets them work with proxies properly. CFMutableDictionaryRef registeredProxies; NSCondition *shutdownCondition; os_unfair_lock proxyLock; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.m index 7b358a32c8d..8a98c45ddcb 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/KrollBridge.m @@ -26,7 +26,7 @@ "if(module.exports !== __OXP){return module.exports;}" "return exports;})({})"; -//Defined private method inside TiBindingRunLoop.m (Perhaps to move to .c?) +// Defined private method inside TiBindingRunLoop.m (Perhaps to move to .c?) void TiBindingRunLoopAnnounceStart(TiBindingRunLoop runLoop); os_unfair_lock krollBridgeRegistryLock = OS_UNFAIR_LOCK_INIT; @@ -47,7 +47,7 @@ + (void)initialize - (void)registerForMemoryWarning { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMemoryWarning:) name:UIApplicationDidReceiveMemoryWarningNotification @@ -56,7 +56,7 @@ - (void)registerForMemoryWarning - (void)unregisterForMemoryWarning { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidReceiveMemoryWarningNotification object:nil]; } @@ -300,7 +300,7 @@ - (void)shutdown:(NSCondition *)condition shutdownCondition = [condition retain]; shutdown = YES; // fire a notification event to our listeners - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotification *notification = [NSNotification notificationWithName:kTiContextShutdownNotification object:self]; [[NSNotificationCenter defaultCenter] postNotification:notification]; @@ -383,7 +383,7 @@ - (void)didStartNewContext:(KrollContext *)kroll } NSURL *startURL = nil; - //if we have a preload dictionary, register those static key/values into our namespace + // if we have a preload dictionary, register those static key/values into our namespace if (preload != nil) { // Guard for top level Titanium object being unassigned. likley means we had issues // setting up ti.kernel.js, so we likely need to skip most everything here. @@ -437,7 +437,7 @@ - (void)willStopNewContext:(KrollContext *)kroll if (!shutdown) { shutdown = YES; // fire a notification event to our listeners - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! NSNotification *notification = [NSNotification notificationWithName:kTiContextShutdownNotification object:self]; [[NSNotificationCenter defaultCenter] postNotification:notification]; } @@ -474,8 +474,8 @@ - (void)registerProxy:(id)proxy krollObject:(KrollObject *)ourKrollObject if (registeredProxies == NULL) { registeredProxies = CFDictionaryCreateMutable(NULL, 10, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); } - //NOTE: Do NOT treat registeredProxies like a mutableDictionary; mutable dictionaries copy keys, - //CFMutableDictionaryRefs only retain keys, which lets them work with proxies properly. + // NOTE: Do NOT treat registeredProxies like a mutableDictionary; mutable dictionaries copy keys, + // CFMutableDictionaryRefs only retain keys, which lets them work with proxies properly. CFDictionaryAddValue(registeredProxies, proxy, ourKrollObject); os_unfair_lock_unlock(&proxyLock); @@ -507,7 +507,7 @@ - (void)unregisterProxy:(id)proxy os_unfair_lock_lock(&proxyLock); if (registeredProxies != NULL) { CFDictionaryRemoveValue(registeredProxies, proxy); - //Don't bother with removing the empty registry. It's small and leaves on dealloc anyways. + // Don't bother with removing the empty registry. It's small and leaves on dealloc anyways. } os_unfair_lock_unlock(&proxyLock); [proxy unboundBridge:self]; @@ -579,8 +579,8 @@ + (NSArray *)krollBridgesUsingProxy:(id)proxy [results addObject:currentBridge]; } - //Why do we wait so long? In case someone tries to dealloc the krollBridge while we're looking at it. - //registryObjects nor the registry does a retain here! + // Why do we wait so long? In case someone tries to dealloc the krollBridge while we're looking at it. + // registryObjects nor the registry does a retain here! os_unfair_lock_unlock(&krollBridgeRegistryLock); return results; } @@ -620,8 +620,8 @@ + (BOOL)krollBridgeExists:(KrollBridge *)bridge break; } } - //Why not CFSetContainsValue? Because bridge may not be a valid pointer, and SetContainsValue - //will ask it for a hash! + // Why not CFSetContainsValue? Because bridge may not be a valid pointer, and SetContainsValue + // will ask it for a hash! os_unfair_lock_unlock(&krollBridgeRegistryLock); return result; @@ -648,7 +648,7 @@ + (KrollBridge *)krollBridgeForThreadName:(NSString *)threadName; - (int)forceGarbageCollectNow; { [context gc]; - //Actually forcing garbage collect now will cause a deadlock. + // Actually forcing garbage collect now will cause a deadlock. return 0; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/LayoutConstraint.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/LayoutConstraint.m index ad2c696ea5a..ba12bc5e888 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/LayoutConstraint.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/LayoutConstraint.m @@ -23,24 +23,24 @@ Okay, see if we have a width. If so, look to see if we have x. If so, we're done for horizontal. If width is valid: - if x is constant or percent: - create a valid x - else if left and right are defined: - Balance springily. - else if left is defined - x = left + width*anchorpoint - else if right is defined - x = superviewwidth - right - width*anchorpoint - else (left and right are undefined) - x = superviewwidth/2 - width*anchorpoint + if x is constant or percent: + create a valid x + else if left and right are defined: + Balance springily. + else if left is defined + x = left + width*anchorpoint + else if right is defined + x = superviewwidth - right - width*anchorpoint + else (left and right are undefined) + x = superviewwidth/2 - width*anchorpoint else (width is invalid) - (Same as before) + (Same as before) */ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NSObject *autoSizer, CGSize referenceSize, UIViewAutoresizing *resultResizing) { - //TODO: Refactor for elegance. + // TODO: Refactor for elegance. CGFloat width; BOOL ignorePercent = NO; CGSize parentSize = CGSizeZero; @@ -48,7 +48,7 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS if ([autoSizer isKindOfClass:[TiViewProxy class]]) { TiViewProxy *parent = [(TiViewProxy *)autoSizer parent]; if (parent != nil && (!TiLayoutRuleIsAbsolute([parent layoutProperties]->layoutStyle))) { - //Sandbox with percent values is garbage + // Sandbox with percent values is garbage ignorePercent = YES; parentSize = [parent size].rect.size; } @@ -85,9 +85,9 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS case TiDimensionTypeAutoFill: { width = TiDimensionCalculateMargins(constraint->left, constraint->right, referenceSize.width); BOOL autoFill = NO; - //Undefined falls to auto behavior + // Undefined falls to auto behavior if (TiDimensionIsUndefined(constraint->width) || TiDimensionIsAuto(constraint->width)) { - //Check if default auto behavior is fill + // Check if default auto behavior is fill if ([autoSizer respondsToSelector:@selector(defaultAutoWidthBehavior:)]) { if (TiDimensionIsAutoFill([autoSizer defaultAutoWidthBehavior:nil])) { autoFill = YES; @@ -100,7 +100,7 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS } break; } - //If it comes here it has to follow SIZE behavior + // If it comes here it has to follow SIZE behavior if ([autoSizer respondsToSelector:@selector(autoWidthForSize:)]) { CGFloat desiredWidth = [autoSizer autoWidthForSize:CGSizeMake(width, referenceSize.height)]; width = width < desiredWidth ? width : desiredWidth; @@ -111,7 +111,7 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS } } - //Should we always do this or only for auto + // Should we always do this or only for auto if ([autoSizer respondsToSelector:@selector(verifyWidth:)]) { width = [autoSizer verifyWidth:width]; } @@ -145,9 +145,9 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS case TiDimensionTypeAutoFill: { height = TiDimensionCalculateMargins(constraint->top, constraint->bottom, referenceSize.height); BOOL autoFill = NO; - //Undefined falls to auto behavior + // Undefined falls to auto behavior if (TiDimensionIsUndefined(constraint->height) || TiDimensionIsAuto(constraint->height)) { - //Check if default auto behavior is fill + // Check if default auto behavior is fill if ([autoSizer respondsToSelector:@selector(defaultAutoHeightBehavior:)]) { if (TiDimensionIsAutoFill([autoSizer defaultAutoHeightBehavior:nil])) { autoFill = YES; @@ -160,7 +160,7 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS } break; } - //If it comes here it has to follow size behavior + // If it comes here it has to follow size behavior if ([autoSizer respondsToSelector:@selector(autoHeightForSize:)]) { CGFloat desiredHeight = [autoSizer autoHeightForSize:CGSizeMake(width, height)]; height = height < desiredHeight ? height : desiredHeight; @@ -171,7 +171,7 @@ CGSize SizeConstraintViewWithSizeAddingResizing(LayoutConstraint *constraint, NS } } - //Should we always do this or only for auto + // Should we always do this or only for auto if ([autoSizer respondsToSelector:@selector(verifyHeight:)]) { height = [autoSizer verifyHeight:height]; } @@ -194,7 +194,7 @@ CGPoint PositionConstraintGivenSizeBoundsAddingResizing(LayoutConstraint *constr BOOL clearMargins = NO; TiViewProxy *parent = [viewProxy parent]; if (parent != nil && (!TiLayoutRuleIsAbsolute([parent layoutProperties]->layoutStyle))) { - //Calculated Sandbox implies fixed margins + // Calculated Sandbox implies fixed margins clearMargins = YES; } @@ -217,7 +217,7 @@ CGPoint PositionConstraintGivenSizeBoundsAddingResizing(LayoutConstraint *constr } if (!ignoreMargins) { - //Either the view has flexible width or pins were not defined for positioning + // Either the view has flexible width or pins were not defined for positioning int marginSuggestions = 0; if (TiDimensionDidCalculateValue(constraint->left, referenceSize.width, &frameLeft)) { @@ -259,7 +259,7 @@ CGPoint PositionConstraintGivenSizeBoundsAddingResizing(LayoutConstraint *constr } if (!ignoreMargins) { - //Either the view has flexible height or pins were not defined for positioning + // Either the view has flexible height or pins were not defined for positioning int marginSuggestions = 0; if (TiDimensionDidCalculateValue(constraint->top, referenceSize.height, &frameTop)) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.h index bb1be18b63a..498d8c5fed6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.h @@ -16,7 +16,7 @@ extern const NSString *svgMimeType; /** Converts a file extension into a mime type. - + @param ext The extension to convert. @return The mime-type converted from the extension. */ @@ -24,7 +24,7 @@ extern const NSString *svgMimeType; /** Converts a mime type into a file extension. - + @param mimetype The mime type to convert. @return The file extension converted from the mime-type. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.m index 57fdeed30c7..c504ad74b98 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/Mimetypes.m @@ -16,8 +16,8 @@ @implementation Mimetypes + (void)initialize { - //This dictionary contains info on mimetypes surrently missing on IOS platform. - //This should be updated on a case by case basis. + // This dictionary contains info on mimetypes surrently missing on IOS platform. + // This should be updated on a case by case basis. if (mimeTypeFromExtensionDict == nil) { mimeTypeFromExtensionDict = [[NSDictionary alloc] initWithObjectsAndKeys: @"text/css", @"css", @@ -28,18 +28,18 @@ + (void)initialize + (NSString *)extensionForMimeType:(NSString *)mimetype { - //Get info from the system + // Get info from the system CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (CFStringRef)mimetype, NULL); CFStringRef extension = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension); - //Release the UTI - //CFRelease should not be used on a NULL object. + // Release the UTI + // CFRelease should not be used on a NULL object. if (uti != NULL) { CFRelease(uti); } if (extension == NULL) { - //Missing info is retrieved from dictionary + // Missing info is retrieved from dictionary [Mimetypes initialize]; for (NSString *key in mimeTypeFromExtensionDict) { NSString *value = [mimeTypeFromExtensionDict objectForKey:key]; @@ -55,18 +55,18 @@ + (NSString *)extensionForMimeType:(NSString *)mimetype + (NSString *)mimeTypeForExtension:(NSString *)ext { - //Get info from the system + // Get info from the system CFStringRef uti = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)[ext pathExtension], NULL); CFStringRef mimetype = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType); - //Release the UTI - //CFRelease should not be used on a NULL object. + // Release the UTI + // CFRelease should not be used on a NULL object. if (uti != NULL) { CFRelease(uti); } if (mimetype == NULL) { - //Missing info is retrieved from dictionary + // Missing info is retrieved from dictionary [Mimetypes initialize]; NSString *result = [mimeTypeFromExtensionDict objectForKey:[ext pathExtension]]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/NSData+Additions.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/NSData+Additions.m index 935854d2aaf..e349b822d1f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/NSData+Additions.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/NSData+Additions.m @@ -11,12 +11,12 @@ #pragma mark Hex /* HEX specific routines are copyright: - + Copyright (c) 2006, Big Nerd Ranch, Inc. All rights reserved. - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of Big Nerd Ranch, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. @@ -94,9 +94,9 @@ NSUInteger dataLength = [thedata length]; - //See the doc: For block ciphers, the output size will always be less than or - //equal to the input size plus the size of one block. - //That's why we need to add the size of one block here + // See the doc: For block ciphers, the output size will always be less than or + // equal to the input size plus the size of one block. + // That's why we need to add the size of one block here size_t bufferSize = dataLength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); if (buffer == NULL) { @@ -110,11 +110,11 @@ buffer, bufferSize, /* output */ &numBytesEncrypted); if (cryptStatus == kCCSuccess) { - //the returned NSData takes ownership of the buffer and will free it on deallocation + // the returned NSData takes ownership of the buffer and will free it on deallocation return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; } - free(buffer); //free the buffer; + free(buffer); // free the buffer; return nil; } #endif diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/ObjcProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/ObjcProxy.m index bc55666e986..815e839c0f1 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/ObjcProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/ObjcProxy.m @@ -297,7 +297,7 @@ - (void)_fireEventToListener:(NSString *)type withObject:(id)obj listener:(JSVal } } -//For subclasses to override +// For subclasses to override - (NSString *)apiName { DebugLog(@"[ERROR] Subclasses must override the apiName API endpoint."); diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.h index 37fb0b29cab..0e0bd5f96f5 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.h @@ -24,7 +24,7 @@ /** Queues an operation. - + Queues an operation that targets selector on target invoke after (if not nil) on when completed pass YES to ui to invoke after on UI main thread diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.m index a8526df4c55..a371b4ae2af 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/OperationQueue.m @@ -49,7 +49,7 @@ - (void)main NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @try { - //The nice thing about performSelector is that providing extra arguments is quite safe. + // The nice thing about performSelector is that providing extra arguments is quite safe. id result = [target performSelector:selector withObject:arg]; if (afterTarget != nil && after != nil) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.h index 9624798dc80..db6e78d1cd6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.h @@ -83,7 +83,7 @@ accepts and what it generates. (Other than the above mentioned support for JSON fragments.) For example, it does not support trailing commas in arrays or objects. Nor does it support embedded comments, or anything else not in the JSON specification. - + */ // In order to preserve our SBJSON modifications while allowing modules to use their own (and updated) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m index a8173b9d812..a665731e68b 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m @@ -1,20 +1,20 @@ /* Copyright (C) 2008 Stig Brautaset. All rights reserved. - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. - + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -182,7 +182,7 @@ - (id)init /** Returns a string containing JSON representation of the passed in value, or nil on error. If nil is returned and @p error is not NULL, @p *error can be interrogated to find the cause of the error. - + @param value any instance that can be represented as a JSON fragment @param allowScalar wether to return json fragments for scalar objects @param error used to return an error by reference (pass NULL if this is not desired) @@ -208,7 +208,7 @@ - (NSString *)stringWithObject:(id)value allowScalar:(BOOL)allowScalar error:(NS /** Returns a string containing JSON representation of the passed in value, or nil on error. If nil is returned and @p error is not NULL, @p error can be interrogated to find the cause of the error. - + @param value any instance that can be represented as a JSON fragment @param error used to return an error by reference (pass NULL if this is not desired) */ @@ -220,7 +220,7 @@ - (NSString *)stringWithFragment:(id)value error:(NSError **)error /** Returns a string containing JSON representation of the passed in value, or nil on error. If nil is returned and @p error is not NULL, @p error can be interrogated to find the cause of the error. - + @param value a NSDictionary or NSArray instance @param error used to return an error by reference (pass NULL if this is not desired) */ @@ -414,7 +414,7 @@ - (BOOL)appendString:(NSString *)fragment into:(NSMutableString *)json error:(NS /** Returns the object represented by the passed-in string or nil on error. The returned object can be a string, number, boolean, null, array or dictionary. - + @param repr the json string to parse @param allowScalar whether to return objects for JSON fragments @param error used to return an error by reference (pass NULL if this is not desired) @@ -460,7 +460,7 @@ - (id)objectWithString:(id)repr allowScalar:(BOOL)allowScalar error:(NSError **) /** Returns the object represented by the passed-in string or nil on error. The returned object can be a string, number, boolean, null, array or dictionary. - + @param repr the json string to parse @param error used to return an error by reference (pass NULL if this is not desired) */ @@ -472,7 +472,7 @@ - (id)fragmentWithString:(NSString *)repr error:(NSError **)error /** Returns the object represented by the passed-in string or nil on error. The returned object will be either a dictionary or an array. - + @param repr the json string to parse @param error used to return an error by reference (pass NULL if this is not desired) */ @@ -922,10 +922,10 @@ - (BOOL)scanHexQuad:(unichar *)x error:(NSError **)error int d = (uc >= '0' && uc <= '9') ? uc - '0' : (uc >= 'a' && uc <= 'f') - ? (uc - 'a' + 10) - : (uc >= 'A' && uc <= 'F') - ? (uc - 'A' + 10) - : -1; + ? (uc - 'a' + 10) + : (uc >= 'A' && uc <= 'F') + ? (uc - 'A' + 10) + : -1; if (d == -1) { if (error) *error = err(EUNICODE, @"Missing hex digit in quad"); diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h index f4cae31bf59..f2fd8f03269 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.h @@ -23,7 +23,7 @@ /** Whether or not the animation should transition. - + The method is only called if the animation is a transition animation type. @param animation The animation this delegate is assigned to. @return _YES_ if the animation should transition, _NO_ otherwise. @@ -57,7 +57,7 @@ @end /** - A type of proxy representing an animation to apply to a view. + A type of proxy representing an animation to apply to a view. */ @interface TiAnimation : TiProxy { @private diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m index 24762a2e9c6..bed7615a82f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiAnimation.m @@ -270,7 +270,7 @@ - (void)animationCompleted:(NSString *)animationID finished:(NSNumber *)finished if ([animation isReverse]) { animation = [animation reverseAnimation]; // Use the original animation for correct eventing - //Make sure we have the animatedViewProxy so we can correctly signal end of animation + // Make sure we have the animatedViewProxy so we can correctly signal end of animation if ([(id)animation.animatedView isKindOfClass:[TiUIView class]]) { RELEASE_TO_NIL(animatedViewProxy); TiUIView *v = (TiUIView *)animation.animatedView; @@ -495,7 +495,7 @@ - (void)animate:(id)args [(TiUIView *)view_ setTransform_:transform]; } - if ([view_ isKindOfClass:[TiUIView class]]) { //TODO: Shouldn't we be updating the proxy's properties to reflect this? + if ([view_ isKindOfClass:[TiUIView class]]) { // TODO: Shouldn't we be updating the proxy's properties to reflect this? TiUIView *uiview = (TiUIView *)view_; #ifndef TI_USE_AUTOLAYOUT LayoutConstraint *layoutProperties = [(TiViewProxy *)[uiview proxy] layoutProperties]; @@ -539,7 +539,7 @@ - (void)animate:(id)args BOOL hasBackgroundImage = (bgdLayer != nil); if (hasGradient && hasBackgroundImage) { - //Avoid duplicte animations on the same layer + // Avoid duplicte animations on the same layer hasBackgroundImage = gradientLayer != bgdLayer; } @@ -689,8 +689,8 @@ - (void)animate:(id)args // and then we need to add our new view for (UIView *subview in [transitionView subviews]) { if (subview != view_) { - //Making sure the view being transitioned off is properly removed - //from the view hierarchy. + // Making sure the view being transitioned off is properly removed + // from the view hierarchy. if ([subview isKindOfClass:[TiUIView class]]) { TiUIView *subView = (TiUIView *)subview; TiViewProxy *ourProxy = (TiViewProxy *)subView.proxy; @@ -702,9 +702,9 @@ - (void)animate:(id)args } [transitionView addSubview:view_]; - //AnimationStarted needs to be called here, otherwise the animation flags for - //the view being transitioned will end up in a improper state, resulting in - //layout warning. + // AnimationStarted needs to be called here, otherwise the animation flags for + // the view being transitioned will end up in a improper state, resulting in + // layout warning. [self animationStarted:[NSString stringWithFormat:@"%@", (void *)theview] context:self]; } @@ -713,7 +713,7 @@ - (void)animate:(id)args finished:[NSNumber numberWithBool:finished] context:self]; - //Adding the new view to the transition view's hierarchy. + // Adding the new view to the transition view's hierarchy. TiViewProxy *parentProxy = (TiViewProxy *)transitionView.proxy; TiViewProxy *child = (TiViewProxy *)view_.proxy; [parentProxy add:child]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index 909962df8c5..ab334fa9f7c 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -84,7 +84,7 @@ /** Returns application's primary window. - + Convenience method to access the application's primary window */ @property (nonatomic, retain) IBOutlet UIWindow *window; @@ -101,21 +101,21 @@ /** Returns details for the last remote notification. - + Dictionary containing details about remote notification, or _nil_. */ @property (nonatomic, readonly) NSDictionary *remoteNotification; /** Returns local notification that has bees sent on the application. - + @return Dictionary containing details about local notification, or _nil_. */ @property (nonatomic, readonly) NSDictionary *localNotification; /** Returns details for the last remote notification. - + Dictionary containing details about remote notification, or _nil_. */ @property (nonatomic, readonly) UISceneConnectionOptions *connectionOptions; @@ -164,14 +164,14 @@ /** Returns the queued boot events scheduled with `tryToPostNotification:withNotificationName:completionHandler:``. - + @return The dictionary of queued boot events. */ - (NSMutableDictionary *)queuedBootEvents; /** Returns application launch options - + The method provides access to application launch options that became available when application just launched. @return The launch options dictionary. */ @@ -179,14 +179,14 @@ /** Returns remote UUID for the current running device. - + @return Current device UUID. */ - (NSString *)remoteDeviceUUID; /** Tells application to show network activity indicator. - + Every call of startNetwork should be paired with . @see stopNetwork */ @@ -194,7 +194,7 @@ /** Tells application to hide network activity indicator. - + Every call of stopNetwork should have corresponding call. @see startNetwork */ @@ -202,14 +202,14 @@ /** Generates a native notification from the given dictionary. - + @param dict The dictionary to use to generate the native notification. */ - (void)generateNotification:(NSDictionary *)dict; /** Tells application to display modal error. - + @param message The message to show in the modal error screen. */ - (void)showModalError:(NSString *)message; @@ -221,7 +221,7 @@ /** Tells application to display modal view controller. - + @param controller The view controller to display. @param animated If _YES_, animates the view controller as it’s presented; otherwise, does not. */ @@ -229,7 +229,7 @@ /** Tells application to hide modal view controller. - + @param controller The view controller to hide. @param animated If _YES_, animates the view controller as it’s hidden; otherwise, does not. */ @@ -237,7 +237,7 @@ /** Returns unique identifier for the current application launch. - + @return Current session id. */ - (NSString *)sessionId; @@ -270,7 +270,7 @@ /** Tries to invoke a given selector with the given arguments. If the app did not finish launching so far, it will be queued and processed once the JSCore bridge is ready. - + @param selector The selector to invoke. @param arguments The arguments to pass to the selector. */ @@ -279,7 +279,7 @@ /** Tries to post a given notification with the given name. If the app did not finish launching so far, it will be queued and processed once the JSCore bridge is ready. - + @param _notification The dictionary of user-info to pass to the notification. @param _notificationName The name of the notification to schedule. @param completionHandler The optional completion handler to invoke if requried. @@ -289,7 +289,7 @@ /** Tries to post a given background-mode notification with the given name. If the app did not finish launching so far, it will be queued and processed once the JSCore bridge is ready. - + @param userInfo The dictionary of user-info to pass to the notification. @param notificationName The name of the notification to schedule. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index e1f0efd6090..ee2d5c8cb65 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -372,7 +372,7 @@ - (void)application:(UIApplication *)application performFetchWithCompletionHandl [self tryToInvokeSelector:@selector(application:performFetchWithCompletionHandler:) withArguments:[NSOrderedSet orderedSetWithObjects:application, [completionHandler copy], nil]]; - //Only for simulator builds + // Only for simulator builds NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; if ([backgroundModes containsObject:@"fetch"]) { @@ -461,7 +461,7 @@ - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNoti [self application:[UIApplication sharedApplication] handleActionWithIdentifier:response.actionIdentifier forRemoteNotification:response.notification.request.content.userInfo withResponseInfo:responseInfo completionHandler:completionHandler]; } } else { - //NOTE Local notifications should be handled similar to BG above which ultimately calls handleRemoteNotificationWithIdentifier as this will allow BG Actions to execute. + // NOTE Local notifications should be handled similar to BG above which ultimately calls handleRemoteNotificationWithIdentifier as this will allow BG Actions to execute. RELEASE_TO_NIL(localNotification); localNotification = [[[self class] dictionaryWithUserNotification:response.notification withIdentifier:response.actionIdentifier] retain]; @@ -672,7 +672,7 @@ - (void)performCompletionHandlerWithKey:(NSString *)key andResult:(UIBackgroundF } } -//Called to mark the end of background transfer while in the background. +// Called to mark the end of background transfer while in the background. - (void)performCompletionHandlerForBackgroundTransferWithKey:(NSString *)key { if ([backgroundTransferCompletionHandlers objectForKey:key] != nil) { @@ -723,7 +723,7 @@ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(N #pragma mark Background Transfer Service -//Delegate callback for Background Transfer completes. +// Delegate callback for Background Transfer completes. - (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler { // Generate unique key with timestamp. @@ -746,7 +746,7 @@ - (void)application:(UIApplication *)application handleEventsForBackgroundURLSes #pragma mark Background Transfer Service Delegates. -//TODO: Move these delegates to the module post 3.2.0 +// TODO: Move these delegates to the module post 3.2.0 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { @@ -814,7 +814,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data if (!uploadTaskResponses) { uploadTaskResponses = [[NSMutableDictionary alloc] init]; } - //This dictionary will mutate if delegate is called + // This dictionary will mutate if delegate is called NSMutableDictionary *responseObj = [uploadTaskResponses objectForKey:@(dataTask.taskIdentifier)]; if (!responseObj) { NSMutableData *responseData = [NSMutableData dataWithData:data]; @@ -888,7 +888,7 @@ - (void)applicationWillTerminate:(UIApplication *)application NSNotificationCenter *theNotificationCenter = [NSNotificationCenter defaultCenter]; _willTerminate = YES; - //This will send out the 'close' message. + // This will send out the 'close' message. [theNotificationCenter postNotificationName:kTiWillShutdownNotification object:self]; NSCondition *condition = [[NSCondition alloc] init]; @@ -899,7 +899,7 @@ - (void)applicationWillTerminate:(UIApplication *)application [[TiLogServer defaultLogServer] stop]; } - //This will shut down the modules. + // This will shut down the modules. [theNotificationCenter postNotificationName:kTiShutdownNotification object:self]; RELEASE_TO_NIL(condition); RELEASE_TO_NIL(kjsBridge); @@ -991,7 +991,7 @@ - (void)sceneWillEnterForeground:(UIScene *)scene [sessionId release]; sessionId = [[TiUtils createUUID] retain]; - //TIMOB-3432. Ensure url is cleared when resume event is fired. + // TIMOB-3432. Ensure url is cleared when resume event is fired. [launchOptions removeObjectForKey:@"url"]; [launchOptions removeObjectForKey:@"source"]; @@ -1004,7 +1004,7 @@ - (void)sceneWillEnterForeground:(UIScene *)scene [self endBackgrounding]; } -//TODO: this should be compiled out in production mode +// TODO: this should be compiled out in production mode - (void)showModalError:(NSString *)message { NSLog(@"[ERROR] Application received error: %@", message); @@ -1354,7 +1354,7 @@ - (void)registerBackgroundService:(TiProxy *)proxy backgroundServices = [[NSMutableArray alloc] initWithCapacity:1]; } - //Only add if it isn't already added + // Only add if it isn't already added if (![backgroundServices containsObject:proxy]) { [backgroundServices addObject:proxy]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBase.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBase.h index b1b42fc54e3..3ae6ba65370 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBase.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBase.h @@ -147,10 +147,10 @@ NSString *JavascriptNameForClass(Class c); #define ENSURE_TYPE(x, t) ENSURE_CLASS(x, [t class]) -//NOTE: these checks can be pulled out of production build type +// NOTE: these checks can be pulled out of production build type -//Question: Given that some of these silently massage the data during development but not production, -//Should the data massage either be kept in production or removed in development? --Blain. +// Question: Given that some of these silently massage the data during development but not production, +// Should the data massage either be kept in production or removed in development? --Blain. #define ENSURE_STRING_OR_NIL(x) \ if ([x respondsToSelector:@selector(stringValue)]) { \ @@ -248,7 +248,7 @@ NSString *JavascriptNameForClass(Class c); } \ } -//Because both NSString and NSNumber respond to intValue, etc, this is a wider net +// Because both NSString and NSNumber respond to intValue, etc, this is a wider net #define ENSURE_METHOD(x, t) \ if (![x respondsToSelector:@selector(t)]) { \ [self throwException:TiExceptionInvalidType subreason:[NSString stringWithFormat:@"%@ doesn't respond to method: %@", OBJTYPE2JS(x), @ #t] location:CODELOCATION]; \ @@ -421,7 +421,7 @@ void TiExceptionThrowWithNameAndReason(NSString *exceptionName, NSString *reason #define NUMUINTEGER(x) \ [NSNumber numberWithUnsignedInteger:x] -//MUST BE NEGATIVE, as it inhabits the same space as UIBarButtonSystemItem +// MUST BE NEGATIVE, as it inhabits the same space as UIBarButtonSystemItem enum { UITitaniumNativeItemNone = -1, UITitaniumNativeItemSpinner = -2, @@ -501,7 +501,7 @@ enum { #define TI_VERSION_STR STRING(TI_VERSION) -//#define VERBOSE +// #define VERBOSE #ifdef VERBOSE #define VerboseLog(...) \ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingEvent.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingEvent.m index 9369f0b2205..475b3ea717f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingEvent.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingEvent.m @@ -17,46 +17,46 @@ extern JSStringRef kTiStringLength; /** Event lifecycle, a documentation. - + The event structures are designed to be threadsafe, yet don't have a lock. How is this so? The trick is the lifecycle and atomic transactions on pendingEvents: - + Creation: - Immutable variables can be set, only one thread has access. - Can call FireEvent. + Immutable variables can be set, only one thread has access. + Can call FireEvent. FireEvent: - While searching for new targetProxy, only one thread has access. - pendingEvents is set to the number of threads that will be accessing it. - Once targetProxy found, the event becomes fully immutable again, and event - is sent to multiple run loops. + While searching for new targetProxy, only one thread has access. + pendingEvents is set to the number of threads that will be accessing it. + Once targetProxy found, the event becomes fully immutable again, and event + is sent to multiple run loops. EventProcess: - Event is immutable during processing - cancelBubble is mutable, but blindly set during processing, thus no race - Once done processing, the pendingEvents is atomically decrimented. - Once pendingEvents reaches 0, we are certain that no other threads are using - this event. During this time, the event is again mutable for purposes of - propagation- caching and then fireEvent. - This also means that while processing, the event will NOT be deallocated - under us. + Event is immutable during processing + cancelBubble is mutable, but blindly set during processing, thus no race + Once done processing, the pendingEvents is atomically decrimented. + Once pendingEvents reaches 0, we are certain that no other threads are using + this event. During this time, the event is again mutable for purposes of + propagation- caching and then fireEvent. + This also means that while processing, the event will NOT be deallocated + under us. */ struct TiBindingEventOpaque { - //Abstraction values and tread safety. - int pendingEvents; //Mutable, acts as lock of sorts due to atomic decrement - bool bubbles; //Immutable - bool cancelBubble; //Mutable, set to true - bool reportError; //Immutable - NSInteger errorCode; //Immutable - //Objective C version - TiProxy *targetProxy; //Immutable in-event, mutable for bubbling. - TiProxy *sourceProxy; //Immutable - NSString *eventString; //Immutable - NSDictionary *payloadDictionary; //Immutable - NSString *errorMessageString; //Immutable - //Immutable caching. - JSStringRef eventStringRef; //Immutable - JSStringRef errorMessageStringRef; //Immutable - //Mutable caching in future. + // Abstraction values and tread safety. + int pendingEvents; // Mutable, acts as lock of sorts due to atomic decrement + bool bubbles; // Immutable + bool cancelBubble; // Mutable, set to true + bool reportError; // Immutable + NSInteger errorCode; // Immutable + // Objective C version + TiProxy *targetProxy; // Immutable in-event, mutable for bubbling. + TiProxy *sourceProxy; // Immutable + NSString *eventString; // Immutable + NSDictionary *payloadDictionary; // Immutable + NSString *errorMessageString; // Immutable + // Immutable caching. + JSStringRef eventStringRef; // Immutable + JSStringRef errorMessageStringRef; // Immutable + // Mutable caching in future. JSContextRef contextRef; JSObjectRef eventObjectRef; }; @@ -117,7 +117,7 @@ void TiBindingEventSetBubbles(TiBindingEvent event, bool bubbles) parentOnly = false; currentTarget = [currentTarget parentForBubbling]; - //TIMOB-11691. Ensure that tableviewrowproxy modifies the event object before passing it along. + // TIMOB-11691. Ensure that tableviewrowproxy modifies the event object before passing it along. if ([currentTarget respondsToSelector:@selector(createEventObject:)]) { NSDictionary *curPayload = event->payloadDictionary; NSDictionary *modifiedPayload = [currentTarget performSelector:@selector(createEventObject:) withObject:curPayload]; @@ -158,7 +158,7 @@ void TiBindingEventFire(TiBindingEvent event) pthread_once(&jsBindingRunOnce, TiBindingInitialize); TiProxy *targetProxy = TiBindingEventNextBubbleTargetProxy(event, event->targetProxy, false); - if (targetProxy == nil) { //Nobody to target, we're done here. + if (targetProxy == nil) { // Nobody to target, we're done here. TiBindingEventDispose(event); return; } @@ -170,17 +170,17 @@ void TiBindingEventFire(TiBindingEvent event) event->targetProxy = [targetProxy retain]; } event->pendingEvents = runloopcount; - if (runloopcount == 1) { //Main case: One run loop. + if (runloopcount == 1) { // Main case: One run loop. TiBindingRunLoop ourRunLoop = [targetProxy primaryBindingRunLoop]; if (ourRunLoop != nil) { // It's possible that the one remaining runloop - //Was not the primaryBindingRunLoop. In which case, we flow to the - //multiple run loops as an edge case. + // Was not the primaryBindingRunLoop. In which case, we flow to the + // multiple run loops as an edge case. TiBindingRunLoopEnqueue(ourRunLoop, TiBindingEventProcess, event); return; } } - if (runloopcount > 0) { //Edge case: Multiple run loops. + if (runloopcount > 0) { // Edge case: Multiple run loops. NSArray *runLoopArray = [targetProxy bindingRunLoopArray]; for (TiBindingRunLoop thisRunLoop in runLoopArray) { TiBindingRunLoopEnqueue(thisRunLoop, TiBindingEventProcess, event); @@ -188,7 +188,7 @@ void TiBindingEventFire(TiBindingEvent event) return; } - //Extreme edge case. Proxy thinks it still has listeners, but no run loops?! + // Extreme edge case. Proxy thinks it still has listeners, but no run loops?! TiProxy *newTarget = TiBindingEventNextBubbleTargetProxy(event, targetProxy, YES); if (event->targetProxy != newTarget) { [event->targetProxy release]; @@ -216,7 +216,7 @@ void TiBindingEventProcess(TiBindingRunLoop runloop, void *payload) } if (callbackCount > 0) { - //Convert to JSObjectRefs + // Convert to JSObjectRefs if (eventObjectRef == NULL) { eventObjectRef = TiBindingTiValueFromNSDictionary(context, event->payloadDictionary); } @@ -236,7 +236,7 @@ void TiBindingEventProcess(TiBindingRunLoop runloop, void *payload) JSObjectSetProperty(context, eventObjectRef, jsEventTypeStringRef, eventStringRef, kJSPropertyAttributeReadOnly, NULL); JSObjectSetProperty(context, eventObjectRef, jsEventSourceStringRef, eventSourceRef, kJSPropertyAttributeReadOnly, NULL); - //Error reporting + // Error reporting if (event->reportError) { JSValueRef successValue = JSValueMakeBoolean(context, (event->errorCode == 0)); JSValueRef codeValue = JSValueMakeNumber(context, (double)event->errorCode); @@ -269,25 +269,25 @@ void TiBindingEventProcess(TiBindingRunLoop runloop, void *payload) // Note cancel bubble cancelBubbleValue = JSObjectGetProperty(context, eventObjectRef, jsEventCancelBubbleStringRef, NULL); if (JSValueToBoolean(context, cancelBubbleValue)) { - event->cancelBubble = true; //Because we only set true, not read nor set false, there's no race condition? + event->cancelBubble = true; // Because we only set true, not read nor set false, there's no race condition? } } } int pendingEvents = OSAtomicDecrement32Barrier(&event->pendingEvents); if (pendingEvents > 0) { - //Only the last event process gets to do propagation. + // Only the last event process gets to do propagation. return; } - //Last one processing the event for this proxy, pass it on to the parent. + // Last one processing the event for this proxy, pass it on to the parent. TiProxy *newTarget = TiBindingEventNextBubbleTargetProxy(event, event->targetProxy, YES); if (event->targetProxy != newTarget) { [event->targetProxy release]; event->targetProxy = [newTarget retain]; } TiBindingEventFire(event); - //See who gets it next. + // See who gets it next. } void TiBindingEventDispose(TiBindingEvent event) @@ -307,7 +307,7 @@ void TiBindingEventDispose(TiBindingEvent event) JSValueUnprotect(event->contextRef, event->eventObjectRef); } if (event->contextRef != NULL) { - //TODO: Do we protect and release the context ref? + // TODO: Do we protect and release the context ref? } free(event); } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingTiValue.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingTiValue.m index bdf8a252ef6..9e81ee02780 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingTiValue.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBindingTiValue.m @@ -158,7 +158,7 @@ for (uint c = 0; c < len; ++c) { JSValueRef valueRef = JSObjectGetPropertyAtIndex(jsContext, obj, c, NULL); id value = TiBindingTiValueToNSObject(jsContext, valueRef); - //TODO: This is a temprorary workaround for the time being. We have to properly take care of [undefined] objects. + // TODO: This is a temprorary workaround for the time being. We have to properly take care of [undefined] objects. if (value == nil) { [resultArray addObject:[NSNull null]]; } else { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.h index e1fe096094c..aff3c0e057a 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.h @@ -44,13 +44,13 @@ READONLY_PROPERTY(NSString *, mimeType, MimeType); READONLY_PROPERTY(NSString *, nativePath, NativePath); /** Return the data size. - + For file, data returns the size in bytes, for image, returns the width x height. */ READONLY_PROPERTY(NSUInteger, size, Size); /** Return a textual representation of the blob. - + The method converts data into a textual representation. Appropriate only for types TiBlobTypeFile and TiBlobTypeData. */ READONLY_PROPERTY(NSString *, text, Text); diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.m index 6dd3d00ae73..cd3370bcf8a 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBlob.m @@ -11,7 +11,7 @@ #import "UIImage+Alpha.h" #import "UIImage+Resize.h" #import "UIImage+RoundedCorner.h" -//NOTE:FilesystemFile is conditionally compiled based on the filesystem module. +// NOTE:FilesystemFile is conditionally compiled based on the filesystem module. #import "KrollPromise.h" #import "TiFilesystemFileProxy.h" diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.h index e5ba604c1cb..6451dc4fcaa 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.h @@ -27,9 +27,9 @@ - (NSNumber *)append:(id)args; - (NSNumber *)insert:(id)args; -//This API is meant for the Javascript, and because of ARC conflating this with -//copy from NSObject(UIResponderStandardEditActions), we can't declare it here. -//Note that this does not affect calling from JS. +// This API is meant for the Javascript, and because of ARC conflating this with +// copy from NSObject(UIResponderStandardEditActions), we can't declare it here. +// Note that this does not affect calling from JS. #if !__has_feature(objc_arc) - (NSNumber *)copy:(id)args; #endif diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.m index 60662f20bc5..ea9a09f2cb7 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiBuffer.m @@ -187,7 +187,7 @@ - (NSNumber *)copy:(id)args const void *source = [[sourceBuffer data] bytes]; NSRange replacement = NSMakeRange(offset, sourceLength); [data replaceBytesInRange:replacement withBytes:(source + sourceOffset)]; -//ignore leak, Xcode getting confused over the function name +// ignore leak, Xcode getting confused over the function name #ifndef __clang_analyzer__ return NUMUINTEGER(replacement.length); #else @@ -278,7 +278,7 @@ - (void)release:(id)_void - (TiBlob *)toBlob:(id)_void { - //TODO: Static analysis finds we're leaking the [data copy]. We should have an autorelease here, but for later. + // TODO: Static analysis finds we're leaking the [data copy]. We should have an autorelease here, but for later. return [[[TiBlob alloc] initWithData:[[data copy] autorelease] mimetype:@"application/octet-stream"] autorelease]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiColor.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiColor.m index 1981452d5cd..08315deea18 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiColor.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiColor.m @@ -9,7 +9,7 @@ #import "TiBase.h" #import "TiUtils.h" #import "Webcolor.h" -//TODO: Move all of Webcolor into TiColor. +// TODO: Move all of Webcolor into TiColor. @implementation TiColor @@ -20,7 +20,7 @@ + (id)colorNamed:(NSString *)name TiColor *result; UIColor *translatedColor = nil; - if ([name caseInsensitiveCompare:@"default"] != NSOrderedSame) { //Default is allowed nil, while still counting as a color to stop inheritance. + if ([name caseInsensitiveCompare:@"default"] != NSOrderedSame) { // Default is allowed nil, while still counting as a color to stop inheritance. translatedColor = [Webcolor webColorNamed:name]; if (translatedColor == nil) { return nil; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h index 4a99f804c31..9661d1631f9 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h @@ -69,7 +69,7 @@ @required - (BOOL)canHostWindows; - (UIView *)hostingView; -//Called by light weight windows from their windowWillOpen, windowWillClose, windowDidOpen, windowDidClose methods +// Called by light weight windows from their windowWillOpen, windowWillClose, windowDidOpen, windowDidClose methods - (void)willOpenWindow:(id)theWindow; - (void)willCloseWindow:(id)theWindow; - (void)didOpenWindow:(id)theWindow; @@ -87,18 +87,18 @@ @required -//Background Control +// Background Control - (void)setBackgroundImage:(UIImage *)arg; - (void)setBackgroundColor:(UIColor *)arg; - (void)dismissDefaultImage; -//Keyboard stuff +// Keyboard stuff - (BOOL)keyboardVisible; - (void)dismissKeyboard; - (void)didKeyboardFocusOnProxy:(TiViewProxy *)visibleProxy; - (void)didKeyboardBlurOnProxy:(TiViewProxy *)blurredProxy; -//ViewController stuff +// ViewController stuff - (TiOrientationFlags)getDefaultOrientations; - (UIViewController *)topPresentedController; - (UIViewController *)topContainerController; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiDimension.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiDimension.h index fe425d1de35..d1127a5a0de 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiDimension.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiDimension.h @@ -16,7 +16,7 @@ #define INCH_IN_CM 2.54 #define INCH_IN_MM 25.4 -//Not a class for speed reasons, like LayoutConstraint. +// Not a class for speed reasons, like LayoutConstraint. typedef enum { TiDimensionTypeUndefined, @@ -33,8 +33,8 @@ typedef enum { struct TiDimension { TiDimensionType type; CGFloat value; - //If type is TiDimensionTypeDip, value is a Dip constant, - //If type is TiDimensionTypePercent, value ranges from 0 (0%) to 1.0 (100%) + // If type is TiDimensionTypeDip, value is a Dip constant, + // If type is TiDimensionTypePercent, value ranges from 0 (0%) to 1.0 (100%) }; typedef struct TiDimension TiDimension; @@ -144,7 +144,7 @@ TI_INLINE CGFloat TiDimensionCalculateMargins(TiDimension dimension1, TiDimensio return boundingValue - (TiDimensionCalculateValue(dimension1, boundingValue) + TiDimensionCalculateValue(dimension2, boundingValue)); } -//TODO: Do these ALL have to be TI_INLINE? +// TODO: Do these ALL have to be TI_INLINE? TI_INLINE CGRect TiDimensionLayerContentCenter(TiDimension top, TiDimension left, TiDimension bottom, TiDimension right, CGSize imageSize) { CGRect result; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiErrorController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiErrorController.m index 246a8901e7d..ec513cf23bd 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiErrorController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiErrorController.m @@ -3,7 +3,7 @@ * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. * Licensed under the terms of the Apache Public License * Please see the LICENSE included with this distribution for details. - * + * * WARNING: This is generated code. Modify at your own risk and without support. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiEvaluator.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiEvaluator.h index 98ae856f6d0..48d29724ba3 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiEvaluator.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiEvaluator.h @@ -32,16 +32,16 @@ - (KrollContext *)krollContext; -//Creates a kroll object to be used with the proxy. +// Creates a kroll object to be used with the proxy. - (id)registerProxy:(id)proxy; -//Removes the kroll object and the proxy. +// Removes the kroll object and the proxy. - (void)unregisterProxy:(id)proxy; -//Returns YES if and only iff the proxy has been registered. +// Returns YES if and only iff the proxy has been registered. - (BOOL)usesProxy:(id)proxy; -//Returns the kroll object created iff the proxy has been registered. Otherwise, returns nil. +// Returns the kroll object created iff the proxy has been registered. Otherwise, returns nil. - (id)krollObjectForProxy:(id)proxy; @end diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiExceptionHandler.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiExceptionHandler.h index 98c31851c65..0267e27f8e6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiExceptionHandler.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiExceptionHandler.h @@ -82,7 +82,7 @@ #pragma mark - TiExceptionHandlerDelegate /** - * Exception handler delegate protocol. + * Exception handler delegate protocol. */ @protocol TiExceptionHandlerDelegate diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiFile.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiFile.m index f85f1e84e5e..fc49a5225a3 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiFile.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiFile.m @@ -80,7 +80,7 @@ + (TiFile *)createTempFile:(NSString *)extension if (![fm fileExistsAtPath:tempDir]) { [fm createDirectoryAtPath:tempDir withIntermediateDirectories:YES attributes:nil error:&error]; if (error != nil) { - //TODO: ? + // TODO: ? return nil; } } @@ -96,7 +96,7 @@ + (TiFile *)createTempFile:(NSString *)extension [[NSData data] writeToFile:resultPath options:NSDataWritingFileProtectionComplete | NSDataWritingAtomic error:&error]; if (error != nil) { - //TODO: ? + // TODO: ? return nil; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.h index 3a3aa741306..9bd92428a3d 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.h @@ -32,7 +32,7 @@ typedef enum { CGGradientRef cachedGradient; CFMutableArrayRef colorValues; - CGFloat *colorOffsets; //A -1 indicates a lack of entry. + CGFloat *colorOffsets; // A -1 indicates a lack of entry. NSUInteger arraySize; int offsetsDefined; @private diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.m index ba7709122f9..3d3150ca7fc 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiGradient.m @@ -52,7 +52,7 @@ - (CGGradientRef)cachedGradient } else { tempOffsets = NULL; } - //TODO: Between these extremes, we should do intelligent gradient computation. + // TODO: Between these extremes, we should do intelligent gradient computation. cachedGradient = CGGradientCreateWithColors(rgb, colorValues, tempOffsets); @@ -189,7 +189,7 @@ - (void)setColors:(NSArray *)newColors; } CGColorSpaceRef colorspace = CGColorGetColorSpace([thisColor CGColor]); - if (CGColorSpaceGetModel(colorspace) == kCGColorSpaceModelMonochrome) //Colorize this! Where's Ted Turner? + if (CGColorSpaceGetModel(colorspace) == kCGColorSpaceModelMonochrome) // Colorize this! Where's Ted Turner? { const CGFloat *components = CGColorGetComponents([thisColor CGColor]); thisColor = [UIColor colorWithRed:components[0] diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiHost.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiHost.m index 35ebee24828..02dbaf7b940 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiHost.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiHost.m @@ -46,7 +46,7 @@ + (NSString *)resourceRelativePath:(NSURL *)url + (NSURL *)resolveFilePathForAppUrl:(NSURL *)appUrl { - if (![[appUrl scheme] isEqualToString:@"app"]) { //Whoops! We don't need to translate! + if (![[appUrl scheme] isEqualToString:@"app"]) { // Whoops! We don't need to translate! return appUrl; } @@ -135,7 +135,7 @@ - (void)unregisterContext:(id)context forToken:(NSString *)token - (KrollBridge *)krollBridge { - //For subclasses + // For subclasses return nil; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLayoutQueue.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLayoutQueue.m index 5a1a1b95200..fd000af3064 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLayoutQueue.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLayoutQueue.m @@ -30,7 +30,7 @@ void performLayoutRefresh(CFRunLoopTimerRef timer, void *info) layoutArray = nil; if ((layoutTimer != NULL) && ([localLayoutArray count] == 0)) { - //Might as well stop the timer for now. + // Might as well stop the timer for now. CFRunLoopTimerInvalidate(layoutTimer); CFRelease(layoutTimer); layoutTimer = NULL; @@ -82,13 +82,13 @@ + (void)addViewProxy:(TiViewProxy *)newViewProxy if (layoutArray == nil) { layoutArray = [[NSMutableArray alloc] initWithObjects:newViewProxy, nil]; - } else if ([layoutArray containsObject:newViewProxy]) { //Nothing to do here. Already added. + } else if ([layoutArray containsObject:newViewProxy]) { // Nothing to do here. Already added. pthread_mutex_unlock(&layoutMutex); return; - } else if ([layoutArray containsObject:[newViewProxy parent]]) { //For safety reasons, we do add this to the list. But since the parent's already here, - //We add it to the FIRST so that children draw before parents, giving us good layout values for later! + } else if ([layoutArray containsObject:[newViewProxy parent]]) { // For safety reasons, we do add this to the list. But since the parent's already here, + // We add it to the FIRST so that children draw before parents, giving us good layout values for later! [layoutArray insertObject:newViewProxy atIndex:0]; - } else { //We might be someone's parent... but that means that children should draw FIRST. + } else { // We might be someone's parent... but that means that children should draw FIRST. // This is because in many cases, parent size is determined by child size (e.g. auto, vert. layout, etc.) [layoutArray addObject:newViewProxy]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLocale.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLocale.h index 69a9d43b668..b8d2f645027 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLocale.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiLocale.h @@ -23,7 +23,7 @@ /** Returns the bundle associated with the locale. - + Read-only property. */ @property (nonatomic, readwrite, retain) NSBundle *bundle; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiModule.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiModule.m index 471b2575dd5..f868ee3f0f6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiModule.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiModule.m @@ -52,7 +52,7 @@ - (void)contextShutdown:(id)sender pageContext = nil; pageKrollObject = nil; } - //DO NOT run super shutdown here, as we want to change the behavior that TiProxy does. + // DO NOT run super shutdown here, as we want to change the behavior that TiProxy does. } - (void)setPageContext:(id)evaluator @@ -99,7 +99,7 @@ - (void)errored:(id)sender - (void)registerForNotifications { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(shutdown:) name:kTiShutdownNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(suspend:) name:kTiSuspendNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(paused:) name:kTiPausedNotification object:nil]; @@ -112,7 +112,7 @@ - (void)startup { if (classNameLookup == NULL) { classNameLookup = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, &kCFTypeDictionaryKeyCallBacks, NULL); - //We do not retain the Class, but simply assign them. + // We do not retain the Class, but simply assign them. } TiThreadPerformOnMainThread( ^{ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.h index d19e9b70d2d..15e6acfc2d8 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.h @@ -91,7 +91,7 @@ SEL SetterWithObjectForKrollProperty(NSString *key); void DoProxyDelegateChangedValuesWithProxy(UIView *target, NSString *key, id oldValue, id newValue, TiProxy *proxy); void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, id keys, TiProxy *proxy); -//Why are these here? Because they can be commonly used between TiUIView and TiUITableViewCell. +// Why are these here? Because they can be commonly used between TiUIView and TiUITableViewCell. /** The base class for Titanium proxies. @@ -206,7 +206,7 @@ void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, Return nil if the class does not bubble or there is no parent. Optionally return nil if bubbleParent is false -- i.e., bubbleParent must be checked as well. - + Override this method for views that do not follow the standard children/parent model (e.g., table rows). Note that this is NOT for use by JS, because this is intentionally an iOS-only solution. @@ -216,7 +216,7 @@ void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, /** Returns an array of properties that must be set on the proxy object in a specific order, ordered from first to last. Any properties which are not in this list are set after the listed properties, and are set in undefined order. - + Override this method if the order in which properties are set is significant. @return The array of property keys. */ @@ -236,13 +236,13 @@ void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, - (BOOL)retainsJsObjectForKey:(NSString *)key; -//TODO: Find everywhere were we retain a proxy in a non-assignment way, and do remember/forget properly. +// TODO: Find everywhere were we retain a proxy in a non-assignment way, and do remember/forget properly. /** Tells the proxy to associate another proxy with it. - + The associated proxy will be retained. - Note: rememberProxy/forgetProxy are not reference counted - multiple calls to are all undone by a single call to + Note: rememberProxy/forgetProxy are not reference counted - multiple calls to are all undone by a single call to @param rememberedProxy The proxy to remember. @see forgetProxy: */ @@ -250,15 +250,15 @@ void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, /** Tells the proxy to disassociate another proxy from it. - + The deassociated proxy will be released. - Note: rememberProxy/forgetProxy are not reference counted - multiple calls to are all undone by a single call to + Note: rememberProxy/forgetProxy are not reference counted - multiple calls to are all undone by a single call to @param forgottenProxy The proxy to forget. @see rememberProxy: */ - (void)forgetProxy:(TiProxy *)forgottenProxy; -//These are when, say, a window is opened, so you want to do JSValueProtect to make SURE it doesn't go away. +// These are when, say, a window is opened, so you want to do JSValueProtect to make SURE it doesn't go away. /** Tells the proxy to retain associated JS object. @@ -270,7 +270,7 @@ void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, */ - (void)forgetSelf; -//SetCallback is done internally by setValue:forUndefinedKey: +// SetCallback is done internally by setValue:forUndefinedKey: - (void)fireCallback:(NSString *)type withArg:(NSDictionary *)argDict withSource:(id)source; - (void)fireCallback:(NSString *)type withArg:(NSDictionary *)argDict withSource:(id)source withHandler:(void (^)(id result))handler; @@ -290,16 +290,16 @@ void DoProxyDelegateReadValuesWithKeysFromProxy(UIView *target, - (void)fireEvent:(id)args; - (void)fireEvent:(NSString *)type withObject:(id)obj; -//For UI events: +// For UI events: - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)yn; -//For events that report an error or success +// For events that report an error or success - (void)fireEvent:(NSString *)type withObject:(id)obj errorCode:(NSInteger)code message:(NSString *)message; -//What classes should actually override: +// What classes should actually override: - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(NSInteger)code message:(NSString *)message; -//Temporary override point during the transition. Both the one below AND the one above should be overridden if needed. +// Temporary override point during the transition. Both the one below AND the one above should be overridden if needed. - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(int)code message:(NSString *)message; //** Deprecated: bubbling is done at a lower point so source is always 'self' at this point. diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m index 276e1c4d0c3..ebbb9cddac4 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m @@ -20,17 +20,17 @@ #include -//Common exceptions to throw when the function call was improper +// Common exceptions to throw when the function call was improper NSString *const TiExceptionInvalidType = @"Invalid type passed to function"; NSString *const TiExceptionNotEnoughArguments = @"Invalid number of arguments to function"; NSString *const TiExceptionRangeError = @"Value passed to function exceeds allowed range"; NSString *const TiExceptionOSError = @"The iOS reported an error"; -//Should be rare, but also useful if arguments are used improperly. +// Should be rare, but also useful if arguments are used improperly. NSString *const TiExceptionInternalInconsistency = @"Value was not the value expected"; -//Rare exceptions to indicate a bug in the titanium code (Eg, method that a subclass should have implemented) +// Rare exceptions to indicate a bug in the titanium code (Eg, method that a subclass should have implemented) NSString *const TiExceptionUnimplementedFunction = @"Subclass did not implement required method"; NSString *const TiExceptionMemoryFailure = @"Memory allocation failed"; @@ -235,7 +235,7 @@ - (id)_initWithPageContext:(id)context { if (self = [self init]) { pageContext = (id)context; // do not retain - executionContext = context; //To ensure there is an execution context during _configure. + executionContext = context; // To ensure there is an execution context during _configure. if ([[self class] shouldRegisterOnInit]) // && ![NSThread isMainThread]) { [pageContext registerProxy:self]; @@ -298,9 +298,9 @@ - (void)contextShutdown:(id)sender [self contextWasShutdown:context]; if (pageContext == context) { - //TODO: Should we really stay bug compatible with the old behavior? - //I think we should instead have it that the proxy stays around until - //it's no longer referenced by any contexts at all. + // TODO: Should we really stay bug compatible with the old behavior? + // I think we should instead have it that the proxy stays around until + // it's no longer referenced by any contexts at all. [self _destroy]; pageContext = nil; pageKrollObject = nil; @@ -321,12 +321,12 @@ - (void)setExecutionContext:(id)context // /* - * In theory, if two contexts are both using the proxy at the same time, - * bad things could happen since this value will be overwritten. - * TODO: Investigate thread safety of this, or to moot it. - */ + * In theory, if two contexts are both using the proxy at the same time, + * bad things could happen since this value will be overwritten. + * TODO: Investigate thread safety of this, or to moot it. + */ - executionContext = context; //don't retain + executionContext = context; // don't retain } - (void)_initWithProperties:(NSDictionary *)properties @@ -477,7 +477,7 @@ - (BOOL)inReproxy - (BOOL)_hasListeners:(NSString *)type { pthread_rwlock_rdlock(&listenerLock); - //If listeners is nil at this point, result is still false. + // If listeners is nil at this point, result is still false. BOOL result = [[listeners objectForKey:type] intValue] > 0; pthread_rwlock_unlock(&listenerLock); return result; @@ -673,9 +673,9 @@ - (void)forgetProxy:(TiProxy *)forgottenProxy return; } if (bridgeCount < 1) { - //While this may be of concern and there used to be a - //warning here, too many false alarms were raised during - //multi-context cleanups. + // While this may be of concern and there used to be a + // warning here, too many false alarms were raised during + // multi-context cleanups. return; } @@ -705,7 +705,7 @@ - (void)forgetSelf - (void)setCallback:(KrollCallback *)eventCallback forKey:(NSString *)key { - BOOL isCallback = [eventCallback isKindOfClass:[KrollCallback class]]; //Also check against nil. + BOOL isCallback = [eventCallback isKindOfClass:[KrollCallback class]]; // Also check against nil. if ((bridgeCount == 1) && (pageKrollObject != nil)) { if (!isCallback || ([eventCallback context] != [pageKrollObject context])) { [pageKrollObject forgetCallbackForKey:key]; @@ -761,8 +761,8 @@ - (void)addEventListener:(NSArray *)args KrollObject *ourObject = [self krollObjectForContext:([listener isKindOfClass:[KrollCallback class]] ? [(KrollCallback *)listener context] : [(KrollWrapper *)listener bridge].krollContext)]; [ourObject storeListener:listener forEvent:type]; - //TODO: You know, we can probably nip this in the bud and do this at a lower level, - //Or make this less onerous. + // TODO: You know, we can probably nip this in the bud and do this at a lower level, + // Or make this less onerous. int ourCallbackCount = 0; pthread_rwlock_wrlock(&listenerLock); @@ -785,8 +785,8 @@ - (void)removeEventListener:(NSArray *)args KrollObject *ourObject = [self krollObjectForContext:[listener context]]; [ourObject removeListener:listener forEvent:type]; - //TODO: You know, we can probably nip this in the bud and do this at a lower level, - //Or make this less onerous. + // TODO: You know, we can probably nip this in the bud and do this at a lower level, + // Or make this less onerous. pthread_rwlock_wrlock(&listenerLock); int ourCallbackCount = [[listeners objectForKey:type] intValue]; @@ -821,43 +821,43 @@ - (void)fireEvent:(id)args type = (NSString *)args; } id bubbleObject = [params objectForKey:@"bubbles"]; - //TODO: Yes is the historical default. Is this the right thing to do, given the expense? + // TODO: Yes is the historical default. Is this the right thing to do, given the expense? BOOL bubble = [TiUtils boolValue:bubbleObject def:YES]; if ((bubbleObject != nil) && ([params count] == 1)) { - params = nil; //No need to propagate when we already have this information + params = nil; // No need to propagate when we already have this information } if ([self doesntOverrideFireEventWithSource]) { - //TODO: Once the deprecated methods are removed, we can use the following line without checking to see if we'd shortcut. + // TODO: Once the deprecated methods are removed, we can use the following line without checking to see if we'd shortcut. // For now, we're shortcutting to suppress false warnings. [self fireEvent:type withObject:params propagate:bubble reportSuccess:NO errorCode:0 message:nil]; return; } DebugLog(@"[WARN] The Objective-C class %@ has overridden -[fireEvent:withObject:withSource:propagate:].", [self class]); - [self fireEvent:type withObject:params withSource:self propagate:bubble]; //In case of not debugging, we don't change behavior, just in case. + [self fireEvent:type withObject:params withSource:self propagate:bubble]; // In case of not debugging, we don't change behavior, just in case. } - (void)fireEvent:(NSString *)type withObject:(id)obj { if ([self doesntOverrideFireEventWithSource]) { - //TODO: Once the deprecated methods are removed, we can use the following line without checking to see if we'd shortcut. + // TODO: Once the deprecated methods are removed, we can use the following line without checking to see if we'd shortcut. // For now, we're shortcutting to suppress false warnings. [self fireEvent:type withObject:obj propagate:YES reportSuccess:NO errorCode:0 message:nil]; return; } DebugLog(@"[WARN] The Objective-C class %@ has overridden -[fireEvent:withObject:withSource:propagate:].", [self class]); - [self fireEvent:type withObject:obj withSource:self propagate:YES]; //In case of not debugging, we don't change behavior, just in case. + [self fireEvent:type withObject:obj withSource:self propagate:YES]; // In case of not debugging, we don't change behavior, just in case. } - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source { - //The warning for this is in the propagate version. + // The warning for this is in the propagate version. [self fireEvent:type withObject:obj withSource:source propagate:YES]; } - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)yn { if ([self doesntOverrideFireEventWithSource]) { - //TODO: Once the deprecated methods are removed, we can use the following line without checking to see if we'd shortcut. + // TODO: Once the deprecated methods are removed, we can use the following line without checking to see if we'd shortcut. // For now, we're shortcutting to suppress false warnings. [self fireEvent:type withObject:obj propagate:yn reportSuccess:NO errorCode:0 message:nil]; return; @@ -880,7 +880,7 @@ - (void)fireEvent:(NSString *)type withObject:(id)obj errorCode:(NSInteger)code [self fireEvent:type withObject:obj propagate:YES reportSuccess:YES errorCode:code message:message]; } -//What classes should actually use. +// What classes should actually use. - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(NSInteger)code message:(NSString *)message; { if (![self _hasListeners:type]) { @@ -910,7 +910,7 @@ - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)propagate NSThread.isMainThread); } -//Temporary method until source is removed, for our subclasses. +// Temporary method until source is removed, for our subclasses. - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(int)code message:(NSString *)message; { if (![self _hasListeners:type]) { @@ -936,8 +936,8 @@ - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source prop - (void)setValuesForKeysWithDictionary:(NSDictionary *)dictionary { - //It's possible that the 'setvalueforkey' has its own plans of what should be in the JS object, - //so we should do this first as to not overwrite the subclass's setter. + // It's possible that the 'setvalueforkey' has its own plans of what should be in the JS object, + // so we should do this first as to not overwrite the subclass's setter. NSDictionary *keyedValues = [dictionary copy]; if ((bridgeCount == 1) && (pageKrollObject != nil)) { for (NSString *currentKey in keyedValues) { @@ -963,12 +963,12 @@ - (void)setValuesForKeysWithDictionary:(NSDictionary *)dictionary for (NSString *thisKey in keySequence) { id thisValue = [keyedValues objectForKey:thisKey]; - if (thisValue == nil) //Dictionary doesn't have this key. Skip. + if (thisValue == nil) // Dictionary doesn't have this key. Skip. { continue; } if (thisValue == [NSNull null]) { - //When a null, we want to write a nil. + // When a null, we want to write a nil. thisValue = nil; } [self setValue:thisValue forKey:thisKey]; @@ -980,12 +980,12 @@ - (void)setValuesForKeysWithDictionary:(NSDictionary *)dictionary continue; id thisValue = [keyedValues objectForKey:thisKey]; - if (thisValue == nil) //Dictionary doesn't have this key. Skip. + if (thisValue == nil) // Dictionary doesn't have this key. Skip. { continue; } if (thisValue == [NSNull null]) { - //When a null, we want to write a nil. + // When a null, we want to write a nil. thisValue = nil; } [self setValue:thisValue forKey:thisKey]; @@ -1027,8 +1027,8 @@ - (id)valueForUndefinedKey:(NSString *)key } return result; } - //NOTE: we need to return nil here since in JS you can ask for properties - //that don't exist and it should return undefined, not an exception + // NOTE: we need to return nil here since in JS you can ask for properties + // that don't exist and it should return undefined, not an exception return nil; } @@ -1039,8 +1039,8 @@ - (void)replaceValue:(id)value forKey:(NSString *)key notification:(BOOL)notify } if ([value isKindOfClass:[KrollCallback class]]) { [self setCallback:value forKey:key]; - //As a wrapper, we hold onto a KrollWrapper tuple so that other contexts - //may access the function. + // As a wrapper, we hold onto a KrollWrapper tuple so that other contexts + // may access the function. KrollWrapper *newValue = [[[KrollWrapper alloc] init] autorelease]; [newValue setBridge:(KrollBridge *)[[(KrollCallback *)value context] delegate]]; [newValue setJsobject:[(KrollCallback *)value function]]; @@ -1120,7 +1120,7 @@ - (void)setValue:(id)value forUndefinedKey:(NSString *)key - (void)applyProperties:(id)args { ENSURE_SINGLE_ARG(args, NSDictionary) - [self setValuesForKeysWithDictionary:args]; + [self setValuesForKeysWithDictionary:args]; } - (NSDictionary *)allProperties @@ -1152,16 +1152,16 @@ - (id)sanitizeURL:(id)value - (void)didReceiveMemoryWarning:(NSNotification *)notification { - //FOR NOW, we're not dropping anything but we'll want to do before release - //subclasses need to call super if overriden + // FOR NOW, we're not dropping anything but we'll want to do before release + // subclasses need to call super if overriden } #pragma mark Dispatching Helper -//TODO: Now that we have TiThreadPerform, we should optimize this out. +// TODO: Now that we have TiThreadPerform, we should optimize this out. - (void)_dispatchWithObjectOnUIThread:(NSArray *)args { - //NOTE: this is called by ENSURE_UI_THREAD_WITH_OBJ and will always be on UI thread when we get here + // NOTE: this is called by ENSURE_UI_THREAD_WITH_OBJ and will always be on UI thread when we get here id method = [args objectAtIndex:0]; id firstobj = [args count] > 1 ? [args objectAtIndex:1] : nil; id secondobj = [args count] > 2 ? [args objectAtIndex:2] : nil; @@ -1207,7 +1207,7 @@ - (id)toJSON return [NSNull null]; } -//For subclasses to override +// For subclasses to override - (NSString *)apiName { DebugLog(@"[ERROR] Subclasses must override the apiName API endpoint."); diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiPublicAPI.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiPublicAPI.h index 981a6d7c2c4..ded641096fb 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiPublicAPI.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiPublicAPI.h @@ -61,12 +61,12 @@ #else #define TI_PUBLIC_METHOD(methodName, returnType) \ - //No-op + // No-op #define TI_PUBLIC_METHOD_ARG_OBJECT(argPosition, argName, argType, argOptional, argCheck) \ - //No-op + // No-op #define TI_PUBLIC_METHOD_END_ARGS(methodName, returnType) \ -(returnType)methodName : (id)args -#endif //Debug +#endif // Debug diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.h index 993d404fd60..5851f9f766e 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.h @@ -9,7 +9,7 @@ #import @interface TiRootViewController : UIViewController { - //Default background properties + // Default background properties UIColor *bgColor; UIImage *bgImage; UIView *hostView; @@ -17,23 +17,23 @@ BOOL forceLayout; UIView *defaultImageView; - //Keyboard stuff + // Keyboard stuff BOOL updatingAccessoryView; - UIView *enteringAccessoryView; //View that will enter. - UIView *accessoryView; //View that is onscreen. - UIView *leavingAccessoryView; //View that is leaving the screen. - TiViewProxy *keyboardFocusedProxy; //View whose becoming key affects things. + UIView *enteringAccessoryView; // View that will enter. + UIView *accessoryView; // View that is onscreen. + UIView *leavingAccessoryView; // View that is leaving the screen. + TiViewProxy *keyboardFocusedProxy; // View whose becoming key affects things. - CGRect startFrame; //Where the keyboard was before the handling - CGRect targetedFrame; //The keyboard place relative to where the accessoryView is moving; - CGRect endFrame; //Where the keyboard will be after the handling - BOOL keyboardVisible; //If false, use enterCurve. If true, use leaveCurve. + CGRect startFrame; // Where the keyboard was before the handling + CGRect targetedFrame; // The keyboard place relative to where the accessoryView is moving; + CGRect endFrame; // Where the keyboard will be after the handling + BOOL keyboardVisible; // If false, use enterCurve. If true, use leaveCurve. UIViewAnimationCurve enterCurve; CGFloat enterDuration; UIViewAnimationCurve leaveCurve; CGFloat leaveDuration; - //Orientation Stuff + // Orientation Stuff UIInterfaceOrientation orientationHistory[4]; BOOL forcingStatusBarOrientation; BOOL isCurrentlyVisible; @@ -52,7 +52,7 @@ NSInteger activeAlertControllerCount; } -//Titanium Support +// Titanium Support - (CGRect)resizeView; - (void)repositionSubviews; - (UIView *)topWindowProxyView; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m index 0d84e415f16..c7892da1c25 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m @@ -92,7 +92,7 @@ - (void)dealloc RELEASE_TO_NIL(modalWindows); RELEASE_TO_NIL(hostView); - WARN_IF_BACKGROUND_THREAD; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD; // NSNotificationCenter is not threadsafe! NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc removeObserver:self]; [super dealloc]; @@ -159,16 +159,16 @@ - (UIStatusBarStyle)styleFromString:(NSString *)theString - (void)processInfoPlist { - //read the default orientations + // read the default orientations [self getDefaultOrientations]; - //read the default value of UIStatusBarHidden + // read the default value of UIStatusBarHidden id statHidden = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIStatusBarHidden"]; statusBarInitiallyHidden = [TiUtils boolValue:statHidden]; - //read the value of UIViewControllerBasedStatusBarAppearance + // read the value of UIViewControllerBasedStatusBarAppearance id vcbasedStatHidden = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"]; viewControllerControlsStatusBar = [TiUtils boolValue:vcbasedStatHidden def:YES]; - //read the value of statusBarStyle + // read the value of statusBarStyle id statusStyle = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIStatusBarStyle"]; defaultStatusBarStyle = [self styleFromString:statusStyle]; } @@ -206,7 +206,7 @@ - (void)remoteControlReceivedWithEvent:(UIEvent *)event } #pragma mark - TiRootControllerProtocol -//Background Control +// Background Control - (void)updateBackground { UIView *ourView = [self view]; @@ -394,11 +394,11 @@ - (void)rotateDefaultImageViewToOrientation:(UIInterfaceOrientation)newOrientati UIUserInterfaceIdiom imageIdiom; UIUserInterfaceIdiom deviceIdiom = [[UIDevice currentDevice] userInterfaceIdiom]; /* - * This code could stand for some refinement, but it is rarely called during - * an application's lifetime and is meant to recreate the quirks and edge cases - * that iOS uses during application startup, including Apple's own - * inconsistencies between iPad and iPhone. - */ + * This code could stand for some refinement, but it is rarely called during + * an application's lifetime and is meant to recreate the quirks and edge cases + * that iOS uses during application startup, including Apple's own + * inconsistencies between iPad and iPhone. + */ UIImage *defaultImage = [self defaultImageForOrientation: (UIDeviceOrientation)newOrientation @@ -531,14 +531,14 @@ - (void)extractKeyboardInfo:(NSDictionary *)userInfo - (UIView *)keyboardAccessoryViewForProxy:(TiViewProxy *)visibleProxy withView:(UIView **)proxyView { - //If the toolbar actually contains the view, then we have to give that precidence. + // If the toolbar actually contains the view, then we have to give that precidence. if ([visibleProxy viewInitialized]) { UIView *ourView = [visibleProxy view]; *proxyView = ourView; while (ourView != nil) { if ((ourView == enteringAccessoryView) || (ourView == accessoryView) || (ourView == leavingAccessoryView)) { - //We found a match! + // We found a match! *proxyView = nil; return ourView; } @@ -556,13 +556,13 @@ - (void)handleNewKeyboardStatus UIView *ourView = [self viewForKeyboardAccessory]; CGRect endingFrame = [ourView convertRect:endFrame fromView:nil]; - //Sanity check. Look at our focused proxy, and see if we mismarked it as leaving. - TiUIView *scrolledView; //We check at the update anyways. + // Sanity check. Look at our focused proxy, and see if we mismarked it as leaving. + TiUIView *scrolledView; // We check at the update anyways. UIView *focusedToolbar = [self keyboardAccessoryViewForProxy:keyboardFocusedProxy withView:&scrolledView]; CGRect focusedToolbarBounds; - //special case for undocked split keyboard + // special case for undocked split keyboard if (CGRectEqualToRect(CGRectZero, endingFrame)) { focusedToolbarBounds = CGRectMake(0, 0, targetedFrame.size.width, [keyboardFocusedProxy keyboardAccessoryHeight]); } else { @@ -572,7 +572,7 @@ - (void)handleNewKeyboardStatus CGFloat keyboardHeight = endingFrame.origin.y; - if ((scrolledView != nil) && (keyboardHeight > 0)) //If this isn't IN the toolbar, then we update the scrollviews to compensate. + if ((scrolledView != nil) && (keyboardHeight > 0)) // If this isn't IN the toolbar, then we update the scrollviews to compensate. { UIView *possibleScrollView = [scrolledView superview]; UIView *confirmedScrollView = nil; @@ -605,13 +605,13 @@ - (void)didKeyboardFocusOnProxy:(TiViewProxy *)visibleP keyboardFocusedProxy = [visibleProxy retain]; - TiUIView *unused; //We check at the update anyways. + TiUIView *unused; // We check at the update anyways. UIView *newView = [self keyboardAccessoryViewForProxy:visibleProxy withView:&unused]; if ((newView == enteringAccessoryView) || (newView == accessoryView)) { - //We're already up or soon will be. - //Note that this is valid where newView can be accessoryView despite a new visibleProxy. - //Specifically, if one proxy's view is a subview of another's toolbar. + // We're already up or soon will be. + // Note that this is valid where newView can be accessoryView despite a new visibleProxy. + // Specifically, if one proxy's view is a subview of another's toolbar. } else { if (enteringAccessoryView != nil) { DebugLog(@"[WARN] Moving in view %@, despite %@ already in line to move in.", newView, enteringAccessoryView); @@ -619,7 +619,7 @@ - (void)didKeyboardFocusOnProxy:(TiViewProxy *)visibleP } if (newView == leavingAccessoryView) { - //Hold on, you're not leaving YET! We don't need to release you since we're going to retain right afterwards. + // Hold on, you're not leaving YET! We don't need to release you since we're going to retain right afterwards. enteringAccessoryView = newView; leavingAccessoryView = nil; } else { @@ -641,7 +641,7 @@ - (void)didKeyboardBlurOnProxy:(TiViewProxy *)blurredPr return; } - TiUIView *scrolledView; //We check at the update anyways. + TiUIView *scrolledView; // We check at the update anyways. UIView *doomedView = [self keyboardAccessoryViewForProxy:blurredProxy withView:&scrolledView]; if (doomedView != accessoryView) { @@ -650,7 +650,7 @@ - (void)didKeyboardBlurOnProxy:(TiViewProxy *)blurredPr } if ((doomedView == nil) || (leavingAccessoryView == doomedView)) { - //Nothing to worry about. No toolbar or it's on its way out. + // Nothing to worry about. No toolbar or it's on its way out. return; } @@ -863,7 +863,7 @@ - (void)hideControllerModal:(UIViewController *)theController animated:(BOOL)ani [(id)theProxy gainFocus]; } } else { - //This code block will only execute when errorController is presented on top of an alert + // This code block will only execute when errorController is presented on top of an alert if ([presenter isKindOfClass:[UIAlertController class]] && (((UIAlertController *)presenter).preferredStyle == UIAlertControllerStyleAlert)) { UIViewController *alertPresenter = [presenter presentingViewController]; [alertPresenter dismissViewControllerAnimated:NO @@ -977,8 +977,8 @@ - (CGRect)resizeView - (void)repositionSubviews { - //Since the window relayout is now driven from viewDidLayoutSubviews - //this is not required. Leaving it in place in case someone is using it now. + // Since the window relayout is now driven from viewDidLayoutSubviews + // this is not required. Leaving it in place in case someone is using it now. /* for (id thisWindow in [containedWindows reverseObjectEnumerator]) { [TiLayoutQueue layoutProxy:(TiViewProxy*)thisWindow]; @@ -997,7 +997,7 @@ - (UIInterfaceOrientation)lastValidOrientation:(TiOrientationFlags)orientationFl } } - //This line should never happen, but just in case... + // This line should never happen, but just in case... return UIInterfaceOrientationPortrait; } @@ -1017,7 +1017,7 @@ - (void)adjustFrameForUpSideDownOrientation:(NSNotification *)notification CGRect mainScreenBounds = [[UIScreen mainScreen] bounds]; CGRect viewBounds = [[self view] bounds]; - //Need to do this to force navigation bar to draw correctly on iOS7 + // Need to do this to force navigation bar to draw correctly on iOS7 [[NSNotificationCenter defaultCenter] postNotificationName:kTiFrameAdjustNotification object:nil]; if (statusBarFrame.size.height > 20) { if (viewBounds.size.height != (mainScreenBounds.size.height - statusBarFrame.size.height)) { @@ -1069,7 +1069,7 @@ - (void)viewDidLayoutSubviews [self adjustFrameForUpSideDownOrientation:nil]; } -//IOS5 support. Begin Section. Drop in 3.2 +// IOS5 support. Begin Section. Drop in 3.2 - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers { return YES; @@ -1079,9 +1079,9 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfa { return [self shouldRotateToInterfaceOrientation:toInterfaceOrientation checkModal:YES]; } -//IOS5 support. End Section +// IOS5 support. End Section -//IOS6 new stuff. +// IOS6 new stuff. - (BOOL)shouldAutomaticallyForwardRotationMethods { @@ -1132,18 +1132,18 @@ - (NSUInteger)supportedOrientationsForAppDelegate; return [self supportedInterfaceOrientations]; } - //Since this is used just for intersection, ok to return UIInterfaceOrientationMaskAll - return 30; //UIInterfaceOrientationMaskAll + // Since this is used just for intersection, ok to return UIInterfaceOrientationMaskAll + return 30; // UIInterfaceOrientationMaskAll } - (UIInterfaceOrientationMask)supportedInterfaceOrientations { - //IOS6. If forcing status bar orientation, this must return 0. + // IOS6. If forcing status bar orientation, this must return 0. if (forcingStatusBarOrientation) { return 0; } - //IOS6. If we are presenting a modal view controller, get the supported - //orientations from the modal view controller + // IOS6. If we are presenting a modal view controller, get the supported + // orientations from the modal view controller UIViewController *topmostController = [self topPresentedControllerCheckingPopover:YES]; if (topmostController != self) { NSUInteger retVal = [topmostController supportedInterfaceOrientations]; @@ -1192,7 +1192,7 @@ - (void)refreshOrientationWithDuration:(id)unused } UIInterfaceOrientation target = [self lastValidOrientation:[self getFlags:NO]]; - //Device Orientation takes precedence. + // Device Orientation takes precedence. if (target != deviceOrientation) { if ([self shouldRotateToInterfaceOrientation:deviceOrientation checkModal:NO]) { target = deviceOrientation; @@ -1219,12 +1219,12 @@ - (void)refreshOrientationWithDuration:(id)unused - (void)updateOrientationHistory:(UIInterfaceOrientation)newOrientation { /* - * And now, to push the orientation onto the history stack. This could be - * expressed as a for loop, but the loop is so small that it might as well - * be unrolled. The end result of this push is that only other orientations - * are copied back, ensuring the newOrientation will be unique when it's - * placed at the top of the stack. - */ + * And now, to push the orientation onto the history stack. This could be + * expressed as a for loop, but the loop is so small that it might as well + * be unrolled. The end result of this push is that only other orientations + * are copied back, ensuring the newOrientation will be unique when it's + * placed at the top of the stack. + */ int i = 0; for (int j = 0; j < 4; j++) { if (orientationHistory[j] == newOrientation) { @@ -1328,10 +1328,10 @@ - (void)rotateHostingViewToOrientation:(UIInterfaceOrientation)newOrientation fr } break; } - //Blur out keyboard + // Blur out keyboard [keyboardFocusedProxy blur:nil]; - //Rotate statusbar + // Rotate statusbar /* We will not rotae the status bar here but will temporarily force hide it. That way we will get correct size in viewWillTransitionToSize and re-enable visibility there. If we force the status @@ -1380,12 +1380,12 @@ - (void)childOrientationControllerChangedFlags:(id)orie - (void)setParentOrientationController:(id)newParent { - //Blank method since we never have a parent. + // Blank method since we never have a parent. } - (id)parentOrientationController { - //Blank method since we never have a parent. + // Blank method since we never have a parent. return nil; } @@ -1429,7 +1429,7 @@ - (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection; [super traitCollectionDidChange:previousTraitCollection]; } -//Containing controller will call these callbacks(appearance/rotation) on contained windows when it receives them. +// Containing controller will call these callbacks(appearance/rotation) on contained windows when it receives them. - (void)viewWillAppear:(BOOL)animated { for (id thisWindow in containedWindows) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiStylesheet.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiStylesheet.m index 6caf7dcb4d8..e100bf5e70f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiStylesheet.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiStylesheet.m @@ -62,11 +62,11 @@ - (id)stylesheet:(NSString *)objectId density:(NSString *)density basename:(NSSt #endif /* - CSS selector priority order (lowest to highest) is - - Tag selectors - - Classes - - ID selectors - */ + CSS selector priority order (lowest to highest) is + - Tag selectors + - Classes + - ID selectors + */ NSMutableDictionary *result = [NSMutableDictionary dictionary]; if (tags != nil) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiThreading.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiThreading.h index eb188a73d6f..bb4f80cc03f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiThreading.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiThreading.h @@ -20,10 +20,10 @@ #define ENSURE_UI_THREAD_0_ARGS ENSURE_UI_THREAD_1_ARG(nil) -//TODO: Is there any time where @selector(x:) is not _sel (IE, the called method for 1 arg? -//Similarly, if we already have x:withObject: as a selector in _sel, could we -//We may want phase out asking the method explicitly when the compiler can do it for us -//For now, leaving it unchanged and using _X_ARG(S) to denote no method name used. +// TODO: Is there any time where @selector(x:) is not _sel (IE, the called method for 1 arg? +// Similarly, if we already have x:withObject: as a selector in _sel, could we +// We may want phase out asking the method explicitly when the compiler can do it for us +// For now, leaving it unchanged and using _X_ARG(S) to denote no method name used. #define ENSURE_UI_THREAD(x, y) \ if (![NSThread isMainThread]) { \ @@ -41,7 +41,7 @@ return; \ } -//TODO: Now that we have TiThreadPerform, we should optimize this out. +// TODO: Now that we have TiThreadPerform, we should optimize this out. #define ENSURE_UI_THREAD_WITH_OBJ(x, y, z) \ if (![NSThread isMainThread]) { \ id o = [NSArray arrayWithObjects:@"" #x, NULL_IF_NIL(y), NULL_IF_NIL(z), nil]; \ @@ -100,4 +100,4 @@ { \ } -#endif //VERBOSE +#endif // VERBOSE diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.h index 025a0d11f65..4b6f10b05d1 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.h @@ -11,7 +11,7 @@ #ifdef TI_USE_AUTOLAYOUT #import "TiLayoutView.h" #endif -//By declaring a scrollView protocol, TiUITextWidget can access +// By declaring a scrollView protocol, TiUITextWidget can access @class TiUIView; /** @@ -88,7 +88,7 @@ void ModifyScrollViewForKeyboardHeightAndContentHeightWithResponderRect(UIScroll UISwipeGestureRecognizer *downSwipeRecognizer; UILongPressGestureRecognizer *longPressRecognizer; - //Resizing handling + // Resizing handling CGSize oldSize; // Image capping/backgrounds @@ -105,13 +105,13 @@ void ModifyScrollViewForKeyboardHeightAndContentHeightWithResponderRect(UIScroll - (BOOL)animating; /** - Provides access to a proxy object of the view. + Provides access to a proxy object of the view. */ @property (nonatomic, readwrite, assign) TiProxy *proxy; /** Provides access to touch delegate of the view. - + Touch delegate is the control that receives all touch events. */ @property (nonatomic, readwrite, assign) UIView *touchDelegate; @@ -242,7 +242,7 @@ void ModifyScrollViewForKeyboardHeightAndContentHeightWithResponderRect(UIScroll /** Returns default enablement for interactions. - + Subclasses may override. @return _YES_ if the control has interactions enabled by default, _NO_ otherwise. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m index bff84b9478b..f433f0bd01f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m @@ -22,15 +22,15 @@ void InsetScrollViewForKeyboard(UIScrollView *scrollView, CGFloat keyboardTop, C VerboseLog(@"ScrollView:%@, keyboardTop:%f minimumContentHeight:%f", scrollView, keyboardTop, minimumContentHeight); CGRect scrollVisibleRect = [scrollView convertRect:[scrollView bounds] toView:[[TiApp app] topMostView]]; - //First, find out how much we have to compensate. + // First, find out how much we have to compensate. CGFloat obscuredHeight = scrollVisibleRect.origin.y + scrollVisibleRect.size.height - keyboardTop; - //ObscuredHeight is how many vertical pixels the keyboard obscures of the scroll view. Some of this may be acceptable. + // ObscuredHeight is how many vertical pixels the keyboard obscures of the scroll view. Some of this may be acceptable. CGFloat unimportantArea = MAX(scrollVisibleRect.size.height - minimumContentHeight, 0); - //It's possible that some of the covered area doesn't matter. If it all matters, unimportant is 0. + // It's possible that some of the covered area doesn't matter. If it all matters, unimportant is 0. - //As such, obscuredHeight is now how much actually matters of scrollVisibleRect. + // As such, obscuredHeight is now how much actually matters of scrollVisibleRect. CGFloat bottomInset = MAX(0, obscuredHeight - unimportantArea); [scrollView setContentInset:UIEdgeInsetsMake(0, 0, bottomInset, 0)]; @@ -54,14 +54,14 @@ void OffsetScrollViewForRect(UIScrollView *scrollView, CGFloat keyboardTop, CGFl responderRect.origin.x, responderRect.origin.y, responderRect.size.width, responderRect.size.height); CGRect scrollVisibleRect = [scrollView convertRect:[scrollView bounds] toView:[[TiApp app] topMostView]]; - //First, find out how much we have to compensate. + // First, find out how much we have to compensate. CGFloat obscuredHeight = scrollVisibleRect.origin.y + scrollVisibleRect.size.height - keyboardTop; - //ObscuredHeight is how many vertical pixels the keyboard obscures of the scroll view. Some of this may be acceptable. + // ObscuredHeight is how many vertical pixels the keyboard obscures of the scroll view. Some of this may be acceptable. - //It's possible that some of the covered area doesn't matter. If it all matters, unimportant is 0. + // It's possible that some of the covered area doesn't matter. If it all matters, unimportant is 0. - //As such, obscuredHeight is now how much actually matters of scrollVisibleRect. + // As such, obscuredHeight is now how much actually matters of scrollVisibleRect. VerboseLog(@"ScrollVisibleRect(%f,%f),%fx%f; obscuredHeight:%f;", scrollVisibleRect.origin.x, scrollVisibleRect.origin.y, scrollVisibleRect.size.width, scrollVisibleRect.size.height, @@ -69,7 +69,7 @@ void OffsetScrollViewForRect(UIScrollView *scrollView, CGFloat keyboardTop, CGFl scrollVisibleRect.size.height -= MAX(0, obscuredHeight); - //Okay, the scrollVisibleRect.size now represents the actually visible area. + // Okay, the scrollVisibleRect.size now represents the actually visible area. CGPoint offsetPoint = [scrollView contentOffset]; @@ -98,15 +98,15 @@ void ModifyScrollViewForKeyboardHeightAndContentHeightWithResponderRect(UIScroll responderRect.origin.x, responderRect.origin.y, responderRect.size.width, responderRect.size.height); CGRect scrollVisibleRect = [scrollView convertRect:[scrollView bounds] toView:[[TiApp app] topMostView]]; - //First, find out how much we have to compensate. + // First, find out how much we have to compensate. CGFloat obscuredHeight = scrollVisibleRect.origin.y + scrollVisibleRect.size.height - keyboardTop; - //ObscuredHeight is how many vertical pixels the keyboard obscures of the scroll view. Some of this may be acceptable. + // ObscuredHeight is how many vertical pixels the keyboard obscures of the scroll view. Some of this may be acceptable. CGFloat unimportantArea = MAX(scrollVisibleRect.size.height - minimumContentHeight, 0); - //It's possible that some of the covered area doesn't matter. If it all matters, unimportant is 0. + // It's possible that some of the covered area doesn't matter. If it all matters, unimportant is 0. - //As such, obscuredHeight is now how much actually matters of scrollVisibleRect. + // As such, obscuredHeight is now how much actually matters of scrollVisibleRect. [scrollView setContentInset:UIEdgeInsetsMake(0, 0, MAX(0, obscuredHeight - unimportantArea), 0)]; @@ -116,7 +116,7 @@ void ModifyScrollViewForKeyboardHeightAndContentHeightWithResponderRect(UIScroll scrollVisibleRect.size.height -= MAX(0, obscuredHeight); - //Okay, the scrollVisibleRect.size now represents the actually visible area. + // Okay, the scrollVisibleRect.size now represents the actually visible area. CGPoint offsetPoint = [scrollView contentOffset]; @@ -449,7 +449,7 @@ - (void)checkBounds CGRect newBounds = [self bounds]; if (!CGSizeEqualToSize(oldSize, newBounds.size)) { oldSize = newBounds.size; - //TIMOB-11197, TC-1264 + // TIMOB-11197, TC-1264 if (!animating) { [CATransaction begin]; [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; @@ -678,7 +678,7 @@ - (void)renderRepeatedBackground:(id)image }]; if (renderedBg == nil) { - //TIMOB-11564. Either width or height of the bounds is zero + // TIMOB-11564. Either width or height of the bounds is zero return; } @@ -909,7 +909,7 @@ - (void)setVisible_:(id)visible { BOOL oldVal = self.hidden; self.hidden = ![TiUtils boolValue:visible]; - //Redraw ourselves if changing from invisible to visible, to handle any changes made + // Redraw ourselves if changing from invisible to visible, to handle any changes made if (!self.hidden && oldVal) { TiViewProxy *viewProxy = (TiViewProxy *)[self proxy]; [viewProxy willEnqueue]; @@ -960,14 +960,14 @@ - (void)setBackgroundGradient_:(id)arg - (void)updateClipping { if (clipMode != 0) { - //Explicitly overridden + // Explicitly overridden self.clipsToBounds = (clipMode > 0); } else { if (_shadowLayer.shadowOpacity > 0) { - //If shadow is visible, disble clipping + // If shadow is visible, disble clipping self.clipsToBounds = NO; } else if (self.layer.borderWidth > 0 || self.layer.cornerRadius > 0 || [proxy valueForUndefinedKey:@"borderRadius"]) { - //If borderWidth > 0, or borderRadius > 0 enable clipping + // If borderWidth > 0, or borderRadius > 0 enable clipping self.clipsToBounds = YES; } else if ([[self proxy] isKindOfClass:[TiViewProxy class]]) { self.clipsToBounds = ([[((TiViewProxy *)self.proxy) children] count] > 0); @@ -1092,7 +1092,7 @@ - (void)setVerticalMotionEffect_:(id)motionEffect - (void)updateViewShadowPath { if (_shadowLayer.shadowOpacity > 0.0f) { - //to speedup things + // to speedup things UIBezierPath *bezierPath = [self bezierPathOfView]; if (_shadowLayer != self.layer) { _shadowLayer.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.bounds.size.width, self.bounds.size.height); @@ -1186,7 +1186,7 @@ - (void)propertyChanged:(NSString *)key oldValue:(id)oldValue newValue:(id)newVa DoProxyDelegateChangedValuesWithProxy(self, key, oldValue, newValue, proxy_); } -//Todo: Generalize. +// Todo: Generalize. - (void)setKrollValue:(id)value forKey:(NSString *)key withObject:(id)props { if (value == [NSNull null]) { @@ -1223,7 +1223,7 @@ - (void)transferProxy:(TiViewProxy *)newProxy deep:(BOOL)deep [newProxy setView:self]; [self setProxy:[newProxy retain]]; - //The important sequence first: + // The important sequence first: for (NSString *thisKey in keySequence) { id newValue = [newProxy valueForKey:thisKey]; id oldValue = [oldProxy valueForKey:thisKey]; @@ -1426,7 +1426,7 @@ - (void)recognizedTap:(UITapGestureRecognizer *)recognizer if ([recognizer numberOfTouchesRequired] == 2) { [proxy fireEvent:@"twofingertap" withObject:event]; } else if ([recognizer numberOfTapsRequired] == 2) { - //Because double-tap suppresses touchStart and double-click, we must do this: + // Because double-tap suppresses touchStart and double-click, we must do this: if ([proxy _hasListeners:@"touchstart"]) { [proxy fireEvent:@"touchstart" withObject:event propagate:YES]; } @@ -1522,12 +1522,12 @@ - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event // The touch never reaches the button, because the touchDelegate is as deep as the touch goes. /* - // delegate to our touch delegate if we're hit but it's not for us - if (hasTouchListeners==NO && touchDelegate!=nil) - { - return touchDelegate; - } - */ + // delegate to our touch delegate if we're hit but it's not for us + if (hasTouchListeners==NO && touchDelegate!=nil) + { + return touchDelegate; + } + */ return [super hitTest:point withEvent:event]; } @@ -1743,7 +1743,7 @@ - (void)listenerRemoved:(NSString *)event count:(int)count } } -- (void)sanitycheckListeners //TODO: This can be optimized and unwound later. +- (void)sanitycheckListeners // TODO: This can be optimized and unwound later. { if (listenerArray == nil) { listenerArray = [[NSArray alloc] initWithObjects:@"singletap", diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUtils.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUtils.m index 688c610e365..f9f97f423fe 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUtils.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUtils.m @@ -268,7 +268,7 @@ + (NSString *)UTCDateForDate:(NSDate *)data [dateFormatter setLocale:USLocale]; [USLocale release]; - //Example UTC full format: 2009-06-15T21:46:28.685+0000 + // Example UTC full format: 2009-06-15T21:46:28.685+0000 [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'.'SSS+0000"]; return [dateFormatter stringFromDate:data]; } @@ -684,7 +684,7 @@ + (UIImage *)toImage:(id)object proxy:(TiProxy *)proxy size:(CGSize)imageSize NSURL *urlAttempt = [self toURL:object proxy:proxy]; UIImage *image = [[ImageLoader sharedLoader] loadImmediateImage:urlAttempt withSize:imageSize]; return image; - //Note: If url is a nonimmediate image, this returns nil. + // Note: If url is a nonimmediate image, this returns nil. } + (UIImage *)toImage:(id)object proxy:(TiProxy *)proxy @@ -702,7 +702,7 @@ + (UIImage *)toImage:(id)object proxy:(TiProxy *)proxy NSURL *urlAttempt = [self toURL:object proxy:proxy]; UIImage *image = [[ImageLoader sharedLoader] loadImmediateImage:urlAttempt]; return image; - //Note: If url is a nonimmediate image, this returns nil. + // Note: If url is a nonimmediate image, this returns nil. } + (UIImage *)adjustRotation:(UIImage *)image @@ -718,26 +718,26 @@ + (UIImage *)adjustRotation:(UIImage *)image UIImageOrientation orient = image.imageOrientation; switch (orient) { - case UIImageOrientationUp: //EXIF = 1 + case UIImageOrientationUp: // EXIF = 1 transform = CGAffineTransformIdentity; break; - case UIImageOrientationUpMirrored: //EXIF = 2 + case UIImageOrientationUpMirrored: // EXIF = 2 transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); transform = CGAffineTransformScale(transform, -1.0, 1.0); break; - case UIImageOrientationDown: //EXIF = 3 + case UIImageOrientationDown: // EXIF = 3 transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); transform = CGAffineTransformRotate(transform, M_PI); break; - case UIImageOrientationDownMirrored: //EXIF = 4 + case UIImageOrientationDownMirrored: // EXIF = 4 transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); transform = CGAffineTransformScale(transform, 1.0, -1.0); break; - case UIImageOrientationLeftMirrored: //EXIF = 5 + case UIImageOrientationLeftMirrored: // EXIF = 5 boundHeight = bounds.size.height; bounds.size.height = bounds.size.width; bounds.size.width = boundHeight; @@ -746,7 +746,7 @@ + (UIImage *)adjustRotation:(UIImage *)image transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); break; - case UIImageOrientationLeft: //EXIF = 6 + case UIImageOrientationLeft: // EXIF = 6 boundHeight = bounds.size.height; bounds.size.height = bounds.size.width; bounds.size.width = boundHeight; @@ -754,7 +754,7 @@ + (UIImage *)adjustRotation:(UIImage *)image transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); break; - case UIImageOrientationRightMirrored: //EXIF = 7 + case UIImageOrientationRightMirrored: // EXIF = 7 boundHeight = bounds.size.height; bounds.size.height = bounds.size.width; bounds.size.width = boundHeight; @@ -762,7 +762,7 @@ + (UIImage *)adjustRotation:(UIImage *)image transform = CGAffineTransformRotate(transform, M_PI / 2.0); break; - case UIImageOrientationRight: //EXIF = 8 + case UIImageOrientationRight: // EXIF = 8 boundHeight = bounds.size.height; bounds.size.height = bounds.size.width; bounds.size.width = boundHeight; @@ -808,13 +808,13 @@ + (NSURL *)checkFor2XImage:(NSURL *)url path = [url path]; } - if ([[url scheme] isEqualToString:@"app"]) { //Technically, this will have an extra /, but iOS ignores this. + if ([[url scheme] isEqualToString:@"app"]) { // Technically, this will have an extra /, but iOS ignores this. path = [url resourceSpecifier]; } NSString *ext = [path pathExtension]; - if (![ext isEqualToString:@"png"] && ![ext isEqualToString:@"jpg"] && ![ext isEqualToString:@"jpeg"]) { //It's not an image. + if (![ext isEqualToString:@"png"] && ![ext isEqualToString:@"jpg"] && ![ext isEqualToString:@"jpeg"]) { // It's not an image. return url; } @@ -1447,7 +1447,7 @@ + (CGRect)screenRect return UIScreen.mainScreen.bounds; } -//TODO: rework these to be more accurate and multi-device +// TODO: rework these to be more accurate and multi-device + (CGRect)navBarRect { @@ -1694,7 +1694,7 @@ + (NSUInteger)extendedEdgesFromProp:(id)prop + (void)setVolume:(float)volume onObject:(id)theObject { - //Must be called on the main thread + // Must be called on the main thread if ([NSThread isMainThread]) { if ([theObject respondsToSelector:@selector(setVolume:)]) { [(id)theObject setVolume:volume]; @@ -1706,7 +1706,7 @@ + (void)setVolume:(float)volume onObject:(id)theObject + (float)volumeFromObject:(id)theObject default:(float)def { - //Must be called on the main thread + // Must be called on the main thread float returnValue = def; if ([NSThread isMainThread]) { if ([theObject respondsToSelector:@selector(volume)]) { @@ -1743,7 +1743,7 @@ + (CGRect)frameForController:(UIViewController *)theController CGRect mainScreen = UIScreen.mainScreen.bounds; CGRect rect = UIApplication.sharedApplication.keyWindow.frame; NSUInteger edges = [theController edgesForExtendedLayout]; - //Check if I cover status bar + // Check if I cover status bar if (((edges & UIRectEdgeTop) != 0)) { return mainScreen; } @@ -1761,7 +1761,7 @@ + (void)applyColor:(TiColor *)color toNavigationController:(UINavigationControll [navBar setTranslucent:isTranslucent]; [navBar setBarTintColor:barColor]; - //This should not be here but in setToolBar. But keeping in place. Clean in 3.2.0 + // This should not be here but in setToolBar. But keeping in place. Clean in 3.2.0 UIToolbar *toolBar = [navController toolbar]; [toolBar setBarStyle:barStyle]; [toolBar setTranslucent:isTranslucent]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m index 3fa6aaabf3c..e3928b5959c 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m @@ -70,7 +70,7 @@ - (void)viewDidLayoutSubviews [super viewDidLayoutSubviews]; } -//IOS5 support. Begin Section. Drop in 3.2 +// IOS5 support. Begin Section. Drop in 3.2 - (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers { return YES; @@ -80,9 +80,9 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfa { return TI_ORIENTATION_ALLOWED(_supportedOrientations, toInterfaceOrientation) ? YES : NO; } -//IOS5 support. End Section +// IOS5 support. End Section -//IOS6 new stuff. +// IOS6 new stuff. - (BOOL)shouldAutomaticallyForwardRotationMethods { return YES; @@ -101,7 +101,7 @@ - (BOOL)shouldAutorotate - (UIInterfaceOrientationMask)supportedInterfaceOrientations { /* - If we are in a navigation controller, let us match so it doesn't get freaked + If we are in a navigation controller, let us match so it doesn't get freaked out in when pushing/popping. We are going to force orientation anyways. */ /* @@ -110,7 +110,7 @@ - (UIInterfaceOrientationMask)supportedInterfaceOrientations if ([self navigationController] != nil && [[self navigationController] topViewController] != self) { return [[[self navigationController] topViewController] supportedInterfaceOrientations]; } - //This would be for modal. + // This would be for modal. return (UIInterfaceOrientationMask)_supportedOrientations; } @@ -126,8 +126,8 @@ - (void)loadView } [self updateOrientations]; [self setHidesBottomBarWhenPushed:[TiUtils boolValue:[_proxy valueForUndefinedKey:@"tabBarHidden"] def:NO]]; - //Always wrap proxy view with a wrapperView. - //This way proxy always has correct sandbox when laying out + // Always wrap proxy view with a wrapperView. + // This way proxy always has correct sandbox when laying out [_proxy parentWillShow]; UIView *wrapperView = [[UIView alloc] initWithFrame:UIApplication.sharedApplication.keyWindow.frame]; wrapperView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h index 362f7b1855c..f4b434c7f52 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.h @@ -71,7 +71,7 @@ #pragma mark dirtyflags used by TiViewProxy #define NEEDS_LAYOUT_CHILDREN 1 -//Set this flag to true to disable instant updates +// Set this flag to true to disable instant updates static const BOOL ENFORCE_BATCH_UPDATE = NO; enum { @@ -84,7 +84,7 @@ enum { }; @class TiAction, TiBlob; -//For TableRows, we need to have minimumParentHeightForWidth: +// For TableRows, we need to have minimumParentHeightForWidth: /** The class represents a proxy that is attached to a view. @@ -92,8 +92,8 @@ enum { */ @interface TiViewProxy : TiProxy { @protected - //TODO: Actually have a rhyme and reason on keeping things @protected vs @private. - //For now, for sake of proper value grouping, we're all under one roof. + // TODO: Actually have a rhyme and reason on keeping things @protected vs @private. + // For now, for sake of proper value grouping, we're all under one roof. #ifndef TI_USE_AUTOLAYOUT #pragma mark Layout properties @@ -116,19 +116,19 @@ enum { #pragma mark Layout caches that can be recomputed CGFloat verticalLayoutBoundary; CGFloat horizontalLayoutBoundary; - CGFloat horizontalLayoutRowHeight; //Note, this has nothing to do with table views. + CGFloat horizontalLayoutRowHeight; // Note, this has nothing to do with table views. int lastChildArranged; CGRect sandboxBounds; - CGPoint positionCache; //Recomputed and stored when position changes. - CGRect sizeCache; //Recomputed and stored when size changes. - UIViewAutoresizing autoresizeCache; //Changed by repositioning or resizing. + CGPoint positionCache; // Recomputed and stored when position changes. + CGRect sizeCache; // Recomputed and stored when size changes. + UIViewAutoresizing autoresizeCache; // Changed by repositioning or resizing. BOOL parentVisible; - //In most cases, this is the same as [parent parentVisible] && ![parent hidden] - //However, in the case of windows attached to the root view, the parent is ALWAYS visible. - //That is, will be true if and only if all parents are visible or are the root controller. - //Use parentWillShow and parentWillHide to set this. + // In most cases, this is the same as [parent parentVisible] && ![parent hidden] + // However, in the case of windows attached to the root view, the parent is ALWAYS visible. + // That is, will be true if and only if all parents are visible or are the root controller. + // Use parentWillShow and parentWillHide to set this. #pragma mark Housecleaning that is set and used NSRecursiveLock *destroyLock; @@ -136,11 +136,11 @@ enum { BOOL windowOpened; BOOL windowOpening; - int dirtyflags; //For atomic actions, best to be explicit about the 32 bitness. + int dirtyflags; // For atomic actions, best to be explicit about the 32 bitness. BOOL viewInitialized; BOOL repositioning; BOOL isUsingBarButtonItem; - //This flag is set to true on beginning of _initWithProperties() call and false near the end of the method + // This flag is set to true on beginning of _initWithProperties() call and false near the end of the method BOOL updateStarted; BOOL allowLayoutUpdate; @@ -255,7 +255,7 @@ enum { @see children */ @property (nonatomic, assign) TiViewProxy *parent; -//TODO: make this a proper readwrite property declaration. +// TODO: make this a proper readwrite property declaration. #ifndef TI_USE_AUTOLAYOUT /** @@ -268,22 +268,22 @@ enum { Provides access to sandbox bounds of the underlying view. */ @property (nonatomic, readwrite, assign) CGRect sandboxBounds; -//This is unaffected by parentVisible. So if something is truely visible, it'd be [self visible] && parentVisible. +// This is unaffected by parentVisible. So if something is truely visible, it'd be [self visible] && parentVisible. - (void)setHidden:(BOOL)newHidden withArgs:(id)args; @property (nonatomic, retain) UIBarButtonItem *barButtonItem; - (TiUIView *)barButtonViewForSize:(CGSize)bounds; -//NOTE: DO NOT SET VIEW UNLESS IN A TABLE VIEW, AND EVEN THEN. +// NOTE: DO NOT SET VIEW UNLESS IN A TABLE VIEW, AND EVEN THEN. @property (nonatomic, readwrite, retain) TiUIView *view; @property (nonatomic, readwrite, assign) id eventOverrideDelegate; /** Returns language conversion table. - + Subclasses may override. - @return The dictionary + @return The dictionary */ - (NSMutableDictionary *)langConversionTable; @@ -299,7 +299,7 @@ enum { /** Whether or not the view proxy needs to suppress relayout. - + Subclasses may override. @return _YES_ if relayout should be suppressed, _NO_ otherwise. */ @@ -307,7 +307,7 @@ enum { /** Whether or not the view proxy supports navigation bar positioning. - + Subclasses may override. @return _YES_ if navigation bar positioning is supported, _NO_ otherwise. */ @@ -315,7 +315,7 @@ enum { /** Whether or not the view proxy can have a UIController object in its parent view. - + Subclasses may override. @return _YES_ if the view proxy can have a UIController object in its parent view */ @@ -323,7 +323,7 @@ enum { /** Whether or not the view proxy should detach its view on unload. - + Subclasses may override. @return _YES_ if the view should be detached, _NO_ otherwise. */ @@ -331,7 +331,7 @@ enum { /** Returns parent view for child proxy. - + The method is used in cases when proxies hierarchy is different from views hierarchy. Subclasses may override. @param child The child view proxy for which return the parent view. @@ -402,7 +402,7 @@ enum { - (void)viewDidDetach; #pragma mark Housecleaning state accessors -//TODO: Sounds like the redundancy department of redundancy was here. +// TODO: Sounds like the redundancy department of redundancy was here. /** Whether or not a view is attached to the view proxy. @return _YES_ if the view proxy has a view attached to it, _NO_ otherwise. @@ -439,7 +439,7 @@ enum { */ - (BOOL)isUsingBarButtonItem; -- (CGRect)appFrame; //TODO: Why is this here? It doesn't have anything to do with a specific instance. +- (CGRect)appFrame; // TODO: Why is this here? It doesn't have anything to do with a specific instance. #pragma mark Building up and tearing down - (void)firePropertyChanges; @@ -554,8 +554,8 @@ enum { */ - (void)willEnqueue; -//Unlike the other layout actions, this one is done by the parent of the one called by refreshView. -//This is the effect of refreshing the Z index via careful view placement. +// Unlike the other layout actions, this one is done by the parent of the one called by refreshView. +// This is the effect of refreshing the Z index via careful view placement. - (void)insertSubview:(UIView *)childView forProxy:(TiViewProxy *)childProxy; #pragma mark Layout commands that need refactoring out @@ -582,7 +582,7 @@ enum { */ - (void)relayout; -- (void)reposition; //Todo: Replace +- (void)reposition; // Todo: Replace /** Tells if the view is enqueued in the LayoutQueue */ @@ -598,7 +598,7 @@ enum { Tells the view that its child view size will change. @param child The child view */ -- (void)childWillResize:(TiViewProxy *)child; //Todo: Replace +- (void)childWillResize:(TiViewProxy *)child; // Todo: Replace - (void)unarchiveFromTemplate:(id)viewTemplate; + (TiViewProxy *)unarchiveFromTemplate:(id)viewTemplate inContext:(id)context; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m index f4b7d214a26..140c9200038 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewProxy.m @@ -422,9 +422,9 @@ - (void)animate:(id)arg } - (void)setAnimation:(id)arg -{ //We don't actually store the animation this way. - //Because the setter doesn't have the argument array, we will be passing a nonarray to animate: - //In this RARE case, this is okay, because TiAnimation animationFromArg handles with or without array. +{ // We don't actually store the animation this way. + // Because the setter doesn't have the argument array, we will be passing a nonarray to animate: + // In this RARE case, this is okay, because TiAnimation animationFromArg handles with or without array. [self animate:arg]; } @@ -485,7 +485,7 @@ -(void)methodName : (id)value \ LAYOUTPROPERTIES_SETTER(setHeight, height, TiDimensionFromObject, [self willChangeSize]) // See below for how we handle setLayout -//LAYOUTPROPERTIES_SETTER(setLayout,layoutStyle,TiLayoutRuleFromObject,[self willChangeLayout]) +// LAYOUTPROPERTIES_SETTER(setLayout,layoutStyle,TiLayoutRuleFromObject,[self willChangeLayout]) LAYOUTPROPERTIES_SETTER(setMinWidth, minimumWidth, TiFixedValueRuleFromObject, [self willChangeSize]) LAYOUTPROPERTIES_SETTER(setMinHeight, minimumHeight, TiFixedValueRuleFromObject, [self willChangeSize]) @@ -496,7 +496,7 @@ -(void)methodName : (id)value \ - (void)setValue:(id)value forUndefinedKey:(NSString *)key { if ([key isEqualToString:[@"lay" stringByAppendingString:@"out"]]) { - //CAN NOT USE THE MACRO + // CAN NOT USE THE MACRO if (ENFORCE_BATCH_UPDATE) { if (updateStarted) { [self setTempProperty:value forKey:key]; @@ -659,8 +659,8 @@ - (id)animatedCenter } }, YES); - //TODO: Should this be a TiPoint? If so, the accessor fetcher might try to - //hold onto the point, which is undesired. + // TODO: Should this be a TiPoint? If so, the accessor fetcher might try to + // hold onto the point, which is undesired. return [NSDictionary dictionaryWithObjectsAndKeys:NUMFLOAT(result.x), @"x", NUMFLOAT(result.y), @"y", nil]; } @@ -808,7 +808,7 @@ - (void)setHidden:(BOOL)newHidden withArgs:(id)args } hidden = newHidden; - //TODO: If we have an animated show, hide, or setVisible, here's the spot for it. + // TODO: If we have an animated show, hide, or setVisible, here's the spot for it. if (parentVisible) { if (hidden) { @@ -823,7 +823,7 @@ - (void)setHidden:(BOOL)newHidden withArgs:(id)args - (CGFloat)autoWidthForSize:(CGSize)size { CGFloat suggestedWidth = size.width; - //This is the content width, which is implemented by widgets + // This is the content width, which is implemented by widgets CGFloat contentWidth = -1.0; if ([self respondsToSelector:@selector(contentWidthForWidth:)]) { contentWidth = [self contentWidthForWidth:suggestedWidth]; @@ -872,7 +872,7 @@ - (CGFloat)autoWidthForSize:(CGSize)size - (CGFloat)autoHeightForSize:(CGSize)size { CGFloat width = size.width; - //This is the content width, which is implemented by widgets + // This is the content width, which is implemented by widgets CGFloat contentHeight = -1.0; if ([self respondsToSelector:@selector(contentHeightForWidth:)]) { contentHeight = [self contentHeightForWidth:width]; @@ -906,7 +906,7 @@ - (CGFloat)autoHeightForSize:(CGSize)size result = thisHeight; } } - //result += currentRowHeight; + // result += currentRowHeight; if (result < contentHeight) { result = contentHeight; @@ -968,7 +968,7 @@ - (CGFloat)minimumParentHeightForSize:(CGSize)size BOOL followsFillBehavior = TiDimensionIsAutoFill([self defaultAutoHeightBehavior:nil]); BOOL recheckForFill = NO; - //Ensure that autoHeightForSize is called with the lowest limiting bound + // Ensure that autoHeightForSize is called with the lowest limiting bound CGFloat desiredWidth = MIN([self minimumParentWidthForSize:size], size.width); CGFloat offset = TiDimensionCalculateValue(layoutProperties.left, size.width) @@ -1018,7 +1018,7 @@ - (TiUIView *)barButtonViewForSize:(CGSize)bounds { TiUIView *barButtonView = [self view]; #ifndef TI_USE_AUTOLAYOUT - //TODO: This logic should have a good place in case that refreshLayout is used. + // TODO: This logic should have a good place in case that refreshLayout is used. LayoutConstraint barButtonLayout = layoutProperties; if (TiDimensionIsUndefined(barButtonLayout.width)) { barButtonLayout.width = TiDimensionAutoSize; @@ -1041,7 +1041,7 @@ - (TiUIView *)barButtonViewForSize:(CGSize)bounds [TiUtils setView:barButtonView positionRect:barBounds]; [barButtonView setAutoresizingMask:UIViewAutoresizingNone]; - //Ensure all the child views are laid out as well + // Ensure all the child views are laid out as well [self windowWillOpen]; [self setParentVisible:YES]; [self layoutChildren:NO]; @@ -1104,7 +1104,7 @@ - (TiUIView *)view #ifndef TI_USE_AUTOLAYOUT // If parent has a non absolute layout signal the parent that - //contents will change else just lay ourselves out + // contents will change else just lay ourselves out if (parent != nil && (!TiLayoutRuleIsAbsolute([parent layoutProperties]->layoutStyle))) { [parent contentsWillChange]; } else { @@ -1125,7 +1125,7 @@ - (TiUIView *)view return view; } -//CAUTION: TO BE USED ONLY WITH TABLEVIEW MAGIC +// CAUTION: TO BE USED ONLY WITH TABLEVIEW MAGIC - (void)setView:(TiUIView *)newView { if (view != newView) { @@ -1151,7 +1151,7 @@ - (NSMutableDictionary *)langConversionTable #pragma mark Methods subclasses should override for behavior changes - (BOOL)optimizeSubviewInsertion { - //Return YES for any view that implements a wrapperView that is a TiUIView (Button and ScrollView currently) and a basic view + // Return YES for any view that implements a wrapperView that is a TiUIView (Button and ScrollView currently) and a basic view return ([view isMemberOfClass:[TiUIView class]]); } @@ -1186,7 +1186,7 @@ - (UIView *)parentViewForChild:(TiViewProxy *)child - (void)windowWillOpen { - //TODO: This should be properly handled and moved, but for now, let's force it (Redundantly, I know.) + // TODO: This should be properly handled and moved, but for now, let's force it (Redundantly, I know.) if (parent != nil) { [self parentWillShow]; } @@ -1225,7 +1225,7 @@ - (void)windowWillOpen pthread_rwlock_unlock(&childrenLock); #ifndef TI_USE_AUTOLAYOUT - //TIMOB-17923 - Do a full layout pass (set proper sandbox) if non absolute layout + // TIMOB-17923 - Do a full layout pass (set proper sandbox) if non absolute layout if (!absoluteLayout) { [self layoutChildren:NO]; } @@ -1322,7 +1322,7 @@ - (BOOL)viewAttached return view != nil && windowOpened; } -//TODO: When swapping about proxies, views are uninitialized, aren't they? +// TODO: When swapping about proxies, views are uninitialized, aren't they? - (BOOL)viewInitialized { return viewInitialized && (view != nil); @@ -1366,7 +1366,7 @@ - (BOOL)isUsingBarButtonItem return isUsingBarButtonItem; } -- (CGRect)appFrame //TODO: Why is this here? It doesn't have anything to do with a specific instance. +- (CGRect)appFrame // TODO: Why is this here? It doesn't have anything to do with a specific instance. { CGRect result = [[[[TiApp app] controller] view] bounds]; return result; @@ -1496,7 +1496,7 @@ - (void)dealloc RELEASE_TO_NIL(destroyLock); pthread_rwlock_destroy(&childrenLock); - //Dealing with children is in _destroy, which is called by super dealloc. + // Dealing with children is in _destroy, which is called by super dealloc. RELEASE_TO_NIL(barButtonItem); [super dealloc]; } @@ -1577,9 +1577,9 @@ - (void)_destroy pthread_rwlock_unlock(&childrenLock); [super _destroy]; - //Part of super's _destroy is to release the modelDelegate, which in our case is ALSO the view. - //As such, we need to have the super happen before we release the view, so that we can insure that the - //release that triggers the dealloc happens on the main thread. + // Part of super's _destroy is to release the modelDelegate, which in our case is ALSO the view. + // As such, we need to have the super happen before we release the view, so that we can insure that the + // release that triggers the dealloc happens on the main thread. if (barButtonItem != nil) { if ([NSThread isMainThread]) { @@ -1610,7 +1610,7 @@ - (void)_destroy - (void)destroy { - //FIXME- me already have a _destroy, refactor this + // FIXME- me already have a _destroy, refactor this [self _destroy]; } @@ -1629,14 +1629,14 @@ - (void)didReceiveMemoryWarning:(NSNotification *)notification // view if it doesn't yet exist (thus defeating the purpose of // this method) - //NOTE: for now, we're going to have to turn this off until post - //1.4 where we can figure out why the drawing is screwed up since - //the views aren't reattaching. + // NOTE: for now, we're going to have to turn this off until post + // 1.4 where we can figure out why the drawing is screwed up since + // the views aren't reattaching. /* - if (view!=nil && [view retainCount]==1) - { - [self detachView]; - }*/ + if (view!=nil && [view retainCount]==1) + { + [self detachView]; + }*/ [super didReceiveMemoryWarning:notification]; } @@ -1644,7 +1644,7 @@ - (void)animationCompleted:(TiAnimation *)animation { [self forgetProxy:animation]; [[self view] animationCompleted]; - //Let us add ourselves to the queue to cleanup layout + // Let us add ourselves to the queue to cleanup layout OSAtomicTestAndClearBarrier(TiRefreshViewEnqueued, &dirtyflags); [self willEnqueue]; } @@ -1704,15 +1704,15 @@ - (BOOL)checkTouchEvent:(NSString *)event return [touchEventsArray containsObject:event]; } -//TODO: Remove once we've properly deprecated. +// TODO: Remove once we've properly deprecated. - (void)fireEvent:(NSString *)type withObject:(id)obj withSource:(id)source propagate:(BOOL)propagate reportSuccess:(BOOL)report errorCode:(int)code message:(NSString *)message; { // Note that some events (like movie 'complete') are fired after the view is removed/dealloc'd. // Because of the handling below, we can safely set the view to 'nil' in this case. TiUIView *proxyView = [self viewAttached] ? view : nil; - //TODO: We have to do view instead of [self view] because of a freaky race condition that can - //happen in the background (See bug 2809). This assumes that view == [self view], which may - //not always be the case in the future. Then again, we shouldn't be dealing with view in the BG... + // TODO: We have to do view instead of [self view] because of a freaky race condition that can + // happen in the background (See bug 2809). This assumes that view == [self view], which may + // not always be the case in the future. Then again, we shouldn't be dealing with view in the BG... // Have to handle the situation in which the proxy's view might be nil... like, for example, // with table rows. Automagically assume any nil view we're firing an event for is A-OK. @@ -1728,9 +1728,9 @@ - (void)fireEvent:(NSString *)type withObject:(id)obj propagate:(BOOL)propagate // Note that some events (like movie 'complete') are fired after the view is removed/dealloc'd. // Because of the handling below, we can safely set the view to 'nil' in this case. TiUIView *proxyView = [self viewAttached] ? view : nil; - //TODO: We have to do view instead of [self view] because of a freaky race condition that can - //happen in the background (See bug 2809). This assumes that view == [self view], which may - //not always be the case in the future. Then again, we shouldn't be dealing with view in the BG... + // TODO: We have to do view instead of [self view] because of a freaky race condition that can + // happen in the background (See bug 2809). This assumes that view == [self view], which may + // not always be the case in the future. Then again, we shouldn't be dealing with view in the BG... // Have to handle the situation in which the proxy's view might be nil... like, for example, // with table rows. Automagically assume any nil view we're firing an event for is A-OK. @@ -1766,7 +1766,7 @@ - (void)_listenerAdded:(NSString *)type count:(int)count } } - //TIMOB-15991 Update children as well + // TIMOB-15991 Update children as well NSArray *childrenArray = [[self children] retain]; for (id child in childrenArray) { if ([child respondsToSelector:@selector(parentListenersChanged)]) { @@ -1787,7 +1787,7 @@ - (void)_listenerRemoved:(NSString *)type count:(int)count } } - //TIMOB-15991 Update children as well + // TIMOB-15991 Update children as well NSArray *childrenArray = [[self children] retain]; for (id child in childrenArray) { if ([child respondsToSelector:@selector(parentListenersChanged)]) { @@ -1851,7 +1851,7 @@ - (void)willChangePosition #ifndef TI_USE_AUTOLAYOUT SET_AND_PERFORM(TiRefreshViewPosition, return ); - if (TiDimensionIsUndefined(layoutProperties.width) || TiDimensionIsUndefined(layoutProperties.height)) { //The only time size can be changed by the margins is if the margins define the size. + if (TiDimensionIsUndefined(layoutProperties.width) || TiDimensionIsUndefined(layoutProperties.height)) { // The only time size can be changed by the margins is if the margins define the size. [self willChangeSize]; } [self willEnqueueIfVisible]; @@ -1863,14 +1863,14 @@ - (void)willChangeZIndex { #ifndef TI_USE_AUTOLAYOUT SET_AND_PERFORM(TiRefreshViewZIndex, ); - //Nothing cascades from here. + // Nothing cascades from here. [self willEnqueueIfVisible]; #endif } - (void)willShow; { - if (dirtyflags) { //If we have any need for changes, let's enroll ourselves. + if (dirtyflags) { // If we have any need for changes, let's enroll ourselves. [self willEnqueue]; } @@ -2028,8 +2028,8 @@ - (void)contentsWillChange if (isAutoSize) { [self willChangeSize]; - } else if (!TiLayoutRuleIsAbsolute(layoutProperties.layoutStyle)) { //Since changing size already does this, we only need to check - //Layout if the changeSize didn't + } else if (!TiLayoutRuleIsAbsolute(layoutProperties.layoutStyle)) { // Since changing size already does this, we only need to check + // Layout if the changeSize didn't [self willChangeLayout]; } #endif @@ -2062,11 +2062,11 @@ - (void)parentWillRelay - (void)parentWillShow { VerboseLog(@"[INFO] Parent Will Show for %@", self); - if (parentVisible) { //Nothing to do here, we're already visible here. + if (parentVisible) { // Nothing to do here, we're already visible here. return; } parentVisible = YES; - if (!hidden) { //We should propagate this new status! Note this does not change the visible property. + if (!hidden) { // We should propagate this new status! Note this does not change the visible property. [self willShow]; } } @@ -2074,11 +2074,11 @@ - (void)parentWillShow - (void)parentWillHide { VerboseLog(@"[INFO] Parent Will Hide for %@", self); - if (!parentVisible) { //Nothing to do here, we're already visible here. + if (!parentVisible) { // Nothing to do here, we're already visible here. return; } parentVisible = NO; - if (!hidden) { //We should propagate this new status! Note this does not change the visible property. + if (!hidden) { // We should propagate this new status! Note this does not change the visible property. [self willHide]; } } @@ -2091,7 +2091,7 @@ - (void)determineSandboxBounds #ifndef TI_USE_AUTOLAYOUT UIView *ourSuperview = [[self view] superview]; if (ourSuperview == nil) { - //TODO: Should we even be relaying out? I guess so. + // TODO: Should we even be relaying out? I guess so. sandboxBounds = CGRectZero; } else { sandboxBounds = [ourSuperview bounds]; @@ -2119,12 +2119,12 @@ - (void)refreshView:(TiUIView *)transferView } BOOL changedFrame = NO; - //BUG BARRIER: Code in this block is legacy code that should be factored out. + // BUG BARRIER: Code in this block is legacy code that should be factored out. if (windowOpened && [self viewAttached]) { CGRect oldFrame = [[self view] frame]; BOOL relayout = ![self suppressesRelayout]; if (parent != nil && (!TiLayoutRuleIsAbsolute([parent layoutProperties]->layoutStyle))) { - //Do not mess up the sandbox in vertical/horizontal layouts + // Do not mess up the sandbox in vertical/horizontal layouts relayout = NO; } if (relayout) { @@ -2138,7 +2138,7 @@ - (void)refreshView:(TiUIView *)transferView } } - //END BUG BARRIER + // END BUG BARRIER if (OSAtomicTestAndClearBarrier(TiRefreshViewSize, &dirtyflags)) { [self refreshSize]; @@ -2159,18 +2159,18 @@ - (void)refreshView:(TiUIView *)transferView [transferView setCenter:positionCache]; } - //We should only recurse if we're a non-absolute layout. Otherwise, the views can take care of themselves. + // We should only recurse if we're a non-absolute layout. Otherwise, the views can take care of themselves. if (OSAtomicTestAndClearBarrier(TiRefreshViewChildrenPosition, &dirtyflags) && (transferView == nil)) - //If transferView is non-nil, this will be managed by the table row. + // If transferView is non-nil, this will be managed by the table row. { } if (transferView != nil) { - //TODO: Better handoff of view + // TODO: Better handoff of view [self setView:transferView]; } - //By now, we MUST have our view set to transferView. + // By now, we MUST have our view set to transferView. if (changedFrame || (transferView != nil)) { [view setAutoresizingMask:autoresizeCache]; } @@ -2372,7 +2372,7 @@ - (void)reposition VerboseLog(@"[INFO] Reposition is exiting early in %@.", self); return; } - if ([NSThread isMainThread]) { //NOTE: This will cause problems with ScrollableView, or is a new wrapper needed? + if ([NSThread isMainThread]) { // NOTE: This will cause problems with ScrollableView, or is a new wrapper needed? [self willChangeSize]; [self willChangePosition]; @@ -2399,7 +2399,7 @@ - (NSArray *)measureChildren:(NSArray *)childArray int i, count = (int)[childArray count]; int maxHeight = 0; - //First measure the sandbox bounds + // First measure the sandbox bounds for (id child in childArray) { TiRect *childRect = [[TiRect alloc] init]; CGRect childBounds = CGRectZero; @@ -2422,8 +2422,8 @@ - (NSArray *)measureChildren:(NSArray *)childArray [childRect release]; } - //If it is a horizontal layout ensure that all the children in a row have the - //same height for the sandbox + // If it is a horizontal layout ensure that all the children in a row have the + // same height for the sandbox if (horizontalNoWrap) { for (i = 0; i < count; i++) { [(TiRect *)[measuredBounds objectAtIndex:i] setHeight:[NSNumber numberWithInt:maxHeight]]; @@ -2434,13 +2434,13 @@ - (NSArray *)measureChildren:(NSArray *)childArray for (i = 0; i < count; i++) { CGRect childSandbox = (CGRect)[(TiRect *)[measuredBounds objectAtIndex:i] rect]; if (startIndex == -1) { - //FIRST ELEMENT + // FIRST ELEMENT startIndex = i; maxHeight = childSandbox.size.height; currentTop = childSandbox.origin.y; } else { if (childSandbox.origin.y != currentTop) { - //MOVED TO NEXT ROW + // MOVED TO NEXT ROW endIndex = i; for (int j = startIndex; j < endIndex; j++) { [(TiRect *)[measuredBounds objectAtIndex:j] setHeight:[NSNumber numberWithInt:maxHeight]]; @@ -2450,13 +2450,13 @@ - (NSArray *)measureChildren:(NSArray *)childArray maxHeight = childSandbox.size.height; currentTop = childSandbox.origin.y; } else if (childSandbox.size.height > maxHeight) { - //SAME ROW HEIGHT CHANGED + // SAME ROW HEIGHT CHANGED maxHeight = childSandbox.size.height; } } } if (endIndex == -1) { - //LAST ROW + // LAST ROW for (i = startIndex; i < count; i++) { [(TiRect *)[measuredBounds objectAtIndex:i] setHeight:[NSNumber numberWithInt:maxHeight]]; } @@ -2479,13 +2479,13 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds boundingValue = 0; } - //Ensure that autoHeightForSize is called with the lowest limiting bound + // Ensure that autoHeightForSize is called with the lowest limiting bound CGFloat desiredWidth = MIN([child minimumParentWidthForSize:bounds.size], bounds.size.width); - //TOP + BOTTOM + // TOP + BOTTOM CGFloat offsetV = TiDimensionCalculateValue([child layoutProperties]->top, bounds.size.height) + TiDimensionCalculateValue([child layoutProperties]->bottom, bounds.size.height); - //LEFT + RIGHT + // LEFT + RIGHT CGFloat offsetH = TiDimensionCalculateValue([child layoutProperties]->left, bounds.size.width) + TiDimensionCalculateValue([child layoutProperties]->right, bounds.size.width); @@ -2495,7 +2495,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds bounds.size.height = TiDimensionCalculateValue(constraint, bounds.size.height) + offsetV; verticalLayoutBoundary += bounds.size.height; } else if (TiDimensionIsAutoFill(constraint)) { - //Fill up the remaining + // Fill up the remaining bounds.size.height = boundingValue; verticalLayoutBoundary += bounds.size.height; } else if (TiDimensionIsAutoSize(constraint)) { @@ -2503,11 +2503,11 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds verticalLayoutBoundary += bounds.size.height; } else if (TiDimensionIsAuto(constraint)) { if (followsFillBehavior) { - //FILL behavior + // FILL behavior bounds.size.height = boundingValue + offsetV; verticalLayoutBoundary += bounds.size.height; } else { - //SIZE behavior + // SIZE behavior bounds.size.height = [child autoHeightForSize:CGSizeMake(desiredWidth - offsetH, boundingValue)] + offsetV; verticalLayoutBoundary += bounds.size.height; } @@ -2524,11 +2524,11 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds bounds.size.height = height + offsetV; verticalLayoutBoundary += bounds.size.height; } else if (followsFillBehavior) { - //FILL behavior + // FILL behavior bounds.size.height = boundingValue + offsetV; verticalLayoutBoundary += bounds.size.height; } else { - //SIZE behavior + // SIZE behavior bounds.size.height = [child autoHeightForSize:CGSizeMake(desiredWidth - offsetH, boundingValue)] + offsetV; verticalLayoutBoundary += bounds.size.height; } @@ -2539,10 +2539,10 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds CGFloat boundingWidth = bounds.size.width - horizontalLayoutBoundary; CGFloat boundingHeight = bounds.size.height - verticalLayoutBoundary; - //LEFT + RIGHT + // LEFT + RIGHT CGFloat offsetH = TiDimensionCalculateValue([child layoutProperties]->left, bounds.size.width) + TiDimensionCalculateValue([child layoutProperties]->right, bounds.size.width); - //TOP + BOTTOM + // TOP + BOTTOM CGFloat offsetV = TiDimensionCalculateValue([child layoutProperties]->top, bounds.size.height) + TiDimensionCalculateValue([child layoutProperties]->bottom, bounds.size.height); @@ -2571,7 +2571,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds desiredWidth = [child autoWidthForSize:CGSizeMake(boundingWidth - offsetH, boundingHeight - offsetV)] + offsetH; } } else { - //This block takes care of auto,SIZE and FILL. If it is size ensure followsFillBehavior is set to false + // This block takes care of auto,SIZE and FILL. If it is size ensure followsFillBehavior is set to false recalculateWidth = YES; desiredWidth = [child autoWidthForSize:CGSizeMake(boundingWidth - offsetH, boundingHeight - offsetV)] + offsetH; if (TiDimensionIsAutoSize(constraint)) { @@ -2583,18 +2583,18 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds CGFloat desiredHeight; BOOL childIsFixedHeight = TiDimensionIsPercent([child layoutProperties]->height) || TiDimensionIsDip([child layoutProperties]->height); if (childIsFixedHeight) { - //For percent width is irrelevant + // For percent width is irrelevant desiredHeight = [child minimumParentHeightForSize:CGSizeMake(0, bounds.size.height)]; bounds.size.height = desiredHeight; } if (horizontalWrap && (desiredWidth > boundingWidth)) { if (horizontalLayoutBoundary == 0.0) { - //This is start of row + // This is start of row bounds.origin.x = horizontalLayoutBoundary; bounds.origin.y = verticalLayoutBoundary; if (!childIsFixedHeight) { - //TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here - //desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; + // TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here + // desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; if (isPercent) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(bounds.size.width, boundingHeight)]; } else { @@ -2605,7 +2605,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds verticalLayoutBoundary += bounds.size.height; horizontalLayoutRowHeight = 0.0; } else { - //This is not the start of row. Move to next row + // This is not the start of row. Move to next row horizontalLayoutBoundary = 0.0; verticalLayoutBoundary += horizontalLayoutRowHeight; horizontalLayoutRowHeight = 0; @@ -2618,8 +2618,8 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds if (!recalculateWidth) { if (desiredWidth < boundingWidth) { if (!childIsFixedHeight) { - //TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here - //desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; + // TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here + // desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; if (isPercent) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(bounds.size.width, boundingHeight)]; } else { @@ -2631,7 +2631,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds bounds.size.width = desiredWidth; horizontalLayoutRowHeight = bounds.size.height; } else { - //Will take up whole row + // Will take up whole row if (!childIsFixedHeight) { if (isPercent) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(bounds.size.width, boundingHeight)]; @@ -2643,7 +2643,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds verticalLayoutBoundary += bounds.size.height; } } else if (followsFillBehavior) { - //Will take up whole row + // Will take up whole row if (!childIsFixedHeight) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(boundingWidth, boundingHeight)]; bounds.size.height = desiredHeight; @@ -2653,8 +2653,8 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds desiredWidth = [child autoWidthForSize:CGSizeMake(boundingWidth - offsetH, boundingHeight - offsetV)] + offsetH; if (desiredWidth < boundingWidth) { if (!childIsFixedHeight) { - //TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here - //desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; + // TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here + // desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; if (isPercent) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(bounds.size.width, boundingHeight)]; } else { @@ -2666,7 +2666,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds horizontalLayoutBoundary = bounds.size.width; horizontalLayoutRowHeight = bounds.size.height; } else { - //Will take up whole row + // Will take up whole row if (!childIsFixedHeight) { if (isPercent) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(bounds.size.width, boundingHeight)]; @@ -2680,10 +2680,10 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds } } } else { - //If it fits update the horizontal layout row height + // If it fits update the horizontal layout row height if (!childIsFixedHeight) { - //TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here - //desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; + // TIMOB-11998. minimumParentHeightForSize:CGSize will limit width anyways. Pass bounding width here + // desiredHeight = [child minimumParentHeightForSize:CGSizeMake(desiredWidth,boundingHeight)]; if (isPercent) { desiredHeight = [child minimumParentHeightForSize:CGSizeMake(bounds.size.width, boundingHeight)]; } else { @@ -2698,11 +2698,11 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds horizontalLayoutRowHeight = bounds.size.height; } if (!recalculateWidth) { - //DIP,PERCENT,UNDEFINED WITH ATLEAST 2 PINS one of them being centerX + // DIP,PERCENT,UNDEFINED WITH ATLEAST 2 PINS one of them being centerX bounds.size.width = desiredWidth; horizontalLayoutBoundary += bounds.size.width; } else if (followsFillBehavior) { - //FILL that fits in left over space. Move to next row + // FILL that fits in left over space. Move to next row bounds.size.width = boundingWidth; if (horizontalWrap) { horizontalLayoutBoundary = 0.0; @@ -2712,7 +2712,7 @@ - (CGRect)computeChildSandbox:(TiViewProxy *)child withBounds:(CGRect)bounds horizontalLayoutBoundary += bounds.size.width; } } else { - //SIZE behavior + // SIZE behavior bounds.size.width = desiredWidth; horizontalLayoutBoundary += bounds.size.width; } @@ -2763,7 +2763,7 @@ - (void)layoutChildren:(BOOL)optimize OSAtomicTestAndSetBarrier(NEEDS_LAYOUT_CHILDREN, &dirtyflags); } - //TODO: This is really expensive, but what can you do? Laying out the child needs the lock again. + // TODO: This is really expensive, but what can you do? Laying out the child needs the lock again. NSArray *childrenArray = [[self children] retain]; NSUInteger childCount = [childrenArray count]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m index cc0937458d6..ab35d0968c7 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m @@ -86,9 +86,9 @@ - (TiUIView *)newView - (BOOL)suppressesRelayout { if (controller != nil) { - //If controller view is not loaded, sandbox bounds will become zero. - //In that case we do not want to mess up our sandbox, which is by default - //mainscreen bounds. It will adjust when view loads. + // If controller view is not loaded, sandbox bounds will become zero. + // In that case we do not want to mess up our sandbox, which is by default + // mainscreen bounds. It will adjust when view loads. return ![controller isViewLoaded]; } return [super suppressesRelayout]; @@ -206,7 +206,7 @@ - (BOOL)isRootViewLoaded - (BOOL)isRootViewAttached { - //When a modal window is up, just return yes + // When a modal window is up, just return yes if ([[[TiApp app] controller] presentedViewController] != nil) { return YES; } @@ -237,7 +237,7 @@ - (KrollPromise *)open:(id)args openPromise = [[KrollPromise alloc] initInContext:context]; } - //Make sure our RootView Controller is attached + // Make sure our RootView Controller is attached if (![self isRootViewLoaded]) { DebugLog(@"[WARN] ROOT VIEW NOT LOADED. WAITING"); [self performSelector:@selector(open:) withObject:args afterDelay:0.1]; @@ -271,11 +271,11 @@ - (KrollPromise *)open:(id)args openAnimation = [[TiAnimation animationFromArg:args context:[self pageContext] create:NO] retain]; [self rememberProxy:openAnimation]; } - //TODO Argument Processing + // TODO Argument Processing id object = [self valueForUndefinedKey:@"orientationModes"]; _supportedOrientations = [TiUtils TiOrientationFlagsFromObject:object]; - //GO ahead and call open on the UI thread + // GO ahead and call open on the UI thread TiThreadPerformOnMainThread( ^{ [self openOnUIThread:args]; @@ -698,7 +698,7 @@ - (void)hideNavBar:(NSArray *)args BOOL animated = [TiUtils boolValue:@"animated" properties:properties def:YES]; [[controller navigationController] setNavigationBarHidden:YES animated:animated]; [self processForSafeArea]; - //TODO: need to fix height + // TODO: need to fix height } } @@ -729,7 +729,7 @@ - (void)hideToolbar:(NSArray *)args } #pragma mark - Appearance and Rotation Callbacks. For subclasses to override. -//Containing controller will call these callbacks(appearance/rotation) on contained windows when it receives them. +// Containing controller will call these callbacks(appearance/rotation) on contained windows when it receives them. - (void)viewWillAppear:(BOOL)animated { id navBarHidden = [self valueForUndefinedKey:@"navBarHidden"]; @@ -848,7 +848,7 @@ - (void)setHidesBackButton:(id)value - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { - //For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) + // For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) NSArray *childProxies = [self children]; for (TiViewProxy *thisProxy in childProxies) { if ([thisProxy respondsToSelector:@selector(viewWillTransitionToSize:withTransitionCoordinator:)]) { @@ -859,7 +859,7 @@ - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { - //For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) + // For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) NSArray *childProxies = [self children]; for (TiViewProxy *thisProxy in childProxies) { if ([thisProxy respondsToSelector:@selector(willTransitionToTraitCollection:withTransitionCoordinator:)]) { @@ -870,7 +870,7 @@ - (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withT - (void)systemLayoutFittingSizeDidChangeForChildContentContainer:(id)container { - //For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) + // For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) NSArray *childProxies = [self children]; for (TiViewProxy *thisProxy in childProxies) { if ([thisProxy respondsToSelector:@selector(systemLayoutFittingSizeDidChangeForChildContentContainer:)]) { @@ -881,7 +881,7 @@ - (void)systemLayoutFittingSizeDidChangeForChildContentContainer:(id)container { - //For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) + // For various views (scrollableView, NavGroup etc this info neeeds to be forwarded) NSArray *childProxies = [self children]; for (TiViewProxy *thisProxy in childProxies) { if ([thisProxy respondsToSelector:@selector(preferredContentSizeDidChangeForChildContentContainer:)]) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/WebFont.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/WebFont.m index 3b2cc87aa5e..d0c820116c7 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/WebFont.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/WebFont.m @@ -126,12 +126,12 @@ - (UIFont *)font } } } else { - //family points to a fully qualified font name (so we hope) + // family points to a fully qualified font name (so we hope) font = [[UIFont fontWithName:family size:self.size] retain]; } } if (font == nil) { - //NO valid family specified. Just check for characteristics. Semi bold is ignored here. + // NO valid family specified. Just check for characteristics. Semi bold is ignored here. if (self.isBoldWeight) { UIFont *theFont = [UIFont systemFontOfSize:self.size weight:UIFontWeightBold]; if (self.isItalicStyle) { @@ -196,7 +196,7 @@ - (BOOL)updateWithDict:(NSDictionary *)fontDict inherits:(WebFont *)inheritedFon didChange = YES; } - float multiplier = 1.0; //Default is px. + float multiplier = 1.0; // Default is px. id sizeObject = [fontDict objectForKey:@"fontSize"]; if ([sizeObject isKindOfClass:[NSString class]]) { @@ -204,7 +204,7 @@ - (BOOL)updateWithDict:(NSDictionary *)fontDict inherits:(WebFont *)inheritedFon if ([sizeObject hasSuffix:@"px"]) { sizeObject = [sizeObject substringToIndex:[sizeObject length] - 2]; } - //TODO: Mod multipler with different suffixes (in, cm, etc) + // TODO: Mod multipler with different suffixes (in, cm, etc) } if ([sizeObject respondsToSelector:@selector(floatValue)]) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.h index 28219e13f2b..5b368d5141d 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.h @@ -39,7 +39,7 @@ + (void)flushCache; + (BOOL)isDarkColor:(UIColor *)color; -//constants for iOS background texture colors. +// constants for iOS background texture colors. extern NSString *const IOS_COLOR_SCROLLVIEW_TEXTURED_BACKGROUND; extern NSString *const IOS_COLOR_VIEW_FLIPSIDE_BACKGROUND; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.m index 98e3b340dee..9553b627b4a 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/Webcolor.m @@ -194,7 +194,7 @@ + (UIColor *)colorForRGBFunction:(NSString *)functionString return nil; } - //Last char must be terminating ). + // Last char must be terminating ). if ([functionString characterAtIndex:stringLength - 1] != ')') { return nil; } @@ -203,7 +203,7 @@ + (UIColor *)colorForRGBFunction:(NSString *)functionString NSRange nextTokenRange; NSUInteger segmentLength; - searchRange.location = openParensRange.location + 1; //Skipping starting ( + searchRange.location = openParensRange.location + 1; // Skipping starting ( searchRange.length = stringLength - searchRange.location - 1; //-1 for terminating ). nextTokenRange = [functionString rangeOfString:@"," options:NSLiteralSearch range:searchRange]; @@ -211,7 +211,7 @@ + (UIColor *)colorForRGBFunction:(NSString *)functionString return nil; } - segmentLength = nextTokenRange.location - searchRange.location; //This does NOT include a comma. + segmentLength = nextTokenRange.location - searchRange.location; // This does NOT include a comma. float firstArg = [[functionString substringWithRange:NSMakeRange(searchRange.location, segmentLength)] floatValue]; searchRange.location += segmentLength + 1; @@ -222,7 +222,7 @@ + (UIColor *)colorForRGBFunction:(NSString *)functionString return nil; } - segmentLength = nextTokenRange.location - searchRange.location; //This does NOT include a comma. + segmentLength = nextTokenRange.location - searchRange.location; // This does NOT include a comma. float secondArg = [[functionString substringWithRange:NSMakeRange(searchRange.location, segmentLength)] floatValue]; searchRange.location += segmentLength + 1; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollCallback.m b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollCallback.m index 83702909929..b6754613bd6 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollCallback.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollCallback.m @@ -89,7 +89,7 @@ - (BOOL)isEqual:(id)anObject return NO; } KrollCallback *otherCallback = (KrollCallback *)anObject; - if (function != NULL) { //TODO: Is there ever two functions with diffent memory pointers + if (function != NULL) { // TODO: Is there ever two functions with diffent memory pointers // that represent the exact same function? I'm thinking not. JSObjectRef ref1 = function; JSObjectRef ref2 = [otherCallback function]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.h b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.h index 3085dca87e5..4bc11293ef0 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.h @@ -31,7 +31,7 @@ id delegate; BOOL stopped; - //Garbage collection variables. + // Garbage collection variables. BOOL gcrequest; unsigned int loopCount; @@ -130,7 +130,7 @@ KrollContext *GetKrollContext(JSContextRef context); -//TODO: After 1.7, move to individual file and convert KrollInvocation and Callbacks to ExpandedInvocationOperation. +// TODO: After 1.7, move to individual file and convert KrollInvocation and Callbacks to ExpandedInvocationOperation. @interface ExpandedInvocationOperation : NSOperation { @private id invocationTarget; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.m b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.m index 650aa835707..73be7e0faf2 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollContext.m @@ -618,7 +618,7 @@ - (id)init stopped = YES; KrollContextCount++; - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! } return self; } @@ -647,7 +647,7 @@ - (oneway void)release - (void)unregisterForNotifications { - WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! + WARN_IF_BACKGROUND_THREAD_OBJ; // NSNotificationCenter is not threadsafe! [[NSNotificationCenter defaultCenter] removeObserver:self]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollMethod.m b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollMethod.m index d34fa0d4495..3f2aed6adc3 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollMethod.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollMethod.m @@ -24,7 +24,7 @@ JSValueRef KrollCallAsFunction(JSContextRef jsContext, JSObjectRef func, JSObjec args = [[NSMutableArray alloc] initWithCapacity:argCount]; for (size_t c = 0; c < argCount; c++) { id value = [KrollObject toID:[o context] value:arguments[c]]; - //TODO: This is a temprorary workaround for the time being. We have to properly take care of [undefined] objects. + // TODO: This is a temprorary workaround for the time being. We have to properly take care of [undefined] objects. if (value == nil) { [args addObject:[NSNull null]]; } else { @@ -82,7 +82,7 @@ JSValueRef KrollCallAsNamedFunction(JSContextRef jsContext, JSObjectRef func, JS args = [[NSMutableArray alloc] initWithCapacity:argCount]; for (size_t c = 0; c < argCount; c++) { id value = [KrollObject toID:[o context] value:arguments[c]]; - //TODO: This is a temprorary workaround for the time being. We have to properly take care of [undefined] objects. + // TODO: This is a temprorary workaround for the time being. We have to properly take care of [undefined] objects. if (value == nil) { [args addObject:[NSNull null]]; } else { @@ -226,7 +226,7 @@ - (id)call:(NSArray *)args { // special generic factory for creating proxy objects for modules if (type == KrollMethodFactory) { - //TODO: This likely could be further optimized later + // TODO: This likely could be further optimized later // BOOL useResult = [_methodSignature methodReturnLength] == sizeof(id); id result = nil; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.h b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.h index 867ed74b5d0..8c1e0d7e3be 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.h @@ -35,7 +35,7 @@ bool KrollDeleteProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope id target; KrollContext *context; JSContextRef jsContext; - KrollBridge *bridge; //Used only in finalizing for sake of safe lookup. + KrollBridge *bridge; // Used only in finalizing for sake of safe lookup. } @property (nonatomic, assign) BOOL finalized; @property (nonatomic, readonly) KrollBridge *bridge; @@ -52,10 +52,10 @@ bool KrollDeleteProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope /** Checks if a property with the given name exists on our target. - + Contains all the magic of valueForKey withouth trying to retrieve any actual value. - + The checks for property existance are done in the following order: * The Kroll object's own statics and properties cache * Dynamic getter and setter in the form of getSomeProperty or setSomeProperty @@ -66,11 +66,11 @@ bool KrollDeleteProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope * Method with the same name on the target and single parameter * Method with the same name on the target and no parameter * Create factory method - + As soon as one of the above checks passes this method returns true, meaning the property exists. If none of the checks passed the property does not exists and the method returns false. - + @param propertyName The property name to check for. */ - (BOOL)hasProperty:(NSString *)propertyName; @@ -80,7 +80,7 @@ bool KrollDeleteProperty(JSContextRef ctx, JSObjectRef object, JSStringRef prope - (void)setStaticValue:(id)value forKey:(NSString *)key purgable:(BOOL)purgable; - (id)target; -//TODO: Lots of copypasted code in these methods could be refactored out. +// TODO: Lots of copypasted code in these methods could be refactored out. @property (nonatomic, assign) JSObjectRef propsObject; - (JSObjectRef)jsobject; - (JSValueRef)jsvalueForUndefinedKey:(NSString *)key; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.m b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.m index 295d61fbee6..e07746c11f9 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollObject.m @@ -179,7 +179,7 @@ bool KrollHasProperty(JSContextRef jsContext, JSObjectRef object, JSStringRef pr // callback for handling retrieving an objects property (in JS land) // -//TODO: We should fetch from the props object and shortcut some of this. Especially now that callbacks are CURRENTLY write-only. +// TODO: We should fetch from the props object and shortcut some of this. Especially now that callbacks are CURRENTLY write-only. JSValueRef KrollGetProperty(JSContextRef jsContext, JSObjectRef object, JSStringRef prop, JSValueRef *exception) { // Debugger may actually try to get properties off global Kroll property (which is a special case KrollContext singleton) @@ -208,14 +208,14 @@ JSValueRef KrollGetProperty(JSContextRef jsContext, JSObjectRef object, JSString if ([result isKindOfClass:[KrollWrapper class]]) { if (![KrollBridge krollBridgeExists:[(KrollWrapper *)result bridge]]) { - //This remote object no longer exists. + // This remote object no longer exists. [o deleteKey:name]; result = nil; } else { JSObjectRef cachedObject = [o objectForTiString:prop context:jsContext]; JSObjectRef remoteFunction = [(KrollWrapper *)result jsobject]; if ((cachedObject != NULL) && (cachedObject != remoteFunction)) { - [o forgetObjectForTiString:prop context:jsContext]; //Clean up the old property. + [o forgetObjectForTiString:prop context:jsContext]; // Clean up the old property. } if (remoteFunction != NULL) { [o noteObject:remoteFunction forTiString:prop context:jsContext]; @@ -409,7 +409,7 @@ - (id)initWithTarget:(id)target_ context:(KrollContext *)context_ { if (self = [self init]) { #if DEBUG - //TODO: See if this actually happens, and if not, remove this extra check. + // TODO: See if this actually happens, and if not, remove this extra check. if ([(KrollBridge *)[context_ delegate] usesProxy:target_] && [self isMemberOfClass:[KrollObject class]]) { DeveloperLog(@"[WARN] Bridge %@ already has target %@!", [context_ delegate], target_); } @@ -866,7 +866,7 @@ - (void)setValue:(id)value forKey:(NSString *)key return; } selector = NSSelectorFromString([NSString stringWithFormat:@"set%@:", name]); - if ([target respondsToSelector:selector] && ![name isEqualToString:@"ZIndex"]) //TODO: Quick hack is quick. + if ([target respondsToSelector:selector] && ![name isEqualToString:@"ZIndex"]) // TODO: Quick hack is quick. { [target performSelector:selector withObject:value]; } else { @@ -1200,7 +1200,7 @@ - (void)storeListener:(id)eventCallbackOrWrapper forEvent:(NSString *)eventName JSObjectSetPropertyAtIndex(jsContext, jsCallbackArray, arrayLength, callbackFunction, &exception); } - //TODO: Call back to the proxy? + // TODO: Call back to the proxy? JSStringRelease(jsEventTypeString); } @@ -1211,7 +1211,7 @@ - (JSObjectRef)callbacksForEvent:(JSStringRef)jsEventTypeString } JSObjectRef jsEventHash = (JSObjectRef)JSObjectGetProperty(jsContext, self.propsObject, kTiStringEventKey, NULL); - if ((jsEventHash == NULL) || (JSValueGetType(jsContext, jsEventHash) != kJSTypeObject)) { //We did not have any event listeners on this proxy. Perfectly normal. + if ((jsEventHash == NULL) || (JSValueGetType(jsContext, jsEventHash) != kJSTypeObject)) { // We did not have any event listeners on this proxy. Perfectly normal. return NULL; } @@ -1291,11 +1291,11 @@ - (void)triggerEvent:(NSString *)eventName withObject:(NSDictionary *)eventData /** Protects the underlying JSObjectRef from being accidentally GC'ed. - + The KrollObject's JSObjectRef is stored on the heap and therefore not automatically protected against GC unless it is referenced via a variable on the stack or inside the JS object graph! - + If JSC's garbage collection runs while the JSObjectRef is not protected it is lost and eventually leads to crashes inside the JSC runtime. */ @@ -1315,7 +1315,7 @@ - (void)applyGarbageCollectionSafeguard /** Removes the garbage collection safeguard by unprotecting the JSObjectRef again. - + This may only be called when the JSObjectRef is referenced on the stack or in the JS object graph. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollPromise.h b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollPromise.h index 1270d704dbc..9c833c47526 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollPromise.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Kroll/KrollPromise.h @@ -3,7 +3,7 @@ * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. * Licensed under the terms of the Apache Public License * Please see the LICENSE included with this distribution for details. -*/ + */ #ifndef KrollPromise_h #define KrollPromise_h diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m index e109208b2af..dfc658b53aa 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m @@ -377,8 +377,8 @@ - (NSNumber *)append:(id)args id arg = [args objectAtIndex:0]; if ([arg isKindOfClass:[TiFile class]]) { - //allow the ability to append files to another file - //e.g. file.append(Ti.Filesystem.getFile('somewhere')); + // allow the ability to append files to another file + // e.g. file.append(Ti.Filesystem.getFile('somewhere')); TiFile *file_arg = (TiFile *)arg; NSError *err = nil; @@ -406,7 +406,7 @@ - (NSNumber *)append:(id)args } if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { - //create the file if it doesn't exist already + // create the file if it doesn't exist already NSError *writeError = nil; [data writeToFile:path options:NSDataWritingFileProtectionComplete | NSDataWritingAtomic error:&writeError]; if (writeError != nil) { @@ -435,7 +435,7 @@ - (NSNumber *)write:(id)args ENSURE_TYPE(args, NSArray); id arg = [args objectAtIndex:0]; - //Short-circuit against non-supported types + // Short-circuit against non-supported types if (!([arg isKindOfClass:[TiFile class]] || [arg isKindOfClass:[TiBlob class]] || [arg isKindOfClass:[NSString class]])) { return NUMBOOL(NO); @@ -444,8 +444,8 @@ - (NSNumber *)write:(id)args if ([args count] > 1) { ENSURE_TYPE([args objectAtIndex:1], NSNumber); - //We have a second argument, is it truthy? - //If yes, we'll hand the args to -append: + // We have a second argument, is it truthy? + // If yes, we'll hand the args to -append: NSNumber *append = [args objectAtIndex:1]; if ([append boolValue]) { return [self append:[args subarrayWithRange:NSMakeRange(0, 1)]]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileStreamProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileStreamProxy.m index 36a3b32a080..1b39a6bfb4d 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileStreamProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileStreamProxy.m @@ -33,8 +33,8 @@ - (id)_initWithPageContext:(id)context args:(NSArray *)args } @try { - //If the mode is *not* TI_WRITE and the file path is non-existent, throw exception - //Otherwise, create a blank file at the specified path + // If the mode is *not* TI_WRITE and the file path is non-existent, throw exception + // Otherwise, create a blank file at the specified path NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:filePath]) { @@ -46,7 +46,7 @@ - (id)_initWithPageContext:(id)context args:(NSArray *)args [NSException raise:NSInternalInconsistencyException format:@"An error occurred while trying to create the file."]; } } else { - //If the file exists and the mode is TI_WRITE, truncate the file. + // If the file exists and the mode is TI_WRITE, truncate the file. if (mode == TI_WRITE) { NSError *error = nil; [[NSData data] writeToFile:filePath options:NSDataWritingFileProtectionComplete | NSDataWritingAtomic error:&error]; @@ -63,7 +63,7 @@ - (id)_initWithPageContext:(id)context args:(NSArray *)args } if (handle == nil) { - //something went wrong with creating the file handle + // something went wrong with creating the file handle [NSException raise:NSInternalInconsistencyException format:@""]; } } @@ -73,7 +73,7 @@ - (id)_initWithPageContext:(id)context args:(NSArray *)args location:CODELOCATION]; } - //we made it, retain the file handle. + // we made it, retain the file handle. fileHandle = [handle retain]; @@ -109,7 +109,7 @@ - (unsigned long long)currentFileSize { unsigned long long offset = [fileHandle offsetInFile]; unsigned long long size = [fileHandle seekToEndOfFile]; - [fileHandle seekToFileOffset:offset]; //revert to previous position + [fileHandle seekToFileOffset:offset]; // revert to previous position return size; } @@ -136,7 +136,7 @@ - (NSInteger)readToBuffer:(TiBuffer *)buffer offset:(NSInteger)offset length:(NS } if ([fileHandle offsetInFile] >= [self currentFileSize]) { - //out of bounds + // out of bounds if (callback != nil) { NSMutableDictionary *event = [TiUtils dictionaryWithCode:-1 message:nil]; [event setObject:NUMINT(-1) forKey:@"bytesProcessed"]; @@ -203,7 +203,7 @@ - (NSInteger)writeFromBuffer:(TiBuffer *)buffer offset:(NSInteger)offset length: if (slicedData != nil) { @try { [fileHandle writeData:slicedData]; - [fileHandle synchronizeFile]; //force immediate save to disk + [fileHandle synchronizeFile]; // force immediate save to disk if (callback != nil) { NSMutableDictionary *event = [TiUtils dictionaryWithCode:0 message:nil]; @@ -258,7 +258,7 @@ - (NSInteger)writeToStream:(id)output chunkSize:(NSInteger)siz [tempBuffer setData:[NSMutableData dataWithBytesNoCopy:bytes length:readLength freeWhenDone:YES]]; bytesWritten = [output writeFromBuffer:tempBuffer offset:0 length:readLength callback:nil]; - //call callback + // call callback if (callback != nil) { NSMutableDictionary *event = [TiUtils dictionaryWithCode:0 message:nil]; [event setObject:self forKey:@"fromStream"]; @@ -267,7 +267,7 @@ - (NSInteger)writeToStream:(id)output chunkSize:(NSInteger)siz [self _fireEventToListener:@"writeToStream" withObject:event listener:callback thisObject:nil]; } } else { - //EOF + // EOF return totalBytes; } } @@ -317,12 +317,12 @@ - (void)pumpToCallback:(KrollCallback *)callback chunkSize:(NSInteger)maxSize as unsigned long long totalBytes = 0; if (maxSize > remaining) { - //truncate to avoid buffer overruns + // truncate to avoid buffer overruns maxSize = (int)remaining; } while ([fileHandle offsetInFile] < [self currentFileSize]) { - //create temporary buffer + // create temporary buffer unsigned long long readLengthMax = MIN(maxSize, [self currentFileSize] - [fileHandle offsetInFile]); if (readLengthMax > INT_MAX) { readLengthMax = INT_MAX; @@ -337,7 +337,7 @@ - (void)pumpToCallback:(KrollCallback *)callback chunkSize:(NSInteger)maxSize as VerboseLog(@"pumping data: %@", buffer); - //invoke callback, passing the chunked data + // invoke callback, passing the chunked data NSMutableDictionary *event = [TiUtils dictionaryWithCode:0 message:nil]; [event setObject:self forKey:@"source"]; [event setObject:buffer forKey:@"buffer"]; @@ -350,7 +350,7 @@ - (void)pumpToCallback:(KrollCallback *)callback chunkSize:(NSInteger)maxSize as maxSize = (int)remaining; } - //are we going to hit EOF? if so, invoke the callback with a -1 bytesProcessed event dict + // are we going to hit EOF? if so, invoke the callback with a -1 bytesProcessed event dict if (remaining == 0) { [event setObject:NUMINT(-1) forKey:@"bytesProcessed"]; [self _fireEventToListener:@"pump" withObject:event listener:callback thisObject:nil]; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.h b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.h index 5a5209fe7ff..536309528a9 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.h @@ -10,7 +10,7 @@ #import "TiViewProxy.h" #import "TiWindowProxy.h" -//TODO: we probably should split this ViewProxy into a a separate TiUIView like normal +// TODO: we probably should split this ViewProxy into a separate TiUIView like normal @interface TiUIWindowProxy : TiWindowProxy { @private diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.m index 6e3aed65195..04af732df17 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiUIWindowProxy.m @@ -20,13 +20,13 @@ // much smoother on the new window during a tab transition #define EXTERNAL_JS_WAIT_TIME (150 / 1000) -/** +/** * This class is a helper that will be used when we have an external * window w/ JS so that we can attempt to wait for the window context * to be fully loaded on the UI thread (since JS runs in a different * thread) and attempt to wait up til EXTERNAL_JS_WAIT_TIME before * timing out. If timed out, will go ahead and start opening the window - * and as the JS context finishes, will continue opening from there - + * and as the JS context finishes, will continue opening from there - * this has a nice effect of immediately opening if fast but not delaying * if slow (so you get weird button delay effects for example) * @@ -325,7 +325,7 @@ - (void)setNavTintColor:(id)color ^{ if (controller != nil) { if (newColor == nil) { - //Get from TabGroup + // Get from TabGroup newColor = [TiUtils colorValue:[[self tabGroup] valueForKey:@"navTintColor"]]; } UINavigationBar *navBar = [[controller navigationController] navigationBar]; @@ -448,7 +448,7 @@ - (void)updateBarImage [ourNB setBackgroundImage:resizableImage forBarMetrics:UIBarMetricsDefault]; - //You can only set up the shadow image with a custom background image. + // You can only set up the shadow image with a custom background image. id shadowImageValue = [self valueForUndefinedKey:@"shadowImage"]; theImage = [TiUtils toImage:shadowImageValue proxy:self]; @@ -462,7 +462,7 @@ - (void)updateBarImage } else { BOOL clipValue = [TiUtils boolValue:[self valueForUndefinedKey:@"hideShadow"] def:NO]; if (clipValue) { - //Set an empty Image. + // Set an empty Image. ourNB.shadowImage = [[[UIImage alloc] init] autorelease]; if ([self shouldUseNavBarApperance]) { ourNB.standardAppearance.shadowColor = nil; @@ -522,7 +522,7 @@ - (void)setTranslucent:(id)value - (void)updateNavButtons { - //Update LeftNavButton + // Update LeftNavButton NSDictionary *lProperties = [self valueForUndefinedKey:@"leftNavSettings"]; id leftNavButtons = [self valueForUndefinedKey:@"leftNavButtons"]; if (!IS_NULL_OR_NIL(leftNavButtons)) { @@ -531,7 +531,7 @@ - (void)updateNavButtons leftNavButtons = [self valueForUndefinedKey:@"leftNavButton"]; [self setLeftNavButton:leftNavButtons withObject:lProperties]; } - //Update RightNavButton + // Update RightNavButton NSDictionary *rProperties = [self valueForUndefinedKey:@"rightNavSettings"]; id rightNavButtons = [self valueForUndefinedKey:@"rightNavButtons"]; if (!IS_NULL_OR_NIL(rightNavButtons)) { @@ -580,7 +580,7 @@ - (void)setRightNavButtons:(id)arg withObject:(id)properties NSArray *curValues = [self valueForUndefinedKey:@"rightNavButtons"]; ENSURE_TYPE_OR_NIL(curValues, NSArray); - //Clean up current values + // Clean up current values for (TiViewProxy *curProxy in curValues) { if (![(NSArray *)arg containsObject:curProxy]) { [curProxy removeBarButtonView]; @@ -650,7 +650,7 @@ - (void)setLeftNavButtons:(id)arg withObject:(id)properties NSArray *curValues = [self valueForUndefinedKey:@"leftNavButtons"]; ENSURE_TYPE_OR_NIL(curValues, NSArray); - //Clean up current values + // Clean up current values for (TiViewProxy *curProxy in curValues) { if (![(NSArray *)arg containsObject:curProxy]) { [curProxy removeBarButtonView]; @@ -743,8 +743,8 @@ - (void)setBackButtonTitle:(id)proxy ENSURE_UI_THREAD_1_ARG(proxy); [self replaceValue:proxy forKey:@"backButtonTitle" notification:NO]; if (controller != nil) { - [self refreshBackButton]; //Because this is actually a property of a DIFFERENT view controller, - //we can't attach this until we're in the navbar stack. + [self refreshBackButton]; // Because this is actually a property of a DIFFERENT view controller, + // we can't attach this until we're in the navbar stack. } } @@ -753,15 +753,15 @@ - (void)setBackButtonTitleImage:(id)proxy ENSURE_UI_THREAD_1_ARG(proxy); [self replaceValue:proxy forKey:@"backButtonTitleImage" notification:NO]; if (controller != nil) { - [self refreshBackButton]; //Because this is actually a property of a DIFFERENT view controller, - //we can't attach this until we're in the navbar stack. + [self refreshBackButton]; // Because this is actually a property of a DIFFERENT view controller, + // we can't attach this until we're in the navbar stack. } } - (void)updateNavBar { - //Called from the view when the screen rotates. - //Resize titleControl and barImage based on navbar bounds + // Called from the view when the screen rotates. + // Resize titleControl and barImage based on navbar bounds if (!shouldUpdateNavBar || controller == nil || [controller navigationController] == nil) { return; // No need to update the title if not in a nav controller } @@ -789,7 +789,7 @@ - (void)updateTitleView availableTitleSize.width = barFrame.size.width - (2 * TI_NAVBAR_BUTTON_WIDTH); availableTitleSize.height = barFrame.size.height; - //Check for titlePrompt. Ugly hack. Assuming 50% for prompt height. + // Check for titlePrompt. Ugly hack. Assuming 50% for prompt height. if (ourNavItem.prompt != nil) { availableTitleSize.height /= 2.0f; barFrame.origin.y = barFrame.size.height = availableTitleSize.height; @@ -801,7 +801,7 @@ - (void)updateTitleView if ([oldView isKindOfClass:[TiUIView class]]) { TiViewProxy *oldProxy = (TiViewProxy *)[(TiUIView *)oldView proxy]; if (oldProxy == titleControl) { - //relayout titleControl + // relayout titleControl CGRect barBounds; barBounds.origin = CGPointZero; #ifndef TI_USE_AUTOLAYOUT @@ -810,7 +810,7 @@ - (void)updateTitleView [oldView setBounds:barBounds]; [oldView setAutoresizingMask:UIViewAutoresizingNone]; - //layout the titleControl children + // layout the titleControl children [titleControl layoutChildren:NO]; return; @@ -822,7 +822,7 @@ - (void)updateTitleView newTitleView = [titleControl barButtonViewForSize:availableTitleSize]; } else { NSURL *path = [TiUtils toURL:[self valueForKey:@"titleImage"] proxy:self]; - //Todo: This should be [TiUtils navBarTitleViewSize] with the thumbnail scaling. For now, however, we'll go with auto. + // Todo: This should be [TiUtils navBarTitleViewSize] with the thumbnail scaling. For now, however, we'll go with auto. UIImage *image = [[ImageLoader sharedLoader] loadImmediateImage:path withSize:CGSizeZero]; if (image != nil) { if ([oldView isKindOfClass:[UIImageView class]]) { @@ -1014,7 +1014,7 @@ - (void)setupWindowDecorations return; } - //Need to clear title for titleAttributes to apply correctly on iOS6. + // Need to clear title for titleAttributes to apply correctly on iOS6. [[controller navigationItem] setTitle:nil]; SETPROP(@"titleAttributes", setTitleAttributes); SETPROP(@"title", setTitle); @@ -1065,7 +1065,7 @@ - (void)updateStatusBarView if (view) { id top = [[self safeAreaViewProxy] valueForKey:@"top"]; if (top && [top floatValue] != frame.size.height) { - //TIMOB-28323: Once fixed by apple, remove it. + // TIMOB-28323: Once fixed by apple, remove it. frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, [top floatValue]); } view.frame = frame; diff --git a/package-lock.json b/package-lock.json index b47ee97599b..e16762bc6a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,25 +11,25 @@ "license": "Apache-2.0", "dependencies": { "@babel/core": "7.11.6", - "@babel/types": "7.11.5", - "@npmcli/arborist": "2.10.0", + "@babel/types": "7.23.6", + "@npmcli/arborist": "7.2.2", "always-tail": "0.2.0", "ansi-escapes": "4.3.2", "appc-tasks": "1.0.3", - "archiver": "5.3.1", - "async": "3.2.4", + "archiver": "6.0.1", + "async": "3.2.5", "boxen": "5.1.2", "buffer-equal": "1.0.1", - "clean-css": "5.3.2", + "clean-css": "5.3.3", "colors": "1.4.0", "ejs": "3.1.9", "fields": "0.1.24", - "fs-extra": "10.0.0", + "fs-extra": "11.2.0", "ioslib": "1.7.35", "liveview": "1.5.6", "lodash.merge": "4.6.2", "markdown": "0.5.0", - "moment": "2.29.4", + "moment": "2.30.1", "node-appc": "1.1.6", "node-titanium-sdk": "6.0.0", "node-uuid": "1.4.8", @@ -37,7 +37,7 @@ "p-limit": "3.1.0", "pngjs": "7.0.0", "request": "2.88.2", - "semver": "7.3.8", + "semver": "7.5.4", "simple-plist": "1.3.1", "sprintf": "0.1.5", "temp": "0.9.4", @@ -57,21 +57,21 @@ "@seadub/danger-plugin-eslint": "2.0.0", "@seadub/danger-plugin-junit": "0.3.0", "babel-plugin-transform-titanium": "0.1.1", - "chai": "4.3.7", - "clang-format": "1.5.0", - "commander": "8.2.0", + "chai": "5.0.0", + "clang-format": "1.6.0", + "commander": "11.1.0", "commitizen": "4.3.0", - "conventional-changelog-cli": "2.2.2", + "conventional-changelog-cli": "4.1.0", "core-js": "3.27.2", "core-js-compat": "3.6.5", "cz-conventional-changelog": "3.3.0", - "danger": "10.6.6", + "danger": "11.3.1", "eslint": "8.13.0", - "eslint-config-axway": "7.0.0", - "eslint-plugin-mocha": "10.0.4", + "eslint-config-axway": "8.0.0", + "eslint-plugin-mocha": "10.2.0", "folder-hash": "4.0.4", - "glob": "7.2.0", - "husky": "7.0.2", + "glob": "8.1.0", + "husky": "8.0.3", "lint-staged": "11.1.2", "lockfile-lint": "4.10.1", "mocha": "9.2.2", @@ -80,22 +80,23 @@ "nyc": "15.1.0", "request-promise-native": "1.0.9", "rollup": "2.76.0", - "ssri": "8.0.1", + "ssri": "10.0.4", "stream-splitter": "0.3.2", - "strip-ansi": "6.0.1", + "strip-ansi": "7.1.0", "titanium": "6.1.1", - "titanium-docgen": "4.10.3" + "titanium-docgen": "4.10.4" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -161,19 +162,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", @@ -185,19 +173,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", @@ -210,19 +185,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", @@ -317,19 +279,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-explode-assignable-expression/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-function-name": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", @@ -342,19 +291,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-hoist-variables": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", @@ -366,19 +302,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", @@ -390,19 +313,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", @@ -414,19 +324,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-transforms": { "version": "7.21.2", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", @@ -445,19 +342,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", @@ -469,19 +353,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-plugin-utils": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", @@ -507,19 +378,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-replace-supers": { "version": "7.20.7", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", @@ -536,19 +394,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-simple-access": { "version": "7.20.2", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", @@ -560,19 +405,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", @@ -584,19 +416,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-split-export-declaration": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", @@ -608,31 +427,18 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } @@ -659,19 +465,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.21.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", @@ -685,26 +478,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -1478,25 +1258,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "deprecated": "🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information.", - "dev": true, - "dependencies": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - } - }, - "node_modules/@babel/polyfill/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, "node_modules/@babel/preset-env": { "version": "7.10.2", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", @@ -1623,19 +1384,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/traverse": { "version": "7.21.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", @@ -1656,29 +1404,19 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, "node_modules/@commitlint/cli": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-13.2.0.tgz", @@ -1990,6 +1728,20 @@ "node": ">=v12" } }, + "node_modules/@commitlint/read/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@commitlint/resolve-extends": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-13.2.0.tgz", @@ -2192,10 +1944,68 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "node_modules/@gitbeaker/core": { + "version": "35.8.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/core/-/core-35.8.1.tgz", + "integrity": "sha512-KBrDykVKSmU9Q9Gly8KeHOgdc0lZSa435srECxuO0FGqqBcUQ82hPqUc13YFkkdOI9T1JRA3qSFajg8ds0mZKA==", + "dev": true, + "dependencies": { + "@gitbeaker/requester-utils": "^35.8.1", + "form-data": "^4.0.0", + "li": "^1.3.0", + "mime": "^3.0.0", + "query-string": "^7.0.0", + "xcase": "^2.0.1" + }, + "engines": { + "node": ">=14.2.0" + } + }, + "node_modules/@gitbeaker/node": { + "version": "35.8.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/node/-/node-35.8.1.tgz", + "integrity": "sha512-g6rX853y61qNhzq9cWtxIEoe2KDeFBtXAeWMGWJnc3nz3WRump2pIICvJqw/yobLZqmTNt+ea6w3/n92Mnbn3g==", + "deprecated": "Please use its successor @gitbeaker/rest", + "dev": true, + "dependencies": { + "@gitbeaker/core": "^35.8.1", + "@gitbeaker/requester-utils": "^35.8.1", + "delay": "^5.0.0", + "got": "^11.8.3", + "xcase": "^2.0.1" + }, + "engines": { + "node": ">=14.2.0" + } + }, + "node_modules/@gitbeaker/requester-utils": { + "version": "35.8.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.8.1.tgz", + "integrity": "sha512-MFzdH+Z6eJaCZA5ruWsyvm6SXRyrQHjYVR6aY8POFraIy7ceIHOprWCs1R+0ydDZ8KtBnd8OTHjlJ0sLtSFJCg==", + "dev": true, + "dependencies": { + "form-data": "^4.0.0", + "qs": "^6.10.1", + "xcase": "^2.0.1" + }, + "engines": { + "node": ">=14.2.0" + } + }, + "node_modules/@gitbeaker/requester-utils/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/@humanwhocodes/config-array": { "version": "0.9.5", @@ -2218,47 +2028,111 @@ "dev": true }, "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz", + "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" } }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "node": ">=12" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { @@ -2401,15 +2275,12 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, + "node_modules/@mapbox/node-pre-gyp/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": { @@ -2443,18 +2314,6 @@ "node": ">=10" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -2480,162 +2339,628 @@ "set-blocking": "^2.0.0" } }, + "node_modules/@mapbox/node-pre-gyp/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/@npmcli/arborist": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", - "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", - "dependencies": { - "@isaacs/string-locale-compare": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^1.0.2", - "@npmcli/metavuln-calculator": "^1.1.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.1", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.2", - "bin-links": "^2.2.1", - "cacache": "^15.0.3", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.2.2.tgz", + "integrity": "sha512-dIIzyhy1zS2dYPS8bdM/8qA8W2evQE9KENBxVOhFthm/2RKqf2ninRWQc8xfc5f1gsiTxTP20Y9flIfziHfSKA==", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.0.1", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "proc-log": "^1.0.0", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" }, "bin": { "arborist": "bin/index.js" }, "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/arborist/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/arborist/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@npmcli/arborist/node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/arborist/node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.3.tgz", + "integrity": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.0.0.tgz", + "integrity": "sha512-Pw0tyX02VkpqlIQlG2TeiJNsdrecYeUU0ubZZa9pi3N37GCsxI+en43u4hYFdq+eSx1A9a9vwFAUyqEtKFsbHQ==", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/metavuln-calculator/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.0.tgz", + "integrity": "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "node_modules/@npmcli/package-json/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "brace-expansion": "^2.0.1" }, - "bin": { - "installed-package-contents": "index.js" + "engines": { + "node": ">=16 || 14 >=14.17" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { - "node": ">= 10" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", - "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", + "node_modules/@npmcli/package-json/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", - "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", - "dependencies": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" + "node_modules/@npmcli/package-json/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz", + "integrity": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "which": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==" - }, - "node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==" + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } }, - "node_modules/@npmcli/package-json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", - "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "node_modules/@npmcli/query": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.1.tgz", + "integrity": "sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA==", "dependencies": { - "infer-owner": "^1.0.4" + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.2.tgz", + "integrity": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/@octokit/auth-token": { @@ -2744,13 +3069,6 @@ "@octokit/openapi-types": "^16.0.0" } }, - "node_modules/@octokit/core/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true - }, "node_modules/@octokit/endpoint": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", @@ -2762,12 +3080,6 @@ "universal-user-agent": "^6.0.0" } }, - "node_modules/@octokit/endpoint/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, "node_modules/@octokit/graphql": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.5.tgz", @@ -2848,13 +3160,6 @@ "@octokit/openapi-types": "^16.0.0" } }, - "node_modules/@octokit/graphql/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true - }, "node_modules/@octokit/openapi-types": { "version": "12.11.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", @@ -2862,21 +3167,15 @@ "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", - "dev": true, - "dependencies": { - "@octokit/types": "^2.0.1" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "dev": true, "dependencies": { - "@types/node": ">= 8" + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" } }, "node_modules/@octokit/plugin-request-log": { @@ -2889,22 +3188,16 @@ } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "dev": true, "dependencies": { - "@octokit/types": "^2.0.1", + "@octokit/types": "^6.39.0", "deprecation": "^2.3.1" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "dependencies": { - "@types/node": ">= 8" + }, + "peerDependencies": { + "@octokit/core": ">=3" } }, "node_modules/@octokit/request": { @@ -2922,64 +3215,52 @@ } }, "node_modules/@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, "dependencies": { - "@octokit/types": "^2.0.0", + "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", "once": "^1.4.0" } }, - "node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", "dev": true, "dependencies": { - "@types/node": ">= 8" + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" } }, - "node_modules/@octokit/request/node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "node_modules/@octokit/rest/node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", "dev": true, "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" } }, - "node_modules/@octokit/request/node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - }, - "node_modules/@octokit/rest": { - "version": "16.43.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", - "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", - "dev": true, - "dependencies": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" + "node_modules/@octokit/rest/node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" } }, "node_modules/@octokit/types": { @@ -2991,6 +3272,15 @@ "@octokit/openapi-types": "^12.11.0" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", @@ -3035,6 +3325,26 @@ "rollup": "^2.38.3" } }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@rollup/plugin-node-resolve": { "version": "13.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", @@ -3104,6 +3414,26 @@ "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, + "node_modules/@seadub/clang-format-lint/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@seadub/clang-format-lint/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -3176,6 +3506,70 @@ "node": ">=10" } }, + "node_modules/@seadub/danger-plugin-junit/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@sigstore/bundle": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz", + "integrity": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.0.tgz", + "integrity": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==", + "dependencies": { + "@sigstore/bundle": "^2.1.0", + "@sigstore/protobuf-specs": "^0.2.1", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.2.0.tgz", + "integrity": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.1", + "tuf-js": "^2.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -3200,12 +3594,46 @@ "node": ">=10" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", + "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@types/cacheable-request": { @@ -3353,7 +3781,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -3397,28 +3824,14 @@ } }, "node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { - "debug": "^4.1.0", - "depd": "^2.0.0", - "humanize-ms": "^1.2.1" + "debug": "4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 6.0.0" } }, "node_modules/aggregate-error": { @@ -3496,11 +3909,14 @@ } }, "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/ansi-styles": { @@ -3570,67 +3986,36 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz", + "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==", "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "archiver-utils": "^4.0.1", + "async": "^3.2.4", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz", + "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==", "dependencies": { - "glob": "^7.1.4", + "glob": "^8.0.0", "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", + "lodash": "^4.17.15", "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" + "node": ">= 12.0.0" } }, "node_modules/archy": { @@ -3640,39 +4025,53 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.1.tgz", + "integrity": "sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA==", "dependencies": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^4.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/are-we-there-yet/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/are-we-there-yet/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/are-we-there-yet/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { - "safe-buffer": "~5.1.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/arg": { @@ -3687,33 +4086,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -3752,15 +4124,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -3806,11 +4169,6 @@ "node": ">=0.10.0" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -3828,21 +4186,12 @@ } }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, "node_modules/astral-regex": { @@ -3855,9 +4204,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/async-retry": { "version": "1.2.3", @@ -3881,24 +4230,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==", - "dev": true - }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -3924,6 +4255,11 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, "node_modules/babel-helper-evaluate-path": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", @@ -4143,36 +4479,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4215,19 +4521,40 @@ } }, "node_modules/bin-links": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", - "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.3.tgz", + "integrity": "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA==", "dependencies": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/binary-extensions": { @@ -4242,6 +4569,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -4416,16 +4744,11 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", - "dev": true - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -4490,63 +4813,136 @@ "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/cacache": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", + "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { - "node": ">= 10" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, + "node_modules/cacache/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/cacheable-lookup": { @@ -4699,21 +5095,19 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.0.0.tgz", + "integrity": "sha512-HO5p0oEKd5M6HEcwOkNAThAE3j960vIZvVcc0t2tI06Dd0ATu69cEnMB2wOhC5/ZyQ6m67w3ePjU/HzXsSsdBA==", "dev": true, "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "assertion-error": "^2.0.1", + "check-error": "^2.0.0", + "deep-eql": "^5.0.1", + "loupe": "^3.0.0", + "pathval": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/chalk": { @@ -4736,12 +5130,12 @@ "dev": true }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz", + "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==", "dev": true, "engines": { - "node": "*" + "node": ">= 16" } }, "node_modules/chokidar": { @@ -4795,9 +5189,9 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "node_modules/clang-format": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.5.0.tgz", - "integrity": "sha512-C1LucFX7E+ABVYcPEbBHM4PYQ2+WInXsqsLpFlQ9cmRfSbk7A7b1I06h/nE4bQ3MsyEkb31jY2gC0Dtc76b4IA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.6.0.tgz", + "integrity": "sha512-W3/L7fWkA8DoLkz9UGjrRnNi+J5a5TuS2HDLqk6WsicpOzb66MBu4eY/EcXhicHriVnAXWQVyk5/VeHWY6w4ow==", "dev": true, "dependencies": { "async": "^1.5.2", @@ -4816,108 +5210,30 @@ "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/clang-format/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "node": "*" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dependencies": { "source-map": "~0.6.0" }, @@ -5015,6 +5331,27 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -5037,35 +5374,11 @@ } }, "node_modules/cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", - "dependencies": { - "mkdirp-infer-owner": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.2.tgz", + "integrity": "sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw==", "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/color-convert": { @@ -5120,12 +5433,12 @@ } }, "node_modules/commander": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", - "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "engines": { - "node": ">= 12" + "node": ">=16" } }, "node_modules/commitizen": { @@ -5214,24 +5527,18 @@ "dot-prop": "^5.1.0" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz", + "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==", "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, "node_modules/concat-map": { @@ -5245,222 +5552,450 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "node_modules/conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-5.1.0.tgz", + "integrity": "sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-atom": "^4.0.0", + "conventional-changelog-codemirror": "^4.0.0", + "conventional-changelog-conventionalcommits": "^7.0.2", + "conventional-changelog-core": "^7.0.0", + "conventional-changelog-ember": "^4.0.0", + "conventional-changelog-eslint": "^5.0.0", + "conventional-changelog-express": "^4.0.0", + "conventional-changelog-jquery": "^5.0.0", + "conventional-changelog-jshint": "^4.0.0", + "conventional-changelog-preset-loader": "^4.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-4.0.0.tgz", + "integrity": "sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-cli": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-4.1.0.tgz", + "integrity": "sha512-MscvILWZ6nWOoC+p/3Nn3D2cVLkjeQjyZPUr0bQ+vUORE/SPrkClJh8BOoMNpS4yk+zFJ5LlgXACxH6XGQoRXA==", + "dev": true, + "dependencies": { + "add-stream": "^1.0.0", + "conventional-changelog": "^5.1.0", + "meow": "^12.0.1", + "tempfile": "^5.0.0" + }, + "bin": { + "conventional-changelog": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-cli/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-4.0.0.tgz", + "integrity": "sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-7.0.0.tgz", + "integrity": "sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^5.0.0", + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-parser": "^5.0.0", + "git-raw-commits": "^4.0.0", + "git-semver-tags": "^7.0.0", + "hosted-git-info": "^7.0.0", + "normalize-package-data": "^6.0.0", + "read-pkg": "^8.0.0", + "read-pkg-up": "^10.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-core/node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dev": true, "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "node_modules/conventional-changelog-core/node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "text-extensions": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "node_modules/conventional-changelog-core/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/conventional-changelog-core/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/conventional-changelog-core/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dev": true, "dependencies": { - "q": "^1.5.1" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/conventional-changelog-cli": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz", - "integrity": "sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA==", + "node_modules/conventional-changelog-core/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog": "^3.1.24", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "tempfile": "^3.0.0" + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" }, - "bin": { - "conventional-changelog": "cli.js" + "engines": { + "node": ">=16" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "node_modules/conventional-changelog-core/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "dependencies": { - "q": "^1.5.1" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" }, "engines": { - "node": ">=10" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "node_modules/conventional-changelog-core/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">= 10.x" } }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "node_modules/conventional-changelog-core/node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "dev": true, - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-4.0.0.tgz", + "integrity": "sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==", "dev": true, - "dependencies": { - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-5.0.0.tgz", + "integrity": "sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==", "dev": true, - "dependencies": { - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-4.0.0.tgz", + "integrity": "sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==", "dev": true, - "dependencies": { - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-5.0.0.tgz", + "integrity": "sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==", "dev": true, - "dependencies": { - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-4.0.0.tgz", + "integrity": "sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-4.1.0.tgz", + "integrity": "sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", "dev": true, "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", + "conventional-commits-filter": "^4.0.0", "handlebars": "^4.7.7", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" }, "bin": { - "conventional-changelog-writer": "cli.js" + "conventional-changelog-writer": "cli.mjs" }, "engines": { - "node": ">=10" + "node": ">=16" } }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-writer/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/conventional-changelog/node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog/node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" } }, "node_modules/conventional-commit-types": { @@ -5470,16 +6005,12 @@ "dev": true }, "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", "dev": true, - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, "engines": { - "node": ">=10" + "node": ">=16" } }, "node_modules/conventional-commits-parser": { @@ -5507,15 +6038,6 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/core-js": { "version": "3.27.2", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", @@ -5581,15 +6103,15 @@ } }, "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz", + "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==", "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } }, "node_modules/create-require": { @@ -5602,7 +6124,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5612,6 +6133,17 @@ "node": ">= 8" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", @@ -5642,45 +6174,47 @@ } }, "node_modules/danger": { - "version": "10.6.6", - "resolved": "https://registry.npmjs.org/danger/-/danger-10.6.6.tgz", - "integrity": "sha512-RBqANs6xbWSCqZMy3+/eIYuC9kd7g5NqJ8PqDJKylPhvBoJEDkDrHQvExYHiP2UquvaZcPWsKohmOQXrosrpdw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/danger/-/danger-11.3.1.tgz", + "integrity": "sha512-+slkGnbf0czY7g4LSuYpYkKJgFrb9YIXFJvV5JAuLLF39CXLlUw0iebgeL3ASK1t6RDb8xe+Rk2F5ilh2Hdv2w==", "dev": true, "dependencies": { - "@babel/polyfill": "^7.2.5", - "@octokit/rest": "^16.43.1", + "@gitbeaker/core": "^35.8.1", + "@gitbeaker/node": "^35.8.1", + "@octokit/rest": "^18.12.0", "async-retry": "1.2.3", "chalk": "^2.3.0", "commander": "^2.18.0", + "core-js": "^3.8.2", "debug": "^4.1.1", "fast-json-patch": "^3.0.0-1", "get-stdin": "^6.0.0", - "gitlab": "^10.0.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", "hyperlinker": "^1.0.0", "json5": "^2.1.0", - "jsonpointer": "^4.0.1", - "jsonwebtoken": "^8.4.0", + "jsonpointer": "^5.0.0", + "jsonwebtoken": "^9.0.0", "lodash.find": "^4.6.0", "lodash.includes": "^4.3.0", "lodash.isobject": "^3.0.2", "lodash.keys": "^4.0.8", "lodash.mapvalues": "^4.6.0", "lodash.memoize": "^4.1.2", - "memfs-or-file-map-to-github-branch": "^1.1.0", - "micromatch": "^3.1.10", + "memfs-or-file-map-to-github-branch": "^1.2.1", + "micromatch": "^4.0.4", "node-cleanup": "^2.1.2", - "node-fetch": "2.6.1", + "node-fetch": "^2.6.7", "override-require": "^1.1.1", "p-limit": "^2.1.0", "parse-diff": "^0.7.0", "parse-git-config": "^2.0.3", "parse-github-url": "^1.0.2", - "parse-link-header": "^1.0.1", + "parse-link-header": "^2.0.0", "pinpoint": "^1.1.0", "prettyjson": "^1.2.1", "readline-sync": "^1.4.9", + "regenerator-runtime": "^0.13.9", "require-from-string": "^2.0.2", "supports-hyperlinks": "^1.0.1" }, @@ -5694,6 +6228,9 @@ "danger-process": "distribution/commands/danger-process.js", "danger-reset-status": "distribution/commands/danger-reset-status.js", "danger-runner": "distribution/commands/danger-runner.js" + }, + "engines": { + "node": ">=14.13.1" } }, "node_modules/danger/node_modules/commander": { @@ -5702,15 +6239,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/danger/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, "node_modules/danger/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -5759,15 +6287,6 @@ "url": "https://opencollective.com/date-fns" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -5784,14 +6303,6 @@ } } }, - "node_modules/debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", - "engines": { - "node": "*" - } - }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -5869,13 +6380,10 @@ "dev": true }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", + "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, "engines": { "node": ">=6" } @@ -5947,17 +6455,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/delayed-stream": { @@ -5973,14 +6480,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -6013,15 +6512,6 @@ "node": ">=8" } }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -6055,6 +6545,11 @@ "node": ">=8" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6122,6 +6617,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -6263,21 +6759,6 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dev": true, - "dependencies": { - "es6-promise": "^4.0.3" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -6347,18 +6828,18 @@ } }, "node_modules/eslint-config-axway": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-axway/-/eslint-config-axway-7.0.0.tgz", - "integrity": "sha512-qeoE9UZxGttQfy9YyIEiGa1l33tzciztRul46COWGGOCRnMyU1fqJChOvkp7Ek5VvWqSqwU511qH1i+9CD2olw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-axway/-/eslint-config-axway-8.0.0.tgz", + "integrity": "sha512-k0YDZb1TxFTgU1qxN5d/LWpypio7IpLo86spW4LjvSJIIv3QaeuIllTizvuP5HT16ExFQl8oloMUNXVDjqGpsA==", "dev": true, "dependencies": { "eslint-plugin-chai-expect": "^3.0.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-security": "^1.4.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-security": "^1.7.1", "find-root": "^1.1.0", - "semver": "^7.3.4" + "semver": "^7.3.8" }, "peerDependencies": { "eslint": "8.x" @@ -6423,9 +6904,9 @@ } }, "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "dependencies": { "eslint-utils": "^2.0.0", @@ -6524,73 +7005,45 @@ "semver": "bin/semver.js" } }, - "node_modules/eslint-plugin-mocha": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.4.tgz", - "integrity": "sha512-8wzAeepVY027oBHz/TmBmUr7vhVqoC1KTFeDybFLhbaWKx+aQ7fJJVuUsqcUy+L+G+XvgQBJY+cbAf7hl5DF7Q==", - "dev": true, - "dependencies": { - "eslint-utils": "^3.0.0", - "ramda": "^0.28.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/eslint-plugin-mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", + "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", "dev": true, "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "eslint-utils": "^3.0.0", + "rambda": "^7.4.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=14.0.0" }, "peerDependencies": { - "eslint": ">=5.16.0" + "eslint": ">=7.0.0" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "engines": { - "node": ">=6" + "node": ">=12.22.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-promise": { @@ -6666,6 +7119,15 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6751,6 +7213,18 @@ "node": ">=8" } }, + "node_modules/eslint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6856,11 +7330,18 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, "engines": { "node": ">=6" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -6884,143 +7365,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -7033,24 +7377,16 @@ "node": ">=0.10.0" } }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -7065,58 +7401,6 @@ "node": ">=4" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -7139,6 +7423,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "node_modules/fast-json-patch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", @@ -7341,18 +7630,6 @@ "micromatch": "^4.0.2" } }, - "node_modules/find-yarn-workspace-root/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/findup-sync": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz", @@ -7368,19 +7645,6 @@ "node": ">= 8" } }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -7455,15 +7719,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -7486,29 +7741,17 @@ } }, "node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/fromentries": { @@ -7531,11 +7774,6 @@ } ] }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, "node_modules/fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", @@ -7546,16 +7784,16 @@ } }, "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.14" } }, "node_modules/fs-minipass": { @@ -7626,61 +7864,51 @@ } }, "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "node": ">=14" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/gensync": { @@ -7701,9 +7929,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" @@ -7738,93 +7966,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", - "dev": true, - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-pkg-repo/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -7862,15 +8003,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -7933,86 +8065,47 @@ "node": ">=10" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "dev": true, - "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-7.0.1.tgz", + "integrity": "sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==", "dev": true, "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" + "meow": "^12.0.1", + "semver": "^7.5.2" }, "bin": { - "git-semver-tags": "cli.js" + "git-semver-tags": "cli.mjs" }, "engines": { - "node": ">=10" - } - }, - "node_modules/git-semver-tags/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "dev": true, - "dependencies": { - "ini": "^1.3.2" + "node": ">=16" } }, - "node_modules/gitlab": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/gitlab/-/gitlab-10.2.1.tgz", - "integrity": "sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg==", - "deprecated": "The gitlab package has found a new home in the @gitbeaker organization. For the latest gitlab node library, check out @gitbeaker/node. A full list of the features can be found here: https://github.com/jdalrymple/gitbeaker#readme", + "node_modules/git-semver-tags/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, - "dependencies": { - "form-data": "^2.5.0", - "humps": "^2.0.1", - "ky": "^0.12.0", - "ky-universal": "^0.3.0", - "li": "^1.3.0", - "query-string": "^6.8.2", - "universal-url": "^2.0.0" - }, "engines": { - "node": ">=10.0.0" + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8030,6 +8123,25 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -8159,13 +8271,13 @@ } }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -8302,45 +8414,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -8366,15 +8439,6 @@ "node": ">=8" } }, - "node_modules/hasurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz", - "integrity": "sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -8400,6 +8464,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -8419,33 +8484,28 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "node_modules/http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "agent-base": "4", - "debug": "3.1.0" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 4.5.0" + "node": ">= 6" } }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "node_modules/http-proxy-agent/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">= 10" } }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -8486,25 +8546,15 @@ } }, "node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" + "node": ">= 6" } }, "node_modules/human-signals": { @@ -8525,30 +8575,16 @@ "node": "*" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/humps": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz", - "integrity": "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==", - "dev": true - }, "node_modules/husky": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz", - "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, "bin": { "husky": "lib/bin.js" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -8620,11 +8656,36 @@ } }, "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/import-fresh": { @@ -8668,11 +8729,6 @@ "node": ">=8" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -8716,7 +8772,16 @@ "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/inquirer/node_modules/ansi-styles": { @@ -8777,6 +8842,18 @@ "node": ">=8" } }, + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/inquirer/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8850,18 +8927,6 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -8921,12 +8986,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -8961,18 +9020,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -8988,20 +9035,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -9016,30 +9049,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -9099,18 +9108,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -9126,18 +9123,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -9354,15 +9339,6 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -9522,6 +9498,23 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -9651,7 +9644,8 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema": { "version": "0.4.0", @@ -9713,9 +9707,9 @@ ] }, "node_modules/jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true, "engines": { "node": ">=0.10.0" @@ -9738,34 +9732,19 @@ } }, "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", "dev": true, "dependencies": { "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", + "lodash": "^4.17.21", "ms": "^2.1.1", - "semver": "^5.6.0" + "semver": "^7.3.8" }, "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=12", + "npm": ">=6" } }, "node_modules/jsprim": { @@ -9783,14 +9762,14 @@ } }, "node_modules/just-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", - "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==" }, "node_modules/just-diff-apply": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", - "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==" }, "node_modules/jwa": { "version": "1.4.1", @@ -9844,31 +9823,6 @@ "graceful-fs": "^4.1.11" } }, - "node_modules/ky": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.12.0.tgz", - "integrity": "sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ky-universal": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.3.0.tgz", - "integrity": "sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "node-fetch": "^2.6.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "ky": ">=0.12.0" - } - }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -10055,19 +10009,6 @@ "node": ">=8" } }, - "node_modules/lint-staged/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/lint-staged/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10416,6 +10357,15 @@ "node": ">=10.0.0" } }, + "node_modules/lockfile-lint/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/lockfile-lint/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -10427,6 +10377,18 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/lockfile-lint/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lockfile-lint/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -10450,16 +10412,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, "node_modules/lodash.find": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", @@ -10469,7 +10421,8 @@ "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true }, "node_modules/lodash.flattendeep": { "version": "4.4.0", @@ -10489,47 +10442,12 @@ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "dev": true - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "dev": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "dev": true - }, "node_modules/lodash.isobject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true - }, "node_modules/lodash.keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", @@ -10559,35 +10477,6 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true - }, - "node_modules/lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==", - "dev": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -10692,6 +10581,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/log-update/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -10742,6 +10640,18 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -10777,12 +10687,12 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.0.2.tgz", + "integrity": "sha512-Tzlkbynv7dtqxTROe54Il+J4e/zG2iehtJGZUYpTv8WzlkW9qyEcE83UhGJCeuF3SCfzHuM5VWhBi47phV3+AQ==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lowercase-keys": { @@ -10805,18 +10715,6 @@ "node": ">=10" } }, - "node_modules/macos-release": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", - "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -10848,81 +10746,39 @@ "semver": "bin/semver.js" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true }, - "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", "dependencies": { - "agent-base": "6", - "debug": "4" + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" }, "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, "node_modules/map-obj": { @@ -10937,18 +10793,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/markdown": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", @@ -11182,109 +11026,27 @@ "dev": true }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { - "is-extendable": "^0.1.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, "node_modules/mime-db": { @@ -11378,30 +11140,46 @@ } }, "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dependencies": { - "minipass": "^3.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">= 8" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dependencies": { - "minipass": "^3.1.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "optionalDependencies": { - "encoding": "^0.1.12" + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-flush": { @@ -11458,19 +11236,6 @@ "node": ">= 8" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -11482,19 +11247,6 @@ "node": ">=10" } }, - "node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/mocha": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", @@ -11570,6 +11322,15 @@ "node": ">=6" } }, + "node_modules/mocha/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -11616,6 +11377,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/mocha/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11643,6 +11436,18 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/mocha/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -11685,19 +11490,10 @@ "node": ">=10" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } @@ -11730,28 +11526,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -11819,6 +11593,20 @@ "node": ">=10" } }, + "node_modules/node-appc/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-cleanup": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", @@ -11830,55 +11618,162 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { - "whatwg-url": "^5.0.0" + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": "4.x || >=6.0.0" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "node_modules/node-gyp/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" + "abbrev": "^2.0.0" }, "bin": { - "node-gyp": "bin/node-gyp.js" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">= 10.12.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/node-gyp/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dependencies": { - "abbrev": "1" + "isexe": "^3.1.1" }, "bin": { - "nopt": "bin/nopt.js" + "node-which": "bin/which.js" }, "engines": { - "node": ">=6" + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/node-ios-device": { @@ -11957,6 +11852,11 @@ "node": ">=6.0.0" } }, + "node_modules/node-titanium-sdk/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, "node_modules/node-titanium-sdk/node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -12035,84 +11935,116 @@ } }, "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dependencies": { "semver": "^7.1.1" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "lru-cache": "^10.0.1" }, - "bin": { - "npm-packlist": "bin/index.js" + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm-packlist": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.1.tgz", + "integrity": "sha512-MQpL27ZrsJQ2kiAuQPpZb5LtJwydNRnI15QWXsf3WHERu4rzjRj6Zju/My2fov7tLuu3Gle/uoIX/DDZ3u4O4Q==", + "dependencies": { + "ignore-walk": "^6.0.4" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz", + "integrity": "sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==", "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm-run-all": { @@ -12220,22 +12152,17 @@ } }, "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/nyc": { @@ -12279,6 +12206,15 @@ "node": ">=8.9" } }, + "node_modules/nyc/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12345,6 +12281,26 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/nyc/node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -12396,6 +12352,18 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -12467,91 +12435,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -12579,18 +12462,6 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", @@ -12609,18 +12480,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.values": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", @@ -12638,12 +12497,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -12744,6 +12597,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/ora/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12802,29 +12664,28 @@ "node": ">=8" } }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/os-tmpdir": { @@ -12850,15 +12711,6 @@ "node": ">=8" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -12927,35 +12779,53 @@ } }, "node_modules/pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.5.tgz", + "integrity": "sha512-TAE0m20zSDMnchPja9vtQjri19X3pZIyRpm2TJVeI+yU42leJBBDTRYhOcWFsPhaMxf+3iwQkFiKz16G9AEeeA==", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, "bin": { "pacote": "lib/bin.js" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pacote/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/parent-module": { @@ -12967,17 +12837,28 @@ "callsites": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=6" + } + }, + "node_modules/parse-conflict-json": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/parse-conflict-json": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", - "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" + "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/parse-diff": { @@ -13031,9 +12912,9 @@ } }, "node_modules/parse-link-header": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", - "integrity": "sha512-Z0gpfHmwCIKDr5rRzjypL+p93aHVWO7e+0rFcUl9E3sC67njjs+xHFenuboSXZGlvYtmQqRzRaE3iFpTUnLmFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", + "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", "dev": true, "dependencies": { "xtend": "~4.0.1" @@ -13048,15 +12929,6 @@ "node": ">=0.10.0" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/patch-package": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", @@ -13159,6 +13031,25 @@ "node": ">=10" } }, + "node_modules/patch-package/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/patch-package/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -13256,7 +13147,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -13266,6 +13156,37 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -13276,12 +13197,12 @@ } }, "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, "engines": { - "node": "*" + "node": ">= 14.16" } }, "node_modules/pend": { @@ -13322,15 +13243,6 @@ "node": ">=0.10" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pinpoint": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pinpoint/-/pinpoint-1.1.0.tgz", @@ -13430,13 +13342,16 @@ "node": ">=14.19.0" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/prelude-ls": { @@ -13462,9 +13377,20 @@ } }, "node_modules/proc-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", - "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } }, "node_modules/process-nextick-args": { "version": "2.0.1", @@ -13500,9 +13426,9 @@ } }, "node_modules/promise-call-limit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", - "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -13566,12 +13492,12 @@ } }, "node_modules/query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", "dev": true, "dependencies": { - "decode-uri-component": "^0.2.0", + "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" @@ -13583,6 +13509,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -13592,15 +13523,11 @@ "node": ">=8" } }, - "node_modules/ramda": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", - "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } + "node_modules/rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", + "dev": true }, "node_modules/randombytes": { "version": "2.1.0", @@ -13612,20 +13539,163 @@ } }, "node_modules/read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", + "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } }, "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/read-package-json/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/read-pkg": { @@ -13643,83 +13713,217 @@ } }, "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" }, "engines": { - "node": ">=4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/read-pkg-up/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "p-try": "^1.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" }, "engines": { - "node": ">=4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/read-pkg-up/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { @@ -13810,18 +14014,6 @@ "node": ">=10" } }, - "node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -13884,28 +14076,6 @@ "@babel/runtime": "^7.8.4" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/regexp-tree": { "version": "0.1.24", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", @@ -13991,24 +14161,6 @@ "node": ">=4" } }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -14175,13 +14327,6 @@ "node": ">=8" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -14207,15 +14352,6 @@ "node": ">=8" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -14244,6 +14380,25 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/rollup": { "version": "2.76.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.76.0.tgz", @@ -14325,9 +14480,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -14358,59 +14513,10 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -14422,7 +14528,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -14466,6 +14571,20 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "node_modules/sigstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz", + "integrity": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==", + "dependencies": { + "@sigstore/bundle": "^2.1.0", + "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/sign": "^2.1.0", + "@sigstore/tuf": "^2.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/simple-plist": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", @@ -14551,194 +14670,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -14753,27 +14684,27 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/source-map": { @@ -14784,20 +14715,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -14817,13 +14734,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -14852,7 +14762,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -14861,14 +14770,12 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -14877,20 +14784,7 @@ "node_modules/spdx-license-ids": { "version": "3.0.13", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" }, "node_modules/split-on-first": { "version": "1.1.0", @@ -14901,18 +14795,6 @@ "node": ">=6" } }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -14962,14 +14844,22 @@ } }, "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dependencies": { - "minipass": "^3.1.1" + "minipass": "^5.0.0" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" } }, "node_modules/stack-trace": { @@ -14981,102 +14871,6 @@ "node": "*" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -15102,6 +14896,15 @@ "buffers": "~0.1.1" } }, + "node_modules/streamx": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -15141,6 +14944,58 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.padend": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", @@ -15227,6 +15082,21 @@ } }, "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -15237,6 +15107,14 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -15246,15 +15124,6 @@ "node": ">=8" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -15349,18 +15218,13 @@ } }, "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/tar/node_modules/minipass": { @@ -15384,12 +15248,31 @@ } }, "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=14.16" + } + }, + "node_modules/temp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/temp/node_modules/mkdirp": { @@ -15415,26 +15298,18 @@ } }, "node_modules/tempfile": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz", - "integrity": "sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz", + "integrity": "sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==", "dev": true, "dependencies": { - "temp-dir": "^2.0.0", - "uuid": "^3.3.2" + "temp-dir": "^3.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tempfile/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/test-exclude": { @@ -15451,6 +15326,26 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -15508,9 +15403,9 @@ } }, "node_modules/titanium-docgen": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/titanium-docgen/-/titanium-docgen-4.10.3.tgz", - "integrity": "sha512-zslxOc2+XZiEZEVCk9Gll36rFWRhC9XFl0nof5NIbKTsDslXjaDdigKIa00ilQShu5/mOqsmd0mWAo2+Sefnag==", + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/titanium-docgen/-/titanium-docgen-4.10.4.tgz", + "integrity": "sha512-ERWrLEbiyhLU3WBFRaKlqCkjwqFShNQYz0WZvYUFknvI73nQF9g6aihW6uvMvQaLg9Mk5oxWBaD2KvEPJ89bQw==", "dev": true, "dependencies": { "colors": "^1.4.0", @@ -15563,57 +15458,18 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" } }, "node_modules/to-regex-range": { @@ -15635,15 +15491,6 @@ "node": ">=0.12.0" } }, - "node_modules/to-regex/node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -15662,9 +15509,12 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/treeverse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", - "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/trim-newlines": { "version": "3.0.1", @@ -15749,6 +15599,19 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, + "node_modules/tuf-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz", + "integrity": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==", + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -15777,15 +15640,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -15815,6 +15669,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "dependencies": { "is-typedarray": "^1.0.0" } @@ -15902,93 +15757,33 @@ "node": ">=4" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "unique-slug": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dependencies": { - "unique-slug": "^2.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dependencies": { "imurmurhash": "^0.1.4" - } - }, - "node_modules/universal-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz", - "integrity": "sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==", - "dev": true, - "dependencies": { - "hasurl": "^1.0.0", - "whatwg-url": "^7.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/universal-url/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/universal-url/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/universal-url/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", - "dev": true, - "dependencies": { - "os-name": "^3.1.0" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true }, "node_modules/universalify": { "version": "2.0.0", @@ -16006,54 +15801,6 @@ "node": ">= 0.4.0" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -16087,22 +15834,6 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -16126,18 +15857,20 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dependencies": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/verror": { @@ -16154,9 +15887,9 @@ } }, "node_modules/walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" }, "node_modules/wcwidth": { "version": "1.0.1", @@ -16192,211 +15925,78 @@ "node-which": "bin/node-which" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/win-fork": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/win-fork/-/win-fork-1.1.1.tgz", - "integrity": "sha512-kMnrXXHyb/Zx1ynkiMtcEgq+rxXFIfs/IhhxVBmIk+1KwPyIggZU0RAiADExhSyf0NESvCWQyfO4eGdlU9fBSw==", - "bin": { - "win-fork": "bin/win-spawn", - "win-line-endings": "bin/win-line-endings", - "win-spawn": "bin/win-spawn" - } - }, - "node_modules/windows-release": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", - "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", - "dev": true, - "dependencies": { - "execa": "^1.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/windows-release/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/windows-release/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/windows-release/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/windows-release/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/windows-release/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/windows-release/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/windows-release/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true }, - "node_modules/windows-release/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/windows-release/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/windows-release/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dependencies": { - "isexe": "^2.0.0" + "string-width": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/win-fork": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-fork/-/win-fork-1.1.1.tgz", + "integrity": "sha512-kMnrXXHyb/Zx1ynkiMtcEgq+rxXFIfs/IhhxVBmIk+1KwPyIggZU0RAiADExhSyf0NESvCWQyfO4eGdlU9fBSw==", "bin": { - "which": "bin/which" + "win-fork": "bin/win-spawn", + "win-line-endings": "bin/win-line-endings", + "win-spawn": "bin/win-spawn" } }, "node_modules/winston": { @@ -16462,6 +16062,80 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16492,6 +16166,17 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -16501,6 +16186,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -16508,6 +16194,12 @@ "typedarray-to-buffer": "^3.1.5" } }, + "node_modules/xcase": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz", + "integrity": "sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==", + "dev": true + }, "node_modules/xcode": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", @@ -16683,26 +16375,27 @@ } }, "node_modules/zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz", + "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==", "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 10" + "node": ">= 12.0.0" } } }, "dependencies": { "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" } }, "@babel/compat-data": { @@ -16749,18 +16442,6 @@ "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-annotate-as-pure": { @@ -16769,18 +16450,6 @@ "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "requires": { "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -16790,18 +16459,6 @@ "requires": { "@babel/helper-explode-assignable-expression": "^7.18.6", "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-compilation-targets": { @@ -16871,18 +16528,6 @@ "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", "requires": { "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-function-name": { @@ -16892,18 +16537,6 @@ "requires": { "@babel/template": "^7.20.7", "@babel/types": "^7.21.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-hoist-variables": { @@ -16912,18 +16545,6 @@ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", "requires": { "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-member-expression-to-functions": { @@ -16932,18 +16553,6 @@ "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", "requires": { "@babel/types": "^7.21.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-module-imports": { @@ -16952,18 +16561,6 @@ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "requires": { "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-module-transforms": { @@ -16979,18 +16576,6 @@ "@babel/template": "^7.20.7", "@babel/traverse": "^7.21.2", "@babel/types": "^7.21.2" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-optimise-call-expression": { @@ -16999,18 +16584,6 @@ "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", "requires": { "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-plugin-utils": { @@ -17027,18 +16600,6 @@ "@babel/helper-environment-visitor": "^7.18.9", "@babel/helper-wrap-function": "^7.18.9", "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-replace-supers": { @@ -17052,18 +16613,6 @@ "@babel/template": "^7.20.7", "@babel/traverse": "^7.20.7", "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-simple-access": { @@ -17072,18 +16621,6 @@ "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", "requires": { "@babel/types": "^7.20.2" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -17092,18 +16629,6 @@ "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", "requires": { "@babel/types": "^7.20.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-split-export-declaration": { @@ -17112,29 +16637,17 @@ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", "requires": { "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==" }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" }, "@babel/helper-validator-option": { "version": "7.21.0", @@ -17150,18 +16663,6 @@ "@babel/template": "^7.18.10", "@babel/traverse": "^7.20.5", "@babel/types": "^7.20.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/helpers": { @@ -17171,28 +16672,16 @@ "requires": { "@babel/template": "^7.20.7", "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.21.0" } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, @@ -17669,24 +17158,6 @@ "@babel/helper-plugin-utils": "^7.18.6" } }, - "@babel/polyfill": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", - "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.4" - }, - "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "dev": true - } - } - }, "@babel/preset-env": { "version": "7.10.2", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", @@ -17798,18 +17269,6 @@ "@babel/code-frame": "^7.18.6", "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/traverse": { @@ -17827,27 +17286,15 @@ "@babel/types": "^7.21.3", "debug": "^4.1.0", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - } } }, "@babel/types": { - "version": "7.11.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", - "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "requires": { - "@babel/helper-validator-identifier": "^7.10.4", - "lodash": "^4.17.19", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -18082,6 +17529,19 @@ "@commitlint/types": "^13.2.0", "fs-extra": "^10.0.0", "git-raw-commits": "^2.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } } }, "@commitlint/resolve-extends": { @@ -18230,10 +17690,54 @@ } } }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + "@gitbeaker/core": { + "version": "35.8.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/core/-/core-35.8.1.tgz", + "integrity": "sha512-KBrDykVKSmU9Q9Gly8KeHOgdc0lZSa435srECxuO0FGqqBcUQ82hPqUc13YFkkdOI9T1JRA3qSFajg8ds0mZKA==", + "dev": true, + "requires": { + "@gitbeaker/requester-utils": "^35.8.1", + "form-data": "^4.0.0", + "li": "^1.3.0", + "mime": "^3.0.0", + "query-string": "^7.0.0", + "xcase": "^2.0.1" + } + }, + "@gitbeaker/node": { + "version": "35.8.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/node/-/node-35.8.1.tgz", + "integrity": "sha512-g6rX853y61qNhzq9cWtxIEoe2KDeFBtXAeWMGWJnc3nz3WRump2pIICvJqw/yobLZqmTNt+ea6w3/n92Mnbn3g==", + "dev": true, + "requires": { + "@gitbeaker/core": "^35.8.1", + "@gitbeaker/requester-utils": "^35.8.1", + "delay": "^5.0.0", + "got": "^11.8.3", + "xcase": "^2.0.1" + } + }, + "@gitbeaker/requester-utils": { + "version": "35.8.1", + "resolved": "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-35.8.1.tgz", + "integrity": "sha512-MFzdH+Z6eJaCZA5ruWsyvm6SXRyrQHjYVR6aY8POFraIy7ceIHOprWCs1R+0ydDZ8KtBnd8OTHjlJ0sLtSFJCg==", + "dev": true, + "requires": { + "form-data": "^4.0.0", + "qs": "^6.10.1", + "xcase": "^2.0.1" + }, + "dependencies": { + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } }, "@humanwhocodes/config-array": { "version": "0.9.5", @@ -18253,11 +17757,56 @@ "dev": true }, "@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz", + "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@isaacs/string-locale-compare": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", @@ -18396,13 +17945,10 @@ "tar": "^6.1.11" }, "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "are-we-there-yet": { "version": "2.0.0", @@ -18429,15 +17975,6 @@ "wide-align": "^1.1.2" } }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } - }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -18456,146 +17993,452 @@ "gauge": "^3.0.0", "set-blocking": "^2.0.0" } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "@npmcli/agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", + "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "requires": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" + }, + "dependencies": { + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "requires": { + "debug": "^4.3.4" + } + }, + "http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, + "https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "requires": { + "agent-base": "^7.0.2", + "debug": "4" + } + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" } } }, "@npmcli/arborist": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", - "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", - "requires": { - "@isaacs/string-locale-compare": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^1.0.2", - "@npmcli/metavuln-calculator": "^1.1.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.1", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.2", - "bin-links": "^2.2.1", - "cacache": "^15.0.3", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.2.2.tgz", + "integrity": "sha512-dIIzyhy1zS2dYPS8bdM/8qA8W2evQE9KENBxVOhFthm/2RKqf2ninRWQc8xfc5f1gsiTxTP20Y9flIfziHfSKA==", + "requires": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/query": "^3.0.1", + "@npmcli/run-script": "^7.0.2", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "proc-log": "^1.0.0", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.1", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "npmlog": "^7.0.1", + "pacote": "^17.0.4", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "dependencies": { + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "requires": { + "lru-cache": "^10.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "requires": { + "abbrev": "^2.0.0" + } + }, + "ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "requires": { + "minipass": "^7.0.3" + } + } } }, "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "requires": { - "@gar/promisify": "^1.0.1", "semver": "^7.3.5" } }, "@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.3.tgz", + "integrity": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==", + "requires": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^2.0.2" + "which": "^4.0.0" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "requires": { + "isexe": "^3.1.1" + } + } } }, "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" } }, "@npmcli/map-workspaces": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", - "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.4.tgz", + "integrity": "sha512-Z0TbvXkRbacjFFLpVpV0e2mheCh+WzQpcqL+4xp49uNJOxOnIAPZyXtUxZ5Qn3QBTGKA11Exjd9a5411rBrhDg==", "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } } }, "@npmcli/metavuln-calculator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", - "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-7.0.0.tgz", + "integrity": "sha512-Pw0tyX02VkpqlIQlG2TeiJNsdrecYeUU0ubZZa9pi3N37GCsxI+en43u4hYFdq+eSx1A9a9vwFAUyqEtKFsbHQ==", "requires": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^17.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + } } }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==" + }, + "@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==" + }, + "@npmcli/package-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.0.tgz", + "integrity": "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==", "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "requires": { + "lru-cache": "^10.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } } }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==" - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==" - }, - "@npmcli/package-json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", - "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", + "@npmcli/promise-spawn": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz", + "integrity": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==", "requires": { - "json-parse-even-better-errors": "^2.3.1" + "which": "^4.0.0" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "requires": { + "isexe": "^3.1.1" + } + } } }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", + "@npmcli/query": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.0.1.tgz", + "integrity": "sha512-0jE8iHBogf/+bFDj+ju6/UMLbJ39c8h6nSe6qile+dB7PJ0iV3gNqcb2vtt6WWCBrxv9uAjzUT/8vroluulidA==", "requires": { - "infer-owner": "^1.0.4" + "postcss-selector-parser": "^6.0.10" } }, "@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.2.tgz", + "integrity": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==", "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^4.0.0" + }, + "dependencies": { + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "requires": { + "isexe": "^3.1.1" + } + } } }, "@octokit/auth-token": { @@ -18688,13 +18531,6 @@ "requires": { "@octokit/openapi-types": "^16.0.0" } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true } } }, @@ -18707,14 +18543,6 @@ "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - } } }, "@octokit/graphql": { @@ -18784,13 +18612,6 @@ "requires": { "@octokit/openapi-types": "^16.0.0" } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true, - "peer": true } } }, @@ -18801,23 +18622,12 @@ "dev": true }, "@octokit/plugin-paginate-rest": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", - "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", "dev": true, "requires": { - "@octokit/types": "^2.0.1" - }, - "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } + "@octokit/types": "^6.40.0" } }, "@octokit/plugin-request-log": { @@ -18828,24 +18638,13 @@ "requires": {} }, "@octokit/plugin-rest-endpoint-methods": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", - "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", "dev": true, "requires": { - "@octokit/types": "^2.0.1", + "@octokit/types": "^6.39.0", "deprecation": "^2.3.1" - }, - "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", - "dev": true, - "requires": { - "@types/node": ">= 8" - } - } } }, "@octokit/request": { @@ -18860,73 +18659,59 @@ "is-plain-object": "^5.0.0", "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "requires": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true - } } }, "@octokit/request-error": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", - "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", "dev": true, "requires": { - "@octokit/types": "^2.0.0", + "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dev": true, + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" }, "dependencies": { - "@octokit/types": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", - "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", "dev": true, "requires": { - "@types/node": ">= 8" + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" } } } }, - "@octokit/rest": { - "version": "16.43.2", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", - "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", - "dev": true, - "requires": { - "@octokit/auth-token": "^2.4.0", - "@octokit/plugin-paginate-rest": "^1.1.1", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "2.4.0", - "@octokit/request": "^5.2.0", - "@octokit/request-error": "^1.0.2", - "atob-lite": "^2.0.0", - "before-after-hook": "^2.0.0", - "btoa-lite": "^1.0.0", - "deprecation": "^2.0.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lodash.uniq": "^4.5.0", - "octokit-pagination-methods": "^1.1.0", - "once": "^1.4.0", - "universal-user-agent": "^4.0.0" - } - }, "@octokit/types": { "version": "6.41.0", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", @@ -18936,6 +18721,12 @@ "@octokit/openapi-types": "^12.11.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@rollup/plugin-babel": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", @@ -18959,6 +18750,22 @@ "is-reference": "^1.2.1", "magic-string": "^0.25.7", "resolve": "^1.17.0" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "@rollup/plugin-node-resolve": { @@ -19011,6 +18818,20 @@ "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", "dev": true }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -19064,9 +18885,55 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } } } }, + "@sigstore/bundle": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz", + "integrity": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==", + "requires": { + "@sigstore/protobuf-specs": "^0.2.1" + } + }, + "@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==" + }, + "@sigstore/sign": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.0.tgz", + "integrity": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==", + "requires": { + "@sigstore/bundle": "^2.1.0", + "@sigstore/protobuf-specs": "^0.2.1", + "make-fetch-happen": "^13.0.0" + } + }, + "@sigstore/tuf": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.2.0.tgz", + "integrity": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==", + "requires": { + "@sigstore/protobuf-specs": "^0.2.1", + "tuf-js": "^2.1.0" + } + }, "@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -19082,10 +18949,37 @@ "defer-to-connect": "^2.0.0" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + "@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==" + }, + "@tufjs/models": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", + "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", + "requires": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } }, "@types/cacheable-request": { "version": "6.0.3", @@ -19225,7 +19119,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, "requires": { "event-target-shim": "^5.0.0" } @@ -19255,22 +19148,11 @@ "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==" }, "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "agentkeepalive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "requires": { - "debug": "^4.1.0", - "depd": "^2.0.0", - "humanize-ms": "^1.2.1" + "debug": "4" } }, "aggregate-error": { @@ -19331,9 +19213,9 @@ } }, "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" }, "ansi-styles": { "version": "3.2.1", @@ -19389,63 +19271,30 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-6.0.1.tgz", + "integrity": "sha512-CXGy4poOLBKptiZH//VlWdFuUC1RESbdZjGjILwBuZ73P7WkAUN0htfSfBq/7k6FRFlpu7bg4JOkj1vU9G6jcQ==", "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "archiver-utils": "^4.0.1", + "async": "^3.2.4", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^5.0.1" } }, "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-4.0.1.tgz", + "integrity": "sha512-Q4Q99idbvzmgCTEAAhi32BkOyq8iVI5EwdO0PmBDSGIzzjYNdcFn7Q7k3OzbLy4kLUPXfJtG6fO2RjftXbobBg==", "requires": { - "glob": "^7.1.4", + "glob": "^8.0.0", "graceful-fs": "^4.2.0", "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", + "lodash": "^4.17.15", "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "readable-stream": "^3.6.0" } }, "archy": { @@ -19455,39 +19304,33 @@ "dev": true }, "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.1.tgz", + "integrity": "sha512-2zuA+jpOYBRgoBCfa+fB87Rk0oGJjDX6pxGzqH6f33NzUhG25Xur6R0u0Z9VVAq8Z5JvQpQI6j6rtonuivC8QA==", "requires": { "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "readable-stream": "^4.1.0" }, "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "requires": { - "safe-buffer": "~5.1.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" } } } @@ -19504,24 +19347,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true - }, "array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -19551,12 +19376,6 @@ "is-string": "^1.0.7" } }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true - }, "array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -19587,11 +19406,6 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -19606,15 +19420,9 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" }, "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true }, "astral-regex": { @@ -19624,9 +19432,9 @@ "dev": true }, "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "async-retry": { "version": "1.2.3", @@ -19647,18 +19455,6 @@ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "atob-lite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", - "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==", - "dev": true - }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -19675,6 +19471,11 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, + "b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" + }, "babel-helper-evaluate-path": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.5.0.tgz", @@ -19894,32 +19695,6 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -19945,16 +19720,30 @@ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" }, "bin-links": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", - "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.3.tgz", + "integrity": "sha512-obsRaULtJurnfox/MDwgq6Yo9kzbv1CPTk/1/s7Z/61Lezc8IKkFCOXNeVLXz0456WRzBQmSsDWlai2tIhBsfA==", "requires": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + } + } } }, "binary-extensions": { @@ -19966,6 +19755,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "requires": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -20087,16 +19877,11 @@ "update-browserslist-db": "^1.0.10" } }, - "btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", - "dev": true - }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -20136,50 +19921,92 @@ "dev": true }, "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "requires": { + "semver": "^7.0.0" + } }, "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", + "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "requires": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", + "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "requires": { + "minipass": "^7.0.3" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } } }, "cacheable-lookup": { @@ -20283,18 +20110,16 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.0.0.tgz", + "integrity": "sha512-HO5p0oEKd5M6HEcwOkNAThAE3j960vIZvVcc0t2tI06Dd0ATu69cEnMB2wOhC5/ZyQ6m67w3ePjU/HzXsSsdBA==", "dev": true, "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "assertion-error": "^2.0.1", + "check-error": "^2.0.0", + "deep-eql": "^5.0.1", + "loupe": "^3.0.0", + "pathval": "^2.0.0" } }, "chalk": { @@ -20314,9 +20139,9 @@ "dev": true }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz", + "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==", "dev": true }, "chokidar": { @@ -20355,9 +20180,9 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "clang-format": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.5.0.tgz", - "integrity": "sha512-C1LucFX7E+ABVYcPEbBHM4PYQ2+WInXsqsLpFlQ9cmRfSbk7A7b1I06h/nE4bQ3MsyEkb31jY2gC0Dtc76b4IA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/clang-format/-/clang-format-1.6.0.tgz", + "integrity": "sha512-W3/L7fWkA8DoLkz9UGjrRnNi+J5a5TuS2HDLqk6WsicpOzb66MBu4eY/EcXhicHriVnAXWQVyk5/VeHWY6w4ow==", "dev": true, "requires": { "async": "^1.5.2", @@ -20370,93 +20195,27 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true } } }, "clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "requires": { "source-map": "~0.6.0" }, @@ -20518,6 +20277,23 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "clone": { @@ -20536,27 +20312,9 @@ } }, "cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.2.tgz", + "integrity": "sha512-+FFYbB0YLaAkhkcrjkyNLYDiOsFSfRjwjY19LXk/psmMx1z00xlCv7hhQoTGXXIKi+YXHL/iiFo8NqMVQX9nOw==" }, "color-convert": { "version": "1.9.3", @@ -20601,9 +20359,9 @@ } }, "commander": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", - "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true }, "commitizen": { @@ -20677,19 +20435,13 @@ "dot-prop": "^5.1.0" } }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-5.0.1.tgz", + "integrity": "sha512-MPh//1cERdLtqwO3pOFLeXtpuai0Y2WCd5AhtKxznqM7WtaMYaOEMSgn45d9D10sIHSfIKE603HlOp8OPGrvag==", "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", + "crc-32": "^1.2.0", + "crc32-stream": "^5.0.0", "normalize-path": "^3.0.0", "readable-stream": "^3.6.0" } @@ -20705,22 +20457,42 @@ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-5.1.0.tgz", + "integrity": "sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==", "dev": true, "requires": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-atom": "^4.0.0", + "conventional-changelog-codemirror": "^4.0.0", + "conventional-changelog-conventionalcommits": "^7.0.2", + "conventional-changelog-core": "^7.0.0", + "conventional-changelog-ember": "^4.0.0", + "conventional-changelog-eslint": "^5.0.0", + "conventional-changelog-express": "^4.0.0", + "conventional-changelog-jquery": "^5.0.0", + "conventional-changelog-jshint": "^4.0.0", + "conventional-changelog-preset-loader": "^4.1.0" + }, + "dependencies": { + "conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "requires": { + "compare-func": "^2.0.0" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "dev": true, + "requires": { + "compare-func": "^2.0.0" + } + } } }, "conventional-changelog-angular": { @@ -20734,35 +20506,36 @@ } }, "conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", - "dev": true, - "requires": { - "q": "^1.5.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-4.0.0.tgz", + "integrity": "sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==", + "dev": true }, "conventional-changelog-cli": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-2.2.2.tgz", - "integrity": "sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-cli/-/conventional-changelog-cli-4.1.0.tgz", + "integrity": "sha512-MscvILWZ6nWOoC+p/3Nn3D2cVLkjeQjyZPUr0bQ+vUORE/SPrkClJh8BOoMNpS4yk+zFJ5LlgXACxH6XGQoRXA==", "dev": true, "requires": { "add-stream": "^1.0.0", - "conventional-changelog": "^3.1.24", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "tempfile": "^3.0.0" + "conventional-changelog": "^5.1.0", + "meow": "^12.0.1", + "tempfile": "^5.0.0" + }, + "dependencies": { + "meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true + } } }, "conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "dev": true, - "requires": { - "q": "^1.5.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-4.0.0.tgz", + "integrity": "sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==", + "dev": true }, "conventional-changelog-conventionalcommits": { "version": "4.6.3", @@ -20776,100 +20549,222 @@ } }, "conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-7.0.0.tgz", + "integrity": "sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==", "dev": true, "requires": { + "@hutson/parse-repository-url": "^5.0.0", "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-parser": "^5.0.0", + "git-raw-commits": "^4.0.0", + "git-semver-tags": "^7.0.0", + "hosted-git-info": "^7.0.0", + "normalize-package-data": "^6.0.0", + "read-pkg": "^8.0.0", + "read-pkg-up": "^10.0.0" + }, + "dependencies": { + "conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "requires": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + } + }, + "dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true + }, + "git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "requires": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, + "is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "requires": { + "text-extensions": "^2.0.0" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true + }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true + }, + "meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true + }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, + "read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + } + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true + }, + "text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true + }, + "type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "dev": true + } } }, "conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "dev": true, - "requires": { - "q": "^1.5.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-4.0.0.tgz", + "integrity": "sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==", + "dev": true }, "conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", - "dev": true, - "requires": { - "q": "^1.5.1" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-5.0.0.tgz", + "integrity": "sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==", + "dev": true }, "conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "dev": true, - "requires": { - "q": "^1.5.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-4.0.0.tgz", + "integrity": "sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==", + "dev": true }, "conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "dev": true, - "requires": { - "q": "^1.5.1" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-5.0.0.tgz", + "integrity": "sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==", + "dev": true }, "conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-4.0.0.tgz", + "integrity": "sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==", "dev": true, "requires": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "compare-func": "^2.0.0" } }, "conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-4.1.0.tgz", + "integrity": "sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==", "dev": true }, "conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", "dev": true, "requires": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", + "conventional-commits-filter": "^4.0.0", "handlebars": "^4.7.7", "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true + }, + "split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true } } @@ -20881,14 +20776,10 @@ "dev": true }, "conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true }, "conventional-commits-parser": { "version": "3.2.4", @@ -20909,12 +20800,6 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true - }, "core-js": { "version": "3.27.2", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.2.tgz", @@ -20961,9 +20846,9 @@ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" }, "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-5.0.0.tgz", + "integrity": "sha512-B0EPa1UK+qnpBZpG+7FgPCu0J2ETLpXq09o9BkLkEAhdB6Z61Qo4pJ3JYu0c+Qi+/SAL7QThqnzS06pmSSyZaw==", "requires": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -20979,13 +20864,17 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, "cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", @@ -21008,45 +20897,47 @@ } }, "danger": { - "version": "10.6.6", - "resolved": "https://registry.npmjs.org/danger/-/danger-10.6.6.tgz", - "integrity": "sha512-RBqANs6xbWSCqZMy3+/eIYuC9kd7g5NqJ8PqDJKylPhvBoJEDkDrHQvExYHiP2UquvaZcPWsKohmOQXrosrpdw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/danger/-/danger-11.3.1.tgz", + "integrity": "sha512-+slkGnbf0czY7g4LSuYpYkKJgFrb9YIXFJvV5JAuLLF39CXLlUw0iebgeL3ASK1t6RDb8xe+Rk2F5ilh2Hdv2w==", "dev": true, "requires": { - "@babel/polyfill": "^7.2.5", - "@octokit/rest": "^16.43.1", + "@gitbeaker/core": "^35.8.1", + "@gitbeaker/node": "^35.8.1", + "@octokit/rest": "^18.12.0", "async-retry": "1.2.3", "chalk": "^2.3.0", "commander": "^2.18.0", + "core-js": "^3.8.2", "debug": "^4.1.1", "fast-json-patch": "^3.0.0-1", "get-stdin": "^6.0.0", - "gitlab": "^10.0.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", "hyperlinker": "^1.0.0", "json5": "^2.1.0", - "jsonpointer": "^4.0.1", - "jsonwebtoken": "^8.4.0", + "jsonpointer": "^5.0.0", + "jsonwebtoken": "^9.0.0", "lodash.find": "^4.6.0", "lodash.includes": "^4.3.0", "lodash.isobject": "^3.0.2", "lodash.keys": "^4.0.8", "lodash.mapvalues": "^4.6.0", "lodash.memoize": "^4.1.2", - "memfs-or-file-map-to-github-branch": "^1.1.0", - "micromatch": "^3.1.10", + "memfs-or-file-map-to-github-branch": "^1.2.1", + "micromatch": "^4.0.4", "node-cleanup": "^2.1.2", - "node-fetch": "2.6.1", + "node-fetch": "^2.6.7", "override-require": "^1.1.1", "p-limit": "^2.1.0", "parse-diff": "^0.7.0", "parse-git-config": "^2.0.3", "parse-github-url": "^1.0.2", - "parse-link-header": "^1.0.1", + "parse-link-header": "^2.0.0", "pinpoint": "^1.1.0", "prettyjson": "^1.2.1", "readline-sync": "^1.4.9", + "regenerator-runtime": "^0.13.9", "require-from-string": "^2.0.2", "supports-hyperlinks": "^1.0.1" }, @@ -21057,12 +20948,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -21094,12 +20979,6 @@ "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", "dev": true }, - "dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -21108,11 +20987,6 @@ "ms": "2.1.2" } }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==" - }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -21167,13 +21041,10 @@ "dev": true }, "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", + "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", + "dev": true }, "deep-is": { "version": "0.1.4", @@ -21221,15 +21092,11 @@ "object-keys": "^1.1.1" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } + "delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "dev": true }, "delayed-stream": { "version": "1.0.0", @@ -21241,11 +21108,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -21269,15 +21131,6 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" }, - "dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -21302,6 +21155,11 @@ "is-obj": "^2.0.0" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -21362,6 +21220,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } @@ -21479,21 +21338,6 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -21547,6 +21391,12 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -21602,6 +21452,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -21620,18 +21479,18 @@ } }, "eslint-config-axway": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-axway/-/eslint-config-axway-7.0.0.tgz", - "integrity": "sha512-qeoE9UZxGttQfy9YyIEiGa1l33tzciztRul46COWGGOCRnMyU1fqJChOvkp7Ek5VvWqSqwU511qH1i+9CD2olw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-axway/-/eslint-config-axway-8.0.0.tgz", + "integrity": "sha512-k0YDZb1TxFTgU1qxN5d/LWpypio7IpLo86spW4LjvSJIIv3QaeuIllTizvuP5HT16ExFQl8oloMUNXVDjqGpsA==", "dev": true, "requires": { "eslint-plugin-chai-expect": "^3.0.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^6.0.0", - "eslint-plugin-security": "^1.4.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.6.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-security": "^1.7.1", "find-root": "^1.1.0", - "semver": "^7.3.4" + "semver": "^7.3.8" } }, "eslint-import-resolver-node": { @@ -21684,9 +21543,9 @@ "requires": {} }, "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, "requires": { "eslint-utils": "^2.0.0", @@ -21760,50 +21619,29 @@ } }, "eslint-plugin-mocha": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.0.4.tgz", - "integrity": "sha512-8wzAeepVY027oBHz/TmBmUr7vhVqoC1KTFeDybFLhbaWKx+aQ7fJJVuUsqcUy+L+G+XvgQBJY+cbAf7hl5DF7Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz", + "integrity": "sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==", "dev": true, "requires": { "eslint-utils": "^3.0.0", - "ramda": "^0.28.0" + "rambda": "^7.4.0" } }, - "eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, "requires": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" } }, "eslint-plugin-promise": { @@ -21906,141 +21744,32 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, "expand-tilde": { @@ -22052,21 +21781,16 @@ "homedir-polyfill": "^1.0.1" } }, + "exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -22078,48 +21802,6 @@ "tmp": "^0.0.33" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -22136,6 +21818,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "fast-json-patch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", @@ -22300,17 +21987,6 @@ "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", "requires": { "micromatch": "^4.0.2" - }, - "dependencies": { - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - } } }, "findup-sync": { @@ -22323,18 +21999,6 @@ "is-glob": "^4.0.0", "micromatch": "^4.0.2", "resolve-dir": "^1.0.1" - }, - "dependencies": { - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - } } }, "flat": { @@ -22398,12 +22062,6 @@ "is-callable": "^1.1.3" } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true - }, "foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -22420,36 +22078,22 @@ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" }, "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", "dev": true }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, "fs-exists-sync": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", @@ -22457,9 +22101,9 @@ "dev": true }, "fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -22515,49 +22159,36 @@ "dev": true }, "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.1.tgz", + "integrity": "sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==", "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "dependencies": { "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" } } } @@ -22574,9 +22205,9 @@ "dev": true }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true }, "get-intrinsic": { @@ -22602,86 +22233,6 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, - "get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", - "dev": true, - "requires": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "dependencies": { - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - } - } - }, "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", @@ -22704,12 +22255,6 @@ "get-intrinsic": "^1.1.1" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -22759,69 +22304,52 @@ "through2": "^4.0.0" } }, - "git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", - "dev": true, - "requires": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" - } - }, "git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-7.0.1.tgz", + "integrity": "sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==", "dev": true, "requires": { - "meow": "^8.0.0", - "semver": "^6.0.0" + "meow": "^12.0.1", + "semver": "^7.5.2" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true } } }, - "gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", - "dev": true, - "requires": { - "ini": "^1.3.2" - } - }, - "gitlab": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/gitlab/-/gitlab-10.2.1.tgz", - "integrity": "sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg==", - "dev": true, - "requires": { - "form-data": "^2.5.0", - "humps": "^2.0.1", - "ky": "^0.12.0", - "ky-universal": "^0.3.0", - "li": "^1.3.0", - "query-string": "^6.8.2", - "universal-url": "^2.0.0" - } - }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-parent": { @@ -22931,13 +22459,13 @@ "dev": true }, "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "requires": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" @@ -23025,38 +22553,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -23075,12 +22571,6 @@ } } }, - "hasurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hasurl/-/hasurl-1.0.0.tgz", - "integrity": "sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==", - "dev": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -23100,6 +22590,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -23116,28 +22607,20 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" }, "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dev": true, - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "@tootallnate/once": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true } } @@ -23171,24 +22654,12 @@ } }, "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } + "agent-base": "6", + "debug": "4" } }, "human-signals": { @@ -23203,24 +22674,10 @@ "integrity": "sha512-bvZZ7vXpr1RKoImjuQ45hJb5OvE2oJafHysiD/AL3nkqTZH2hFCjQ3YZfCd63FefDitbJze/ispUPP0gfDsT2Q==", "dev": true }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "requires": { - "ms": "^2.0.0" - } - }, - "humps": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz", - "integrity": "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==", - "dev": true - }, "husky": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.2.tgz", - "integrity": "sha512-8yKEWNX4z2YsofXAMT7KvA1g8p+GxtB1ffV8XtpAEGuXNAbCV5wdNKH+qTpw8SM9fh4aMPDR+yQuKfgnreyZlg==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true }, "hypar": { @@ -23265,11 +22722,29 @@ "dev": true }, "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "requires": { - "minimatch": "^3.0.4" + "minimatch": "^9.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "import-fresh": { @@ -23300,11 +22775,6 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -23348,6 +22818,12 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -23388,6 +22864,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23452,15 +22937,6 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -23505,12 +22981,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -23533,15 +23003,6 @@ "has": "^1.0.3" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -23551,42 +23012,11 @@ "has-tostringtag": "^1.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -23628,26 +23058,6 @@ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-number-object": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", @@ -23810,12 +23220,6 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -23944,6 +23348,15 @@ "istanbul-lib-report": "^3.0.0" } }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jake": { "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", @@ -24039,7 +23452,8 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-schema": { "version": "0.4.0", @@ -24087,9 +23501,9 @@ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" }, "jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", "dev": true }, "JSONStream": { @@ -24103,29 +23517,15 @@ } }, "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", "dev": true, "requires": { "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", + "lodash": "^4.17.21", "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } + "semver": "^7.3.8" } }, "jsprim": { @@ -24140,14 +23540,14 @@ } }, "just-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", - "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==" + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==" }, "just-diff-apply": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", - "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==" + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-5.5.0.tgz", + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==" }, "jwa": { "version": "1.4.1", @@ -24198,22 +23598,6 @@ "graceful-fs": "^4.1.11" } }, - "ky": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.12.0.tgz", - "integrity": "sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ==", - "dev": true - }, - "ky-universal": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.3.0.tgz", - "integrity": "sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "node-fetch": "^2.6.0" - } - }, "lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -24363,16 +23747,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24617,6 +23991,12 @@ "yargs": "^16.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -24628,6 +24008,15 @@ "wrap-ansi": "^7.0.0" } }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -24660,16 +24049,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" - }, "lodash.find": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", @@ -24679,7 +24058,8 @@ "lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true }, "lodash.flattendeep": { "version": "4.4.0", @@ -24699,47 +24079,12 @@ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "dev": true - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "dev": true - }, - "lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "dev": true - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "dev": true - }, "lodash.isobject": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", "dev": true }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true - }, "lodash.keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", @@ -24769,35 +24114,6 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==", - "dev": true - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -24871,6 +24187,12 @@ "wrap-ansi": "^6.2.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24906,6 +24228,15 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -24934,12 +24265,12 @@ } }, "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.0.2.tgz", + "integrity": "sha512-Tzlkbynv7dtqxTROe54Il+J4e/zG2iehtJGZUYpTv8WzlkW9qyEcE83UhGJCeuF3SCfzHuM5VWhBi47phV3+AQ==", "dev": true, "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lowercase-keys": { @@ -24956,12 +24287,6 @@ "yallist": "^4.0.0" } }, - "macos-release": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", - "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", - "dev": true - }, "magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -24993,78 +24318,36 @@ "dev": true }, "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", + "negotiator": "^0.6.3", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "ssri": "^10.0.0" }, "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "requires": { - "debug": "4" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "requires": { - "agent-base": "6", - "debug": "4" - } + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" } } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true - }, "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "markdown": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", @@ -25244,99 +24527,23 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, + "mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -25401,22 +24608,36 @@ } }, "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "requires": { - "minipass": "^3.0.0" + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } } }, "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", + "encoding": "^0.1.13", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } } }, "minipass-flush": { @@ -25461,31 +24682,11 @@ "yallist": "^4.0.0" } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - } - }, "mocha": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", @@ -25524,6 +24725,12 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -25558,6 +24765,31 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -25579,6 +24811,15 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -25630,16 +24871,10 @@ } } }, - "modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "dev": true - }, "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" }, "ms": { "version": "2.1.2", @@ -25663,25 +24898,6 @@ "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -25736,6 +24952,14 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -25754,28 +24978,93 @@ } }, "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", "requires": { "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" }, "dependencies": { + "abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "requires": { - "abbrev": "1" + "abbrev": "^2.0.0" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "requires": { + "isexe": "^3.1.1" } } } @@ -25840,6 +25129,11 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, "fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", @@ -25898,69 +25192,90 @@ "dev": true }, "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "requires": { - "npm-normalize-package-bin": "^1.0.1" + "npm-normalize-package-bin": "^3.0.0" } }, "npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "requires": { "semver": "^7.1.1" } }, "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==" }, "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "requires": { + "lru-cache": "^10.0.1" + } + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + } } }, "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.1.tgz", + "integrity": "sha512-MQpL27ZrsJQ2kiAuQPpZb5LtJwydNRnI15QWXsf3WHERu4rzjRj6Zju/My2fov7tLuu3Gle/uoIX/DDZ3u4O4Q==", "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" + "ignore-walk": "^6.0.4" } }, "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" } }, "npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz", + "integrity": "sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==", "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } } }, "npm-run-all": { @@ -26041,21 +25356,16 @@ } }, "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" - }, "nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -26091,6 +25401,12 @@ "yargs": "^15.0.2" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -26142,6 +25458,20 @@ "path-exists": "^4.0.0" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -26178,6 +25508,15 @@ "aggregate-error": "^3.0.0" } }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -26236,74 +25575,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -26322,15 +25593,6 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", @@ -26343,15 +25605,6 @@ "object-keys": "^1.1.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "object.values": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", @@ -26363,12 +25616,6 @@ "es-abstract": "^1.20.4" } }, - "octokit-pagination-methods": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", - "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -26447,6 +25694,12 @@ "wcwidth": "^1.0.1" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -26487,6 +25740,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -26498,16 +25760,6 @@ } } }, - "os-name": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", - "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", - "dev": true, - "requires": { - "macos-release": "^2.2.0", - "windows-release": "^3.1.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -26525,12 +25777,6 @@ "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -26575,29 +25821,43 @@ } }, "pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "requires": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.5.tgz", + "integrity": "sha512-TAE0m20zSDMnchPja9vtQjri19X3pZIyRpm2TJVeI+yU42leJBBDTRYhOcWFsPhaMxf+3iwQkFiKz16G9AEeeA==", + "requires": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "dependencies": { + "fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "requires": { + "minipass": "^7.0.3" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } } }, "parent-module": { @@ -26610,13 +25870,20 @@ } }, "parse-conflict-json": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", - "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz", + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", "requires": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + } } }, "parse-diff": { @@ -26655,9 +25922,9 @@ } }, "parse-link-header": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-1.0.1.tgz", - "integrity": "sha512-Z0gpfHmwCIKDr5rRzjypL+p93aHVWO7e+0rFcUl9E3sC67njjs+xHFenuboSXZGlvYtmQqRzRaE3iFpTUnLmFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", + "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", "dev": true, "requires": { "xtend": "~4.0.1" @@ -26669,12 +25936,6 @@ "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", "dev": true }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true - }, "patch-package": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", @@ -26749,6 +26010,19 @@ "universalify": "^2.0.0" } }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -26817,14 +26091,34 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + } + } + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -26832,9 +26126,9 @@ "dev": true }, "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true }, "pend": { @@ -26863,12 +26157,6 @@ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, "pinpoint": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pinpoint/-/pinpoint-1.1.0.tgz", @@ -26946,11 +26234,14 @@ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==" }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true + "postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } }, "prelude-ls": { "version": "1.2.1", @@ -26969,9 +26260,14 @@ } }, "proc-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", - "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" }, "process-nextick-args": { "version": "2.0.1", @@ -27001,9 +26297,9 @@ "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==" }, "promise-call-limit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", - "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", + "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==" }, "promise-inflight": { "version": "1.0.1", @@ -27051,27 +26347,32 @@ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", "dev": true, "requires": { - "decode-uri-component": "^0.2.0", + "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" } }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, "quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, - "ramda": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.28.0.tgz", - "integrity": "sha512-9QnLuG/kPVgWvMQ4aODhsBUFKOUmnbUnsSXACv+NCQZcHbeb+v8Lodp8OVxtRULN1/xOyYLLaL6npE6dMq5QTA==", + "rambda": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz", + "integrity": "sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==", "dev": true }, "randombytes": { @@ -27084,17 +26385,113 @@ } }, "read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==" + }, + "read-package-json": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", + "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", + "requires": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "requires": { + "lru-cache": "^10.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } }, "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "dependencies": { + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==" + } } }, "read-pkg": { @@ -27150,62 +26547,141 @@ } }, "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" }, "dependencies": { "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "lru-cache": "^10.0.1" } }, + "json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true + }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "lru-cache": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true + }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" } }, "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "requires": { - "p-try": "^1.0.0" + "yocto-queue": "^1.0.0" } }, "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^4.0.0" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true + "parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + } + }, + "type-fest": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz", + "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true } } @@ -27246,17 +26722,6 @@ } } }, - "readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -27307,27 +26772,6 @@ "@babel/runtime": "^7.8.4" } }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - } - } - }, "regexp-tree": { "version": "0.1.24", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.24.tgz", @@ -27388,18 +26832,6 @@ "es6-error": "^4.0.1" } }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -27523,12 +26955,6 @@ "global-dirs": "^0.1.1" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "dev": true - }, "responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -27548,12 +26974,6 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -27571,6 +26991,21 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "rollup": { @@ -27628,76 +27063,37 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } + "lru-cache": "^6.0.0" + } + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -27705,8 +27101,7 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shell-quote": { "version": "1.8.0", @@ -27735,6 +27130,17 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, + "sigstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz", + "integrity": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==", + "requires": { + "@sigstore/bundle": "^2.1.0", + "@sigstore/protobuf-specs": "^0.2.1", + "@sigstore/sign": "^2.1.0", + "@sigstore/tuf": "^2.1.0" + } + }, "simple-plist": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", @@ -27802,162 +27208,6 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -27968,21 +27218,21 @@ } }, "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "dependencies": { "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "requires": { - "debug": "4" + "debug": "^4.3.4" } } } @@ -27992,19 +27242,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -28023,12 +27260,6 @@ } } }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -28053,7 +27284,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -28062,14 +27292,12 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -28078,17 +27306,7 @@ "spdx-license-ids": { "version": "3.0.13", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" }, "split-on-first": { "version": "1.1.0", @@ -28096,15 +27314,6 @@ "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", "dev": true }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -28142,11 +27351,18 @@ } }, "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "requires": { - "minipass": "^3.1.1" + "minipass": "^5.0.0" + }, + "dependencies": { + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + } } }, "stack-trace": { @@ -28155,84 +27371,6 @@ "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "dev": true }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -28252,6 +27390,15 @@ "buffers": "~0.1.1" } }, + "streamx": { + "version": "2.15.6", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.6.tgz", + "integrity": "sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==", + "requires": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -28280,6 +27427,46 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "string.prototype.padend": { @@ -28346,11 +27533,26 @@ } }, "strip-ansi": { - "version": "6.0.1", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + } } }, "strip-bom": { @@ -28359,12 +27561,6 @@ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -28438,15 +27634,13 @@ } }, "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "temp": { @@ -28458,6 +27652,19 @@ "rimraf": "~2.6.2" }, "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -28477,27 +27684,18 @@ } }, "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true - }, - "tempfile": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-3.0.0.tgz", - "integrity": "sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==", - "dev": true, - "requires": { - "temp-dir": "^2.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true + }, + "tempfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz", + "integrity": "sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==", + "dev": true, + "requires": { + "temp-dir": "^3.0.0" } }, "test-exclude": { @@ -28509,6 +27707,22 @@ "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } } }, "text-extensions": { @@ -28569,9 +27783,9 @@ } }, "titanium-docgen": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/titanium-docgen/-/titanium-docgen-4.10.3.tgz", - "integrity": "sha512-zslxOc2+XZiEZEVCk9Gll36rFWRhC9XFl0nof5NIbKTsDslXjaDdigKIa00ilQShu5/mOqsmd0mWAo2+Sefnag==", + "version": "4.10.4", + "resolved": "https://registry.npmjs.org/titanium-docgen/-/titanium-docgen-4.10.4.tgz", + "integrity": "sha512-ERWrLEbiyhLU3WBFRaKlqCkjwqFShNQYz0WZvYUFknvI73nQF9g6aihW6uvMvQaLg9Mk5oxWBaD2KvEPJ89bQw==", "dev": true, "requires": { "colors": "^1.4.0", @@ -28615,49 +27829,6 @@ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - } - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -28688,9 +27859,9 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "treeverse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", - "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==" }, "trim-newlines": { "version": "3.0.1", @@ -28755,6 +27926,16 @@ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, + "tuf-js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz", + "integrity": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==", + "requires": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -28777,12 +27958,6 @@ "prelude-ls": "^1.2.1" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -28803,6 +27978,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "requires": { "is-typedarray": "^1.0.0" } @@ -28862,88 +28038,27 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true - } - } - }, "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "requires": { - "unique-slug": "^2.0.0" + "unique-slug": "^4.0.0" } }, "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "requires": { "imurmurhash": "^0.1.4" } }, - "universal-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universal-url/-/universal-url-2.0.0.tgz", - "integrity": "sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==", - "dev": true, - "requires": { - "hasurl": "^1.0.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, "universal-user-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", - "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", - "dev": true, - "requires": { - "os-name": "^3.1.0" - } + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true }, "universalify": { "version": "2.0.0", @@ -28955,46 +28070,6 @@ "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true - } - } - }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -29012,18 +28087,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -29044,18 +28107,17 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "requires": { - "builtins": "^1.0.3" + "builtins": "^5.0.0" } }, "verror": { @@ -29069,9 +28131,9 @@ } }, "walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" }, "wcwidth": { "version": "1.0.1", @@ -29158,105 +28220,6 @@ "resolved": "https://registry.npmjs.org/win-fork/-/win-fork-1.1.1.tgz", "integrity": "sha512-kMnrXXHyb/Zx1ynkiMtcEgq+rxXFIfs/IhhxVBmIk+1KwPyIggZU0RAiADExhSyf0NESvCWQyfO4eGdlU9fBSw==" }, - "windows-release": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", - "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", - "dev": true, - "requires": { - "execa": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "winston": { "version": "2.4.6", "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.6.tgz", @@ -29307,6 +28270,57 @@ "strip-ansi": "^6.0.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -29327,6 +28341,14 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } } } }, @@ -29339,6 +28361,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "requires": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", @@ -29346,6 +28369,12 @@ "typedarray-to-buffer": "^3.1.5" } }, + "xcase": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz", + "integrity": "sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==", + "dev": true + }, "xcode": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", @@ -29476,12 +28505,12 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" }, "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-5.0.1.tgz", + "integrity": "sha512-UfZ0oa0C8LI58wJ+moL46BDIMgCQbnsb+2PoiJYtonhBsMh2bq1eRBVkvjfVsqbEHd9/EgKPUuL9saSSsec8OA==", "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", + "archiver-utils": "^4.0.1", + "compress-commons": "^5.0.1", "readable-stream": "^3.6.0" } } diff --git a/package.json b/package.json index 31704bc65cd..3d2d26e95c9 100644 --- a/package.json +++ b/package.json @@ -86,25 +86,25 @@ }, "dependencies": { "@babel/core": "7.11.6", - "@babel/types": "7.11.5", - "@npmcli/arborist": "2.10.0", + "@babel/types": "7.23.6", + "@npmcli/arborist": "7.2.2", "always-tail": "0.2.0", "ansi-escapes": "4.3.2", "appc-tasks": "1.0.3", - "archiver": "5.3.1", - "async": "3.2.4", + "archiver": "6.0.1", + "async": "3.2.5", "boxen": "5.1.2", "buffer-equal": "1.0.1", - "clean-css": "5.3.2", + "clean-css": "5.3.3", "colors": "1.4.0", "ejs": "3.1.9", "fields": "0.1.24", - "fs-extra": "10.0.0", + "fs-extra": "11.2.0", "ioslib": "1.7.35", "liveview": "1.5.6", "lodash.merge": "4.6.2", "markdown": "0.5.0", - "moment": "2.29.4", + "moment": "2.30.1", "node-appc": "1.1.6", "node-titanium-sdk": "6.0.0", "node-uuid": "1.4.8", @@ -112,7 +112,7 @@ "p-limit": "3.1.0", "pngjs": "7.0.0", "request": "2.88.2", - "semver": "7.3.8", + "semver": "7.5.4", "simple-plist": "1.3.1", "sprintf": "0.1.5", "temp": "0.9.4", @@ -132,21 +132,21 @@ "@seadub/danger-plugin-eslint": "2.0.0", "@seadub/danger-plugin-junit": "0.3.0", "babel-plugin-transform-titanium": "0.1.1", - "chai": "4.3.7", - "clang-format": "1.5.0", - "commander": "8.2.0", + "chai": "5.0.0", + "clang-format": "1.6.0", + "commander": "11.1.0", "commitizen": "4.3.0", - "conventional-changelog-cli": "2.2.2", + "conventional-changelog-cli": "4.1.0", "core-js": "3.27.2", "core-js-compat": "3.6.5", "cz-conventional-changelog": "3.3.0", - "danger": "10.6.6", + "danger": "11.3.1", "eslint": "8.13.0", - "eslint-config-axway": "7.0.0", - "eslint-plugin-mocha": "10.0.4", + "eslint-config-axway": "8.0.0", + "eslint-plugin-mocha": "10.2.0", "folder-hash": "4.0.4", - "glob": "7.2.0", - "husky": "7.0.2", + "glob": "8.1.0", + "husky": "8.0.3", "lint-staged": "11.1.2", "lockfile-lint": "4.10.1", "mocha": "9.2.2", @@ -155,11 +155,11 @@ "nyc": "15.1.0", "request-promise-native": "1.0.9", "rollup": "2.76.0", - "ssri": "8.0.1", + "ssri": "10.0.4", "stream-splitter": "0.3.2", - "strip-ansi": "6.0.1", + "strip-ansi": "7.1.0", "titanium": "6.1.1", - "titanium-docgen": "4.10.3" + "titanium-docgen": "4.10.4" }, "repository": { "type": "git", diff --git a/tests/Resources/assert.test.js b/tests/Resources/assert.test.js index 34175fc0cc5..2f4f0d4e6a4 100644 --- a/tests/Resources/assert.test.js +++ b/tests/Resources/assert.test.js @@ -6,8 +6,6 @@ */ /* eslint-env mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-deprecated-api: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; const should = require('./utilities/assertions'); // eslint-disable-line no-unused-vars let assert; diff --git a/tests/Resources/buffer.test.js b/tests/Resources/buffer.test.js index 7ea32a2f820..25f48f98e60 100644 --- a/tests/Resources/buffer.test.js +++ b/tests/Resources/buffer.test.js @@ -7,8 +7,6 @@ /* eslint-env mocha */ /* eslint no-unused-expressions: "off" */ /* eslint security/detect-new-buffer: "off" */ -/* eslint node/no-deprecated-api: ["error", { ignoreGlobalItems: ['new Buffer()']}] */ -/* eslint node/no-unsupported-features/node-builtins: ["error", { version: ">=8.2.0" }] */ 'use strict'; const should = require('./utilities/assertions'); let BufferModule; @@ -50,7 +48,6 @@ describe('buffer', () => { describe('Buffer', () => { it('is available off the \'buffer\' module as Buffer', () => { - // eslint-disable-next-line node/prefer-global/buffer should.exist(BufferModule.Buffer); }); diff --git a/tests/Resources/console.test.js b/tests/Resources/console.test.js index 7bb01008d10..438fa644ff5 100644 --- a/tests/Resources/console.test.js +++ b/tests/Resources/console.test.js @@ -6,7 +6,6 @@ */ /* eslint-env mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; const should = require('./utilities/assertions'); // eslint-disable-line no-unused-vars let Console; @@ -18,14 +17,12 @@ describe('console', function () { }); it('can be required, exposes global console', () => { - // eslint-disable-next-line node/prefer-global/console const requiredConsole = require('console'); should(requiredConsole).be.an.Object(); should(requiredConsole).eql(global.console); }); it('exposes constructor as property off global console', () => { - // eslint-disable-next-line node/prefer-global/console const requiredConsole = require('console'); should(global.console.Console).be.a.Function(); should(requiredConsole.Console).be.a.Function(); diff --git a/tests/Resources/fs.test.js b/tests/Resources/fs.test.js index 72ae6e3af8d..02c1398541e 100644 --- a/tests/Resources/fs.test.js +++ b/tests/Resources/fs.test.js @@ -7,8 +7,6 @@ /* global OS_IOS */ /* eslint-env mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-deprecated-api: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; const should = require('./utilities/assertions'); const utilities = require('./utilities/utilities'); diff --git a/tests/Resources/os.test.js b/tests/Resources/os.test.js index 80e0d6f27b1..6095a156cec 100644 --- a/tests/Resources/os.test.js +++ b/tests/Resources/os.test.js @@ -6,7 +6,6 @@ */ /* eslint-env node, titanium, mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; const should = require('./utilities/assertions'); // eslint-disable-line no-unused-vars const utilities = require('./utilities/utilities'); diff --git a/tests/Resources/path.test.js b/tests/Resources/path.test.js index 629b99e48c6..30c7ac2e824 100644 --- a/tests/Resources/path.test.js +++ b/tests/Resources/path.test.js @@ -6,7 +6,6 @@ */ /* eslint-env node, titanium, mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; var should = require('./utilities/assertions'); // eslint-disable-line no-unused-vars var path; diff --git a/tests/Resources/process.test.js b/tests/Resources/process.test.js index b7421a08697..74d03dce28c 100644 --- a/tests/Resources/process.test.js +++ b/tests/Resources/process.test.js @@ -6,7 +6,6 @@ */ /* eslint-env node, titanium, mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; const should = require('./utilities/assertions'); diff --git a/tests/Resources/stream.test.js b/tests/Resources/stream.test.js index 8572dadabeb..f05808839b0 100644 --- a/tests/Resources/stream.test.js +++ b/tests/Resources/stream.test.js @@ -6,8 +6,6 @@ */ /* eslint-env mocha */ /* eslint no-unused-expressions: "off" */ -/* eslint node/no-deprecated-api: "off" */ -/* eslint node/no-unsupported-features/node-builtins: "off" */ 'use strict'; const should = require('./utilities/assertions'); // eslint-disable-line no-unused-vars let stream; From 940ca9e959aad1010cc42c6196d9a21a92febc0b Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 16 May 2024 14:19:33 +0200 Subject: [PATCH 046/145] docs: improve the ScrollableView clipView description (#14035) --- apidoc/Titanium/UI/ScrollableView.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apidoc/Titanium/UI/ScrollableView.yml b/apidoc/Titanium/UI/ScrollableView.yml index febe7bacaf3..b7709d1b090 100644 --- a/apidoc/Titanium/UI/ScrollableView.yml +++ b/apidoc/Titanium/UI/ScrollableView.yml @@ -389,7 +389,10 @@ properties: description: | Set to `false` to allow the previous or next pages to be seen. Note that ScrollableView's [width](Titanium.UI.ScrollableView.width) must be smaller than its parent - view in order to make this property effective. + view in order to make this property effective on iOS. + For Android you have to set the [padding](Titanium.UI.ScrollableView.padding) property. + + Check the `Scrollable View with multiple visible views` example for both platforms. type: Boolean availability: creation default: true From a2983877b5a7d6c14bdfdc5426a82e2aca590074 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 21 May 2024 19:07:34 +0200 Subject: [PATCH 047/145] chore: fixing typos (#14038) --- android/cli/commands/_build.js | 16 ++++++++-------- android/cli/commands/_buildModule.js | 4 ++-- android/cli/hooks/run.js | 2 +- android/cli/lib/android-manifest.js | 2 +- android/cli/lib/gradle-wrapper.js | 2 +- android/cli/locales/en.js | 2 +- android/debugger.md | 2 +- .../generator/KrollJSONGenerator.java | 2 +- .../modules/titanium/android/AndroidModule.java | 2 +- .../titanium/database/DatabaseModule.java | 2 +- .../titanium/geolocation/GeolocationModule.java | 2 +- .../android/LocationProviderProxy.java | 2 +- .../gesture/TiDeviceOrientationMonitor.java | 4 ++-- .../modules/titanium/locale/CollatorProxy.java | 2 +- .../titanium/locale/DateTimeFormatProxy.java | 6 +++--- .../modules/titanium/media/AudioPlayerProxy.java | 2 +- .../modules/titanium/media/VideoPlayerProxy.java | 4 ++-- .../titanium/network/socket/TCPProxy.java | 2 +- .../titanium/platform/PlatformModule.java | 4 ++-- .../modules/titanium/ui/TableViewRowProxy.java | 2 +- .../titanium/ui/widget/TiSwipeRefreshLayout.java | 4 ++-- .../modules/titanium/ui/widget/TiUIEditText.java | 2 +- .../ti/modules/titanium/ui/widget/TiUILabel.java | 2 +- .../titanium/ui/widget/TiUIMaskedImage.java | 4 ++-- .../titanium/ui/widget/TiUIScrollView.java | 4 ++-- .../ti/modules/titanium/ui/widget/TiUIText.java | 2 +- .../ui/widget/listview/ListItemProxy.java | 2 +- .../ui/widget/listview/ListViewHolder.java | 2 +- .../titanium/ui/widget/listview/TiListView.java | 2 +- .../ui/widget/tabgroup/TiUIAbstractTabGroup.java | 2 +- .../ui/widget/webview/TiWebChromeClient.java | 4 ++-- android/notes.md | 2 +- .../kroll/runtime/v8/JSDebugger.java | 2 +- .../runtime/v8/src/native/InspectorClient.cpp | 2 +- android/runtime/v8/src/native/JavaObject.h | 2 +- .../runtime/v8/src/native/modules/APIModule.cpp | 2 +- .../v8/src/native/modules/ScriptsModule.cpp | 4 ++-- android/templates/module/generated/build.gradle | 4 ++-- .../module/generated/generate-cpp-files.js | 2 +- android/titanium/bootstrap.lazymodule.js.ejs | 4 ++-- android/titanium/libv8-services.js | 4 ++-- .../java/org/appcelerator/kroll/KrollProxy.java | 2 +- .../appcelerator/titanium/TiBaseActivity.java | 4 ++-- .../org/appcelerator/titanium/TiBaseService.java | 2 +- .../java/org/appcelerator/titanium/TiBlob.java | 2 +- .../appcelerator/titanium/TiRootActivity.java | 8 ++++---- .../org/appcelerator/titanium/io/TiFile.java | 2 +- .../titanium/util/TiDeviceOrientation.java | 8 ++++---- .../titanium/util/TiDownloadManager.java | 2 +- .../titanium/util/TiFileHelper2.java | 2 +- .../titanium/util/TiResponseCache.java | 2 +- .../appcelerator/titanium/util/TiUIHelper.java | 2 +- .../titanium/view/TiCompositeLayout.java | 14 +++++++------- .../titanium/view/TiDrawableReference.java | 2 +- .../appcelerator/titanium/view/TiUIFragment.java | 2 +- .../java/ti/modules/titanium/TitaniumModule.java | 2 +- 56 files changed, 90 insertions(+), 90 deletions(-) diff --git a/android/cli/commands/_build.js b/android/cli/commands/_build.js index 052395b4446..e2b784efec0 100644 --- a/android/cli/commands/_build.js +++ b/android/cli/commands/_build.js @@ -410,7 +410,7 @@ AndroidBuilder.prototype.config = function config(logger, config, cli) { // if there are no devices/emulators, error if (!Object.keys(opts).length) { if (cli.argv.target === 'device') { - logger.warn(__('Unable to find any devices, possibily due to missing dependencies.') + '\n'); + logger.warn(__('Unable to find any devices, possibly due to missing dependencies.') + '\n'); logger.log(__('Continuing with build... (will attempt to install missing dependencies)') + '\n'); } else { logger.warn(__('Unable to find any emulators, possibily due to missing dependencies.') + '\n'); @@ -756,7 +756,7 @@ AndroidBuilder.prototype.config = function config(logger, config, cli) { return callback(new Error(msg)); } - // empty the alias array. it is important that we don't destory the original + // empty the alias array. it is important that we don't destroy the original // instance since it was passed by reference to the alias select list while (_t.keystoreAliases.length) { _t.keystoreAliases.pop(); @@ -1101,7 +1101,7 @@ AndroidBuilder.prototype.validate = function validate(logger, config, cli) { } // we need to translate the sdk to a real api level (i.e. L => 20, MNC => 22) so that - // we can valiate them + // we can validate them function getRealAPILevel(ver) { return (ver && targetSDKMap[ver] && targetSDKMap[ver].sdk) || ver; } @@ -1462,7 +1462,7 @@ AndroidBuilder.prototype.validate = function validate(logger, config, cli) { process.exit(1); } - // For CommonJS modules, verfiy we can find the main script to be loaded by require() method. + // For CommonJS modules, verify we can find the main script to be loaded by require() method. if (!module.native) { // Look for legacy ".js" script file first. let jsFilePath = path.join(module.modulePath, module.id + '.js'); @@ -1541,7 +1541,7 @@ AndroidBuilder.prototype.run = async function run(logger, config, cli, finished) // Notify plugins that we're about to begin. await new Promise(resolve => cli.emit('build.pre.construct', this, resolve)); - // Post build anlytics. + // Post build analytics. await this.doAnalytics(); // Initialize build system. Checks if we need to do a clean or incremental build. @@ -1956,7 +1956,7 @@ AndroidBuilder.prototype.checkIfShouldForceRebuild = function checkIfShouldForce } if (this.activitiesHash !== manifest.activitiesHash) { - this.logger.info(__('Forcing rebuild: Android activites in tiapp.xml changed since last build')); + this.logger.info(__('Forcing rebuild: Android activities in tiapp.xml changed since last build')); this.logger.info(' ' + __('Was: %s', manifest.activitiesHash)); this.logger.info(' ' + __('Now: %s', this.activitiesHash)); return true; @@ -2143,7 +2143,7 @@ AndroidBuilder.prototype.processLibraries = async function processLibraries() { } // Check if the module has a maven repository directory. - // If it does, then we can leverage gradle/maven's depency management system. + // If it does, then we can leverage gradle/maven's dependency management system. let dependencyString = null; const repositoryDirPath = path.join(nextModule.modulePath, 'm2repository'); if (await fs.exists(repositoryDirPath)) { @@ -2198,7 +2198,7 @@ AndroidBuilder.prototype.generateRootProjectFiles = async function generateRootP gradleProperties.push({ key: 'org.gradle.jvmargs', value: `-Xmx${this.javacMaxMemory}` }); await gradlew.writeGradlePropertiesFile(gradleProperties); - // Copy optional "gradle.properties" file contents from Titainum project to the above generated file. + // Copy optional "gradle.properties" file contents from Titanium project to the above generated file. // These properties must be copied to the end of the file so that they can override Titanium's default properties. const customGradlePropertiesFilePath = path.join(this.projectDir, 'platform', 'android', 'gradle.properties'); if (await fs.exists(customGradlePropertiesFilePath)) { diff --git a/android/cli/commands/_buildModule.js b/android/cli/commands/_buildModule.js index 71d41a8d499..30e6f003cf5 100644 --- a/android/cli/commands/_buildModule.js +++ b/android/cli/commands/_buildModule.js @@ -65,7 +65,7 @@ AndroidModuleBuilder.prototype.migrate = async function migrate() { isApiVersionUpdateRequired = (this.manifest.apiversion !== cliModuleAPIVersion); } - // Determin if the "manifest" file's "minsdk" needs updating. + // Determine if the "manifest" file's "minsdk" needs updating. // As of Titanium 9.0.0, modules are built as AARs to an "m2repository". Not supported on older Titanium versions. let isMinSdkUpdateRequired = false; const minSupportedSdkVersionMajorNumber = 9; @@ -860,7 +860,7 @@ AndroidModuleBuilder.prototype.runModule = async function (cli) { await fs.mkdirs(tmpDir); // Generate a new Titanium app in the temp directory which we'll later copy the "example" files to. - // Note: App must have a diffentent id/package-name. Avoids class name collision with module generating Java code. + // Note: App must have a different id/package-name. Avoids class name collision with module generating Java code. this.logger.debug(__('Staging module project at %s', tmpDir.cyan)); await runTiCommand( process.execPath, diff --git a/android/cli/hooks/run.js b/android/cli/hooks/run.js index af2a72d81ec..b8b2e07ef06 100644 --- a/android/cli/hooks/run.js +++ b/android/cli/hooks/run.js @@ -262,7 +262,7 @@ exports.init = function (logger, config, cli) { line = line.replace(/^\w\/(\w+)\s*:/g, '$1:').grey; } line = deviceName + line; - // if it begins with something like "E/SQLiteLog( 1659):" it's not a contination, don't log it. + // if it begins with something like "E/SQLiteLog( 1659):" it's not a continuation, don't log it. } else if (nonTiLogRegexp.test(line)) { return; } diff --git a/android/cli/lib/android-manifest.js b/android/cli/lib/android-manifest.js index 888e7ee7dd9..fec4761eca7 100644 --- a/android/cli/lib/android-manifest.js +++ b/android/cli/lib/android-manifest.js @@ -711,7 +711,7 @@ function isElementNode(node) { * @param {Object} node The XML node object to check. Can be null/undefined. * @returns {Boolean} * Returns true if given node is text between XLM elements or attributes. - * Returns false if not or given an invalild argument. + * Returns false if not or given an invalid argument. * @private */ function isTextNode(node) { diff --git a/android/cli/lib/gradle-wrapper.js b/android/cli/lib/gradle-wrapper.js index 8668a2a1393..0cc8e60a064 100644 --- a/android/cli/lib/gradle-wrapper.js +++ b/android/cli/lib/gradle-wrapper.js @@ -174,7 +174,7 @@ class GradleWrapper { } // Function which returns a stdout/stderr "data" reading function object and outputs it to given "logFunction". - // The "logFunction" argument is expected to be a "logger" object that conatins "logger.info" or "logger.error". + // The "logFunction" argument is expected to be a "logger" object that contains "logger.info" or "logger.error". // The "logType" is a string "error" or "info" to call the correct logger function const createReadableDataHandlerUsing = (logFunction, logType) => { let stringBuffer = ''; diff --git a/android/cli/locales/en.js b/android/cli/locales/en.js index a6bcb0a91f6..5537438a580 100644 --- a/android/cli/locales/en.js +++ b/android/cli/locales/en.js @@ -208,7 +208,7 @@ "Forcing rebuild: Android minimum SDK changed since last build": "Forcing rebuild: Android minimum SDK changed since last build", "Forcing rebuild: Android target SDK changed since last build": "Forcing rebuild: Android target SDK changed since last build", "Forcing rebuild: tiapp.xml properties changed since last build": "Forcing rebuild: tiapp.xml properties changed since last build", - "Forcing rebuild: Android activites in tiapp.xml changed since last build": "Forcing rebuild: Android activites in tiapp.xml changed since last build", + "Forcing rebuild: Android activities in tiapp.xml changed since last build": "Forcing rebuild: Android activites in tiapp.xml changed since last build", "Forcing rebuild: Android services in tiapp.xml SDK changed since last build": "Forcing rebuild: Android services in tiapp.xml SDK changed since last build", "Forcing rebuild: One or more JSS files changed since last build": "Forcing rebuild: One or more JSS files changed since last build", "Forcing rebuild: mergeCustomAndroidManifest config has changed since last build": "Forcing rebuild: mergeCustomAndroidManifest config has changed since last build", diff --git a/android/debugger.md b/android/debugger.md index 44f2d81bc3a..4cb90a59e99 100644 --- a/android/debugger.md +++ b/android/debugger.md @@ -52,7 +52,7 @@ That simply places the message in a queue. One of the two threads spun up after ### Handling messages coming from the Debugger -The second thread spun up after a connection is made simply reads lines from the debugger's stream and does very basic parsing of the message. Once the headers are stripped, we grab the JSON body and call down into C++ to do a V8::Debug::SendCommand to give the command to V8. +The second thread spun up after a connection is made simply reads lines from the debuggers stream and does very basic parsing of the message. Once the headers are stripped, we grab the JSON body and call down into C++ to do a V8::Debug::SendCommand to give the command to V8. The next step is to call V8::Debug::ProcessDebugMessages(). We do so indirectly by using a Handler.post(Runnable) to ensure this gets called on the main thread. diff --git a/android/kroll-apt/src/main/java/org/appcelerator/kroll/annotations/generator/KrollJSONGenerator.java b/android/kroll-apt/src/main/java/org/appcelerator/kroll/annotations/generator/KrollJSONGenerator.java index 58a6ad271cc..e97abe907c0 100644 --- a/android/kroll-apt/src/main/java/org/appcelerator/kroll/annotations/generator/KrollJSONGenerator.java +++ b/android/kroll-apt/src/main/java/org/appcelerator/kroll/annotations/generator/KrollJSONGenerator.java @@ -210,7 +210,7 @@ protected void initialize() } properties = (Map) JSONValue.parseWithException(new FileReader(jsonPath)); - debug("Succesfully loaded existing binding data: " + jsonPath); + debug("Successfully loaded existing binding data: " + jsonPath); } catch (Exception e) { // file doesn't exist, we'll just create it later debug("No binding data found, creating new data file: %s/%s", this.jarJsonPackageName, diff --git a/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java b/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java index ff99dade02d..947cc59cde4 100644 --- a/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java +++ b/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java @@ -561,7 +561,7 @@ public void onDisposing(KrollRuntime runtime) // Remove this listener from the runtime's static collection. KrollRuntime.removeOnDisposingListener(this); - // Unregister all currently registerd broadcast receviers. + // Unregister all currently registered broadcast receivers. // They can no longer be handled by the terminating JavaScript runtime. while (registeredBroadcastReceiverProxyList.isEmpty() == false) { unregisterBroadcastReceiver(registeredBroadcastReceiverProxyList.pollFirst()); diff --git a/android/modules/database/src/java/ti/modules/titanium/database/DatabaseModule.java b/android/modules/database/src/java/ti/modules/titanium/database/DatabaseModule.java index 43a984a20ed..434ea620543 100644 --- a/android/modules/database/src/java/ti/modules/titanium/database/DatabaseModule.java +++ b/android/modules/database/src/java/ti/modules/titanium/database/DatabaseModule.java @@ -73,7 +73,7 @@ public TiDatabaseProxy open(Object file) throw new IllegalArgumentException("Ti.Database.open() was given invalid URL: " + fileString); } } else { - // Assume we were given a databas file name only. (This is the most common case.) + // Assume we were given a database file name only. (This is the most common case.) dbName = fileString; } } else if (file != null) { diff --git a/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/GeolocationModule.java b/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/GeolocationModule.java index caaf7f4473e..b43d22f214e 100644 --- a/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/GeolocationModule.java +++ b/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/GeolocationModule.java @@ -392,7 +392,7 @@ protected void eventListenerAdded(String event, int count, KrollProxy proxy) // FIXME: Why can't we just track some boolean flag for this? if (currentPositionCallback.size() == 0) { HashMap locationProviders = simpleLocationProviders; - // FIXME: why does this differ from how we enable in getCurrentPostion()? + // FIXME: why does this differ from how we enable in getCurrentPosition()? if (getManualMode()) { locationProviders = androidModule.manualLocationProviders; } diff --git a/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/android/LocationProviderProxy.java b/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/android/LocationProviderProxy.java index 10f27aa0371..6dab8970620 100644 --- a/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/android/LocationProviderProxy.java +++ b/android/modules/geolocation/src/java/ti/modules/titanium/geolocation/android/LocationProviderProxy.java @@ -181,7 +181,7 @@ public String getName() if (property == null) { Log.e(TAG, "No name found for location provider"); - return ""; // this shouldnt be possible + return ""; // this shouldn't be possible } return (String) property; diff --git a/android/modules/gesture/src/java/ti/modules/titanium/gesture/TiDeviceOrientationMonitor.java b/android/modules/gesture/src/java/ti/modules/titanium/gesture/TiDeviceOrientationMonitor.java index f67ce2f0989..aaabed786a4 100644 --- a/android/modules/gesture/src/java/ti/modules/titanium/gesture/TiDeviceOrientationMonitor.java +++ b/android/modules/gesture/src/java/ti/modules/titanium/gesture/TiDeviceOrientationMonitor.java @@ -82,7 +82,7 @@ public TiDeviceOrientationMonitor(Handler handler) if (value instanceof SensorManager) { this.sensorManager = (SensorManager) value; } else { - Log.w(TAG, "Unable to aquire SensorManager."); + Log.w(TAG, "Unable to acquire SensorManager."); } // Create an event handler for the Android "OrientationEventListener". @@ -370,7 +370,7 @@ public void onSensorChanged(SensorEvent event) break; } - // Do not continue if the device rotation matrix has not been udpated above. + // Do not continue if the device rotation matrix has not been updated above. if (!wasRotationMatrixUpdated) { return; } diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/CollatorProxy.java b/android/modules/locale/src/java/ti/modules/titanium/locale/CollatorProxy.java index df41a8005dc..009a389bdc3 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/CollatorProxy.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/CollatorProxy.java @@ -55,7 +55,7 @@ public void handleCreationDict(KrollDict properties) options = new KrollDict(); } - // Determine the collatior setting we need to use. + // Determine the collator setting we need to use. int strengthId; int decompositionId = Collator.CANONICAL_DECOMPOSITION; this.isStrippingAccents = false; diff --git a/android/modules/locale/src/java/ti/modules/titanium/locale/DateTimeFormatProxy.java b/android/modules/locale/src/java/ti/modules/titanium/locale/DateTimeFormatProxy.java index b60eff0d305..720e03220ae 100644 --- a/android/modules/locale/src/java/ti/modules/titanium/locale/DateTimeFormatProxy.java +++ b/android/modules/locale/src/java/ti/modules/titanium/locale/DateTimeFormatProxy.java @@ -121,7 +121,7 @@ public void handleCreationDict(KrollDict properties) String dateStyleStringId = TiConvert.toString(options.get("dateStyle")); String timeStyleStringId = TiConvert.toString(options.get("timeStyle")); - // Determine if at least 1 "date" componoent has been configured. + // Determine if at least 1 "date" component has been configured. boolean hasCustomDateSettings = (weekdayFormatId != null) || (eraFormatId != null) @@ -129,7 +129,7 @@ public void handleCreationDict(KrollDict properties) || (monthFormatId != null) || (dayFormatId != null); - // Determine if at least 1 "time" componoent has been configured. + // Determine if at least 1 "time" component has been configured. boolean hasCustomTimeSettings = (hourFormatId != null) || (minuteFormatId != null) @@ -315,7 +315,7 @@ public KrollDict[] formatToParts(Date value) index = endIndex; } - // Add the substring part enttry to the collection. + // Add the substring part entry to the collection. KrollDict entry = new KrollDict(); entry.put(TiC.PROPERTY_TYPE, typeName); entry.put(TiC.PROPERTY_VALUE, substring); diff --git a/android/modules/media/src/java/ti/modules/titanium/media/AudioPlayerProxy.java b/android/modules/media/src/java/ti/modules/titanium/media/AudioPlayerProxy.java index 0fedb405717..58bc45f48a9 100644 --- a/android/modules/media/src/java/ti/modules/titanium/media/AudioPlayerProxy.java +++ b/android/modules/media/src/java/ti/modules/titanium/media/AudioPlayerProxy.java @@ -64,7 +64,7 @@ public AudioPlayerProxy() { super(); - // TODO - we shouldnt need this as this proxy is created only from the runtime - double check + // TODO - we shouldn't need this as this proxy is created only from the runtime - double check // TODO this needs to happen post-set //((TiBaseActivity)getActivity()).addOnLifecycleEventListener(this); diff --git a/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java b/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java index 7e3c54c74bc..f7fd67028c4 100644 --- a/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java +++ b/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java @@ -761,7 +761,7 @@ public void onDestroy(Activity activity) fireComplete(MediaModule.VIDEO_FINISH_REASON_USER_EXITED); } - // Cancel any Thumbnail requests and releasing TiMediaMetadataRetriver resource + // Cancel any Thumbnail requests and releasing TiMediaMetadataRetriever resource cancelAllThumbnailImageRequests(); } @@ -793,7 +793,7 @@ public void cancelAllThumbnailImageRequests() /** * Convenience method for creating a response handler that is used when getting a - * bitmmap. + * bitmap. * * @param callback Javascript function that the response handler will invoke * once the bitmap response is ready diff --git a/android/modules/network/src/java/ti/modules/titanium/network/socket/TCPProxy.java b/android/modules/network/src/java/ti/modules/titanium/network/socket/TCPProxy.java index ef500b4b799..0037dc40031 100644 --- a/android/modules/network/src/java/ti/modules/titanium/network/socket/TCPProxy.java +++ b/android/modules/network/src/java/ti/modules/titanium/network/socket/TCPProxy.java @@ -449,7 +449,7 @@ public void close() throws IOException } catch (Exception e) { e.printStackTrace(); - throw new IOException("Error occured when closing socket"); + throw new IOException("Error occurred when closing socket"); } } diff --git a/android/modules/platform/src/java/ti/modules/titanium/platform/PlatformModule.java b/android/modules/platform/src/java/ti/modules/titanium/platform/PlatformModule.java index da68156e563..b83a70af2b1 100644 --- a/android/modules/platform/src/java/ti/modules/titanium/platform/PlatformModule.java +++ b/android/modules/platform/src/java/ti/modules/titanium/platform/PlatformModule.java @@ -259,7 +259,7 @@ public boolean openURL(KrollInvocation invocation, String url, @Kroll.argument(optional = true) Object arg2, @Kroll.argument(optional = true) Object arg3) { // If given an optional callback, then call this method recursively without the callback. - // Note: We might also receieve an optional KrollDict argument. This is iOS only and should be ignored. + // Note: We might also receive an optional KrollDict argument. This is iOS only and should be ignored. KrollFunction callback = null; if (arg2 instanceof KrollFunction) { callback = (KrollFunction) arg2; @@ -471,7 +471,7 @@ private synchronized List getProcessors() // TODO Sort processors by index, fill in model name by preceding if unknown } catch (IOException ex) { - // somethign went wrong, create "default" set of processors? + // something went wrong, create "default" set of processors? this.processors = new ArrayList<>(processorCount); for (int i = 0; i < processorCount; i++) { this.processors.add(Processor.unknown(i)); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java index bda1ac7ac0f..04781c1de63 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewRowProxy.java @@ -234,7 +234,7 @@ public void setHolder(TableViewHolder holder) /** * Override getRect() to amend dimensions. * - * @return Dictinary of view dimensions. + * @return Dictionary of view dimensions. */ @Override public KrollDict getRect() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiSwipeRefreshLayout.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiSwipeRefreshLayout.java index c525cf4478b..4459cc9e422 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiSwipeRefreshLayout.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiSwipeRefreshLayout.java @@ -93,8 +93,8 @@ public void setSwipeRefreshEnabled(boolean value) * Updates this view's width and height based on the given width and height constraints. *

* Given arguments size and size mode can be extracted by the Android "View.MeasureSpec" class. - * @param widthMeasureSpec Provides the parent's width contraints and size mode. - * @param heightMeasureSpec Provides the parent's height contraints and size mode. + * @param widthMeasureSpec Provides the parent's width constraints and size mode. + * @param heightMeasureSpec Provides the parent's height constraints and size mode. */ @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIEditText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIEditText.java index 5757f2cabb4..d17f7fe63cb 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIEditText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIEditText.java @@ -443,7 +443,7 @@ public boolean onTouchEvent(MotionEvent event) // Request the parent to scroll if one of the following is true: // - EditText is not scrollable. (ie: All text fits within the box.) - // - EditText is scrollabe, but cannot scroll any further in given direction. + // - EditText is scrollable, but cannot scroll any further in given direction. if (!isScrollEnabled || !canScrollFurther) { wasHandled = dispatchNestedPreScroll(deltaX, deltaY, null, null); wasHandled |= dispatchNestedScroll(0, 0, deltaX, deltaY, null); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java index bc765e17d17..3198fdbea7a 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUILabel.java @@ -247,7 +247,7 @@ private void adjustTextFontSize(@NonNull MaterialTextView textView) { int value = textView.getWidth(); { - // Exlude the view's padding and borders. + // Exclude the view's padding and borders. value -= textView.getTotalPaddingLeft() + textView.getTotalPaddingRight(); } if ((this.layoutParams != null) && (this.layoutParams.optionWidth != null) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIMaskedImage.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIMaskedImage.java index 6621170cdbe..96815bd63f0 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIMaskedImage.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIMaskedImage.java @@ -125,7 +125,7 @@ public void processProperties(KrollDict properties) } /** - * Called when one of the proxy's properies have changed. + * Called when one of the proxy's properties have changed. *

* Expected to be called on the main UI thread. * @param key The unique name of the property. @@ -1295,7 +1295,7 @@ public boolean drawTo(Canvas canvas) Drawable imageDrawable = getMaskedDrawable().getImageDrawable(); Bitmap imageBitmap = getBitmapFrom(imageDrawable); if (imageBitmap != null) { - // Draw the image drawable's bitmap ourselves with given blend mode. (Most optmized.) + // Draw the image drawable's bitmap ourselves with given blend mode. (Most optimized.) bufferedCanvas.drawBitmap(imageBitmap, null, targetBounds, bufferedPaint); } else if (imageDrawable != null) { // Draw the image via its drawable with given blend mode. (Least optimized.) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIScrollView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIScrollView.java index 7dc36c1d96d..4dded6d0761 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIScrollView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIScrollView.java @@ -114,7 +114,7 @@ public void setParentContentWidth(int width) /** * Gets the value set via the setParentContentWidth() method. - * Note that this value is not assignd automatically. The owner must assign it. + * Note that this value is not assigned automatically. The owner must assign it. * @return Returns the parent view's width, excluding its left/right padding. */ public int getParentContentWidth() @@ -136,7 +136,7 @@ public void setParentContentHeight(int height) /** * Gets the value set via the setParentContentHeight() method. - * Note that this value is not assignd automatically. The owner must assign it. + * Note that this value is not assigned automatically. The owner must assign it. * @return Returns the parent view's height, excluding its top/bottom padding. */ public int getParentContentHeight() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index ada2e209be7..b5cc0adbc88 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -781,7 +781,7 @@ public void handleKeyboard(KrollDict d) } // Update fullscreen edit handling. - // We might have to diable it due to Google bugs with password handling of certain input types. + // We might have to disable it due to Google bugs with password handling of certain input types. handleFullscreen(d); // Force keyboard to use English if enabled. (Not all keyboards honor this setting.) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java index 491454559a6..4de91d69ff7 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListItemProxy.java @@ -580,7 +580,7 @@ public ListViewProxy getListViewProxy() /** * Override getRect() to amend dimensions. * - * @return Dictinary of view dimensions. + * @return Dictionary of view dimensions. */ @Override public KrollDict getRect() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java index d242d6b18ec..6b7defa8ae1 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java @@ -311,7 +311,7 @@ private void reset() * Set header and footer views of holder. * * @param listViewProxy ListView proxy. - * @param properties Properties containing header and footer entires. + * @param properties Properties containing header and footer entries. * @param updateHeader Boolean to determine if the header should be updated. * @param updateFooter Boolean to determine if the footer should be updated. */ diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java index ea910787c9c..6d43dab93dc 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java @@ -632,7 +632,7 @@ public void setSeparator(int color, int height) } /** - * Starts dragging programatically. + * Starts dragging programmatically. * * @param vHolder The dedicated view holder */ diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIAbstractTabGroup.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIAbstractTabGroup.java index 67317c878cd..67957c1309b 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIAbstractTabGroup.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIAbstractTabGroup.java @@ -357,7 +357,7 @@ protected boolean hasCustomBackground(TiViewProxy tabProxy) } /** - * Method for creating a RippleDrawable to be used as a bacgkround for an item in the Controller. + * Method for creating a RippleDrawable to be used as a background for an item in the Controller. * Creates the RippleDrawable for two states - the provided state and its negative value. * If the properties are not set the method falls back to the colorPrimary of the current theme. * The previous implementation of TabGroup added the ripple effect by default for tabs, thus this diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebChromeClient.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebChromeClient.java index fceba8a9414..9dc644f4e28 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebChromeClient.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebChromeClient.java @@ -135,7 +135,7 @@ public void onRequestPermissionsResult( /** * Called when the HTML is requesting permission to do WebRTC audio/video capture or access a media resource. * This method will prompt the end-user for permission to grant access to the requested web resource. - * @param request Object providing the grant/deny callback and the resoruces being requested. + * @param request Object providing the grant/deny callback and the resources being requested. */ @Override public void onPermissionRequest(final PermissionRequest request) @@ -539,7 +539,7 @@ public void onError(Activity activity, int requestCode, Exception ex) } }; - // Display the file chooser or catpure activity. + // Display the file chooser or capture activity. try { Intent intent = createFileChooserIntentFrom(chooserParams); activity.launchActivityForResult(intent, activity.getUniqueResultCode(), resultHandler); diff --git a/android/notes.md b/android/notes.md index a7140dc4a46..af6e08f5d2e 100644 --- a/android/notes.md +++ b/android/notes.md @@ -19,7 +19,7 @@ TODOs!!! Testing V8-inspector/debugger ======== The goal is to be able to debug apps via Chrome Devtools or Studio. -We hook up a websocket server in JSDebugger.java to talk to DevTools. This carries the messages back and forth (basically wbesaockets are the "base" protocol that the isnpector protocol travels over) +We hook up a websocket server in JSDebugger.java to talk to DevTools. This carries the messages back and forth (basically websockets are the "base" protocol that the inspector protocol travels over) - Use multiple terminal tabs/windows: - One for running a test app to debug with: diff --git a/android/runtime/v8/src/java/org/appcelerator/kroll/runtime/v8/JSDebugger.java b/android/runtime/v8/src/java/org/appcelerator/kroll/runtime/v8/JSDebugger.java index ffa9995a277..7bcce6ab960 100644 --- a/android/runtime/v8/src/java/org/appcelerator/kroll/runtime/v8/JSDebugger.java +++ b/android/runtime/v8/src/java/org/appcelerator/kroll/runtime/v8/JSDebugger.java @@ -205,7 +205,7 @@ public void onMessage(WebSocket conn, String message) { inspectorMessages.offer(message); // put message into queue - // if we haven't initialied yet, sniff the incoming messages + // if we haven't initialized yet, sniff the incoming messages if (!JSDebugger.this.ready.get()) { // copy any waiting messages into our initial queue String nextMessage = inspectorMessages.poll(); diff --git a/android/runtime/v8/src/native/InspectorClient.cpp b/android/runtime/v8/src/native/InspectorClient.cpp index 0f39ee89432..ef3cc91fa9d 100644 --- a/android/runtime/v8/src/native/InspectorClient.cpp +++ b/android/runtime/v8/src/native/InspectorClient.cpp @@ -112,7 +112,7 @@ void InspectorClient::CallAndPauseOnStart(const v8::FunctionCallbackInfoIsString()); assert(args[1]->IsString()); - // Note that this differs from Node's implementation wher ethey expect the first arg to be a pre-compiled function + // Note that this differs from Node's implementation where they expect the first arg to be a pre-compiled function // And a variable number of additional arguments to pass to that function. // They wrap the source with a function just like Module.wrap for standard code // Then compile the function and pass it into this method to schedule a pause and then invoke it. diff --git a/android/runtime/v8/src/native/JavaObject.h b/android/runtime/v8/src/native/JavaObject.h index 36b815eec6e..0c7349eeb34 100644 --- a/android/runtime/v8/src/native/JavaObject.h +++ b/android/runtime/v8/src/native/JavaObject.h @@ -15,7 +15,7 @@ namespace titanium { // Provides an interface between a JavaScript object // and a Java object instance. This class is also responsible -// for mangaging the lifetime of the Java object reference +// for managing the lifetime of the Java object reference // so that it is properly collected once becoming unreachable // from the JavaScript code. class JavaObject : public EventEmitter diff --git a/android/runtime/v8/src/native/modules/APIModule.cpp b/android/runtime/v8/src/native/modules/APIModule.cpp index 669be7264ca..a2628327880 100644 --- a/android/runtime/v8/src/native/modules/APIModule.cpp +++ b/android/runtime/v8/src/native/modules/APIModule.cpp @@ -48,7 +48,7 @@ void APIModule::Initialize(Local target, Local context) // Hook methods to the API prototype, notice these aren't hooked to API // itself, instead we return a singleton of an API instance and export it // as Ti.API - // Not sure why we then hook apiName as instance proprty, since + // Not sure why we then hook apiName as instance property, since // the difference is made moot by the singleton! SetProtoMethod(isolate, constructor, "debug", logDebug); SetProtoMethod(isolate, constructor, "info", logInfo); diff --git a/android/runtime/v8/src/native/modules/ScriptsModule.cpp b/android/runtime/v8/src/native/modules/ScriptsModule.cpp index 3b9a50375b8..40092181e64 100644 --- a/android/runtime/v8/src/native/modules/ScriptsModule.cpp +++ b/android/runtime/v8/src/native/modules/ScriptsModule.cpp @@ -253,7 +253,7 @@ void WrappedScript::EvalMachine(const FunctionCallbackInfo& args) // Use the passed in context MaybeLocal contextArg = args[sandbox_index]->ToObject(currentContext); if (contextArg.IsEmpty()) { - // FIXME Will this ever happen? This is not likley and probably the wrong way to handle this. We should at least log it... + // FIXME Will this ever happen? This is not likely and probably the wrong way to handle this. We should at least log it... context.Reset(isolate, Context::New(isolate)); } else { nContext = WrappedContext::Unwrap(isolate, contextArg.ToLocalChecked()); @@ -261,7 +261,7 @@ void WrappedScript::EvalMachine(const FunctionCallbackInfo& args) } } - // Explicitly set up var to track context we shoudl use for compile/run of script. + // Explicitly set up var to track context we should use for compile/run of script. // When "thisContext", use teh current context from the isolate. Otherwise use the context we set in the Persistent above Local contextToUse = (context_flag == thisContext) ? currentContext : context.Get(isolate); diff --git a/android/templates/module/generated/build.gradle b/android/templates/module/generated/build.gradle index f28a5aee09c..50de55cf776 100644 --- a/android/templates/module/generated/build.gradle +++ b/android/templates/module/generated/build.gradle @@ -168,7 +168,7 @@ tasks.withType(JavaCompile) { // Execute our "generate-cpp-files.js" script after Java compile to finish generating C++ files. // Depends on the JSON file produced by our "kroll-apt" Java annotation processor. - // TODO: Our annnotation processor should do ALL of the proxy code generation. Don't piece-meal it. + // TODO: Our annotation processor should do ALL of the proxy code generation. Don't piece-meal it. doLast { exec { environment 'TI_MODULE_BINDINGS_JSON_FILE', tiModuleBindingsJsonPath @@ -246,7 +246,7 @@ publishing { } } -// Load the module developer's optional "build.gradle" file from "/android" directory. +// Load the module developer's optional "build.gradle" file from "/android" directory. // This gradle file is expected to provide the module's "dependencies". def moduleBuildGradlePath = "${projectDir}/../../build.gradle" if (file(moduleBuildGradlePath).exists()) { diff --git a/android/templates/module/generated/generate-cpp-files.js b/android/templates/module/generated/generate-cpp-files.js index 2b64acd8aa6..a383a506681 100644 --- a/android/templates/module/generated/generate-cpp-files.js +++ b/android/templates/module/generated/generate-cpp-files.js @@ -60,7 +60,7 @@ function replacePlaceholders(text, placeholders) { /** Generates C++ source files for the module. */ async function main() { - // Load module's JSON file containing all proxy bindings generated by "kroll-apt" Java annotatation processor. + // Load module's JSON file containing all proxy bindings generated by "kroll-apt" Java annotation processor. const bindingJsonPath = process.env.TI_MODULE_BINDINGS_JSON_FILE; const bindingJson = JSON.parse(fs.readFileSync(bindingJsonPath)); const moduleClassName = Object.keys(bindingJson.modules)[0]; diff --git a/android/titanium/bootstrap.lazymodule.js.ejs b/android/titanium/bootstrap.lazymodule.js.ejs index 833adce2d8c..eafa53fbe17 100644 --- a/android/titanium/bootstrap.lazymodule.js.ejs +++ b/android/titanium/bootstrap.lazymodule.js.ejs @@ -4,7 +4,7 @@ if (!('__propertiesDefined__' in <%- name %>)) { if (mod.children) { for (const child of mod.children) { let fullAPIName = child.proxyAttrs.fullAPIName; - // Drop leading 'Tiatnium' if in full aAPI name + // Drop leading 'Titanium' if in full aAPI name if (fullAPIName.startsWith('Titanium.')) { fullAPIName = fullAPIName.slice(9); } @@ -42,4 +42,4 @@ _%> _%> } <%- name %>.__propertiesDefined__ = true; -return <%- name %>; \ No newline at end of file +return <%- name %>; diff --git a/android/titanium/libv8-services.js b/android/titanium/libv8-services.js index d3e8100e0fe..cd737d24ad3 100644 --- a/android/titanium/libv8-services.js +++ b/android/titanium/libv8-services.js @@ -222,7 +222,7 @@ async function createSnapshot() { process.exit(1); } - // Generaet an empty C++ header. Allows build to succeed and app will load "ti.main.js" normally instead. + // Generate an empty C++ header. Allows build to succeed and app will load "ti.main.js" normally instead. await fs.writeFile(v8SnapshotHeaderFilePath, '// Failed to generate V8 snapshots. See build log.'); } } @@ -277,7 +277,7 @@ function createSnapshotThenExit() { /** * Checks if the V8 library referenced by the "titanium_mobile/android/package.json" file is installed. - * If not, then this function will automatically download/install it. Function will do nothing if alredy installed. + * If not, then this function will automatically download/install it. Function will do nothing if already installed. * * Will exit the process when the async operation ends. Intended to be called from the command line. */ diff --git a/android/titanium/src/java/org/appcelerator/kroll/KrollProxy.java b/android/titanium/src/java/org/appcelerator/kroll/KrollProxy.java index 9b430472bf2..110371b523b 100644 --- a/android/titanium/src/java/org/appcelerator/kroll/KrollProxy.java +++ b/android/titanium/src/java/org/appcelerator/kroll/KrollProxy.java @@ -513,7 +513,7 @@ public void extend(KrollDict options) Object oldValue = properties.get(name); Object value = options.get(name); - // dont just fire the change event, make sure we set the property back on the KrollObject + // don't just fire the change event, make sure we set the property back on the KrollObject // since the property change may not be driven from JS (KrollObject->Java proxy) setProperty(name, value); diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java b/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java index e7365e4b7e8..8421b066570 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiBaseActivity.java @@ -345,7 +345,7 @@ protected void updateTitle() String oldTitle = (String) getTitle(); String newTitle = TiConvert.toString(window.getProperty(TiC.PROPERTY_TITLE)); int colorInt = -1; - + if (oldTitle == null) { oldTitle = ""; } @@ -1602,7 +1602,7 @@ protected void onDestroy() // "isFinishing" will return true if the Android OS won't restore this destroyed activity later. // This happens when finish() method is called of end-user back navigates out of the activity. - // Note: Will breturn false if system intends to restore the activity later, which happens if + // Note: Will return false if system intends to restore the activity later, which happens if // system setting "Don't keep activities" is enabled or "Background process limit" was exceeded. boolean isFinishing = isFinishing(); diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiBaseService.java b/android/titanium/src/java/org/appcelerator/titanium/TiBaseService.java index 4a816200c28..644e14bd3cc 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiBaseService.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiBaseService.java @@ -150,7 +150,7 @@ public void unsubscribe() /** * Called just before the JavaScript runtime is terminated. *

- * Stops the service since the JavaScript file binded to it can no longer control it. + * Stops the service since the JavaScript file bound to it can no longer control it. * @param runtime The runtime instance that is about to be terminated/disposed. */ @Override diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiBlob.java b/android/titanium/src/java/org/appcelerator/titanium/TiBlob.java index 1a9b397ec6e..aa8c61cbf36 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiBlob.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiBlob.java @@ -91,7 +91,7 @@ public static TiBlob blobFromString(String data) /** * Creates a blob from a file and sets a mimeType based on the file name. * @param file the file used to create blob. - * @return new instane of TiBlob. + * @return new instance of TiBlob. */ public static TiBlob blobFromFile(TiBaseFile file) { diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiRootActivity.java b/android/titanium/src/java/org/appcelerator/titanium/TiRootActivity.java index f99301788e2..7603287301b 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiRootActivity.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiRootActivity.java @@ -186,7 +186,7 @@ protected void onCreate(Bundle savedInstanceState) // Recreate this activity on the current task. if (isActivityForResult) { - // This activtiy was created via startActivityForResult(). + // This activity was created via startActivityForResult(). // "Forward" the result handling to the next activity we're about to start-up. Intent relaunchIntent = newIntent; if (relaunchIntent == null) { @@ -304,9 +304,9 @@ public void onDisposing(KrollRuntime runtime) } }); if (KrollRuntime.getActivityRefCount() > 0) { - Activity currentActvitiy = getTiApp().getCurrentActivity(); - if (currentActvitiy != null) { - currentActvitiy.finishAffinity(); + Activity currentActivity = getTiApp().getCurrentActivity(); + if (currentActivity != null) { + currentActivity.finishAffinity(); } TiApplication.terminateActivityStack(); } else { diff --git a/android/titanium/src/java/org/appcelerator/titanium/io/TiFile.java b/android/titanium/src/java/org/appcelerator/titanium/io/TiFile.java index ec3d736226f..bcd12aca1b3 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/io/TiFile.java +++ b/android/titanium/src/java/org/appcelerator/titanium/io/TiFile.java @@ -100,7 +100,7 @@ public boolean isWriteable() /** * Attempts to create a directory named by the trailing filename of this file. * @param recursive whether to recursively create any missing parent directories in the path. - * @return true if directory was sucessfully created, false otherwise. + * @return true if directory was successfully created, false otherwise. */ @Override public boolean createDirectory(boolean recursive) diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiDeviceOrientation.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiDeviceOrientation.java index f36807e62f6..8a974798c34 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiDeviceOrientation.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiDeviceOrientation.java @@ -165,7 +165,7 @@ public static TiDeviceOrientation fromAndroidSurfaceRotationId(int value) boolean isUprightOrientationPortrait = displayInfo.isUprightOrientationPortrait(); // Configure display info object with given rotation and device's upright orientation. - // Note: The below width/height doesn't need to match the device's actual dispaly size. + // Note: The below width/height doesn't need to match the device's actual display size. // They just need to indicate if the device is portrait/landscape for given rotation. switch (value) { case Surface.ROTATION_0: @@ -302,7 +302,7 @@ public static TiDeviceOrientation from(Display display) * Returns a portrait or landscape orientation if the display's upright orientation * was successfully acquired. *

- * Returns UNKNOWN if failed to aquire the default display's information. + * Returns UNKNOWN if failed to acquire the default display's information. */ public static TiDeviceOrientation fromUprightPositionOfDefaultDisplay() { @@ -321,7 +321,7 @@ public static TiDeviceOrientation fromUprightPositionOfDefaultDisplay() * Returns a portrait or landscape orientation if the display's upright orientation * was successfully acquired. *

- * Returns UNKNOWN if given a null argument or failed to aquire display info. + * Returns UNKNOWN if given a null argument or failed to acquire display info. */ public static TiDeviceOrientation fromUprightPositionOf(Display display) { @@ -395,7 +395,7 @@ public int getHeight() public boolean isUprightOrientationPortrait() { // Determine if the display size is portrait. - // Note: A square display size is considred portrait. (The most commonly used orientation.) + // Note: A square display size is considered portrait. (The most commonly used orientation.) boolean result; switch (this.rotationId) { case Surface.ROTATION_0: diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiDownloadManager.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiDownloadManager.java index 1ab2f967972..e22eb5580e9 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiDownloadManager.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiDownloadManager.java @@ -211,7 +211,7 @@ public InputStream blockingDownload(final URI uri) throws Exception } } - // If we've acquried an HTTP/HTTPS download stream, then wrap the stream. + // If we've acquired an HTTP/HTTPS download stream, then wrap the stream. // The stream wrapper will automatically close the HTTP connection when the stream has been closed. if ((inputStream != null) && (connection instanceof HttpURLConnection)) { final HttpURLConnection httpConnection = (HttpURLConnection) connection; diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiFileHelper2.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiFileHelper2.java index 7122505645f..060100776ac 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiFileHelper2.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiFileHelper2.java @@ -29,7 +29,7 @@ public static String getResourcesPath(String path) /** * Joins many String path segments into one path * @param segments A vararg (or String array) of path segments - * @return The passed-in segements normalized and joined by "/" + * @return The passed-in segments normalized and joined by "/" */ public static String joinSegments(String... segments) { diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiResponseCache.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiResponseCache.java index cf0a725389d..abbae3d34d4 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiResponseCache.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiResponseCache.java @@ -231,7 +231,7 @@ public static boolean peekFollowingRedirects(URI uri) * @param uri The URI to fetch the endpoint of. Can be null. * @return * If the given URI is cached and references a redirect response, then the returned URI will - * be the redirect's "location" URI. + * be the redirects "location" URI. *

* If the given URI does not reference a redirect, then the given URI is returned. *

diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java index efd98b92ce1..126de992a6d 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java @@ -713,7 +713,7 @@ public ImageDrawableLoader() /** * Loads the given image and returns it's decode bitmap wrapped in a drawable. * @param filePath Path or URL to the image file to be loaded. Can be null. - * @return Returns a drawble object used to draw the give image file. + * @return Returns a drawable object used to draw the give image file. *

* Returns null if failed to load the image or if given a null argument. */ diff --git a/android/titanium/src/java/org/appcelerator/titanium/view/TiCompositeLayout.java b/android/titanium/src/java/org/appcelerator/titanium/view/TiCompositeLayout.java index c8f15cc1815..4ad50ad3d7d 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/view/TiCompositeLayout.java +++ b/android/titanium/src/java/org/appcelerator/titanium/view/TiCompositeLayout.java @@ -60,13 +60,13 @@ public enum LayoutArrangement { private boolean needsSort; protected LayoutArrangement arrangement; - // Used by horizonal arrangement calculations + // Used by horizontal arrangement calculations private int horizontalLayoutTopBuffer = 0; private int horizontalLayoutCurrentLeft = 0; private int horizontalLayoutLineHeight = 0; private boolean enableHorizontalWrap = true; private int horizontalLayoutLastIndexBeforeWrap = 0; - private int horiztonalLayoutPreviousRight = 0; + private int horizontalLayoutPreviousRight = 0; int[] horizontal = new int[2]; int[] vertical = new int[2]; /** @@ -252,7 +252,7 @@ public void setChildRelativeSizingTo(int width, int height) /** * Configures this layout to size and position child views that use a percentage based - * width/height and top/bottom/left/right/center properties reatlive to this parent + * width/height and top/bottom/left/right/center properties relative to this parent * layout's width and height. *

* This is the default setting. @@ -875,7 +875,7 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) horizontalLayoutLineHeight = 0; horizontalLayoutTopBuffer = 0; horizontalLayoutLastIndexBeforeWrap = 0; - horiztonalLayoutPreviousRight = 0; + horizontalLayoutPreviousRight = 0; updateRowForHorizontalWrap(right, i); } computeHorizontalLayoutPosition(params, childMeasuredWidth, childMeasuredHeight, right, top, bottom, @@ -1002,19 +1002,19 @@ private void computeHorizontalLayoutPosition(TiCompositeLayout.LayoutParams para TiDimension optionLeft = params.optionLeft; TiDimension optionRight = params.optionRight; - int left = horizontalLayoutCurrentLeft + horiztonalLayoutPreviousRight; + int left = horizontalLayoutCurrentLeft + horizontalLayoutPreviousRight; int optionLeftValue = 0; if (optionLeft != null) { optionLeftValue = optionLeft.getAsPixels(this); left += optionLeftValue; } - horiztonalLayoutPreviousRight = (optionRight == null) ? 0 : optionRight.getAsPixels(this); + horizontalLayoutPreviousRight = (optionRight == null) ? 0 : optionRight.getAsPixels(this); // If it's fill width with horizontal wrap, just take up remaining // space. int right = left + measuredWidth; - if (enableHorizontalWrap && ((right + horiztonalLayoutPreviousRight) > layoutRight || left >= layoutRight)) { + if (enableHorizontalWrap && ((right + horizontalLayoutPreviousRight) > layoutRight || left >= layoutRight)) { // Too long for the current "line" that it's on. Need to move it // down. left = optionLeftValue; diff --git a/android/titanium/src/java/org/appcelerator/titanium/view/TiDrawableReference.java b/android/titanium/src/java/org/appcelerator/titanium/view/TiDrawableReference.java index 7bcccbaaf4d..bcfb1f89777 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/view/TiDrawableReference.java +++ b/android/titanium/src/java/org/appcelerator/titanium/view/TiDrawableReference.java @@ -272,7 +272,7 @@ public static TiDrawableReference fromDictionary(Activity activity, HashMap dict * Does its best to determine the type of reference (url, blob, etc) based on object parameter. *

* Uses the given proxy to resolve relative paths to an image file, if applicable. - * @param proxy Used to acquire an activty and resolve relative paths if given object is a string path. + * @param proxy Used to acquire an activity and resolve relative paths if given object is a string path. * @param object Reference to the image to be loaded such as a file, path, blob, etc. * @return Returns an instance of TiDrawableReference wrapping the given object. */ diff --git a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIFragment.java b/android/titanium/src/java/org/appcelerator/titanium/view/TiUIFragment.java index e7189380b02..51f60f8eda2 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIFragment.java +++ b/android/titanium/src/java/org/appcelerator/titanium/view/TiUIFragment.java @@ -131,7 +131,7 @@ public Fragment getFragment() public boolean handleMessage(Message msg) { - //overwriting so descendents don't have to + //overwriting so descendants don't have to return true; } diff --git a/android/titanium/src/java/ti/modules/titanium/TitaniumModule.java b/android/titanium/src/java/ti/modules/titanium/TitaniumModule.java index 92b21825bf4..365e373862a 100644 --- a/android/titanium/src/java/ti/modules/titanium/TitaniumModule.java +++ b/android/titanium/src/java/ti/modules/titanium/TitaniumModule.java @@ -263,7 +263,7 @@ public String stringFormat(String format, Object[] args) } } catch (Exception ex) { - Log.e(TAG, "Error occured while formatting string", ex); + Log.e(TAG, "Error occurred while formatting string", ex); return null; } } From 0c93fa77aa911e92d3dfbae312e2884706414753 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 21 May 2024 20:04:15 +0200 Subject: [PATCH 048/145] feat(ios): add overrideUserInterfaceStyle to Picker (#14041) --- apidoc/Titanium/UI/Picker.yml | 15 +++++++++++++++ iphone/Classes/TiUIPicker.m | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/apidoc/Titanium/UI/Picker.yml b/apidoc/Titanium/UI/Picker.yml index f32ace414ae..84235b4a4eb 100644 --- a/apidoc/Titanium/UI/Picker.yml +++ b/apidoc/Titanium/UI/Picker.yml @@ -282,6 +282,21 @@ properties: since: "5.2.0" default: "black" + - name: overrideUserInterfaceStyle + summary: Forces the picker to used assigned theme instead of the system theme. + description: | + When set to [USER_INTERFACE_STYLE_DARK](Titanium.UI.USER_INTERFACE_STYLE_DARK) or + [USER_INTERFACE_STYLE_LIGHT](Titanium.UI.USER_INTERFACE_STYLE_LIGHT), the picker will ignore + the system's current theme and use the theme assigned to this property instead. + + When set to [USER_INTERFACE_STYLE_UNSPECIFIED](Titanium.UI.USER_INTERFACE_STYLE_UNSPECIFIED), + the picker will use the system's current theme. + type: Number + default: Titanium.UI.USER_INTERFACE_STYLE_UNSPECIFIED + constants: Titanium.UI.USER_INTERFACE_STYLE_* + osver: {ios: {min: "13.0"}} + since: "12.4.0" + - name: format24 summary: | Determines whether the Time pickers display in 24-hour or 12-hour clock format. diff --git a/iphone/Classes/TiUIPicker.m b/iphone/Classes/TiUIPicker.m index 37c4daaa87e..1f06ad8cdd5 100644 --- a/iphone/Classes/TiUIPicker.m +++ b/iphone/Classes/TiUIPicker.m @@ -225,6 +225,15 @@ - (void)setBackgroundColor_:(id)value } } +- (void)setOverrideUserInterfaceStyle_:(id)args +{ + ENSURE_SINGLE_ARG(args, NSNumber); + if (picker != nil) { + int style = [TiUtils intValue:args def:UIUserInterfaceStyleUnspecified]; + ((UIDatePicker *)[self picker]).overrideUserInterfaceStyle = style; + } +} + - (void)setDateTimeColor_:(id)value { // Guard date picker and iOS 14+ date picker style From bbde0c34b5ffd5f875f8e1b9f49794d5fb5b7c08 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 23 May 2024 06:04:57 +0200 Subject: [PATCH 049/145] fix(android): switchCamera method was missing (#14029) --- .../media/src/java/ti/modules/titanium/media/MediaModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java b/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java index 36f2a4fe516..306c99ed35a 100644 --- a/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java +++ b/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java @@ -1700,6 +1700,7 @@ public void switchCamera(int whichCamera) Log.e(TAG, "Camera preview is not open, unable to switch camera."); return; } + activity.switchCamera(whichCamera); } } From eb87849b67b68205567247e20e30c7d43e8ea990 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 24 May 2024 14:46:11 +0200 Subject: [PATCH 050/145] chore: raise android max sdk support (#14042) --- android/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/package.json b/android/package.json index 92b80bfedc6..ad6f5134f67 100644 --- a/android/package.json +++ b/android/package.json @@ -19,7 +19,7 @@ "minSDKVersion": "21", "compileSDKVersion": "33", "vendorDependencies": { - "android sdk": ">=23.x <=33.x", + "android sdk": ">=23.x <=34.x", "android build tools": ">=30.0.2 <=33.x", "android platform tools": "33.x", "android tools": "<=26.x", From e1f2dc1e4b246c7156e31fd68a287ca04cc4b752 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 24 May 2024 17:05:25 +0200 Subject: [PATCH 051/145] fix(android): remove some deprecated classes (#14039) Co-authored-by: Chris Barber --- .../tabgroup/TiUIBottomNavigationTabGroup.java | 8 ++++---- .../java/org/appcelerator/kroll/common/TiConfig.java | 12 +++++------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java index 517d1191022..f63c4790757 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java @@ -25,7 +25,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationItemView; import com.google.android.material.bottomnavigation.BottomNavigationMenuView; import com.google.android.material.bottomnavigation.BottomNavigationView; -import com.google.android.material.bottomnavigation.LabelVisibilityMode; +import com.google.android.material.navigation.NavigationBarView; import com.google.android.material.shape.CornerFamily; import com.google.android.material.shape.MaterialShapeDrawable; import com.google.android.material.shape.ShapeAppearanceModel; @@ -238,14 +238,14 @@ public void addTabItemInController(TiViewProxy tabProxy) final int shiftMode = proxy.getProperties().optInt(TiC.PROPERTY_SHIFT_MODE, 1); switch (shiftMode) { case 0: - this.mBottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_LABELED); + this.mBottomNavigationView.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED); break; case 1: - this.mBottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_AUTO); + this.mBottomNavigationView.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_AUTO); break; case 2: // NOTE: Undocumented for now, will create new property that has parity with iOS. - this.mBottomNavigationView.setLabelVisibilityMode(LabelVisibilityMode.LABEL_VISIBILITY_UNLABELED); + this.mBottomNavigationView.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_UNLABELED); break; } } diff --git a/android/runtime/common/src/java/org/appcelerator/kroll/common/TiConfig.java b/android/runtime/common/src/java/org/appcelerator/kroll/common/TiConfig.java index fce22c5b393..737e07ba7d8 100644 --- a/android/runtime/common/src/java/org/appcelerator/kroll/common/TiConfig.java +++ b/android/runtime/common/src/java/org/appcelerator/kroll/common/TiConfig.java @@ -6,8 +6,6 @@ */ package org.appcelerator.kroll.common; -import android.util.Config; - /** * A replacement class for org.appcelerator.titanium.config.TitaniumConfig so that I can change * settings via tiapp.xml @@ -24,9 +22,9 @@ public class TiConfig * <property name="ti.android.debug" type="bool">true</property> * */ - public static boolean LOGD = Config.DEBUG; - public static boolean LOGV = Config.DEBUG; - public static boolean DEBUG = Config.DEBUG; - public static boolean RELEASE = !Config.DEBUG; - public static boolean PROFILE = Config.PROFILE; + public static boolean LOGD = false; + public static boolean LOGV = false; + public static boolean DEBUG = false; + public static boolean RELEASE = true; + public static boolean PROFILE = false; } From 3171e140fd106afb3b42f09076b1cc0a0b86f895 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Fri, 24 May 2024 17:28:55 +0200 Subject: [PATCH 052/145] feat(android): improve accessibility text (#14036) * feat(android): improve accessibility text * missing file --------- Co-authored-by: Chris Barber --- .../java/org/appcelerator/titanium/TiC.java | 1 + .../titanium/proxy/TiViewProxy.java | 3 ++- .../appcelerator/titanium/view/TiUIView.java | 24 +++++++++++++++++++ apidoc/Titanium/UI/View.yml | 10 ++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index a09ba8969b5..58beebdde16 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -228,6 +228,7 @@ public class TiC public static final String PROPERTY_ACCESSIBILITY_HINT = "accessibilityHint"; public static final String PROPERTY_ACCESSIBILITY_LABEL = "accessibilityLabel"; public static final String PROPERTY_ACCESSIBILITY_VALUE = "accessibilityValue"; + public static final String PROPERTY_ACCESSIBILITY_DISABLE_LONG = "accessibilityDisableLongPress"; public static final String PROPERTY_ACCESSORY_TYPE = "accessoryType"; public static final String PROPERTY_ACTION = "action"; public static final String PROPERTY_ACTION_VIEW = "actionView"; diff --git a/android/titanium/src/java/org/appcelerator/titanium/proxy/TiViewProxy.java b/android/titanium/src/java/org/appcelerator/titanium/proxy/TiViewProxy.java index d99dee6cac8..77a86fafa7f 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/proxy/TiViewProxy.java +++ b/android/titanium/src/java/org/appcelerator/titanium/proxy/TiViewProxy.java @@ -94,7 +94,8 @@ TiC.PROPERTY_TOUCH_FEEDBACK_COLOR, TiC.PROPERTY_TRANSITION_NAME, TiC.PROPERTY_HIDDEN_BEHAVIOR, - TiC.PROPERTY_ANCHOR_POINT + TiC.PROPERTY_ANCHOR_POINT, + TiC.PROPERTY_ACCESSIBILITY_DISABLE_LONG }) public abstract class TiViewProxy extends KrollProxy { diff --git a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java b/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java index 520b611193b..73630f0c02a 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java +++ b/android/titanium/src/java/org/appcelerator/titanium/view/TiUIView.java @@ -45,7 +45,10 @@ import android.graphics.drawable.ShapeDrawable; import android.os.Build; import androidx.annotation.NonNull; +import androidx.core.view.AccessibilityDelegateCompat; import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; + import android.text.TextUtils; import android.util.Pair; import android.util.SparseArray; @@ -1915,6 +1918,12 @@ protected void registerForTouch(final View touchable) boolean soundEnabled = TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_SOUND_EFFECTS_ENABLED), true); touchable.setSoundEffectsEnabled(soundEnabled); } + + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_ACCESSIBILITY_DISABLE_LONG)) { + if (TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_ACCESSIBILITY_DISABLE_LONG))) { + removeAccessibilityLongClick(); + } + } registerTouchEvents(touchable); // Previously, we used the single tap handling above to fire our click event. It doesn't @@ -2363,4 +2372,19 @@ public String composeContentDescription() } return composeContentDescription(proxy.getProperties()); } + + public void removeAccessibilityLongClick() + { + ViewCompat.setAccessibilityDelegate(nativeView, new AccessibilityDelegateCompat() + { + @Override + public void onInitializeAccessibilityNodeInfo(@NonNull View host, + @NonNull AccessibilityNodeInfoCompat info) + { + super.onInitializeAccessibilityNodeInfo(host, info); + info.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_LONG_CLICK); + info.setLongClickable(false); + } + }); + } } diff --git a/apidoc/Titanium/UI/View.yml b/apidoc/Titanium/UI/View.yml index 522308f2c80..2233fe4011e 100644 --- a/apidoc/Titanium/UI/View.yml +++ b/apidoc/Titanium/UI/View.yml @@ -1159,6 +1159,16 @@ properties: platforms: [android, iphone, ipad, macos] type: String + - name: accessibilityDisableLongPress + summary: Boolean value to remove the long press notification for the device's accessibility service. + description: | + Will disable the "double tap and hold for long press" message when selecting an item. + since: "12.4.0" + platforms: [android] + default: true + availability: creation + type: Boolean + - name: anchorPoint summary: Coordinate of the view about which to pivot an animation. description: | From c601e7e7579b7b527cc2321b63c82232b169faf4 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 25 May 2024 18:56:44 +0200 Subject: [PATCH 053/145] fix: create alloy project with spaces with --alloy (#14046) * fix: create alloy project with spaces with --alloy * use path.join * update --- cli/commands/create.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/commands/create.js b/cli/commands/create.js index 55c40ca2cb2..2b32008b4fa 100644 --- a/cli/commands/create.js +++ b/cli/commands/create.js @@ -184,7 +184,7 @@ CreateCommand.prototype.run = function run(logger, config, cli, finished) { } if (cli.argv.alloy !== undefined) { - execSync('alloy new ' + cli.argv['workspace-dir'] + '/' + cli.argv.name); + execSync(`alloy new "${path.join(cli.argv['workspace-dir'], cli.argv.name)}"`, { stdio: 'inherit' }); } finished(err); From 82203d782fd499a33723bf86b41e1019e50bc99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sun, 26 May 2024 22:13:02 +0200 Subject: [PATCH 054/145] Revert "feat(ios): support multi-scene applications (#13941)" This reverts commit bfc87a6517f0b70b82ea760b8d052381bddf1ff4. Revert "fix(ios): fix debug issues with scenes (#13979)" This reverts commit 8bcd5c31a8dc86415c231a6086c1d83bbb183565. Revert "fix(ios): fix various issues related to the scene migration (#13981)" This reverts commit 6e40edbeab8cf39eee91d916c98aa6a3c6921812. Revert "fix(ios): restore compatibility for Ti.App._resumeRestart() (#13989)" This reverts commit 3a44b3d3ef37c2f7f252479da9a9e9919c540fa9. Revert "fix(ios): fix some open issues related to scenes (#14020)" This reverts commit a0a3aeaf666b864fbcb75e57f011a142dbae715c. chore: restore start sequence --- iphone/Classes/AppModule.m | 29 +- .../TitaniumKit/Sources/API/TiApp.h | 17 +- .../TitaniumKit/Sources/API/TiApp.m | 308 +++++++++--------- .../Sources/API/TiRootViewController.m | 9 +- iphone/iphone/Titanium.plist | 17 - support/iphone/Info.plist | 17 - 6 files changed, 180 insertions(+), 217 deletions(-) diff --git a/iphone/Classes/AppModule.m b/iphone/Classes/AppModule.m index cd12e306ba4..f77864c24dd 100644 --- a/iphone/Classes/AppModule.m +++ b/iphone/Classes/AppModule.m @@ -48,23 +48,9 @@ - (void)_resumeRestart:(id)unused #ifndef TI_USE_AUTOLAYOUT [TiLayoutQueue resetQueue]; #endif - - // Get the currently active scene - UIScene *activeScene = nil; - for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) { - if (scene.activationState == UISceneActivationStateForegroundActive) { - activeScene = scene; - break; - } - } - - if (activeScene == nil) { - NSLog(@"[ERROR] No active scene connected - this may lead to an undefined behavior"); - } - /* Begin backgrounding simulation */ - [appDelegate sceneWillResignActive:activeScene]; - [appDelegate sceneDidEnterBackground:activeScene]; + [appDelegate applicationWillResignActive:app]; + [appDelegate applicationDidEnterBackground:app]; [appDelegate endBackgrounding]; /* End backgrounding simulation */ @@ -90,9 +76,8 @@ - (void)_resumeRestart:(id)unused /* Begin foregrounding simulation */ [appDelegate application:app didFinishLaunchingWithOptions:[appDelegate launchOptions]]; - [appDelegate scene:activeScene willConnectToSession:activeScene.session options:TiApp.app.connectionOptions]; - [appDelegate sceneWillEnterForeground:activeScene]; - [appDelegate sceneDidBecomeActive:activeScene]; + [appDelegate applicationWillEnterForeground:app]; + [appDelegate applicationDidBecomeActive:app]; /* End foregrounding simulation */ } @@ -606,9 +591,9 @@ - (NSNumber *)keyboardVisible - (void)setForceSplashAsSnapshot:(id)args { ENSURE_SINGLE_ARG(args, NSNumber) - [self replaceValue:args - forKey:@"forceSplashAsSnapshot" - notification:NO]; + [self replaceValue:args + forKey:@"forceSplashAsSnapshot" + notification:NO]; BOOL flag = [TiUtils boolValue:args def:NO]; [[TiApp app] setForceSplashAsSnapshot:flag]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index ab334fa9f7c..385adfb6954 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -13,10 +13,17 @@ #import "TiRootViewController.h" #import +extern BOOL applicationInMemoryPanic; // TODO: Remove in SDK 9.0+ + +// TODO: Remove in SDK 9.0+ +TI_INLINE void waitForMemoryPanicCleared() //WARNING: This must never be run on main thread, or else there is a risk of deadlock! +{ +} + /** TiApp represents an instance of an application. There is always only one instance per application which could be accessed through class method. */ -@interface TiApp : TiHost { +@interface TiApp : TiHost { UIWindow *window; UIImageView *loadView; UIView *splashScreenView; @@ -26,7 +33,6 @@ KrollBridge *kjsBridge; NSMutableDictionary *launchOptions; - UISceneConnectionOptions *_connectionOptions; NSTimeInterval started; int32_t networkActivityCount; @@ -113,13 +119,6 @@ */ @property (nonatomic, readonly) NSDictionary *localNotification; -/** - Returns details for the last remote notification. - - Dictionary containing details about remote notification, or _nil_. - */ -@property (nonatomic, readonly) UISceneConnectionOptions *connectionOptions; - /** Returns the application's root view controller. */ diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index ee2d5c8cb65..fd53a04cc7f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -33,6 +33,11 @@ #define SHUTDOWN_TIMEOUT_IN_SEC 3 +BOOL applicationInMemoryPanic = NO; // TODO: Remove in SDK 9.0+ + +// TODO: Remove in SDK 9.0+ +TI_INLINE void waitForMemoryPanicCleared(void); //WARNING: This must never be run on main thread, or else there is a risk of deadlock! + @interface TiApp () - (void)checkBackgroundServices; - (void)appBoot; @@ -48,7 +53,6 @@ @implementation TiApp @synthesize localNotification; @synthesize appBooted; @synthesize userAgent; -@synthesize connectionOptions; + (TiApp *)app { @@ -317,27 +321,122 @@ - (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdenti - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions_ { + started = [NSDate timeIntervalSinceReferenceDate]; + [TiExceptionHandler defaultExceptionHandler]; + if ([[TiSharedConfig defaultConfig] logServerEnabled]) { + [[TiLogServer defaultLogServer] start]; + } + + // Initialize the root-window + window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + + // Initialize the launch options to be used by the client + launchOptions = [[NSMutableDictionary alloc] initWithDictionary:launchOptions_]; + + // Initialize the root-controller + [self initController]; + + // If we have a APNS-UUID, assign it + NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; + if (apnsUUID != nil) { + remoteDeviceUUID = [apnsUUID copy]; + } + + [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; + + // Get some launch options to validate before finish launching. Some of them + // need to be mapepd from native to JS-types to be used by the client + NSURL *urlOptions = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; + NSString *sourceBundleId = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; + NSDictionary *_remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; + UILocalNotification *_localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; + NSNumber *launchedLocation = [launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]; + UIApplicationShortcutItem *shortcut = [launchOptions objectForKey:UIApplicationLaunchOptionsShortcutItemKey]; + NSDictionary *userActivityDictionary = launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey]; + + // Map user activity if exists + NSUserActivity *userActivity = userActivityDictionary[@"UIApplicationLaunchOptionsUserActivityKey"]; + if (userActivity != nil && [userActivity isKindOfClass:[NSUserActivity class]]) { + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:@{ @"activityType" : [userActivity activityType] }]; + + if ([TiUtils isIOSVersionOrGreater:@"9.0"] && [[userActivity activityType] isEqualToString:CSSearchableItemActionType]) { + if ([userActivity userInfo] != nil) { + [dict setObject:[[userActivity userInfo] objectForKey:CSSearchableItemActivityIdentifier] forKey:@"searchableItemActivityIdentifier"]; + } + } + + if ([userActivity title] != nil) { + [dict setObject:[userActivity title] forKey:@"title"]; + } + + if ([userActivity webpageURL] != nil) { + [dict setObject:[[userActivity webpageURL] absoluteString] forKey:@"webpageURL"]; + } + + if ([userActivity userInfo] != nil) { + [dict setObject:[userActivity userInfo] forKey:@"userInfo"]; + } + + // Update launchOptions so that we send only expected values rather than NSUserActivity + [launchOptions setObject:@{ @"UIApplicationLaunchOptionsUserActivityKey" : dict } + forKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; + } + + // Map background location key + if (launchedLocation != nil) { + [launchOptions setObject:launchedLocation forKey:@"launchOptionsLocationKey"]; + [launchOptions removeObjectForKey:UIApplicationLaunchOptionsLocationKey]; + } + + // Map local notification + if (_localNotification != nil) { + localNotification = [[[self class] dictionaryWithLocalNotification:_localNotification] retain]; + [launchOptions removeObjectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; + + // Queue the "localnotificationaction" event for iOS 9 and lower. + // For iOS 10+, the "userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler" delegate handles it + if ([TiUtils isIOSVersionLower:@"9.0"]) { + [self tryToPostNotification:localNotification withNotificationName:kTiLocalNotificationAction completionHandler:nil]; + } + } + + // Map launched URL + if (urlOptions != nil) { + [launchOptions setObject:[urlOptions absoluteString] forKey:@"url"]; + [launchOptions removeObjectForKey:UIApplicationLaunchOptionsURLKey]; + } + + // Map launched App-ID + if (sourceBundleId != nil) { + [launchOptions setObject:sourceBundleId forKey:@"source"]; + [launchOptions removeObjectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; + } + + // Generate remote notification of available + if (_remoteNotification != nil) { + [self generateNotification:_remoteNotification]; + } + if (shortcut != nil) { + launchedShortcutItem = [shortcut retain]; + } + // Queue selector for usage in modules / Hyperloop [self tryToInvokeSelector:@selector(application:didFinishLaunchingWithOptions:) withArguments:[NSOrderedSet orderedSetWithObjects:application, launchOptions_, nil]]; - return YES; -} + // If a "application-launch-url" is set, launch it directly + [self launchToUrl]; -- (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts -{ - UIOpenURLContext *primaryContext = URLContexts.allObjects.firstObject; + // Boot our kroll-core + [self boot]; - NSDictionary *options = @{ - UIApplicationOpenURLOptionsSourceApplicationKey : NULL_IF_NIL(primaryContext.options.sourceApplication) - }; + // Create application support directory if not exists + [self createDefaultDirectories]; - [self application:[UIApplication sharedApplication] openURL:primaryContext.URL options:options]; + return YES; } -// Handle URL-schemes. Note that this selector is not called automatically anymore in iOS 13+ -// because of the scene management. Instead, the above "scene:openURLContexts:" selector is called -// that forwards the call for maximum backwards compatibility +// Handle URL-schemes / iOS >= 9 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { [self tryToInvokeSelector:@selector(application:openURL:options:) @@ -363,6 +462,31 @@ - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDiction return YES; } +// Handle URL-schemes / iOS < 9 +- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation +{ + [self tryToInvokeSelector:@selector(application:sourceApplication:annotation:) + withArguments:[NSOrderedSet orderedSetWithObjects:application, sourceApplication, annotation, nil]]; + + [launchOptions removeObjectForKey:UIApplicationLaunchOptionsURLKey]; + [launchOptions setObject:[url absoluteString] forKey:@"url"]; + [launchOptions removeObjectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; + + if (sourceApplication != nil) { + [launchOptions setObject:sourceApplication forKey:@"source"]; + } else { + [launchOptions removeObjectForKey:@"source"]; + } + + if (appBooted) { + [[NSNotificationCenter defaultCenter] postNotificationName:kTiApplicationLaunchedFromURL object:self userInfo:launchOptions]; + } else { + [[self queuedBootEvents] setObject:launchOptions forKey:kTiApplicationLaunchedFromURL]; + } + + return YES; +} + #pragma mark Background Fetch #ifdef USE_TI_FETCH @@ -372,7 +496,7 @@ - (void)application:(UIApplication *)application performFetchWithCompletionHandl [self tryToInvokeSelector:@selector(application:performFetchWithCompletionHandler:) withArguments:[NSOrderedSet orderedSetWithObjects:application, [completionHandler copy], nil]]; - // Only for simulator builds + //Only for simulator builds NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; if ([backgroundModes containsObject:@"fetch"]) { @@ -461,7 +585,7 @@ - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNoti [self application:[UIApplication sharedApplication] handleActionWithIdentifier:response.actionIdentifier forRemoteNotification:response.notification.request.content.userInfo withResponseInfo:responseInfo completionHandler:completionHandler]; } } else { - // NOTE Local notifications should be handled similar to BG above which ultimately calls handleRemoteNotificationWithIdentifier as this will allow BG Actions to execute. + //NOTE Local notifications should be handled similar to BG above which ultimately calls handleRemoteNotificationWithIdentifier as this will allow BG Actions to execute. RELEASE_TO_NIL(localNotification); localNotification = [[[self class] dictionaryWithUserNotification:response.notification withIdentifier:response.actionIdentifier] retain]; @@ -672,7 +796,7 @@ - (void)performCompletionHandlerWithKey:(NSString *)key andResult:(UIBackgroundF } } -// Called to mark the end of background transfer while in the background. +//Called to mark the end of background transfer while in the background. - (void)performCompletionHandlerForBackgroundTransferWithKey:(NSString *)key { if ([backgroundTransferCompletionHandlers objectForKey:key] != nil) { @@ -723,7 +847,7 @@ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(N #pragma mark Background Transfer Service -// Delegate callback for Background Transfer completes. +//Delegate callback for Background Transfer completes. - (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler { // Generate unique key with timestamp. @@ -746,7 +870,7 @@ - (void)application:(UIApplication *)application handleEventsForBackgroundURLSes #pragma mark Background Transfer Service Delegates. -// TODO: Move these delegates to the module post 3.2.0 +//TODO: Move these delegates to the module post 3.2.0 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { @@ -814,7 +938,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data if (!uploadTaskResponses) { uploadTaskResponses = [[NSMutableDictionary alloc] init]; } - // This dictionary will mutate if delegate is called + //This dictionary will mutate if delegate is called NSMutableDictionary *responseObj = [uploadTaskResponses objectForKey:@(dataTask.taskIdentifier)]; if (!responseObj) { NSMutableData *responseData = [NSMutableData dataWithData:data]; @@ -888,7 +1012,7 @@ - (void)applicationWillTerminate:(UIApplication *)application NSNotificationCenter *theNotificationCenter = [NSNotificationCenter defaultCenter]; _willTerminate = YES; - // This will send out the 'close' message. + //This will send out the 'close' message. [theNotificationCenter postNotificationName:kTiWillShutdownNotification object:self]; NSCondition *condition = [[NSCondition alloc] init]; @@ -899,7 +1023,7 @@ - (void)applicationWillTerminate:(UIApplication *)application [[TiLogServer defaultLogServer] stop]; } - // This will shut down the modules. + //This will shut down the modules. [theNotificationCenter postNotificationName:kTiShutdownNotification object:self]; RELEASE_TO_NIL(condition); RELEASE_TO_NIL(kjsBridge); @@ -917,10 +1041,10 @@ - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application [Webcolor flushCache]; } -- (void)sceneWillResignActive:(UIScene *)scene +- (void)applicationWillResignActive:(UIApplication *)application { - [self tryToInvokeSelector:@selector(sceneWillResignActive:) - withArguments:[NSOrderedSet orderedSetWithObject:scene]]; + [self tryToInvokeSelector:@selector(applicationWillResignActive:) + withArguments:[NSOrderedSet orderedSetWithObject:application]]; if ([self forceSplashAsSnapshot]) { [window addSubview:[self splashScreenView]]; @@ -932,11 +1056,13 @@ - (void)sceneWillResignActive:(UIScene *)scene [kjsBridge gc]; } -- (void)sceneDidBecomeActive:(UIScene *)scene +- (void)applicationDidBecomeActive:(UIApplication *)application { - [self tryToInvokeSelector:@selector(sceneDidBecomeActive:) - withArguments:[NSOrderedSet orderedSetWithObject:scene]]; + [self tryToInvokeSelector:@selector(applicationDidBecomeActive:) + withArguments:[NSOrderedSet orderedSetWithObject:application]]; + // We should think about placing this inside "applicationWillBecomeActive" instead to make + // the UI re-useable again more quickly if ([self forceSplashAsSnapshot] && splashScreenView != nil) { [[self splashScreenView] removeFromSuperview]; RELEASE_TO_NIL(splashScreenView); @@ -950,10 +1076,10 @@ - (void)sceneDidBecomeActive:(UIScene *)scene [[ImageLoader sharedLoader] resume]; } -- (void)sceneDidEnterBackground:(UIScene *)scene +- (void)applicationDidEnterBackground:(UIApplication *)application { - [self tryToInvokeSelector:@selector(sceneDidEnterBackground:) - withArguments:[NSOrderedSet orderedSetWithObject:scene]]; + [self tryToInvokeSelector:@selector(applicationDidEnterBackground:) + withArguments:[NSOrderedSet orderedSetWithObject:application]]; [[NSNotificationCenter defaultCenter] postNotificationName:kTiPausedNotification object:self]; @@ -982,16 +1108,16 @@ - (void)sceneDidEnterBackground:(UIScene *)scene }); } -- (void)sceneWillEnterForeground:(UIScene *)scene +- (void)applicationWillEnterForeground:(UIApplication *)application { - [self tryToInvokeSelector:@selector(sceneWillEnterForeground:) - withArguments:[NSOrderedSet orderedSetWithObject:scene]]; + [self tryToInvokeSelector:@selector(applicationWillEnterForeground:) + withArguments:[NSOrderedSet orderedSetWithObject:application]]; [self flushCompletionHandlerQueue]; [sessionId release]; sessionId = [[TiUtils createUUID] retain]; - // TIMOB-3432. Ensure url is cleared when resume event is fired. + //TIMOB-3432. Ensure url is cleared when resume event is fired. [launchOptions removeObjectForKey:@"url"]; [launchOptions removeObjectForKey:@"source"]; @@ -1004,7 +1130,7 @@ - (void)sceneWillEnterForeground:(UIScene *)scene [self endBackgrounding]; } -// TODO: this should be compiled out in production mode +//TODO: this should be compiled out in production mode - (void)showModalError:(NSString *)message { NSLog(@"[ERROR] Application received error: %@", message); @@ -1076,7 +1202,6 @@ - (void)dealloc RELEASE_TO_NIL(queuedBootEvents); RELEASE_TO_NIL(_queuedApplicationSelectors); RELEASE_TO_NIL(_applicationDelegates); - RELEASE_TO_NIL(_connectionOptions); [super dealloc]; } @@ -1110,115 +1235,6 @@ - (KrollBridge *)krollBridge return kjsBridge; } -#pragma mark UIWindowSceneDelegate - -- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options -{ - return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role]; -} - -- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions -{ - // Initialize the root-window - window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; - - // Initialize the launch options to be used by the client - launchOptions = [[NSMutableDictionary alloc] init]; - - // Retain connectionOptions for later use - if (_connectionOptions != connectionOptions) { - [_connectionOptions release]; // Release any existing object - _connectionOptions = [connectionOptions retain]; // Retain the new object - } - - // If we have a APNS-UUID, assign it - NSString *apnsUUID = [[NSUserDefaults standardUserDefaults] stringForKey:@"APNSRemoteDeviceUUID"]; - if (apnsUUID != nil) { - remoteDeviceUUID = [apnsUUID copy]; - } - - [[UNUserNotificationCenter currentNotificationCenter] setDelegate:self]; - - // Get some launch options to validate before finish launching. Some of them - // need to be mapepd from native to JS-types to be used by the client - NSURL *urlOptions = connectionOptions.URLContexts.allObjects.firstObject.URL; - NSString *sourceBundleId = connectionOptions.sourceApplication; - UNNotificationResponse *notification = connectionOptions.notificationResponse; - UIApplicationShortcutItem *shortcut = connectionOptions.shortcutItem; - - // Map user activity if exists - NSUserActivity *userActivity = connectionOptions.userActivities.allObjects.firstObject; - if (userActivity != nil) { - NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:@{ @"activityType" : [userActivity activityType] }]; - - if ([TiUtils isIOSVersionOrGreater:@"9.0"] && [[userActivity activityType] isEqualToString:CSSearchableItemActionType]) { - if ([userActivity userInfo] != nil) { - [dict setObject:[[userActivity userInfo] objectForKey:CSSearchableItemActivityIdentifier] forKey:@"searchableItemActivityIdentifier"]; - } - } - - if ([userActivity title] != nil) { - [dict setObject:[userActivity title] forKey:@"title"]; - } - - if ([userActivity webpageURL] != nil) { - [dict setObject:[[userActivity webpageURL] absoluteString] forKey:@"webpageURL"]; - } - - if ([userActivity userInfo] != nil) { - [dict setObject:[userActivity userInfo] forKey:@"userInfo"]; - } - - // Update launchOptions so that we send only expected values rather than NSUserActivity - [launchOptions setObject:@{ @"UIApplicationLaunchOptionsUserActivityKey" : dict } - forKey:UIApplicationLaunchOptionsUserActivityDictionaryKey]; - } - - // Map launched URL - if (urlOptions != nil) { - [launchOptions setObject:[urlOptions absoluteString] forKey:@"url"]; - } - - // Map launched App-ID - if (sourceBundleId != nil) { - [launchOptions setObject:sourceBundleId forKey:@"source"]; - } - - // Generate remote notification if available - if (notification != nil && [notification.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) { - [self generateNotification:@{ @"aps" : notification.notification.request.content.userInfo }]; - } - - // Save shortcut item for later - if (shortcut != nil) { - launchedShortcutItem = [shortcut retain]; - } - - // Queue selector for usage in modules / Hyperloop - [self tryToInvokeSelector:@selector(scene:willConnectToSession:options:) - withArguments:[NSOrderedSet orderedSetWithObjects:scene, connectionOptions, nil]]; - - // Catch exceptions - [TiExceptionHandler defaultExceptionHandler]; - - // Enable device logs (e.g. for physical devices) - if ([[TiSharedConfig defaultConfig] logServerEnabled]) { - [[TiLogServer defaultLogServer] start]; - } - - // Initialize the root-controller - [self initController]; - - // If a "application-launch-url" is set, launch it directly - [self launchToUrl]; - - // Boot our kroll-core - [self boot]; - - // Create application support directory if not exists - [self createDefaultDirectories]; -} - #pragma mark Background Tasks - (void)beginBackgrounding @@ -1354,7 +1370,7 @@ - (void)registerBackgroundService:(TiProxy *)proxy backgroundServices = [[NSMutableArray alloc] initWithCapacity:1]; } - // Only add if it isn't already added + //Only add if it isn't already added if (![backgroundServices containsObject:proxy]) { [backgroundServices addObject:proxy]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m index c7892da1c25..14f8428699b 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m @@ -696,8 +696,7 @@ - (void)shutdownUi:(id)arg if (![TiSharedConfig defaultConfig].debugEnabled) { return; } - - // Dismiss all currently opened windows + //FIRST DISMISS ALL MODAL WINDOWS UIViewController *topVC = [self topPresentedController]; if (topVC != self) { UIViewController *presenter = [topVC presentingViewController]; @@ -707,8 +706,7 @@ - (void)shutdownUi:(id)arg }]; return; } - - // Clean up proxies. + //At this point all modal stuff is done. Go ahead and clean up proxies. NSArray *modalCopy = [modalWindows copy]; NSArray *windowCopy = [containedWindows copy]; @@ -727,8 +725,7 @@ - (void)shutdownUi:(id)arg [windowCopy release]; } - DebugLog(@"[WARN] Calling the private `_restart()` API should not be done in production, as restarting an app is not a recommended native concept."); - + DebugLog(@"[INFO] UI SHUTDOWN COMPLETE. TRYING TO RESUME RESTART"); if ([arg respondsToSelector:@selector(_resumeRestart:)]) { [arg performSelector:@selector(_resumeRestart:) withObject:nil]; } else { diff --git a/iphone/iphone/Titanium.plist b/iphone/iphone/Titanium.plist index 448f4c87fe8..997d287518d 100644 --- a/iphone/iphone/Titanium.plist +++ b/iphone/iphone/Titanium.plist @@ -78,22 +78,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - TiApp - - - - diff --git a/support/iphone/Info.plist b/support/iphone/Info.plist index 72b06667636..f9500da5954 100644 --- a/support/iphone/Info.plist +++ b/support/iphone/Info.plist @@ -36,22 +36,5 @@ 1.0 LSRequiresIPhoneOS - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - TiApp - - - - From bf24bf26ae07ebda2e2d70c23de198bac6b2ba8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Mon, 27 May 2024 09:48:05 +0200 Subject: [PATCH 055/145] fix: fix linting issues --- iphone/Classes/ContactsModule.m | 6 ++-- iphone/Classes/TiAppPropertiesProxy.m | 16 ++++----- iphone/Classes/TiAppiOSUserDefaultsProxy.m | 16 ++++----- iphone/Classes/TiMediaVideoPlayerProxy.m | 2 +- iphone/Classes/TiNetworkHTTPClientProxy.m | 36 +++++++++---------- iphone/Classes/TiUIDashboardViewProxy.m | 2 +- iphone/Classes/TiUIScrollableView.m | 14 ++++---- iphone/Classes/TiUITableView.m | 2 +- iphone/Classes/UIModule.m | 6 ++-- iphone/Classes/WatchSessionModule.m | 4 +-- .../TitaniumKit/Sources/API/SBJSON.m | 8 ++--- .../TitaniumKit/Sources/API/TiProxy.m | 2 +- 12 files changed, 57 insertions(+), 57 deletions(-) diff --git a/iphone/Classes/ContactsModule.m b/iphone/Classes/ContactsModule.m index b4dafd405ed..76f7df78a86 100644 --- a/iphone/Classes/ContactsModule.m +++ b/iphone/Classes/ContactsModule.m @@ -90,9 +90,9 @@ - (void)dealloc RELEASE_TO_NIL(contactStore) saveRequest = nil; RELEASE_TO_NIL(contactPicker) - [[NSNotificationCenter defaultCenter] removeObserver:self - name:CNContactStoreDidChangeNotification - object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:CNContactStoreDidChangeNotification + object:nil]; [super dealloc]; } diff --git a/iphone/Classes/TiAppPropertiesProxy.m b/iphone/Classes/TiAppPropertiesProxy.m index 7e62f299198..501967299d9 100644 --- a/iphone/Classes/TiAppPropertiesProxy.m +++ b/iphone/Classes/TiAppPropertiesProxy.m @@ -179,32 +179,32 @@ - (NSDictionary *)bridgedDictionaryFromDictionary:(NSDictionary *)dictionary wit - (void)setBool:(id)args { SETPROP - [defaultsObject setBool:[TiUtils boolValue:value] - forKey:key]; + [defaultsObject setBool:[TiUtils boolValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setDouble:(id)args { SETPROP - [defaultsObject setDouble:[TiUtils doubleValue:value] - forKey:key]; + [defaultsObject setDouble:[TiUtils doubleValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setInt:(id)args { SETPROP - [defaultsObject setInteger:[TiUtils intValue:value] - forKey:key]; + [defaultsObject setInteger:[TiUtils intValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setString:(id)args { SETPROP - [defaultsObject setObject:[TiUtils stringValue:value] - forKey:key]; + [defaultsObject setObject:[TiUtils stringValue:value] + forKey:key]; [defaultsObject synchronize]; } diff --git a/iphone/Classes/TiAppiOSUserDefaultsProxy.m b/iphone/Classes/TiAppiOSUserDefaultsProxy.m index ec93b684a2e..eb4ed48696a 100644 --- a/iphone/Classes/TiAppiOSUserDefaultsProxy.m +++ b/iphone/Classes/TiAppiOSUserDefaultsProxy.m @@ -138,32 +138,32 @@ - (id)getObject:(id)args - (void)setBool:(id)args { SETPROP - [self.defaultsObject setBool:[TiUtils boolValue:value] - forKey:key]; + [self.defaultsObject setBool:[TiUtils boolValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setDouble:(id)args { SETPROP - [self.defaultsObject setDouble:[TiUtils doubleValue:value] - forKey:key]; + [self.defaultsObject setDouble:[TiUtils doubleValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setInt:(id)args { SETPROP - [self.defaultsObject setInteger:[TiUtils intValue:value] - forKey:key]; + [self.defaultsObject setInteger:[TiUtils intValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setString:(id)args { SETPROP - [self.defaultsObject setObject:[TiUtils stringValue:value] - forKey:key]; + [self.defaultsObject setObject:[TiUtils stringValue:value] + forKey:key]; [self.defaultsObject synchronize]; } diff --git a/iphone/Classes/TiMediaVideoPlayerProxy.m b/iphone/Classes/TiMediaVideoPlayerProxy.m index 64d8d1bbca4..57a12587503 100644 --- a/iphone/Classes/TiMediaVideoPlayerProxy.m +++ b/iphone/Classes/TiMediaVideoPlayerProxy.m @@ -226,7 +226,7 @@ - (void)setOverlayView:(id)proxy - (void)setBackgroundView:(id)proxy { DEPRECATED_REPLACED(@"Media.VideoPlayer.backgroundView", @"7.0.0", @"Media.VideoPlayer.overlayView") - [self setOverlayView:proxy]; + [self setOverlayView:proxy]; } - (NSNumber *)playing diff --git a/iphone/Classes/TiNetworkHTTPClientProxy.m b/iphone/Classes/TiNetworkHTTPClientProxy.m index 483dd80e13f..5bf263edc9a 100644 --- a/iphone/Classes/TiNetworkHTTPClientProxy.m +++ b/iphone/Classes/TiNetworkHTTPClientProxy.m @@ -395,53 +395,53 @@ - (void)request:(APSHTTPRequest *)request onRedirect:(APSHTTPResponse *)response - (void)setOnload:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onload" - notification:NO]; + [self replaceValue:callback + forKey:@"onload" + notification:NO]; hasOnload = (callback == nil) ? NO : YES; } - (void)setOnerror:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onerror" - notification:NO]; + [self replaceValue:callback + forKey:@"onerror" + notification:NO]; hasOnerror = (callback == nil) ? NO : YES; ; } - (void)setOnreadystatechange:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onreadystatechange" - notification:NO]; + [self replaceValue:callback + forKey:@"onreadystatechange" + notification:NO]; hasOnreadystatechange = (callback == nil) ? NO : YES; ; } - (void)setOndatastream:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"ondatastream" - notification:NO]; + [self replaceValue:callback + forKey:@"ondatastream" + notification:NO]; hasOndatastream = (callback == nil) ? NO : YES; ; } - (void)setOnsendstream:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onsendstream" - notification:NO]; + [self replaceValue:callback + forKey:@"onsendstream" + notification:NO]; hasOnsendstream = (callback == nil) ? NO : YES; ; } - (void)setOnredirect:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onredirect" - notification:NO]; + [self replaceValue:callback + forKey:@"onredirect" + notification:NO]; hasOnredirect = (callback == nil) ? NO : YES; ; } diff --git a/iphone/Classes/TiUIDashboardViewProxy.m b/iphone/Classes/TiUIDashboardViewProxy.m index 372714e7da9..f423e2fa0d9 100644 --- a/iphone/Classes/TiUIDashboardViewProxy.m +++ b/iphone/Classes/TiUIDashboardViewProxy.m @@ -78,7 +78,7 @@ - (void)setData:(id)data { for (TiViewProxy *proxy in data) { ENSURE_TYPE(proxy, TiUIDashboardItemProxy) - [self rememberProxy:proxy]; + [self rememberProxy:proxy]; } [self replaceValue:data forKey:@"data" notification:NO]; diff --git a/iphone/Classes/TiUIScrollableView.m b/iphone/Classes/TiUIScrollableView.m index ac711ed3931..15ac9e21663 100644 --- a/iphone/Classes/TiUIScrollableView.m +++ b/iphone/Classes/TiUIScrollableView.m @@ -180,27 +180,27 @@ - (void)removeSubview:(nonnull UIView *)view - (void)addSubview:(nonnull UIView *)view { WRAP_TI_VIEW(view) - [[self contentView] addSubview:wrapperView]; + [[self contentView] addSubview:wrapperView]; } - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - aboveSubview:siblingSubview]; + [[self contentView] insertSubview:wrapperView + aboveSubview:siblingSubview]; } - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - atIndex:index]; + [[self contentView] insertSubview:wrapperView + atIndex:index]; } - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - belowSubview:siblingSubview]; + [[self contentView] insertSubview:wrapperView + belowSubview:siblingSubview]; } #endif diff --git a/iphone/Classes/TiUITableView.m b/iphone/Classes/TiUITableView.m index 31fba206cbb..21b31a6663b 100644 --- a/iphone/Classes/TiUITableView.m +++ b/iphone/Classes/TiUITableView.m @@ -1653,7 +1653,7 @@ - (void)setKeyboardDismissMode_:(id)value - (void)setSeparatorInsets_:(id)arg { DEPRECATED_REPLACED(@"UI.TableView.separatorInsets", @"5.2.0", @"UI.TableView.tableSeparatorInsets") - [self setTableSeparatorInsets_:arg]; + [self setTableSeparatorInsets_:arg]; } - (void)setTableSeparatorInsets_:(id)arg diff --git a/iphone/Classes/UIModule.m b/iphone/Classes/UIModule.m index 114792f1cfb..9df5f9ca039 100644 --- a/iphone/Classes/UIModule.m +++ b/iphone/Classes/UIModule.m @@ -449,9 +449,9 @@ - (NSString *)TEXT_STYLE_LARGE_TITLE - (void)setOverrideUserInterfaceStyle:(id)args { ENSURE_SINGLE_ARG(args, NSNumber) - [self replaceValue:args - forKey:@"overrideUserInterfaceStyle" - notification:NO]; + [self replaceValue:args + forKey:@"overrideUserInterfaceStyle" + notification:NO]; int style = [TiUtils intValue:args def:UIUserInterfaceStyleUnspecified]; TiApp.app.window.overrideUserInterfaceStyle = style; } diff --git a/iphone/Classes/WatchSessionModule.m b/iphone/Classes/WatchSessionModule.m index 95b0239ddef..c34b682052c 100644 --- a/iphone/Classes/WatchSessionModule.m +++ b/iphone/Classes/WatchSessionModule.m @@ -243,7 +243,7 @@ - (void)transferUserInfo:(id)value } ENSURE_SINGLE_ARG(value, NSDictionary) - [[self watchSession] transferUserInfo:value]; + [[self watchSession] transferUserInfo:value]; } // sent in background @@ -280,7 +280,7 @@ - (void)transferCurrentComplication:(id)value } ENSURE_SINGLE_ARG(value, NSDictionary) - [[self watchSession] transferCurrentComplicationUserInfo:value]; + [[self watchSession] transferCurrentComplicationUserInfo:value]; } - (void)cancelAllUserInfoTransfers:(id)value diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m index a665731e68b..e2c007619bb 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m @@ -922,10 +922,10 @@ - (BOOL)scanHexQuad:(unichar *)x error:(NSError **)error int d = (uc >= '0' && uc <= '9') ? uc - '0' : (uc >= 'a' && uc <= 'f') - ? (uc - 'a' + 10) - : (uc >= 'A' && uc <= 'F') - ? (uc - 'A' + 10) - : -1; + ? (uc - 'a' + 10) + : (uc >= 'A' && uc <= 'F') + ? (uc - 'A' + 10) + : -1; if (d == -1) { if (error) *error = err(EUNICODE, @"Missing hex digit in quad"); diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m index ebbb9cddac4..a43a4a5b75f 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m @@ -1120,7 +1120,7 @@ - (void)setValue:(id)value forUndefinedKey:(NSString *)key - (void)applyProperties:(id)args { ENSURE_SINGLE_ARG(args, NSDictionary) - [self setValuesForKeysWithDictionary:args]; + [self setValuesForKeysWithDictionary:args]; } - (NSDictionary *)allProperties From 7e9b52c0d67dd7de65f2a3cabfc0c06dba9e9309 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 27 May 2024 09:54:05 +0200 Subject: [PATCH 056/145] fix(android): fix noresults event in ListView width custom query (#14034) --- .../java/ti/modules/titanium/ui/widget/listview/TiListView.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java index 6d43dab93dc..e4cee03582b 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiListView.java @@ -667,6 +667,7 @@ public void update(boolean force) || properties.containsKeyAndNotNull(TiC.PROPERTY_FOOTER_VIEW); String query = properties.optString(TiC.PROPERTY_SEARCH_TEXT, filterQuery); + filterQuery = query; final boolean caseInsensitive = properties.optBoolean(TiC.PROPERTY_CASE_INSENSITIVE_SEARCH, true); if (query != null && caseInsensitive) { query = query.toLowerCase(); From e2bf653d406b772deeafb504a0b9f68e363cf3e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Tue, 28 May 2024 22:22:23 +0200 Subject: [PATCH 057/145] fix: address all whitespace-related linting issues --- iphone/Classes/TiUIiOSProxy.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iphone/Classes/TiUIiOSProxy.h b/iphone/Classes/TiUIiOSProxy.h index 0350a3dea11..49d11504394 100644 --- a/iphone/Classes/TiUIiOSProxy.h +++ b/iphone/Classes/TiUIiOSProxy.h @@ -173,8 +173,8 @@ @property (nonatomic, readonly) NSNumber *LARGE_TITLE_DISPLAY_MODE_NEVER; /** - * Checks the force touch capibility of the current device. - */ + * Checks the force touch capibility of the current device. + */ - (NSNumber *)forceTouchSupported; #ifdef USE_TI_UIIOSCOVERFLOWVIEW From 8c92dc7521219efebad8943a5305348014bd32e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Tue, 28 May 2024 22:31:03 +0200 Subject: [PATCH 058/145] fix: address all whitespace-related linting issues part 2 --- iphone/Classes/TiMediaAudioRecorderProxy.mm | 68 ++++++++++--------- .../TitaniumKit/Sources/API/TiApp.h | 2 +- .../TitaniumKit/Sources/API/TiApp.m | 24 +++---- .../Sources/API/TiRootViewController.m | 4 +- 4 files changed, 51 insertions(+), 47 deletions(-) diff --git a/iphone/Classes/TiMediaAudioRecorderProxy.mm b/iphone/Classes/TiMediaAudioRecorderProxy.mm index 09960ddf964..e68711daf3c 100644 --- a/iphone/Classes/TiMediaAudioRecorderProxy.mm +++ b/iphone/Classes/TiMediaAudioRecorderProxy.mm @@ -62,16 +62,17 @@ - (void)start:(id)args return; } RELEASE_TO_NIL(file); - TiThreadPerformOnMainThread(^{ - [self configureRecorder]; - if (recorder != nil) { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioInterruptionBegin:) name:kTiMediaAudioSessionInterruptionBegin object:[TiMediaAudioSession sharedSession]]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioInterruptionEnd:) name:kTiMediaAudioSessionInterruptionEnd object:[TiMediaAudioSession sharedSession]]; - [[TiMediaAudioSession sharedSession] startAudioSession]; - [recorder record]; - curState = RecordStarted; - } - }, + TiThreadPerformOnMainThread( + ^{ + [self configureRecorder]; + if (recorder != nil) { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioInterruptionBegin:) name:kTiMediaAudioSessionInterruptionBegin object:[TiMediaAudioSession sharedSession]]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioInterruptionEnd:) name:kTiMediaAudioSessionInterruptionEnd object:[TiMediaAudioSession sharedSession]]; + [[TiMediaAudioSession sharedSession] startAudioSession]; + [recorder record]; + curState = RecordStarted; + } + }, YES); } @@ -81,16 +82,17 @@ - (id)stop:(id)args return; } __block TiFilesystemFileProxy *theProxy = nil; - TiThreadPerformOnMainThread(^{ - if (recorder != nil) { - [recorder stop]; - [[TiMediaAudioSession sharedSession] stopAudioSession]; - } - curState = RecordStopped; - [[NSNotificationCenter defaultCenter] removeObserver:self]; - theProxy = [[[TiFilesystemFileProxy alloc] initWithFile:[file path]] retain]; - RELEASE_TO_NIL_AUTORELEASE(recorder); - }, + TiThreadPerformOnMainThread( + ^{ + if (recorder != nil) { + [recorder stop]; + [[TiMediaAudioSession sharedSession] stopAudioSession]; + } + curState = RecordStopped; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + theProxy = [[[TiFilesystemFileProxy alloc] initWithFile:[file path]] retain]; + RELEASE_TO_NIL_AUTORELEASE(recorder); + }, YES); return [theProxy autorelease]; } @@ -100,12 +102,13 @@ - (void)pause:(id)args if (curState != RecordStarted) { return; } - TiThreadPerformOnMainThread(^{ - if (recorder != nil) { - [recorder pause]; - curState = RecordPaused; - } - }, + TiThreadPerformOnMainThread( + ^{ + if (recorder != nil) { + [recorder pause]; + curState = RecordPaused; + } + }, YES); } @@ -114,12 +117,13 @@ - (void)resume:(id)args if (curState != RecordPaused) { return; } - TiThreadPerformOnMainThread(^{ - if (recorder != nil) { - [recorder record]; - curState = RecordStarted; - } - }, + TiThreadPerformOnMainThread( + ^{ + if (recorder != nil) { + [recorder record]; + curState = RecordStarted; + } + }, YES); } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h index 385adfb6954..fb3769d87ce 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.h @@ -16,7 +16,7 @@ extern BOOL applicationInMemoryPanic; // TODO: Remove in SDK 9.0+ // TODO: Remove in SDK 9.0+ -TI_INLINE void waitForMemoryPanicCleared() //WARNING: This must never be run on main thread, or else there is a risk of deadlock! +TI_INLINE void waitForMemoryPanicCleared() // WARNING: This must never be run on main thread, or else there is a risk of deadlock! { } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m index fd53a04cc7f..35c3346f7bc 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiApp.m @@ -36,7 +36,7 @@ BOOL applicationInMemoryPanic = NO; // TODO: Remove in SDK 9.0+ // TODO: Remove in SDK 9.0+ -TI_INLINE void waitForMemoryPanicCleared(void); //WARNING: This must never be run on main thread, or else there is a risk of deadlock! +TI_INLINE void waitForMemoryPanicCleared(void); // WARNING: This must never be run on main thread, or else there is a risk of deadlock! @interface TiApp () - (void)checkBackgroundServices; @@ -496,7 +496,7 @@ - (void)application:(UIApplication *)application performFetchWithCompletionHandl [self tryToInvokeSelector:@selector(application:performFetchWithCompletionHandler:) withArguments:[NSOrderedSet orderedSetWithObjects:application, [completionHandler copy], nil]]; - //Only for simulator builds + // Only for simulator builds NSArray *backgroundModes = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIBackgroundModes"]; if ([backgroundModes containsObject:@"fetch"]) { @@ -585,7 +585,7 @@ - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNoti [self application:[UIApplication sharedApplication] handleActionWithIdentifier:response.actionIdentifier forRemoteNotification:response.notification.request.content.userInfo withResponseInfo:responseInfo completionHandler:completionHandler]; } } else { - //NOTE Local notifications should be handled similar to BG above which ultimately calls handleRemoteNotificationWithIdentifier as this will allow BG Actions to execute. + // NOTE Local notifications should be handled similar to BG above which ultimately calls handleRemoteNotificationWithIdentifier as this will allow BG Actions to execute. RELEASE_TO_NIL(localNotification); localNotification = [[[self class] dictionaryWithUserNotification:response.notification withIdentifier:response.actionIdentifier] retain]; @@ -796,7 +796,7 @@ - (void)performCompletionHandlerWithKey:(NSString *)key andResult:(UIBackgroundF } } -//Called to mark the end of background transfer while in the background. +// Called to mark the end of background transfer while in the background. - (void)performCompletionHandlerForBackgroundTransferWithKey:(NSString *)key { if ([backgroundTransferCompletionHandlers objectForKey:key] != nil) { @@ -847,7 +847,7 @@ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(N #pragma mark Background Transfer Service -//Delegate callback for Background Transfer completes. +// Delegate callback for Background Transfer completes. - (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler { // Generate unique key with timestamp. @@ -870,7 +870,7 @@ - (void)application:(UIApplication *)application handleEventsForBackgroundURLSes #pragma mark Background Transfer Service Delegates. -//TODO: Move these delegates to the module post 3.2.0 +// TODO: Move these delegates to the module post 3.2.0 - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { @@ -938,7 +938,7 @@ - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)data if (!uploadTaskResponses) { uploadTaskResponses = [[NSMutableDictionary alloc] init]; } - //This dictionary will mutate if delegate is called + // This dictionary will mutate if delegate is called NSMutableDictionary *responseObj = [uploadTaskResponses objectForKey:@(dataTask.taskIdentifier)]; if (!responseObj) { NSMutableData *responseData = [NSMutableData dataWithData:data]; @@ -1012,7 +1012,7 @@ - (void)applicationWillTerminate:(UIApplication *)application NSNotificationCenter *theNotificationCenter = [NSNotificationCenter defaultCenter]; _willTerminate = YES; - //This will send out the 'close' message. + // This will send out the 'close' message. [theNotificationCenter postNotificationName:kTiWillShutdownNotification object:self]; NSCondition *condition = [[NSCondition alloc] init]; @@ -1023,7 +1023,7 @@ - (void)applicationWillTerminate:(UIApplication *)application [[TiLogServer defaultLogServer] stop]; } - //This will shut down the modules. + // This will shut down the modules. [theNotificationCenter postNotificationName:kTiShutdownNotification object:self]; RELEASE_TO_NIL(condition); RELEASE_TO_NIL(kjsBridge); @@ -1117,7 +1117,7 @@ - (void)applicationWillEnterForeground:(UIApplication *)application [sessionId release]; sessionId = [[TiUtils createUUID] retain]; - //TIMOB-3432. Ensure url is cleared when resume event is fired. + // TIMOB-3432. Ensure url is cleared when resume event is fired. [launchOptions removeObjectForKey:@"url"]; [launchOptions removeObjectForKey:@"source"]; @@ -1130,7 +1130,7 @@ - (void)applicationWillEnterForeground:(UIApplication *)application [self endBackgrounding]; } -//TODO: this should be compiled out in production mode +// TODO: this should be compiled out in production mode - (void)showModalError:(NSString *)message { NSLog(@"[ERROR] Application received error: %@", message); @@ -1370,7 +1370,7 @@ - (void)registerBackgroundService:(TiProxy *)proxy backgroundServices = [[NSMutableArray alloc] initWithCapacity:1]; } - //Only add if it isn't already added + // Only add if it isn't already added if (![backgroundServices containsObject:proxy]) { [backgroundServices addObject:proxy]; } diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m index 14f8428699b..a244cd3f3a2 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiRootViewController.m @@ -696,7 +696,7 @@ - (void)shutdownUi:(id)arg if (![TiSharedConfig defaultConfig].debugEnabled) { return; } - //FIRST DISMISS ALL MODAL WINDOWS + // FIRST DISMISS ALL MODAL WINDOWS UIViewController *topVC = [self topPresentedController]; if (topVC != self) { UIViewController *presenter = [topVC presentingViewController]; @@ -706,7 +706,7 @@ - (void)shutdownUi:(id)arg }]; return; } - //At this point all modal stuff is done. Go ahead and clean up proxies. + // At this point all modal stuff is done. Go ahead and clean up proxies. NSArray *modalCopy = [modalWindows copy]; NSArray *windowCopy = [containedWindows copy]; From 953019cade2a5864d9177ae63f2244d26e8ceeb2 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 28 May 2024 22:56:51 +0100 Subject: [PATCH 059/145] style(ios): adjust to changes after clang-format update --- iphone/Classes/AppModule.m | 6 ++-- iphone/Classes/ContactsModule.m | 6 ++-- iphone/Classes/TiAppPropertiesProxy.m | 16 ++++----- iphone/Classes/TiAppiOSUserDefaultsProxy.m | 16 ++++----- iphone/Classes/TiMediaVideoPlayerProxy.m | 2 +- iphone/Classes/TiNetworkHTTPClientProxy.m | 36 +++++++++---------- iphone/Classes/TiUIDashboardViewProxy.m | 2 +- iphone/Classes/TiUIScrollableView.m | 14 ++++---- iphone/Classes/TiUITableView.m | 2 +- iphone/Classes/TiUIiOSProxy.h | 4 +-- iphone/Classes/UIModule.m | 6 ++-- iphone/Classes/WatchSessionModule.m | 4 +-- .../TitaniumKit/Sources/API/SBJSON.m | 8 ++--- .../TitaniumKit/Sources/API/TiProxy.m | 2 +- 14 files changed, 62 insertions(+), 62 deletions(-) diff --git a/iphone/Classes/AppModule.m b/iphone/Classes/AppModule.m index f77864c24dd..bf364f6036a 100644 --- a/iphone/Classes/AppModule.m +++ b/iphone/Classes/AppModule.m @@ -591,9 +591,9 @@ - (NSNumber *)keyboardVisible - (void)setForceSplashAsSnapshot:(id)args { ENSURE_SINGLE_ARG(args, NSNumber) - [self replaceValue:args - forKey:@"forceSplashAsSnapshot" - notification:NO]; + [self replaceValue:args + forKey:@"forceSplashAsSnapshot" + notification:NO]; BOOL flag = [TiUtils boolValue:args def:NO]; [[TiApp app] setForceSplashAsSnapshot:flag]; } diff --git a/iphone/Classes/ContactsModule.m b/iphone/Classes/ContactsModule.m index 76f7df78a86..b4dafd405ed 100644 --- a/iphone/Classes/ContactsModule.m +++ b/iphone/Classes/ContactsModule.m @@ -90,9 +90,9 @@ - (void)dealloc RELEASE_TO_NIL(contactStore) saveRequest = nil; RELEASE_TO_NIL(contactPicker) - [[NSNotificationCenter defaultCenter] removeObserver:self - name:CNContactStoreDidChangeNotification - object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:CNContactStoreDidChangeNotification + object:nil]; [super dealloc]; } diff --git a/iphone/Classes/TiAppPropertiesProxy.m b/iphone/Classes/TiAppPropertiesProxy.m index 501967299d9..7e62f299198 100644 --- a/iphone/Classes/TiAppPropertiesProxy.m +++ b/iphone/Classes/TiAppPropertiesProxy.m @@ -179,32 +179,32 @@ - (NSDictionary *)bridgedDictionaryFromDictionary:(NSDictionary *)dictionary wit - (void)setBool:(id)args { SETPROP - [defaultsObject setBool:[TiUtils boolValue:value] - forKey:key]; + [defaultsObject setBool:[TiUtils boolValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setDouble:(id)args { SETPROP - [defaultsObject setDouble:[TiUtils doubleValue:value] - forKey:key]; + [defaultsObject setDouble:[TiUtils doubleValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setInt:(id)args { SETPROP - [defaultsObject setInteger:[TiUtils intValue:value] - forKey:key]; + [defaultsObject setInteger:[TiUtils intValue:value] + forKey:key]; [defaultsObject synchronize]; } - (void)setString:(id)args { SETPROP - [defaultsObject setObject:[TiUtils stringValue:value] - forKey:key]; + [defaultsObject setObject:[TiUtils stringValue:value] + forKey:key]; [defaultsObject synchronize]; } diff --git a/iphone/Classes/TiAppiOSUserDefaultsProxy.m b/iphone/Classes/TiAppiOSUserDefaultsProxy.m index eb4ed48696a..ec93b684a2e 100644 --- a/iphone/Classes/TiAppiOSUserDefaultsProxy.m +++ b/iphone/Classes/TiAppiOSUserDefaultsProxy.m @@ -138,32 +138,32 @@ - (id)getObject:(id)args - (void)setBool:(id)args { SETPROP - [self.defaultsObject setBool:[TiUtils boolValue:value] - forKey:key]; + [self.defaultsObject setBool:[TiUtils boolValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setDouble:(id)args { SETPROP - [self.defaultsObject setDouble:[TiUtils doubleValue:value] - forKey:key]; + [self.defaultsObject setDouble:[TiUtils doubleValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setInt:(id)args { SETPROP - [self.defaultsObject setInteger:[TiUtils intValue:value] - forKey:key]; + [self.defaultsObject setInteger:[TiUtils intValue:value] + forKey:key]; [self.defaultsObject synchronize]; } - (void)setString:(id)args { SETPROP - [self.defaultsObject setObject:[TiUtils stringValue:value] - forKey:key]; + [self.defaultsObject setObject:[TiUtils stringValue:value] + forKey:key]; [self.defaultsObject synchronize]; } diff --git a/iphone/Classes/TiMediaVideoPlayerProxy.m b/iphone/Classes/TiMediaVideoPlayerProxy.m index 57a12587503..64d8d1bbca4 100644 --- a/iphone/Classes/TiMediaVideoPlayerProxy.m +++ b/iphone/Classes/TiMediaVideoPlayerProxy.m @@ -226,7 +226,7 @@ - (void)setOverlayView:(id)proxy - (void)setBackgroundView:(id)proxy { DEPRECATED_REPLACED(@"Media.VideoPlayer.backgroundView", @"7.0.0", @"Media.VideoPlayer.overlayView") - [self setOverlayView:proxy]; + [self setOverlayView:proxy]; } - (NSNumber *)playing diff --git a/iphone/Classes/TiNetworkHTTPClientProxy.m b/iphone/Classes/TiNetworkHTTPClientProxy.m index 5bf263edc9a..483dd80e13f 100644 --- a/iphone/Classes/TiNetworkHTTPClientProxy.m +++ b/iphone/Classes/TiNetworkHTTPClientProxy.m @@ -395,53 +395,53 @@ - (void)request:(APSHTTPRequest *)request onRedirect:(APSHTTPResponse *)response - (void)setOnload:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onload" - notification:NO]; + [self replaceValue:callback + forKey:@"onload" + notification:NO]; hasOnload = (callback == nil) ? NO : YES; } - (void)setOnerror:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onerror" - notification:NO]; + [self replaceValue:callback + forKey:@"onerror" + notification:NO]; hasOnerror = (callback == nil) ? NO : YES; ; } - (void)setOnreadystatechange:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onreadystatechange" - notification:NO]; + [self replaceValue:callback + forKey:@"onreadystatechange" + notification:NO]; hasOnreadystatechange = (callback == nil) ? NO : YES; ; } - (void)setOndatastream:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"ondatastream" - notification:NO]; + [self replaceValue:callback + forKey:@"ondatastream" + notification:NO]; hasOndatastream = (callback == nil) ? NO : YES; ; } - (void)setOnsendstream:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onsendstream" - notification:NO]; + [self replaceValue:callback + forKey:@"onsendstream" + notification:NO]; hasOnsendstream = (callback == nil) ? NO : YES; ; } - (void)setOnredirect:(id)callback { ENSURE_SINGLE_ARG_OR_NIL(callback, KrollCallback) - [self replaceValue:callback - forKey:@"onredirect" - notification:NO]; + [self replaceValue:callback + forKey:@"onredirect" + notification:NO]; hasOnredirect = (callback == nil) ? NO : YES; ; } diff --git a/iphone/Classes/TiUIDashboardViewProxy.m b/iphone/Classes/TiUIDashboardViewProxy.m index f423e2fa0d9..372714e7da9 100644 --- a/iphone/Classes/TiUIDashboardViewProxy.m +++ b/iphone/Classes/TiUIDashboardViewProxy.m @@ -78,7 +78,7 @@ - (void)setData:(id)data { for (TiViewProxy *proxy in data) { ENSURE_TYPE(proxy, TiUIDashboardItemProxy) - [self rememberProxy:proxy]; + [self rememberProxy:proxy]; } [self replaceValue:data forKey:@"data" notification:NO]; diff --git a/iphone/Classes/TiUIScrollableView.m b/iphone/Classes/TiUIScrollableView.m index 15ac9e21663..ac711ed3931 100644 --- a/iphone/Classes/TiUIScrollableView.m +++ b/iphone/Classes/TiUIScrollableView.m @@ -180,27 +180,27 @@ - (void)removeSubview:(nonnull UIView *)view - (void)addSubview:(nonnull UIView *)view { WRAP_TI_VIEW(view) - [[self contentView] addSubview:wrapperView]; + [[self contentView] addSubview:wrapperView]; } - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - aboveSubview:siblingSubview]; + [[self contentView] insertSubview:wrapperView + aboveSubview:siblingSubview]; } - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - atIndex:index]; + [[self contentView] insertSubview:wrapperView + atIndex:index]; } - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview { WRAP_TI_VIEW(view) - [[self contentView] insertSubview:wrapperView - belowSubview:siblingSubview]; + [[self contentView] insertSubview:wrapperView + belowSubview:siblingSubview]; } #endif diff --git a/iphone/Classes/TiUITableView.m b/iphone/Classes/TiUITableView.m index 21b31a6663b..31fba206cbb 100644 --- a/iphone/Classes/TiUITableView.m +++ b/iphone/Classes/TiUITableView.m @@ -1653,7 +1653,7 @@ - (void)setKeyboardDismissMode_:(id)value - (void)setSeparatorInsets_:(id)arg { DEPRECATED_REPLACED(@"UI.TableView.separatorInsets", @"5.2.0", @"UI.TableView.tableSeparatorInsets") - [self setTableSeparatorInsets_:arg]; + [self setTableSeparatorInsets_:arg]; } - (void)setTableSeparatorInsets_:(id)arg diff --git a/iphone/Classes/TiUIiOSProxy.h b/iphone/Classes/TiUIiOSProxy.h index 49d11504394..0350a3dea11 100644 --- a/iphone/Classes/TiUIiOSProxy.h +++ b/iphone/Classes/TiUIiOSProxy.h @@ -173,8 +173,8 @@ @property (nonatomic, readonly) NSNumber *LARGE_TITLE_DISPLAY_MODE_NEVER; /** - * Checks the force touch capibility of the current device. - */ + * Checks the force touch capibility of the current device. + */ - (NSNumber *)forceTouchSupported; #ifdef USE_TI_UIIOSCOVERFLOWVIEW diff --git a/iphone/Classes/UIModule.m b/iphone/Classes/UIModule.m index 9df5f9ca039..114792f1cfb 100644 --- a/iphone/Classes/UIModule.m +++ b/iphone/Classes/UIModule.m @@ -449,9 +449,9 @@ - (NSString *)TEXT_STYLE_LARGE_TITLE - (void)setOverrideUserInterfaceStyle:(id)args { ENSURE_SINGLE_ARG(args, NSNumber) - [self replaceValue:args - forKey:@"overrideUserInterfaceStyle" - notification:NO]; + [self replaceValue:args + forKey:@"overrideUserInterfaceStyle" + notification:NO]; int style = [TiUtils intValue:args def:UIUserInterfaceStyleUnspecified]; TiApp.app.window.overrideUserInterfaceStyle = style; } diff --git a/iphone/Classes/WatchSessionModule.m b/iphone/Classes/WatchSessionModule.m index c34b682052c..95b0239ddef 100644 --- a/iphone/Classes/WatchSessionModule.m +++ b/iphone/Classes/WatchSessionModule.m @@ -243,7 +243,7 @@ - (void)transferUserInfo:(id)value } ENSURE_SINGLE_ARG(value, NSDictionary) - [[self watchSession] transferUserInfo:value]; + [[self watchSession] transferUserInfo:value]; } // sent in background @@ -280,7 +280,7 @@ - (void)transferCurrentComplication:(id)value } ENSURE_SINGLE_ARG(value, NSDictionary) - [[self watchSession] transferCurrentComplicationUserInfo:value]; + [[self watchSession] transferCurrentComplicationUserInfo:value]; } - (void)cancelAllUserInfoTransfers:(id)value diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m index e2c007619bb..a665731e68b 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/SBJSON.m @@ -922,10 +922,10 @@ - (BOOL)scanHexQuad:(unichar *)x error:(NSError **)error int d = (uc >= '0' && uc <= '9') ? uc - '0' : (uc >= 'a' && uc <= 'f') - ? (uc - 'a' + 10) - : (uc >= 'A' && uc <= 'F') - ? (uc - 'A' + 10) - : -1; + ? (uc - 'a' + 10) + : (uc >= 'A' && uc <= 'F') + ? (uc - 'A' + 10) + : -1; if (d == -1) { if (error) *error = err(EUNICODE, @"Missing hex digit in quad"); diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m index a43a4a5b75f..ebbb9cddac4 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiProxy.m @@ -1120,7 +1120,7 @@ - (void)setValue:(id)value forUndefinedKey:(NSString *)key - (void)applyProperties:(id)args { ENSURE_SINGLE_ARG(args, NSDictionary) - [self setValuesForKeysWithDictionary:args]; + [self setValuesForKeysWithDictionary:args]; } - (NSDictionary *)allProperties From f5f47159dd76c1048afc3587e237f64bf92ca577 Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Tue, 28 May 2024 22:58:40 +0100 Subject: [PATCH 060/145] chore: remove pnpm lockfile --- pnpm-lock.yaml | 8786 ------------------------------------------------ 1 file changed, 8786 deletions(-) delete mode 100644 pnpm-lock.yaml diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 305b2430562..00000000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,8786 +0,0 @@ -lockfileVersion: 5.4 - -specifiers: - '@commitlint/cli': ^13.2.0 - '@commitlint/config-conventional': ^13.2.0 - '@npmcli/arborist': ^2.10.0 - '@rollup/plugin-babel': ^5.3.0 - '@rollup/plugin-commonjs': ^21.0.3 - '@rollup/plugin-node-resolve': ^13.0.5 - '@seadub/clang-format-lint': 0.0.2 - '@seadub/danger-plugin-dependencies': 1.0.0 - '@seadub/danger-plugin-eslint': ^2.0.0 - '@seadub/danger-plugin-junit': ^0.3.0 - always-tail: ^0.2.0 - ansi-escapes: ^4.3.2 - appc-tasks: ^1.0.3 - archiver: ^5.3.0 - async: ^3.2.1 - babel-plugin-transform-titanium: ^0.1.1 - boxen: ^5.1.2 - buffer-equal: 1.0.0 - chai: ^4.3.4 - clang-format: 1.5.0 - clean-css: 5.2.1 - colors: ^1.4.0 - commander: ^8.2.0 - commitizen: ^4.2.4 - conventional-changelog-cli: ^2.1.1 - core-js: ^3.27.2 - cz-conventional-changelog: ^3.3.0 - danger: ^10.6.6 - ejs: ^3.1.8 - eslint: ^8.13.0 - eslint-config-axway: ^7.0.0 - eslint-plugin-mocha: ^10.0.0 - fields: 0.1.24 - folder-hash: ^4.0.1 - fs-extra: ^10.0.0 - glob: ^7.2.0 - husky: ^7.0.2 - ioslib: ^1.7.30 - lint-staged: ^11.1.2 - liveview: ^1.5.6 - lockfile-lint: ^4.7.4 - lodash.merge: ^4.6.2 - markdown: 0.5.0 - mocha: ^9.2.2 - mocha-jenkins-reporter: ^0.4.7 - moment: ^2.29.4 - node-appc: ^1.1.6 - node-titanium-sdk: ^5.1.7 - node-uuid: 1.4.8 - nodeify: ^1.0.1 - npm-run-all: ^4.1.5 - nyc: ^15.1.0 - p-limit: ^3.1.0 - pngjs: ^6.0.0 - request: ^2.88.2 - request-promise-native: ^1.0.9 - rollup: ^2.76.0 - semver: ^7.3.5 - simple-plist: ^1.3.1 - sprintf: 0.1.5 - ssri: ^8.0.1 - stream-splitter: ^0.3.2 - strip-ansi: ^6.0.0 - temp: 0.9.4 - titanium: ^6.1.1 - titanium-docgen: ^4.10.3 - wrap-ansi: ^7.0.0 - xcode: ^3.0.1 - xmldom: ^0.5.0 - yauzl: ^2.10.0 - -dependencies: - '@npmcli/arborist': 2.10.0 - always-tail: 0.2.0 - ansi-escapes: 4.3.2 - appc-tasks: 1.0.3 - archiver: 5.3.1 - async: 3.2.4 - boxen: 5.1.2 - buffer-equal: 1.0.0 - clean-css: 5.2.1 - colors: 1.4.0 - ejs: 3.1.8 - fields: 0.1.24 - fs-extra: 10.1.0 - ioslib: 1.7.30 - liveview: 1.5.6 - lodash.merge: 4.6.2 - markdown: 0.5.0 - moment: 2.29.4 - node-appc: 1.1.6 - node-titanium-sdk: 5.1.7 - node-uuid: 1.4.8 - nodeify: 1.0.1 - p-limit: 3.1.0 - pngjs: 6.0.0 - request: 2.88.2 - semver: 7.3.8 - simple-plist: 1.3.1 - sprintf: 0.1.5 - temp: 0.9.4 - wrap-ansi: 7.0.0 - xcode: 3.0.1 - xmldom: 0.5.0 - yauzl: 2.10.0 - -devDependencies: - '@commitlint/cli': 13.2.1 - '@commitlint/config-conventional': 13.2.0 - '@rollup/plugin-babel': 5.3.1_rollup@2.79.1 - '@rollup/plugin-commonjs': 21.1.0_rollup@2.79.1 - '@rollup/plugin-node-resolve': 13.3.0_rollup@2.79.1 - '@seadub/clang-format-lint': 0.0.2_clang-format@1.5.0 - '@seadub/danger-plugin-dependencies': 1.0.0 - '@seadub/danger-plugin-eslint': 2.0.0_eslint@8.34.0 - '@seadub/danger-plugin-junit': 0.3.0 - babel-plugin-transform-titanium: 0.1.1 - chai: 4.3.7 - clang-format: 1.5.0 - commander: 8.3.0 - commitizen: 4.3.0 - conventional-changelog-cli: 2.2.2 - core-js: 3.28.0 - cz-conventional-changelog: 3.3.0 - danger: 10.9.0 - eslint: 8.34.0 - eslint-config-axway: 7.0.1_eslint@8.34.0 - eslint-plugin-mocha: 10.1.0_eslint@8.34.0 - folder-hash: 4.0.4 - glob: 7.2.3 - husky: 7.0.4 - lint-staged: 11.2.6 - lockfile-lint: 4.10.1 - mocha: 9.2.2 - mocha-jenkins-reporter: 0.4.8_mocha@9.2.2 - npm-run-all: 4.1.5 - nyc: 15.1.0 - request-promise-native: 1.0.9_request@2.88.2 - rollup: 2.79.1 - ssri: 8.0.1 - stream-splitter: 0.3.2 - strip-ansi: 6.0.1 - titanium: 6.1.1 - titanium-docgen: 4.10.3 - -packages: - - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 - - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - - /@babel/compat-data/7.20.14: - resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} - engines: {node: '>=6.9.0'} - - /@babel/core/7.20.12: - resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.13 - '@babel/parser': 7.20.15 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - /@babel/generator/7.20.14: - resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - - /@babel/helper-annotate-as-pure/7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: false - - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: - resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.7 - dev: false - - /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.5 - lru-cache: 5.1.1 - semver: 6.3.0 - - /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: - resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.20.7 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.3.0 - dev: false - - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - /@babel/helper-explode-assignable-expression/7.18.6: - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: false - - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.20.7 - - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-member-expression-to-functions/7.20.7: - resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: false - - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-module-transforms/7.20.11: - resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: false - - /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - dev: false - - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-replace-supers/7.20.7: - resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.20.7 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - dev: false - - /@babel/helper-split-export-declaration/7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.7 - - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - - /@babel/helper-wrap-function/7.20.5: - resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/helpers/7.20.13: - resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.20.13 - '@babel/types': 7.20.7 - transitivePeerDependencies: - - supports-color - - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - - /@babel/parser/7.20.15: - resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.7 - - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - dev: false - - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: - resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-block-scoping/7.20.15_@babel+core@7.20.12: - resolution: {integrity: sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 - dev: false - - /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-module-transforms': 7.20.11 - '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.12: - resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - regenerator-transform: 0.15.1 - dev: false - - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: false - - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/polyfill/7.12.1: - resolution: {integrity: sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==} - deprecated: 🚨 This package has been deprecated in favor of separate inclusion of a polyfill and regenerator-runtime (when needed). See the @babel/polyfill docs (https://babeljs.io/docs/en/babel-polyfill) for more information. - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.13.11 - dev: true - - /@babel/preset-env/7.20.2_@babel+core@7.20.12: - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.20.15_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.12 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 - '@babel/types': 7.20.7 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 - core-js-compat: 3.28.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/preset-modules/0.1.5_@babel+core@7.20.12: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 - '@babel/types': 7.20.7 - esutils: 2.0.3 - dev: false - - /@babel/regjsgen/0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: false - - /@babel/runtime/7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: false - - /@babel/template/7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 - - /@babel/traverse/7.20.13: - resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.14 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.15 - '@babel/types': 7.20.7 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/types/7.20.7: - resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@commitlint/cli/13.2.1: - resolution: {integrity: sha512-JGzYk2ay5JkRS5w+FLQzr0u/Kih52ds4HPpa3vnwVOQN8Q+S1VYr8Nk/6kRm6uNYsAcC1nejtuDxRdLcLh/9TA==} - engines: {node: '>=v12'} - hasBin: true - dependencies: - '@commitlint/format': 13.2.0 - '@commitlint/lint': 13.2.0 - '@commitlint/load': 13.2.1 - '@commitlint/read': 13.2.0 - '@commitlint/types': 13.2.0 - lodash: 4.17.21 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.6.2 - dev: true - - /@commitlint/config-conventional/13.2.0: - resolution: {integrity: sha512-7u7DdOiF+3qSdDlbQGfpvCH8DCQdLFvnI2+VucYmmV7E92iD6t9PBj+UjIoSQCaMAzYp27Vkall78AkcXBh6Xw==} - engines: {node: '>=v12'} - dependencies: - conventional-changelog-conventionalcommits: 4.6.3 - dev: true - - /@commitlint/config-validator/17.4.0: - resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/types': 17.4.0 - ajv: 8.12.0 - dev: true - optional: true - - /@commitlint/ensure/13.2.0: - resolution: {integrity: sha512-rqhT62RehdLTRBu8OrPHnRCCd/7RmHEE4TiTlT4BLlr5ls5jlZhecOQWJ8np872uCNirrJ5NFjnjYYdbkNoW9Q==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/types': 13.2.0 - lodash: 4.17.21 - dev: true - - /@commitlint/execute-rule/13.2.0: - resolution: {integrity: sha512-6nPwpN0hwTYmsH3WM4hCdN+NrMopgRIuQ0aqZa+jnwMoS/g6ljliQNYfL+m5WO306BaIu1W3yYpbW5aI8gEr0g==} - engines: {node: '>=v12'} - dev: true - - /@commitlint/execute-rule/17.4.0: - resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} - engines: {node: '>=v14'} - dev: true - optional: true - - /@commitlint/format/13.2.0: - resolution: {integrity: sha512-yNBQJe6YFhM1pJAta4LvzQxccSKof6axJH7ALYjuhQqfT8AKlad7Y/2SuJ07ioyreNIqwOTuF2UfU8yJ7JzEIQ==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/types': 13.2.0 - chalk: 4.1.2 - dev: true - - /@commitlint/is-ignored/13.2.0: - resolution: {integrity: sha512-onnx4WctHFPPkHGFFAZBIWRSaNwuhixIIfbwPhcZ6IewwQX5n4jpjwM1GokA7vhlOnQ57W7AavbKUGjzIVtnRQ==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/types': 13.2.0 - semver: 7.3.5 - dev: true - - /@commitlint/lint/13.2.0: - resolution: {integrity: sha512-5XYkh0e9ehHjA7BxAHFpjPgr1qqbFY8OFG1wpBiAhycbYBtJnQmculA2wcwqTM40YCUBqEvWFdq86jTG8fbkMw==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/is-ignored': 13.2.0 - '@commitlint/parse': 13.2.0 - '@commitlint/rules': 13.2.0 - '@commitlint/types': 13.2.0 - dev: true - - /@commitlint/load/13.2.1: - resolution: {integrity: sha512-qlaJkj0hfa9gtWRfCfbgFBTK3GYQRmjZhba4l9mUu4wV9lEZ4ICFlrLtd/8kaLXf/8xbrPhkAPkVFOAqM0YwUQ==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/execute-rule': 13.2.0 - '@commitlint/resolve-extends': 13.2.0 - '@commitlint/types': 13.2.0 - '@endemolshinegroup/cosmiconfig-typescript-loader': 3.0.2_prdn7pc7mycjsinmi5fnyv4we4 - chalk: 4.1.2 - cosmiconfig: 7.1.0 - lodash: 4.17.21 - resolve-from: 5.0.0 - typescript: 4.9.5 - dev: true - - /@commitlint/load/17.4.2: - resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==} - engines: {node: '>=v14'} - requiresBuild: true - dependencies: - '@commitlint/config-validator': 17.4.0 - '@commitlint/execute-rule': 17.4.0 - '@commitlint/resolve-extends': 17.4.0 - '@commitlint/types': 17.4.0 - '@types/node': 18.13.0 - chalk: 4.1.2 - cosmiconfig: 8.0.0 - cosmiconfig-typescript-loader: 4.3.0_p7cp6dsfhdrlk7mvuxd3wodbsu - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - ts-node: 10.9.1_4bewfcp2iebiwuold25d6rgcsy - typescript: 4.9.5 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: true - optional: true - - /@commitlint/message/13.2.0: - resolution: {integrity: sha512-+LlErJj2F2AC86xJb33VJIvSt25xqSF1I0b0GApSgoUtQBeJhx4SxIj1BLvGcLVmbRmbgTzAFq/QylwLId7EhA==} - engines: {node: '>=v12'} - dev: true - - /@commitlint/parse/13.2.0: - resolution: {integrity: sha512-AtfKSQJQADbDhW+kuC5PxOyBANsYCuuJlZRZ2PYslOz2rvWwZ93zt+nKjM4g7C9ETbz0uq4r7/EoOsTJ2nJqfQ==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/types': 13.2.0 - conventional-changelog-angular: 5.0.13 - conventional-commits-parser: 3.2.4 - dev: true - - /@commitlint/read/13.2.0: - resolution: {integrity: sha512-7db5e1Bn3re6hQN0SqygTMF/QX6/MQauoJn3wJiUHE93lvwO6aFQxT3qAlYeyBPwfWsmDz/uSH454jtrSsv3Uw==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/top-level': 13.2.0 - '@commitlint/types': 13.2.0 - fs-extra: 10.1.0 - git-raw-commits: 2.0.11 - dev: true - - /@commitlint/resolve-extends/13.2.0: - resolution: {integrity: sha512-HLCMkqMKtvl1yYLZ1Pm0UpFvd0kYjsm1meLOGZ7VkOd9G/XX+Fr1S2G5AT2zeiDw7WUVYK8lGVMNa319bnV+aw==} - engines: {node: '>=v12'} - dependencies: - import-fresh: 3.3.0 - lodash: 4.17.21 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - dev: true - - /@commitlint/resolve-extends/17.4.0: - resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==} - engines: {node: '>=v14'} - dependencies: - '@commitlint/config-validator': 17.4.0 - '@commitlint/types': 17.4.0 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - dev: true - optional: true - - /@commitlint/rules/13.2.0: - resolution: {integrity: sha512-O3A9S7blOzvHfzrJrUQe9JxdtGy154ol/GXHwvd8WfMJ10y5ryBB4b6+0YZ1XhItWzrEASOfOKbD++EdLV90dQ==} - engines: {node: '>=v12'} - dependencies: - '@commitlint/ensure': 13.2.0 - '@commitlint/message': 13.2.0 - '@commitlint/to-lines': 13.2.0 - '@commitlint/types': 13.2.0 - execa: 5.1.1 - dev: true - - /@commitlint/to-lines/13.2.0: - resolution: {integrity: sha512-ZfWZix2y/CzewReCrj5g0nKOEfj5HW9eBMDrqjJJMPApve00CWv0tYrFCGXuGlv244lW4uvWJt6J/0HLRWsfyg==} - engines: {node: '>=v12'} - dev: true - - /@commitlint/top-level/13.2.0: - resolution: {integrity: sha512-knBvWYbIq6VV6VPHrVeDsxDiJq4Zq6cv5NIYU3iesKAsmK2KlLfsZPa+Ig96Y4AqAPU3zNJwjHxYkz9qxdBbfA==} - engines: {node: '>=v12'} - dependencies: - find-up: 5.0.0 - dev: true - - /@commitlint/types/13.2.0: - resolution: {integrity: sha512-RRVHEqmk1qn/dIaSQhvuca6k/6Z54G+r/KyimZ8gnAFielGiGUpsFRhIY3qhd5rXClVxDaa3nlcyTWckSccotQ==} - engines: {node: '>=v12'} - dependencies: - chalk: 4.1.2 - dev: true - - /@commitlint/types/17.4.0: - resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==} - engines: {node: '>=v14'} - dependencies: - chalk: 4.1.2 - dev: true - optional: true - - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - optional: true - - /@endemolshinegroup/cosmiconfig-typescript-loader/3.0.2_prdn7pc7mycjsinmi5fnyv4we4: - resolution: {integrity: sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==} - engines: {node: '>=10.0.0'} - peerDependencies: - cosmiconfig: '>=6' - dependencies: - cosmiconfig: 7.1.0 - lodash.get: 4.4.2 - make-error: 1.3.6 - ts-node: 9.1.1_typescript@4.9.5 - tslib: 2.5.0 - transitivePeerDependencies: - - typescript - dev: true - - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.4.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@gar/promisify/1.1.3: - resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - dev: false - - /@humanwhocodes/config-array/0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer/1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - - /@hutson/parse-repository-url/3.0.2: - resolution: {integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@isaacs/string-locale-compare/1.1.0: - resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - dev: false - - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - optional: true - - /@mapbox/node-pre-gyp/1.0.10: - resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} - hasBin: true - dependencies: - detect-libc: 2.0.1 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.6.9 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.3.8 - tar: 6.1.13 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - - /@npmcli/arborist/2.10.0: - resolution: {integrity: sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==} - engines: {node: '>= 10'} - hasBin: true - dependencies: - '@isaacs/string-locale-compare': 1.1.0 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/map-workspaces': 1.0.4 - '@npmcli/metavuln-calculator': 1.1.1 - '@npmcli/move-file': 1.1.2 - '@npmcli/name-from-folder': 1.0.1 - '@npmcli/node-gyp': 1.0.3 - '@npmcli/package-json': 1.0.1 - '@npmcli/run-script': 1.8.6 - bin-links: 2.3.0 - cacache: 15.3.0 - common-ancestor-path: 1.0.1 - json-parse-even-better-errors: 2.3.1 - json-stringify-nice: 1.1.4 - mkdirp: 1.0.4 - mkdirp-infer-owner: 2.0.0 - npm-install-checks: 4.0.0 - npm-package-arg: 8.1.5 - npm-pick-manifest: 6.1.1 - npm-registry-fetch: 11.0.0 - pacote: 11.3.5 - parse-conflict-json: 1.1.1 - proc-log: 1.0.0 - promise-all-reject-late: 1.0.1 - promise-call-limit: 1.0.1 - read-package-json-fast: 2.0.3 - readdir-scoped-modules: 1.1.0 - rimraf: 3.0.2 - semver: 7.3.8 - ssri: 8.0.1 - treeverse: 1.0.4 - walk-up-path: 1.0.0 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /@npmcli/fs/1.1.1: - resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.3.8 - dev: false - - /@npmcli/git/2.1.0: - resolution: {integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==} - dependencies: - '@npmcli/promise-spawn': 1.3.2 - lru-cache: 6.0.0 - mkdirp: 1.0.4 - npm-pick-manifest: 6.1.1 - promise-inflight: 1.0.1 - promise-retry: 2.0.1 - semver: 7.3.8 - which: 2.0.2 - transitivePeerDependencies: - - bluebird - dev: false - - /@npmcli/installed-package-contents/1.0.7: - resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} - engines: {node: '>= 10'} - hasBin: true - dependencies: - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: false - - /@npmcli/map-workspaces/1.0.4: - resolution: {integrity: sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==} - engines: {node: '>=10'} - dependencies: - '@npmcli/name-from-folder': 1.0.1 - glob: 7.2.3 - minimatch: 3.1.2 - read-package-json-fast: 2.0.3 - dev: false - - /@npmcli/metavuln-calculator/1.1.1: - resolution: {integrity: sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==} - dependencies: - cacache: 15.3.0 - json-parse-even-better-errors: 2.3.1 - pacote: 11.3.5 - semver: 7.3.8 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /@npmcli/move-file/1.1.2: - resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} - engines: {node: '>=10'} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: false - - /@npmcli/name-from-folder/1.0.1: - resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==} - dev: false - - /@npmcli/node-gyp/1.0.3: - resolution: {integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==} - dev: false - - /@npmcli/package-json/1.0.1: - resolution: {integrity: sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==} - dependencies: - json-parse-even-better-errors: 2.3.1 - dev: false - - /@npmcli/promise-spawn/1.3.2: - resolution: {integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==} - dependencies: - infer-owner: 1.0.4 - dev: false - - /@npmcli/run-script/1.8.6: - resolution: {integrity: sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==} - dependencies: - '@npmcli/node-gyp': 1.0.3 - '@npmcli/promise-spawn': 1.3.2 - node-gyp: 7.1.2 - read-package-json-fast: 2.0.3 - dev: false - - /@octokit/auth-token/2.5.0: - resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} - dependencies: - '@octokit/types': 6.41.0 - dev: true - - /@octokit/endpoint/6.0.12: - resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} - dependencies: - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.0 - dev: true - - /@octokit/openapi-types/12.11.0: - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} - dev: true - - /@octokit/plugin-paginate-rest/1.1.2: - resolution: {integrity: sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==} - dependencies: - '@octokit/types': 2.16.2 - dev: true - - /@octokit/plugin-request-log/1.0.4: - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - dev: true - - /@octokit/plugin-rest-endpoint-methods/2.4.0: - resolution: {integrity: sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==} - dependencies: - '@octokit/types': 2.16.2 - deprecation: 2.3.1 - dev: true - - /@octokit/request-error/1.2.1: - resolution: {integrity: sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==} - dependencies: - '@octokit/types': 2.16.2 - deprecation: 2.3.1 - once: 1.4.0 - dev: true - - /@octokit/request-error/2.1.0: - resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} - dependencies: - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - once: 1.4.0 - dev: true - - /@octokit/request/5.6.3: - resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} - dependencies: - '@octokit/endpoint': 6.0.12 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - node-fetch: 2.6.9 - universal-user-agent: 6.0.0 - transitivePeerDependencies: - - encoding - dev: true - - /@octokit/rest/16.43.2: - resolution: {integrity: sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==} - dependencies: - '@octokit/auth-token': 2.5.0 - '@octokit/plugin-paginate-rest': 1.1.2 - '@octokit/plugin-request-log': 1.0.4 - '@octokit/plugin-rest-endpoint-methods': 2.4.0 - '@octokit/request': 5.6.3 - '@octokit/request-error': 1.2.1 - atob-lite: 2.0.0 - before-after-hook: 2.2.3 - btoa-lite: 1.0.0 - deprecation: 2.3.1 - lodash.get: 4.4.2 - lodash.set: 4.3.2 - lodash.uniq: 4.5.0 - octokit-pagination-methods: 1.1.0 - once: 1.4.0 - universal-user-agent: 4.0.1 - transitivePeerDependencies: - - '@octokit/core' - - encoding - dev: true - - /@octokit/types/2.16.2: - resolution: {integrity: sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==} - dependencies: - '@types/node': 18.13.0 - dev: true - - /@octokit/types/6.41.0: - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} - dependencies: - '@octokit/openapi-types': 12.11.0 - dev: true - - /@rollup/plugin-babel/5.3.1_rollup@2.79.1: - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true - dependencies: - '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 - rollup: 2.79.1 - dev: true - - /@rollup/plugin-commonjs/21.1.0_rollup@2.79.1: - resolution: {integrity: sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^2.38.3 - dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 7.2.3 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.1 - rollup: 2.79.1 - dev: true - - /@rollup/plugin-node-resolve/13.3.0_rollup@2.79.1: - resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^2.42.0 - dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.79.1 - '@types/resolve': 1.17.1 - deepmerge: 4.3.0 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.1 - rollup: 2.79.1 - dev: true - - /@rollup/pluginutils/3.1.0_rollup@2.79.1: - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.79.1 - dev: true - - /@seadub/clang-format-lint/0.0.2_clang-format@1.5.0: - resolution: {integrity: sha512-0P/NUsIpUsP5MJ9WpEmBMlCQY2zFJDVkstrl+jb8EsWNixeshfzQYxlAeabbEbT4Buixuelr/HKLphyZB1rDYA==} - engines: {node: '>=8.0.0'} - hasBin: true - peerDependencies: - clang-format: ^1.0.0 - dependencies: - clang-format: 1.5.0 - commander: 3.0.2 - glob: 7.2.3 - p-limit: 2.3.0 - dev: true - - /@seadub/danger-plugin-dependencies/1.0.0: - resolution: {integrity: sha512-rk1OGopIHXf5/lfYZEIf6Kr9l1opRSSrhEF36CmXT2aoM3/VrLhB2w7g6nIxvl72ixDUSrXJrD02u/mKGLULxQ==} - engines: {node: '>=4.0.0'} - dependencies: - date-fns: 2.29.3 - lodash.flatten: 4.4.0 - lodash.includes: 4.3.0 - node-fetch: 2.6.9 - semver: 7.3.8 - transitivePeerDependencies: - - encoding - dev: true - - /@seadub/danger-plugin-eslint/2.0.0_eslint@8.34.0: - resolution: {integrity: sha512-eOfolDJyWwP5vJQqKLVhr6FDayQfbqwmwPMslFWPMd9AhJfgU85Pz3R8MHfjfsdIzn/zNofnDa5k+GSZtMAZ5g==} - engines: {node: '>=6.0.0'} - peerDependencies: - eslint: '*' - dependencies: - eslint: 8.34.0 - dev: true - - /@seadub/danger-plugin-junit/0.3.0: - resolution: {integrity: sha512-x2PkV5Q7cR9UAhS2jsEgyqs4JP7yXGk2psQKdZFq4zuwRrzsMT0e4JpipSzb05zMaGLqtdwV6oW8XJwS3FpHIQ==} - engines: {node: '>=4.0.0'} - dependencies: - '@xmldom/xmldom': 0.7.9 - fs-extra: 9.1.0 - glob: 7.2.3 - dev: true - - /@sindresorhus/is/4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: true - - /@szmarczak/http-timer/4.0.6: - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} - dependencies: - defer-to-connect: 2.0.1 - dev: true - - /@tootallnate/once/1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} - dev: false - - /@tsconfig/node10/1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - optional: true - - /@tsconfig/node12/1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - optional: true - - /@tsconfig/node14/1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - optional: true - - /@tsconfig/node16/1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - optional: true - - /@types/cacheable-request/6.0.3: - resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - dependencies: - '@types/http-cache-semantics': 4.0.1 - '@types/keyv': 3.1.4 - '@types/node': 18.13.0 - '@types/responselike': 1.0.0 - dev: true - - /@types/estree/0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: true - - /@types/estree/1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - dev: true - - /@types/http-cache-semantics/4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - dev: true - - /@types/json5/0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true - - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 18.13.0 - dev: true - - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/node/18.13.0: - resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} - dev: true - - /@types/normalize-package-data/2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true - - /@types/parse-json/4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true - - /@types/resolve/1.17.1: - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - dependencies: - '@types/node': 18.13.0 - dev: true - - /@types/responselike/1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 18.13.0 - dev: true - - /@ungap/promise-all-settled/1.1.2: - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} - dev: true - - /@xmldom/xmldom/0.7.9: - resolution: {integrity: sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==} - engines: {node: '>=10.0.0'} - dev: true - - /@xmldom/xmldom/0.8.6: - resolution: {integrity: sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==} - engines: {node: '>=10.0.0'} - - /@yarnpkg/lockfile/1.1.0: - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - dev: false - - /@yarnpkg/parsers/3.0.0-rc.39: - resolution: {integrity: sha512-BsD4zq3EVmaHqlynXTceNuEFAtrfToV4fI9GA54moKlWZL4Eb2eXrhgf1jV2nMYx18SZxYO4Jc5Kf1sCDNRjOg==} - engines: {node: '>=14.15.0'} - dependencies: - js-yaml: 3.14.1 - tslib: 2.5.0 - dev: true - - /JSONStream/1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - dev: true - - /abbrev/1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - - /abort-controller/3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: true - - /acorn-jsx/5.3.2_acorn@8.8.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.2 - dev: true - - /acorn-walk/8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true - optional: true - - /acorn/8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /add-stream/1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - dev: true - - /adm-zip/0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} - dev: false - - /agent-base/4.3.0: - resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} - engines: {node: '>= 4.0.0'} - dependencies: - es6-promisify: 5.0.0 - dev: true - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /agentkeepalive/4.2.1: - resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} - engines: {node: '>= 8.0.0'} - dependencies: - debug: 4.3.4 - depd: 1.1.2 - humanize-ms: 1.2.1 - transitivePeerDependencies: - - supports-color - dev: false - - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - /ajv/8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true - optional: true - - /always-tail/0.2.0: - resolution: {integrity: sha512-ixHs1j0+xChHt6v2OwxuPSL9udDnRegON1RezcbePdoZ+y6jGjXjA/f2SCuh9lrYxNWqJAvptOCxH2sov/zSyg==} - dependencies: - debug: 0.7.4 - transitivePeerDependencies: - - supports-color - dev: false - - /ansi-align/3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} - dependencies: - string-width: 4.2.3 - dev: false - - /ansi-colors/4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: true - - /ansi-colors/4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true - - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - - /ansi-regex/2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: false - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /anymatch/3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - /appc-tasks/1.0.3: - resolution: {integrity: sha512-HJDXuFZ3ELd+Cjk89hN1S/MMoHKmQuwvELBoaPko5i4kdSMbWFh/srMxQoxO3wsxYqYPKeKUxLLq+KTViVlCSg==} - engines: {node: '>= 4.0.0'} - dependencies: - file-state-monitor: 2.0.0 - fs-extra: 9.1.0 - dev: false - - /append-transform/2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} - dependencies: - default-require-extensions: 3.0.1 - dev: true - - /aproba/1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: false - - /aproba/2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false - - /archiver-utils/2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.10 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 2.3.7 - dev: false - - /archiver/5.3.1: - resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} - engines: {node: '>= 10'} - dependencies: - archiver-utils: 2.1.0 - async: 3.2.4 - buffer-crc32: 0.2.13 - readable-stream: 3.6.0 - readdir-glob: 1.1.2 - tar-stream: 2.2.0 - zip-stream: 4.1.0 - dev: false - - /archy/1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: true - - /are-we-there-yet/1.1.7: - resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==} - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.7 - dev: false - - /are-we-there-yet/2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.0 - dev: false - - /arg/4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-ify/1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - dev: true - - /array-includes/3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - get-intrinsic: 1.2.0 - is-string: 1.0.7 - dev: true - - /array.prototype.flat/1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - es-shim-unscopables: 1.0.0 - dev: true - - /array.prototype.flatmap/1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - es-shim-unscopables: 1.0.0 - dev: true - - /arrify/1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true - - /asap/2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false - - /asn1/0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - dependencies: - safer-buffer: 2.1.2 - - /assert-plus/1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - - /assertion-error/1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true - - /astral-regex/2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true - - /async-retry/1.2.3: - resolution: {integrity: sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==} - dependencies: - retry: 0.12.0 - dev: true - - /async/1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - dev: true - - /async/2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - dependencies: - lodash: 4.17.21 - dev: false - - /async/3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - /at-least-node/1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - - /atob-lite/2.0.0: - resolution: {integrity: sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==} - dev: true - - /available-typed-arrays/1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: true - - /aws-sign2/0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - - /aws4/1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - - /babel-helper-evaluate-path/0.5.0: - resolution: {integrity: sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==} - dev: false - - /babel-helper-flip-expressions/0.4.3: - resolution: {integrity: sha512-rSrkRW4YQ2ETCWww9gbsWk4N0x1BOtln349Tk0dlCS90oT68WMLyGR7WvaMp3eAnsVrCqdUtC19lo1avyGPejA==} - dev: false - - /babel-helper-is-nodes-equiv/0.0.1: - resolution: {integrity: sha512-ri/nsMFVRqXn7IyT5qW4/hIAGQxuYUFHa3qsxmPtbk6spZQcYlyDogfVpNm2XYOslH/ULS4VEJGUqQX5u7ACQw==} - dev: false - - /babel-helper-is-void-0/0.4.3: - resolution: {integrity: sha512-07rBV0xPRM3TM5NVJEOQEkECX3qnHDjaIbFvWYPv+T1ajpUiVLiqTfC+MmiZxY5KOL/Ec08vJdJD9kZiP9UkUg==} - dev: false - - /babel-helper-mark-eval-scopes/0.4.3: - resolution: {integrity: sha512-+d/mXPP33bhgHkdVOiPkmYoeXJ+rXRWi7OdhwpyseIqOS8CmzHQXHUp/+/Qr8baXsT0kjGpMHHofHs6C3cskdA==} - dev: false - - /babel-helper-remove-or-void/0.4.3: - resolution: {integrity: sha512-eYNceYtcGKpifHDir62gHJadVXdg9fAhuZEXiRQnJJ4Yi4oUTpqpNY//1pM4nVyjjDMPYaC2xSf0I+9IqVzwdA==} - dev: false - - /babel-helper-to-multiple-sequence-expressions/0.5.0: - resolution: {integrity: sha512-m2CvfDW4+1qfDdsrtf4dwOslQC3yhbgyBFptncp4wvtdrDHqueW7slsYv4gArie056phvQFhT2nRcGS4bnm6mA==} - dev: false - - /babel-plugin-minify-builtins/0.5.0: - resolution: {integrity: sha512-wpqbN7Ov5hsNwGdzuzvFcjgRlzbIeVv1gMIlICbPj0xkexnfoIDe7q+AZHMkQmAE/F9R5jkrB6TLfTegImlXag==} - dev: false - - /babel-plugin-minify-constant-folding/0.5.0: - resolution: {integrity: sha512-Vj97CTn/lE9hR1D+jKUeHfNy+m1baNiJ1wJvoGyOBUx7F7kJqDZxr9nCHjO/Ad+irbR3HzR6jABpSSA29QsrXQ==} - dependencies: - babel-helper-evaluate-path: 0.5.0 - dev: false - - /babel-plugin-minify-dead-code-elimination/0.5.2: - resolution: {integrity: sha512-krq9Lwi0QIzyAlcNBXTL4usqUvevB4BzktdEsb8srcXC1AaYqRJiAQw6vdKdJSaXbz6snBvziGr6ch/aoRCfpA==} - dependencies: - babel-helper-evaluate-path: 0.5.0 - babel-helper-mark-eval-scopes: 0.4.3 - babel-helper-remove-or-void: 0.4.3 - lodash: 4.17.21 - dev: false - - /babel-plugin-minify-flip-comparisons/0.4.3: - resolution: {integrity: sha512-8hNwgLVeJzpeLVOVArag2DfTkbKodzOHU7+gAZ8mGBFGPQHK6uXVpg3jh5I/F6gfi5Q5usWU2OKcstn1YbAV7A==} - dependencies: - babel-helper-is-void-0: 0.4.3 - dev: false - - /babel-plugin-minify-guarded-expressions/0.4.4: - resolution: {integrity: sha512-RMv0tM72YuPPfLT9QLr3ix9nwUIq+sHT6z8Iu3sLbqldzC1Dls8DPCywzUIzkTx9Zh1hWX4q/m9BPoPed9GOfA==} - dependencies: - babel-helper-evaluate-path: 0.5.0 - babel-helper-flip-expressions: 0.4.3 - dev: false - - /babel-plugin-minify-infinity/0.4.3: - resolution: {integrity: sha512-X0ictxCk8y+NvIf+bZ1HJPbVZKMlPku3lgYxPmIp62Dp8wdtbMLSekczty3MzvUOlrk5xzWYpBpQprXUjDRyMA==} - dev: false - - /babel-plugin-minify-mangle-names/0.5.1: - resolution: {integrity: sha512-8KMichAOae2FHlipjNDTo2wz97MdEb2Q0jrn4NIRXzHH7SJ3c5TaNNBkeTHbk9WUsMnqpNUx949ugM9NFWewzw==} - dependencies: - babel-helper-mark-eval-scopes: 0.4.3 - dev: false - - /babel-plugin-minify-numeric-literals/0.4.3: - resolution: {integrity: sha512-5D54hvs9YVuCknfWywq0eaYDt7qYxlNwCqW9Ipm/kYeS9gYhJd0Rr/Pm2WhHKJ8DC6aIlDdqSBODSthabLSX3A==} - dev: false - - /babel-plugin-minify-replace/0.5.0: - resolution: {integrity: sha512-aXZiaqWDNUbyNNNpWs/8NyST+oU7QTpK7J9zFEFSA0eOmtUNMU3fczlTTTlnCxHmq/jYNFEmkkSG3DDBtW3Y4Q==} - dev: false - - /babel-plugin-minify-simplify/0.5.1: - resolution: {integrity: sha512-OSYDSnoCxP2cYDMk9gxNAed6uJDiDz65zgL6h8d3tm8qXIagWGMLWhqysT6DY3Vs7Fgq7YUDcjOomhVUb+xX6A==} - dependencies: - babel-helper-evaluate-path: 0.5.0 - babel-helper-flip-expressions: 0.4.3 - babel-helper-is-nodes-equiv: 0.0.1 - babel-helper-to-multiple-sequence-expressions: 0.5.0 - dev: false - - /babel-plugin-minify-type-constructors/0.4.3: - resolution: {integrity: sha512-4ADB0irJ/6BeXWHubjCJmrPbzhxDgjphBMjIjxCc25n4NGJ00NsYqwYt+F/OvE9RXx8KaSW7cJvp+iZX436tnQ==} - dependencies: - babel-helper-is-void-0: 0.4.3 - dev: false - - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.20.14 - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - core-js-compat: 3.28.0 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.20.12 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-transform-inline-consecutive-adds/0.4.3: - resolution: {integrity: sha512-8D104wbzzI5RlxeVPYeQb9QsUyepiH1rAO5hpPpQ6NPRgQLpIVwkS/Nbx944pm4K8Z+rx7CgjPsFACz/VCBN0Q==} - dev: false - - /babel-plugin-transform-member-expression-literals/6.9.4: - resolution: {integrity: sha512-Xq9/Rarpj+bjOZSl1nBbZYETsNEDDJSrb6Plb1sS3/36FukWFLLRysgecva5KZECjUJTrJoQqjJgtWToaflk5Q==} - dev: false - - /babel-plugin-transform-merge-sibling-variables/6.9.5: - resolution: {integrity: sha512-xj/KrWi6/uP+DrD844h66Qh2cZN++iugEIgH8QcIxhmZZPNP6VpOE9b4gP2FFW39xDAY43kCmYMM6U0QNKN8fw==} - dev: false - - /babel-plugin-transform-minify-booleans/6.9.4: - resolution: {integrity: sha512-9pW9ePng6DZpzGPalcrULuhSCcauGAbn8AeU3bE34HcDkGm8Ldt0ysjGkyb64f0K3T5ilV4mriayOVv5fg0ASA==} - dev: false - - /babel-plugin-transform-property-literals/6.9.4: - resolution: {integrity: sha512-Pf8JHTjTPxecqVyL6KSwD/hxGpoTZjiEgV7nCx0KFQsJYM0nuuoCajbg09KRmZWeZbJ5NGTySABYv8b/hY1eEA==} - dependencies: - esutils: 2.0.3 - dev: false - - /babel-plugin-transform-regexp-constructors/0.4.3: - resolution: {integrity: sha512-JjymDyEyRNhAoNFp09y/xGwYVYzT2nWTGrBrWaL6eCg2m+B24qH2jR0AA8V8GzKJTgC8NW6joJmc6nabvWBD/g==} - dev: false - - /babel-plugin-transform-remove-console/6.9.4: - resolution: {integrity: sha512-88blrUrMX3SPiGkT1GnvVY8E/7A+k6oj3MNvUtTIxJflFzXTw1bHkuJ/y039ouhFMp2prRn5cQGzokViYi1dsg==} - dev: false - - /babel-plugin-transform-remove-debugger/6.9.4: - resolution: {integrity: sha512-Kd+eTBYlXfwoFzisburVwrngsrz4xh9I0ppoJnU/qlLysxVBRgI4Pj+dk3X8F5tDiehp3hhP8oarRMT9v2Z3lw==} - dev: false - - /babel-plugin-transform-remove-undefined/0.5.0: - resolution: {integrity: sha512-+M7fJYFaEE/M9CXa0/IRkDbiV3wRELzA1kKQFCJ4ifhrzLKn/9VCCgj9OFmYWwBd8IB48YdgPkHYtbYq+4vtHQ==} - dependencies: - babel-helper-evaluate-path: 0.5.0 - dev: false - - /babel-plugin-transform-simplify-comparison-operators/6.9.4: - resolution: {integrity: sha512-GLInxhGAQWJ9YIdjwF6dAFlmh4U+kN8pL6Big7nkDzHoZcaDQOtBm28atEhQJq6m9GpAovbiGEShKqXv4BSp0A==} - dev: false - - /babel-plugin-transform-titanium/0.1.1: - resolution: {integrity: sha512-N2ImhDNsfmT5Q68HeNJfg1xE8Z3NsVYWC+/TWLtckscXPjleDJRciIRzhUhI6876VXhxSjbw5s7ylv1NTa/xoA==} - - /babel-plugin-transform-undefined-to-void/6.9.4: - resolution: {integrity: sha512-D2UbwxawEY1xVc9svYAUZQM2xarwSNXue2qDIx6CeV2EuMGaes/0su78zlIDIAgE7BvnMw4UpmSo9fDy+znghg==} - dev: false - - /babel-preset-minify/0.5.2: - resolution: {integrity: sha512-v4GL+kk0TfovbRIKZnC3HPbu2cAGmPAby7BsOmuPdMJfHV+4FVdsGXTH/OOGQRKYdjemBuL1+MsE6mobobhe9w==} - dependencies: - babel-plugin-minify-builtins: 0.5.0 - babel-plugin-minify-constant-folding: 0.5.0 - babel-plugin-minify-dead-code-elimination: 0.5.2 - babel-plugin-minify-flip-comparisons: 0.4.3 - babel-plugin-minify-guarded-expressions: 0.4.4 - babel-plugin-minify-infinity: 0.4.3 - babel-plugin-minify-mangle-names: 0.5.1 - babel-plugin-minify-numeric-literals: 0.4.3 - babel-plugin-minify-replace: 0.5.0 - babel-plugin-minify-simplify: 0.5.1 - babel-plugin-minify-type-constructors: 0.4.3 - babel-plugin-transform-inline-consecutive-adds: 0.4.3 - babel-plugin-transform-member-expression-literals: 6.9.4 - babel-plugin-transform-merge-sibling-variables: 6.9.5 - babel-plugin-transform-minify-booleans: 6.9.4 - babel-plugin-transform-property-literals: 6.9.4 - babel-plugin-transform-regexp-constructors: 0.4.3 - babel-plugin-transform-remove-console: 6.9.4 - babel-plugin-transform-remove-debugger: 6.9.4 - babel-plugin-transform-remove-undefined: 0.5.0 - babel-plugin-transform-simplify-comparison-operators: 6.9.4 - babel-plugin-transform-undefined-to-void: 6.9.4 - lodash: 4.17.21 - dev: false - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /base64-js/1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - /bcrypt-pbkdf/1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - - /before-after-hook/2.2.3: - resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} - dev: true - - /big-integer/1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: false - - /bin-links/2.3.0: - resolution: {integrity: sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==} - engines: {node: '>=10'} - dependencies: - cmd-shim: 4.1.0 - mkdirp-infer-owner: 2.0.0 - npm-normalize-package-bin: 1.0.1 - read-cmd-shim: 2.0.0 - rimraf: 3.0.2 - write-file-atomic: 3.0.3 - dev: false - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - /bl/4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 - - /boxen/5.1.2: - resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} - engines: {node: '>=10'} - dependencies: - ansi-align: 3.0.1 - camelcase: 6.3.0 - chalk: 4.1.2 - cli-boxes: 2.2.1 - string-width: 4.2.3 - type-fest: 0.20.2 - widest-line: 3.1.0 - wrap-ansi: 7.0.0 - dev: false - - /bplist-creator/0.1.0: - resolution: {integrity: sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==} - dependencies: - stream-buffers: 2.2.0 - dev: false - - /bplist-parser/0.3.1: - resolution: {integrity: sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: false - - /bplist-parser/0.3.2: - resolution: {integrity: sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: false - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /brace-expansion/2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - - /browser-stdout/1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: true - - /browserslist/4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001452 - electron-to-chromium: 1.4.295 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10_browserslist@4.21.5 - - /btoa-lite/1.0.0: - resolution: {integrity: sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==} - dev: true - - /buffer-crc32/0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - /buffer-equal-constant-time/1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: true - - /buffer-equal/1.0.0: - resolution: {integrity: sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==} - engines: {node: '>=0.4.0'} - dev: false - - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer/5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - /buffers/0.1.1: - resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} - engines: {node: '>=0.2.0'} - - /builtin-modules/3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true - - /builtins/1.0.3: - resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} - dev: false - - /cacache/15.3.0: - resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} - engines: {node: '>= 10'} - dependencies: - '@npmcli/fs': 1.1.1 - '@npmcli/move-file': 1.1.2 - chownr: 2.0.0 - fs-minipass: 2.1.0 - glob: 7.2.3 - infer-owner: 1.0.4 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - mkdirp: 1.0.4 - p-map: 4.0.0 - promise-inflight: 1.0.1 - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.1.13 - unique-filename: 1.1.1 - transitivePeerDependencies: - - bluebird - dev: false - - /cacheable-lookup/5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: true - - /cacheable-request/7.0.2: - resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.1 - keyv: 4.5.2 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - dev: true - - /cachedir/2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} - engines: {node: '>=6'} - dev: true - - /caching-transform/4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} - engines: {node: '>=8'} - dependencies: - hasha: 5.2.2 - make-dir: 3.1.0 - package-hash: 4.0.0 - write-file-atomic: 3.0.3 - dev: true - - /call-bind/1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.0 - dev: true - - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - - /camelcase-keys/6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true - - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - /caniuse-lite/1.0.30001452: - resolution: {integrity: sha512-Lkp0vFjMkBB3GTpLR8zk4NwW5EdRdnitwYJHDOOKIU85x4ckYCPQ+9WlVvSVClHxVReefkUMtWZH2l9KGlD51w==} - - /caseless/0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - - /chai/4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - /chardet/0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true - - /check-error/1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: true - - /chokidar/3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.2 - - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /ci-info/2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /clang-format/1.5.0: - resolution: {integrity: sha512-C1LucFX7E+ABVYcPEbBHM4PYQ2+WInXsqsLpFlQ9cmRfSbk7A7b1I06h/nE4bQ3MsyEkb31jY2gC0Dtc76b4IA==} - hasBin: true - dependencies: - async: 1.5.2 - glob: 7.2.3 - resolve: 1.22.1 - dev: true - - /clean-css/5.2.1: - resolution: {integrity: sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==} - engines: {node: '>= 10.0'} - dependencies: - source-map: 0.6.1 - dev: false - - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - /cli-boxes/2.2.1: - resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} - engines: {node: '>=6'} - dev: false - - /cli-cursor/3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: true - - /cli-spinners/2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} - engines: {node: '>=6'} - dev: true - - /cli-truncate/2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - dev: true - - /cli-width/3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - dev: true - - /cliui/6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true - - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /cliui/8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clone-response/1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: true - - /clone/1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true - - /cmd-shim/4.1.0: - resolution: {integrity: sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==} - engines: {node: '>=10'} - dependencies: - mkdirp-infer-owner: 2.0.0 - dev: false - - /code-point-at/1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - dev: false - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name/1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false - - /colorette/1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: true - - /colorette/2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} - dev: true - - /coloring/0.1.0: - resolution: {integrity: sha512-oM29C+Xf365414vmGtti5+tRSynKtDwH5XSASysb4bBQHq77IYP3EfEq5mp3cf4jAIJEkpDDmd00gqrqC59ZQg==} - dev: false - - /colors/0.6.2: - resolution: {integrity: sha512-OsSVtHK8Ir8r3+Fxw/b4jS1ZLPXkV6ZxDRJQzeD7qo0SqMXWrHDM71DgYzPMHY8SFJ0Ao+nNU2p1MmwdzKqPrw==} - engines: {node: '>=0.1.90'} - - /colors/1.0.3: - resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} - engines: {node: '>=0.1.90'} - dev: true - - /colors/1.3.3: - resolution: {integrity: sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==} - engines: {node: '>=0.1.90'} - dev: false - - /colors/1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - - /commander/2.0.0: - resolution: {integrity: sha512-qebjpyeaA/nJ4w3EO2cV2++/zEkccPnjWogzA2rff+Lk8ILI75vULeTmyd4wPxWdKwtP3J+G39IXVZadh0UHyw==} - engines: {node: '>= 0.6.x'} - dev: false - - /commander/2.19.0: - resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} - dev: false - - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander/3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - dev: true - - /commander/8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: true - - /commitizen/4.3.0: - resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} - engines: {node: '>= 12'} - hasBin: true - dependencies: - cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0 - dedent: 0.7.0 - detect-indent: 6.1.0 - find-node-modules: 2.1.3 - find-root: 1.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - inquirer: 8.2.5 - is-utf8: 0.2.1 - lodash: 4.17.21 - minimist: 1.2.7 - strip-bom: 4.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: true - - /common-ancestor-path/1.0.1: - resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} - dev: false - - /commondir/1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true - - /compare-func/2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - dev: true - - /compress-commons/4.1.1: - resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} - engines: {node: '>= 10'} - dependencies: - buffer-crc32: 0.2.13 - crc32-stream: 4.0.2 - normalize-path: 3.0.0 - readable-stream: 3.6.0 - dev: false - - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - /console-control-strings/1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false - - /conventional-changelog-angular/5.0.13: - resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==} - engines: {node: '>=10'} - dependencies: - compare-func: 2.0.0 - q: 1.5.1 - dev: true - - /conventional-changelog-atom/2.0.8: - resolution: {integrity: sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==} - engines: {node: '>=10'} - dependencies: - q: 1.5.1 - dev: true - - /conventional-changelog-cli/2.2.2: - resolution: {integrity: sha512-8grMV5Jo8S0kP3yoMeJxV2P5R6VJOqK72IiSV9t/4H5r/HiRqEBQ83bYGuz4Yzfdj4bjaAEhZN/FFbsFXr5bOA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - add-stream: 1.0.0 - conventional-changelog: 3.1.25 - lodash: 4.17.21 - meow: 8.1.2 - tempfile: 3.0.0 - dev: true - - /conventional-changelog-codemirror/2.0.8: - resolution: {integrity: sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==} - engines: {node: '>=10'} - dependencies: - q: 1.5.1 - dev: true - - /conventional-changelog-conventionalcommits/4.6.3: - resolution: {integrity: sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==} - engines: {node: '>=10'} - dependencies: - compare-func: 2.0.0 - lodash: 4.17.21 - q: 1.5.1 - dev: true - - /conventional-changelog-core/4.2.4: - resolution: {integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==} - engines: {node: '>=10'} - dependencies: - add-stream: 1.0.0 - conventional-changelog-writer: 5.0.1 - conventional-commits-parser: 3.2.4 - dateformat: 3.0.3 - get-pkg-repo: 4.2.1 - git-raw-commits: 2.0.11 - git-remote-origin-url: 2.0.0 - git-semver-tags: 4.1.1 - lodash: 4.17.21 - normalize-package-data: 3.0.3 - q: 1.5.1 - read-pkg: 3.0.0 - read-pkg-up: 3.0.0 - through2: 4.0.2 - dev: true - - /conventional-changelog-ember/2.0.9: - resolution: {integrity: sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==} - engines: {node: '>=10'} - dependencies: - q: 1.5.1 - dev: true - - /conventional-changelog-eslint/3.0.9: - resolution: {integrity: sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==} - engines: {node: '>=10'} - dependencies: - q: 1.5.1 - dev: true - - /conventional-changelog-express/2.0.6: - resolution: {integrity: sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==} - engines: {node: '>=10'} - dependencies: - q: 1.5.1 - dev: true - - /conventional-changelog-jquery/3.0.11: - resolution: {integrity: sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==} - engines: {node: '>=10'} - dependencies: - q: 1.5.1 - dev: true - - /conventional-changelog-jshint/2.0.9: - resolution: {integrity: sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==} - engines: {node: '>=10'} - dependencies: - compare-func: 2.0.0 - q: 1.5.1 - dev: true - - /conventional-changelog-preset-loader/2.3.4: - resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==} - engines: {node: '>=10'} - dev: true - - /conventional-changelog-writer/5.0.1: - resolution: {integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - conventional-commits-filter: 2.0.7 - dateformat: 3.0.3 - handlebars: 4.7.7 - json-stringify-safe: 5.0.1 - lodash: 4.17.21 - meow: 8.1.2 - semver: 6.3.0 - split: 1.0.1 - through2: 4.0.2 - dev: true - - /conventional-changelog/3.1.25: - resolution: {integrity: sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==} - engines: {node: '>=10'} - dependencies: - conventional-changelog-angular: 5.0.13 - conventional-changelog-atom: 2.0.8 - conventional-changelog-codemirror: 2.0.8 - conventional-changelog-conventionalcommits: 4.6.3 - conventional-changelog-core: 4.2.4 - conventional-changelog-ember: 2.0.9 - conventional-changelog-eslint: 3.0.9 - conventional-changelog-express: 2.0.6 - conventional-changelog-jquery: 3.0.11 - conventional-changelog-jshint: 2.0.9 - conventional-changelog-preset-loader: 2.3.4 - dev: true - - /conventional-commit-types/3.0.0: - resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} - dev: true - - /conventional-commits-filter/2.0.7: - resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==} - engines: {node: '>=10'} - dependencies: - lodash.ismatch: 4.4.0 - modify-values: 1.0.1 - dev: true - - /conventional-commits-parser/3.2.4: - resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==} - engines: {node: '>=10'} - hasBin: true - dependencies: - JSONStream: 1.3.5 - is-text-path: 1.0.1 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - dev: true - - /convert-source-map/1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - /core-js-compat/3.28.0: - resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} - dependencies: - browserslist: 4.21.5 - dev: false - - /core-js/2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: true - - /core-js/3.28.0: - resolution: {integrity: sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==} - requiresBuild: true - dev: true - - /core-util-is/1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - /cosmiconfig-typescript-loader/4.3.0_p7cp6dsfhdrlk7mvuxd3wodbsu: - resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=7' - ts-node: '>=10' - typescript: '>=3' - dependencies: - '@types/node': 18.13.0 - cosmiconfig: 8.0.0 - ts-node: 10.9.1_4bewfcp2iebiwuold25d6rgcsy - typescript: 4.9.5 - dev: true - optional: true - - /cosmiconfig/7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: true - - /cosmiconfig/8.0.0: - resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} - engines: {node: '>=14'} - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - dev: true - optional: true - - /crc-32/1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: false - - /crc32-stream/4.0.2: - resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} - engines: {node: '>= 10'} - dependencies: - crc-32: 1.2.2 - readable-stream: 3.6.0 - dev: false - - /create-require/1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - - /cross-spawn/6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /cycle/1.0.3: - resolution: {integrity: sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==} - engines: {node: '>=0.4.0'} - dev: true - - /cz-conventional-changelog/3.3.0: - resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} - engines: {node: '>= 10'} - dependencies: - chalk: 2.4.2 - commitizen: 4.3.0 - conventional-commit-types: 3.0.0 - lodash.map: 4.6.0 - longest: 2.0.1 - word-wrap: 1.2.3 - optionalDependencies: - '@commitlint/load': 17.4.2 - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - dev: true - - /danger/10.9.0: - resolution: {integrity: sha512-eEWQAaIPfWSfzlQiFx+w9fWuP3jwq8VAV9W22EZRxfmCBnkdDa5aN0Akr7lzfCKudzy+4uEmIGUtxnYeFgTthQ==} - hasBin: true - dependencies: - '@babel/polyfill': 7.12.1 - '@octokit/rest': 16.43.2 - async-retry: 1.2.3 - chalk: 2.4.2 - commander: 2.20.3 - debug: 4.3.4 - fast-json-patch: 3.1.1 - get-stdin: 6.0.0 - gitlab: 10.2.1 - http-proxy-agent: 2.1.0 - https-proxy-agent: 2.2.4 - hyperlinker: 1.0.0 - json5: 2.2.3 - jsonpointer: 5.0.1 - jsonwebtoken: 8.5.1 - lodash.find: 4.6.0 - lodash.includes: 4.3.0 - lodash.isobject: 3.0.2 - lodash.keys: 4.2.0 - lodash.mapvalues: 4.6.0 - lodash.memoize: 4.1.2 - memfs-or-file-map-to-github-branch: 1.2.1 - micromatch: 4.0.5 - node-cleanup: 2.1.2 - node-fetch: 2.6.9 - override-require: 1.1.1 - p-limit: 2.3.0 - parse-diff: 0.7.1 - parse-git-config: 2.0.3 - parse-github-url: 1.0.2 - parse-link-header: 2.0.0 - pinpoint: 1.1.0 - prettyjson: 1.2.5 - readline-sync: 1.4.10 - require-from-string: 2.0.2 - supports-hyperlinks: 1.0.1 - transitivePeerDependencies: - - '@octokit/core' - - encoding - - supports-color - dev: true - - /dargs/7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} - dev: true - - /dashdash/1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - - /date-fns/2.29.3: - resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} - engines: {node: '>=0.11'} - dev: true - - /dateformat/3.0.3: - resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==} - dev: true - - /debug/0.7.4: - resolution: {integrity: sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dev: false - - /debug/3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - - /debug/3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - - /debug/4.2.0: - resolution: {integrity: sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==} - engines: {node: '>=6.0'} - deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: false - - /debug/4.3.3_supports-color@8.1.1: - resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 8.1.1 - dev: true - - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /debug/4.3.4_supports-color@8.1.1: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 8.1.1 - dev: true - - /debuglog/1.0.1: - resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} - dev: false - - /decamelize-keys/1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize/1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /decamelize/4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - dev: true - - /decode-uri-component/0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: true - - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - - /dedent/0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true - - /deep-eql/4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 - dev: true - - /deep-is/0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /deepmerge/4.3.0: - resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} - engines: {node: '>=0.10.0'} - dev: true - - /default-require-extensions/3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} - dependencies: - strip-bom: 4.0.0 - dev: true - - /defaults/1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - dependencies: - clone: 1.0.4 - dev: true - - /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true - - /define-properties/1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - /delegates/1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false - - /depd/1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false - - /deprecation/2.3.1: - resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} - dev: true - - /detect-file/1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - dev: true - - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - - /detect-libc/2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} - engines: {node: '>=8'} - dev: false - - /dezalgo/1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 - dev: false - - /diff/3.5.0: - resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} - engines: {node: '>=0.3.1'} - dev: false - - /diff/4.0.1: - resolution: {integrity: sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==} - engines: {node: '>=0.3.1'} - dev: true - - /diff/4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - - /diff/5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dev: true - - /doctrine/2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine/3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /dot-prop/5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - dependencies: - is-obj: 2.0.0 - dev: true - - /ecc-jsbn/0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - - /ecdsa-sig-formatter/1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /ejs/3.1.8: - resolution: {integrity: sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - jake: 10.8.5 - - /electron-to-chromium/1.4.295: - resolution: {integrity: sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw==} - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /encoding/0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true - dependencies: - iconv-lite: 0.6.3 - dev: false - optional: true - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - - /enquirer/2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - dev: true - - /entities/2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - dev: true - - /env-paths/2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: false - - /err-code/2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - dev: false - - /error-ex/1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /es-abstract/1.21.1: - resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.1 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - dev: true - - /es-set-tostringtag/2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: true - - /es-shim-unscopables/1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} - dependencies: - has: 1.0.3 - dev: true - - /es-to-primitive/1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - - /es6-error/4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: true - - /es6-promise/4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: true - - /es6-promisify/5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} - dependencies: - es6-promise: 4.2.8 - dev: true - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-axway/7.0.1_eslint@8.34.0: - resolution: {integrity: sha512-f5Gzs7HdaBV2npkfqft6mYu2xooh5aIX2aTGkzOLjEDyWhNo8DfKlizAHYX8zlfLmOyh+g96cq9GJPn1U44diQ==} - peerDependencies: - eslint: 8.x - dependencies: - eslint: 8.34.0 - eslint-plugin-chai-expect: 3.0.0_eslint@8.34.0 - eslint-plugin-import: 2.27.5_eslint@8.34.0 - eslint-plugin-node: 11.1.0_eslint@8.34.0 - eslint-plugin-promise: 6.1.1_eslint@8.34.0 - eslint-plugin-security: 1.7.1 - find-root: 1.1.0 - semver: 7.3.8 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-import-resolver-node/0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} - dependencies: - debug: 3.2.7 - is-core-module: 2.11.0 - resolve: 1.22.1 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils/2.7.4_eyqnu5kib2hfrvsonwfdq4ojse: - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - debug: 3.2.7 - eslint: 8.34.0 - eslint-import-resolver-node: 0.3.7 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-chai-expect/3.0.0_eslint@8.34.0: - resolution: {integrity: sha512-NS0YBcToJl+BRKBSMCwRs/oHJIX67fG5Gvb4tGked+9Wnd1/PzKijd82B2QVKcSSOwRe+pp4RAJ2AULeck4eQw==} - engines: {node: 10.* || 12.* || >= 14.*} - peerDependencies: - eslint: '>=2.0.0 <= 8.x' - dependencies: - eslint: 8.34.0 - dev: true - - /eslint-plugin-es/3.0.1_eslint@8.34.0: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' - dependencies: - eslint: 8.34.0 - eslint-utils: 2.1.0 - regexpp: 3.2.0 - dev: true - - /eslint-plugin-import/2.27.5_eslint@8.34.0: - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.34.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4_eyqnu5kib2hfrvsonwfdq4ojse - has: 1.0.3 - is-core-module: 2.11.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.1 - semver: 6.3.0 - tsconfig-paths: 3.14.1 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-mocha/10.1.0_eslint@8.34.0: - resolution: {integrity: sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw==} - engines: {node: '>=14.0.0'} - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.34.0 - eslint-utils: 3.0.0_eslint@8.34.0 - rambda: 7.4.0 - dev: true - - /eslint-plugin-node/11.1.0_eslint@8.34.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' - dependencies: - eslint: 8.34.0 - eslint-plugin-es: 3.0.1_eslint@8.34.0 - eslint-utils: 2.1.0 - ignore: 5.2.4 - minimatch: 3.1.2 - resolve: 1.22.1 - semver: 6.3.0 - dev: true - - /eslint-plugin-promise/6.1.1_eslint@8.34.0: - resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - eslint: 8.34.0 - dev: true - - /eslint-plugin-security/1.7.1: - resolution: {integrity: sha512-sMStceig8AFglhhT2LqlU5r+/fn9OwsA72O5bBuQVTssPCdQAOQzL+oMn/ZcpeUY6KcNfLJArgcrsSULNjYYdQ==} - dependencies: - safe-regex: 2.1.1 - dev: true - - /eslint-scope/7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-utils/2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} - dependencies: - eslint-visitor-keys: 1.3.0 - dev: true - - /eslint-utils/3.0.0_eslint@8.34.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.34.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys/1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys/3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint/8.34.0: - resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint/eslintrc': 1.4.1 - '@humanwhocodes/config-array': 0.11.8 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.34.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.3.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2_acorn@8.8.2 - eslint-visitor-keys: 3.3.0 - dev: true - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - - /estree-walker/1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: true - - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - /event-target-shim/5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: true - - /execa/1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: true - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /expand-tilde/2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - dependencies: - homedir-polyfill: 1.0.3 - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - /external-editor/3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - dev: true - - /extsprintf/1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - - /eyes/0.1.8: - resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} - engines: {node: '> 0.1.90'} - dev: true - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - /fast-json-patch/3.1.1: - resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} - dev: true - - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - /fast-levenshtein/2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - - /fastq/1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: true - - /fd-slicer/1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - dependencies: - pend: 1.2.0 - - /fields/0.1.24: - resolution: {integrity: sha512-5k80eIrOggir9KC+sVxj/pI285mtNdfhSlyET9wEH4hbafB38b1/Eco5r2IEdeG78LNBaJMF2q/awdzNUzVp/Q==} - engines: {node: '>=0.8.0'} - dependencies: - colors: 0.6.2 - keypress: 0.2.1 - sprintf: 0.1.5 - - /figures/3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - dependencies: - escape-string-regexp: 1.0.5 - dev: true - - /file-entry-cache/6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - dev: true - - /file-state-monitor/2.0.0: - resolution: {integrity: sha512-GfAAJ+er3ms2mxEYoMiu9nu5U9Fp8KwgW7WAM2Fq+x+L5yK4GDD74SNCUKYDoaDKcFRcWAqdCWbaDW+bxv6TnQ==} - engines: {node: '>= 10.0'} - dependencies: - fs-extra: 9.1.0 - dev: false - - /filelist/1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - dependencies: - minimatch: 5.1.6 - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /filter-obj/1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - dev: true - - /find-cache-dir/3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: true - - /find-node-modules/2.1.3: - resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} - dependencies: - findup-sync: 4.0.0 - merge: 2.1.1 - dev: true - - /find-root/1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: true - - /find-up/2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - dependencies: - locate-path: 2.0.0 - dev: true - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /find-yarn-workspace-root/2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - dependencies: - micromatch: 4.0.5 - dev: false - - /findup-sync/4.0.0: - resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} - engines: {node: '>= 8'} - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.5 - resolve-dir: 1.0.1 - dev: true - - /flat-cache/3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - dev: true - - /flat/5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - - /flatted/3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true - - /folder-hash/4.0.4: - resolution: {integrity: sha512-zEyYH+UsHEfJJcCRSf9ai5I4CTZwZ8ObONRuEI5hcEmJY5pS0FUWKruX9mMnYJrgC7MlPFDYnGsK1R+WFYjLlQ==} - engines: {node: '>=10.10.0'} - hasBin: true - dependencies: - debug: 4.3.4 - minimatch: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /for-each/0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true - - /foreground-child/2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true - - /forever-agent/0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - - /form-data/2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - /form-data/2.5.1: - resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /fromentries/1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - dev: true - - /fs-constants/1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - dev: false - - /fs-exists-sync/0.1.0: - resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} - engines: {node: '>=0.10.0'} - dev: true - - /fs-extra/10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - - /fs-extra/11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - - /fs-extra/7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - - /fs-extra/8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: false - - /fs-extra/9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - /function.prototype.name/1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names/1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - - /gauge/2.7.4: - resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==} - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.5 - dev: false - - /gauge/3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - dev: false - - /gensync/1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-func-name/2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: true - - /get-intrinsic/1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - - /get-own-enumerable-property-symbols/3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: true - - /get-package-type/0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-pkg-repo/4.2.1: - resolution: {integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==} - engines: {node: '>=6.9.0'} - hasBin: true - dependencies: - '@hutson/parse-repository-url': 3.0.2 - hosted-git-info: 4.1.0 - through2: 2.0.5 - yargs: 16.2.0 - dev: true - - /get-stdin/6.0.0: - resolution: {integrity: sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==} - engines: {node: '>=4'} - dev: true - - /get-stream/4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: true - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - - /get-symbol-description/1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: true - - /getpass/0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - dependencies: - assert-plus: 1.0.0 - - /git-config-path/1.0.1: - resolution: {integrity: sha512-KcJ2dlrrP5DbBnYIZ2nlikALfRhKzNSX0stvv3ImJ+fvC4hXKoV+U+74SV0upg+jlQZbrtQzc0bu6/Zh+7aQbg==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - fs-exists-sync: 0.1.0 - homedir-polyfill: 1.0.3 - dev: true - - /git-raw-commits/2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - dev: true - - /git-remote-origin-url/2.0.0: - resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==} - engines: {node: '>=4'} - dependencies: - gitconfiglocal: 1.0.0 - pify: 2.3.0 - dev: true - - /git-semver-tags/4.1.1: - resolution: {integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - meow: 8.1.2 - semver: 6.3.0 - dev: true - - /gitconfiglocal/1.0.0: - resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==} - dependencies: - ini: 1.3.8 - dev: true - - /gitlab/10.2.1: - resolution: {integrity: sha512-z+DxRF1C9uayVbocs9aJkJz+kGy14TSm1noB/rAIEBbXOkOYbjKxyuqJzt+0zeFpXFdgA0yq6DVVbvM7HIfGwg==} - engines: {node: '>=10.0.0'} - deprecated: 'The gitlab package has found a new home in the @gitbeaker organization. For the latest gitlab node library, check out @gitbeaker/node. A full list of the features can be found here: https://github.com/jdalrymple/gitbeaker#readme' - dependencies: - form-data: 2.5.1 - humps: 2.0.1 - ky: 0.12.0 - ky-universal: 0.3.0_ky@0.12.0 - li: 1.3.0 - query-string: 6.14.1 - universal-url: 2.0.0 - transitivePeerDependencies: - - encoding - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - - /glob-parent/6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - - /glob/7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /global-dirs/0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} - dependencies: - ini: 1.3.8 - dev: true - - /global-modules/1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - dev: true - - /global-prefix/1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - dev: true - - /globals/11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - /globals/13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis/1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: true - - /gopd/1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.0 - dev: true - - /got/11.8.6: - resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} - engines: {node: '>=10.19.0'} - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.0 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.2 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - dev: true - - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - - /grapheme-splitter/1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - - /growl/1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} - dev: true - - /handlebars/4.7.7: - resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==} - engines: {node: '>=0.4.7'} - hasBin: true - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - dev: true - - /har-schema/2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - - /har-validator/5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - - /hard-rejection/2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true - - /has-bigints/1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true - - /has-flag/2.0.0: - resolution: {integrity: sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==} - engines: {node: '>=0.10.0'} - dev: true - - /has-flag/3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-property-descriptors/1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.0 - dev: true - - /has-proto/1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols/1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag/1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /has-unicode/2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - - /hasha/5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} - dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - dev: true - - /hasurl/1.0.0: - resolution: {integrity: sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ==} - engines: {node: '>= 4'} - dev: true - - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true - - /homedir-polyfill/1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - dependencies: - parse-passwd: 1.0.0 - dev: true - - /hosted-git-info/2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /hosted-git-info/4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} - dependencies: - lru-cache: 6.0.0 - - /html-escaper/2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /http-cache-semantics/4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - /http-proxy-agent/2.1.0: - resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==} - engines: {node: '>= 4.5.0'} - dependencies: - agent-base: 4.3.0 - debug: 3.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /http-proxy-agent/4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /http-signature/1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.17.0 - - /http2-wrapper/1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: true - - /https-proxy-agent/2.2.4: - resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} - engines: {node: '>= 4.5.0'} - dependencies: - agent-base: 4.3.0 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /humanize-ms/1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - dependencies: - ms: 2.1.3 - dev: false - - /humanize/0.0.9: - resolution: {integrity: sha512-bvZZ7vXpr1RKoImjuQ45hJb5OvE2oJafHysiD/AL3nkqTZH2hFCjQ3YZfCd63FefDitbJze/ispUPP0gfDsT2Q==} - dev: true - - /humps/2.0.1: - resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} - dev: true - - /husky/7.0.4: - resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} - engines: {node: '>=12'} - hasBin: true - dev: true - - /hypar/0.1.0: - resolution: {integrity: sha512-jLohCUFV1vs7tzyCydbsYT8WBbyP33UO1WNlQkuWox3nn+N6bIC90ahK9JKz14GRtMzYQPSPPBwEu7hOnxRiHA==} - dependencies: - debug: 0.7.4 - transitivePeerDependencies: - - supports-color - dev: false - - /hyperlinker/1.0.0: - resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} - engines: {node: '>=4'} - dev: true - - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - optional: true - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - /ignore-walk/3.0.4: - resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} - dependencies: - minimatch: 3.1.2 - dev: false - - /ignore/5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - - /import-fresh/3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - /infer-owner/1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - dev: false - - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - dev: true - - /inquirer/8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} - engines: {node: '>=12.0.0'} - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: true - - /internal-slot/1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - - /ioslib/1.7.30: - resolution: {integrity: sha512-ZT9N+avvDBLzicPkeaL9roQUsdWU+PObtSfFEB/+4Hreo+RpHyUje7dwQ0SN4SI2T5zLYEPiwEN2iBQxZHiC3g==} - engines: {node: '>=10.13'} - dependencies: - always-tail: 0.2.0 - async: 3.2.4 - bplist-parser: 0.3.2 - debug: 4.3.4 - mkdirp: 0.5.1 - node-appc: 1.1.6 - node-ios-device: 1.10.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /ip/2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} - dev: false - - /is-array-buffer/3.0.1: - resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 - dev: true - - /is-arrayish/0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - - /is-bigint/1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - - /is-boolean-object/1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-builtin-module/3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 - dev: true - - /is-callable/1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true - - /is-ci/2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: false - - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - - /is-date-object/1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false - - /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - /is-fullwidth-code-point/1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - dependencies: - number-is-nan: 1.0.1 - dev: false - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - /is-glob/4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-interactive/1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true - - /is-lambda/1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - dev: false - - /is-module/1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true - - /is-negative-zero/2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object/1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-obj/1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-obj/2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - dev: true - - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /is-plain-obj/1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: true - - /is-plain-object/5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true - - /is-promise/1.0.1: - resolution: {integrity: sha512-mjWH5XxnhMA8cFnDchr6qRP9S/kLntKuEfIYku+PaN1CnS8v+OG9O/BKpRCVRJvpIkgAZm0Pf5Is3iSSOILlcg==} - dev: false - - /is-reference/1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - dependencies: - '@types/estree': 1.0.0 - dev: true - - /is-regex/1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - - /is-regexp/1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-shared-array-buffer/1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-stream/1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-stream/2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-string/1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol/1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-text-path/1.0.1: - resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} - engines: {node: '>=0.10.0'} - dependencies: - text-extensions: 1.9.0 - dev: true - - /is-typed-array/1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: true - - /is-typedarray/1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - - /is-unicode-supported/0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true - - /is-utf8/0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - dev: true - - /is-weakref/1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: true - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: false - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /isstream/0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - - /istanbul-lib-coverage/3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-hook/3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} - dependencies: - append-transform: 2.0.0 - dev: true - - /istanbul-lib-instrument/4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.20.12 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-processinfo/2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} - dependencies: - archy: 1.0.0 - cross-spawn: 7.0.3 - istanbul-lib-coverage: 3.2.0 - p-map: 3.0.0 - rimraf: 3.0.2 - uuid: 8.3.2 - dev: true - - /istanbul-lib-report/3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps/4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports/3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jake/10.8.5: - resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - async: 3.2.4 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - /js-sdsl/4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - dev: true - - /js-tokens/4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - /js-yaml/3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - - /jsbn/0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - - /jsesc/0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: false - - /jsesc/2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-parse-better-errors/1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true - - /json-parse-even-better-errors/2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - /json-schema-traverse/1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true - optional: true - - /json-schema/0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - - /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json-stringify-nice/1.1.4: - resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} - dev: false - - /json-stringify-safe/5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - /json5/1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /json5/2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - /jsonfile/4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - optionalDependencies: - graceful-fs: 4.2.10 - dev: false - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.10 - - /jsonparse/1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - /jsonpointer/5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - dev: true - - /jsonwebtoken/8.5.1: - resolution: {integrity: sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==} - engines: {node: '>=4', npm: '>=1.4.28'} - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 5.7.1 - dev: true - - /jsprim/1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - - /just-diff-apply/3.1.2: - resolution: {integrity: sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==} - dev: false - - /just-diff/3.1.1: - resolution: {integrity: sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==} - dev: false - - /jwa/1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: true - - /jws/3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: true - - /keypress/0.2.1: - resolution: {integrity: sha512-HjorDJFNhnM4SicvaUXac0X77NiskggxJdesG72+O5zBKpSqKFCrqmndKVqpu3pFqkla0St6uGk8Ju0sCurrmg==} - - /keyv/4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /klaw-sync/6.0.0: - resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} - dependencies: - graceful-fs: 4.2.10 - dev: false - - /ky-universal/0.3.0_ky@0.12.0: - resolution: {integrity: sha512-CM4Bgb2zZZpsprcjI6DNYTaH3oGHXL2u7BU4DK+lfCuC4snkt9/WRpMYeKbBbXscvKkeqBwzzjFX2WwmKY5K/A==} - engines: {node: '>=8'} - peerDependencies: - ky: '>=0.12.0' - dependencies: - abort-controller: 3.0.0 - ky: 0.12.0 - node-fetch: 2.6.9 - transitivePeerDependencies: - - encoding - dev: true - - /ky/0.12.0: - resolution: {integrity: sha512-t9b7v3V2fGwAcQnnDDQwKQGF55eWrf4pwi1RN08Fy8b/9GEwV7Ea0xQiaSW6ZbeghBHIwl8kgnla4vVo9seepQ==} - engines: {node: '>=8'} - dev: true - - /lazystream/1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - dependencies: - readable-stream: 2.3.7 - dev: false - - /levn/0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /li/1.3.0: - resolution: {integrity: sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw==} - dev: true - - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /linkify-it/3.0.3: - resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - dependencies: - uc.micro: 1.0.6 - dev: true - - /lint-staged/11.2.6: - resolution: {integrity: sha512-Vti55pUnpvPE0J9936lKl0ngVeTdSZpEdTNhASbkaWX7J5R9OEifo1INBGQuGW4zmy6OG+TcWPJ3m5yuy5Q8Tg==} - hasBin: true - dependencies: - cli-truncate: 2.1.0 - colorette: 1.4.0 - commander: 8.3.0 - cosmiconfig: 7.1.0 - debug: 4.3.4_supports-color@8.1.1 - enquirer: 2.3.6 - execa: 5.1.1 - listr2: 3.14.0_enquirer@2.3.6 - micromatch: 4.0.5 - normalize-path: 3.0.0 - please-upgrade-node: 3.2.0 - string-argv: 0.3.1 - stringify-object: 3.3.0 - supports-color: 8.1.1 - dev: true - - /listr2/3.14.0_enquirer@2.3.6: - resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} - engines: {node: '>=10.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.19 - enquirer: 2.3.6 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.3.0 - rxjs: 7.8.0 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: true - - /liveview/1.5.6: - resolution: {integrity: sha512-N58a+UeM8J3t8a6S6ux7SOnHgyDFV4PJxfbaHcQX0YNzbA0F68joGHQFhMpMv/2Z0dIoNLr9YBQ0GDCutUrtGw==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - chokidar: 3.5.3 - coloring: 0.1.0 - commander: 2.0.0 - debug: 4.2.0 - fs-extra: 8.1.0 - hypar: 0.1.0 - node-titanium-sdk: 3.2.2 - shelljs: 0.2.6 - win-fork: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /load-json-file/4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.10 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - dev: true - - /locate-path/2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: true - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lockfile-lint-api/5.5.1: - resolution: {integrity: sha512-/29lQyXOSOgqgh5dbItWYE3sm7WAO2kWH7WmbbovUDAHyRLYtVqFfDzG35zlIOzlEydEJ33DKXl8GPoLjBAvEg==} - engines: {node: '>=10.0.0'} - dependencies: - '@yarnpkg/parsers': 3.0.0-rc.39 - object-hash: 3.0.0 - dev: true - - /lockfile-lint/4.10.1: - resolution: {integrity: sha512-I45oGDBSKThsXiogy0hABI2T8TiR4Bk1cxpPrtA2J/MdqQYZIDl1k2+KqjD/fKRJtmaWfds70nK7Hl4K6r8veQ==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - cosmiconfig: 7.1.0 - debug: 4.3.4 - lockfile-lint-api: 5.5.1 - yargs: 16.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /lodash.debounce/4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: false - - /lodash.defaults/4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - dev: false - - /lodash.difference/4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - dev: false - - /lodash.find/4.6.0: - resolution: {integrity: sha512-yaRZoAV3Xq28F1iafWN1+a0rflOej93l1DQUejs3SZ41h2O9UJBoS9aueGjPDgAl4B6tPC0NuuchLKaDQQ3Isg==} - dev: true - - /lodash.flatten/4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - - /lodash.flattendeep/4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - dev: true - - /lodash.get/4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: true - - /lodash.includes/4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: true - - /lodash.isboolean/3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: true - - /lodash.isinteger/4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: true - - /lodash.ismatch/4.4.0: - resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==} - dev: true - - /lodash.isnumber/3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: true - - /lodash.isobject/3.0.2: - resolution: {integrity: sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==} - dev: true - - /lodash.isplainobject/4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - /lodash.isstring/4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: true - - /lodash.keys/4.2.0: - resolution: {integrity: sha512-J79MkJcp7Df5mizHiVNpjoHXLi4HLjh9VLS/M7lQSGoQ+0oQ+lWEigREkqKyizPB1IawvQLLKY8mzEcm1tkyxQ==} - dev: true - - /lodash.map/4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - dev: true - - /lodash.mapvalues/4.6.0: - resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} - dev: true - - /lodash.memoize/4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - /lodash.mergewith/4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - dev: true - optional: true - - /lodash.once/4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: true - - /lodash.set/4.3.2: - resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} - dev: true - - /lodash.sortby/4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: true - - /lodash.union/4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - dev: false - - /lodash.uniq/4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - dev: true - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /log-symbols/4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true - - /log-update/4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - dev: true - - /longest/2.0.1: - resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} - engines: {node: '>=0.10.0'} - dev: true - - /loupe/2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - dependencies: - get-func-name: 2.0.0 - dev: true - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true - - /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - - /macos-release/2.5.0: - resolution: {integrity: sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==} - engines: {node: '>=6'} - dev: true - - /magic-string/0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - - /make-error/1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /make-fetch-happen/9.1.0: - resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} - engines: {node: '>= 10'} - dependencies: - agentkeepalive: 4.2.1 - cacache: 15.3.0 - http-cache-semantics: 4.1.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-lambda: 1.0.1 - lru-cache: 6.0.0 - minipass: 3.3.6 - minipass-collect: 1.0.2 - minipass-fetch: 1.4.1 - minipass-flush: 1.0.5 - minipass-pipeline: 1.2.4 - negotiator: 0.6.3 - promise-retry: 2.0.1 - socks-proxy-agent: 6.2.1 - ssri: 8.0.1 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /map-obj/1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj/4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true - - /markdown-it/12.3.2: - resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} - hasBin: true - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true - - /markdown/0.5.0: - resolution: {integrity: sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ==} - hasBin: true - dependencies: - nopt: 2.1.2 - dev: false - - /mdurl/1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: true - - /memfs-or-file-map-to-github-branch/1.2.1: - resolution: {integrity: sha512-I/hQzJ2a/pCGR8fkSQ9l5Yx+FQ4e7X6blNHyWBm2ojeFLT3GVzGkTj7xnyWpdclrr7Nq4dmx3xrvu70m3ypzAQ==} - dependencies: - '@octokit/rest': 16.43.2 - transitivePeerDependencies: - - '@octokit/core' - - encoding - dev: true - - /memorystream/0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true - - /meow/8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: true - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - - /merge/2.1.1: - resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - dev: true - - /micromatch/4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - - /mime-db/1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - /mime-types/2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true - - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - - /min-indent/1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true - - /minimatch/3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - - /minimatch/4.2.1: - resolution: {integrity: sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch/5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - - /minimist-options/4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - - /minimist/0.0.10: - resolution: {integrity: sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==} - dev: false - - /minimist/0.0.8: - resolution: {integrity: sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==} - dev: false - - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - dev: true - - /minimist/1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - /minipass-collect/1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-fetch/1.4.1: - resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - minipass-sized: 1.0.3 - minizlib: 2.1.2 - optionalDependencies: - encoding: 0.1.13 - dev: false - - /minipass-flush/1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-json-stream/1.0.1: - resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} - dependencies: - jsonparse: 1.3.1 - minipass: 3.3.6 - dev: false - - /minipass-pipeline/1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass-sized/1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - dependencies: - minipass: 3.3.6 - dev: false - - /minipass/3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - - /minipass/4.0.3: - resolution: {integrity: sha512-OW2r4sQ0sI+z5ckEt5c1Tri4xTgZwYDxpE54eqWlQloQRoWtXjqt9udJ5Z4dSv7wK+nfFI7FRXyCpBSft+gpFw==} - engines: {node: '>=8'} - dev: false - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - dev: false - - /mkdirp-infer-owner/2.0.0: - resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - infer-owner: 1.0.4 - mkdirp: 1.0.4 - dev: false - - /mkdirp/0.5.1: - resolution: {integrity: sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==} - deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) - hasBin: true - dependencies: - minimist: 0.0.8 - dev: false - - /mkdirp/0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - /mocha-jenkins-reporter/0.4.8_mocha@9.2.2: - resolution: {integrity: sha512-1nz1Q+YgREUlh2kgFR+lrp+ufEFbdhCdtlEVEJR/5LhgqNLIg52+KG3X94hHpwWnf5SwYLS7udxgBbkWOUbyeQ==} - peerDependencies: - mocha: ^5.2.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 - dependencies: - diff: 4.0.1 - mkdirp: 1.0.4 - mocha: 9.2.2 - xml: 1.0.1 - dev: true - - /mocha/9.2.2: - resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} - engines: {node: '>= 12.0.0'} - hasBin: true - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.3_supports-color@8.1.1 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 4.2.1 - ms: 2.1.3 - nanoid: 3.3.1 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - workerpool: 6.2.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - dev: true - - /modify-values/1.0.1: - resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} - engines: {node: '>=0.10.0'} - dev: true - - /moment/2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} - dev: false - - /ms/2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - /mute-stream/0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true - - /nan/2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} - dev: false - - /nanoid/3.3.1: - resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true - - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /negotiator/0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false - - /neo-async/2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - - /nice-try/1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - /node-appc/0.3.4: - resolution: {integrity: sha512-DFJCttcjDmbKS/Z2oPHugp+MjfZ/dsT25dLf2gXzujPOH+zAWOH03079dokon0/hp0zbZu3ksFmrx+JIWtV97Q==} - engines: {node: '>=8.0'} - dependencies: - adm-zip: 0.4.16 - async: 2.6.4 - colors: 1.3.3 - diff: 3.5.0 - fs-extra: 7.0.1 - optimist: 0.6.1 - request: 2.88.2 - semver: 6.0.0 - sprintf: 0.1.5 - temp: 0.9.4 - uglify-js: 3.4.10 - uuid: 3.3.3 - xmldom: 0.1.27 - dev: false - - /node-appc/1.1.6: - resolution: {integrity: sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==} - engines: {node: '>=10.13'} - dependencies: - '@xmldom/xmldom': 0.8.6 - async: 3.2.4 - colors: 1.4.0 - fs-extra: 9.1.0 - request: 2.88.2 - semver: 7.3.8 - sprintf: 0.1.5 - temp: 0.9.4 - uuid: 9.0.0 - yauzl: 2.10.0 - - /node-cleanup/2.1.2: - resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} - dev: true - - /node-fetch/2.6.9: - resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - - /node-gyp/7.1.2: - resolution: {integrity: sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==} - engines: {node: '>= 10.12.0'} - hasBin: true - dependencies: - env-paths: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.10 - nopt: 5.0.0 - npmlog: 4.1.2 - request: 2.88.2 - rimraf: 3.0.2 - semver: 7.3.8 - tar: 6.1.13 - which: 2.0.2 - dev: false - - /node-ios-device/1.10.0: - resolution: {integrity: sha512-HPmTMZW6aBzJfiJCQvI77ZkwFhItDw7F3CqLdEHWz9EfmC/woRflVJzkOwB2wEe0W5+VPMDcyb4NoUahX7nTWw==} - engines: {node: '>=10.13'} - requiresBuild: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.10 - debug: 4.3.4 - nan: 2.17.0 - node-pre-gyp-init: 1.2.1 - patch-package: 6.5.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /node-pre-gyp-init/1.2.1: - resolution: {integrity: sha512-gbC2fERRmWbJFvj54f4yyiY/O6J1kkLrN7jkwRvzNmgMgPCufZLv76l2luzWjj+Ge0xQF6zDalZ6iIgzCHJ95Q==} - dependencies: - '@mapbox/node-pre-gyp': 1.0.10 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /node-preload/0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - dependencies: - process-on-spawn: 1.0.0 - dev: true - - /node-releases/2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - - /node-titanium-sdk/3.2.2: - resolution: {integrity: sha512-qASjqmnHNeohUh/F6PljkDyZNqcXjK4TPqVJ4ZXH8njs97ITpg+frG7S05IhqHxsPfyHWJv/I5qxcewv2voNcA==} - engines: {node: '>=8.9.0'} - dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.20.15 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/preset-env': 7.20.2_@babel+core@7.20.12 - async: 3.2.4 - babel-preset-minify: 0.5.2 - colors: 1.4.0 - fs-extra: 8.1.0 - node-appc: 0.3.4 - node-uuid: 1.4.8 - stream-splitter: 0.3.2 - unorm: 1.6.0 - xmldom: 0.1.27 - transitivePeerDependencies: - - supports-color - dev: false - - /node-titanium-sdk/5.1.7: - resolution: {integrity: sha512-IjzyWq5IrV3PUwyVX8kG1/GRxEMQJDki00F4uuVodY7Eq8b8N6ox4MmCOEs6kO3GJyC+lsDmZDOwA3WS5OEcwQ==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.20.15 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/preset-env': 7.20.2_@babel+core@7.20.12 - async: 3.2.4 - babel-plugin-transform-titanium: 0.1.1 - babel-preset-minify: 0.5.2 - colors: 1.4.0 - fs-extra: 11.1.0 - node-appc: 1.1.6 - node-uuid: 1.4.8 - stream-splitter: 0.3.2 - unorm: 1.6.0 - xmldom: 0.6.0 - transitivePeerDependencies: - - supports-color - dev: false - - /node-uuid/1.4.8: - resolution: {integrity: sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==} - deprecated: Use uuid module instead - hasBin: true - dev: false - - /nodeify/1.0.1: - resolution: {integrity: sha512-n7C2NyEze8GCo/z73KdbjRsBiLbv6eBn1FxwYKQ23IqGo7pQY3mhQan61Sv7eEDJCiyUjTVrVkXTzJCo1dW7Aw==} - dependencies: - is-promise: 1.0.1 - promise: 1.3.0 - dev: false - - /nopt/2.1.2: - resolution: {integrity: sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA==} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: false - - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: false - - /normalize-package-data/2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.1 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data/3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.11.0 - semver: 7.3.8 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - /normalize-url/6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: true - - /npm-bundled/1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-install-checks/4.0.0: - resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} - engines: {node: '>=10'} - dependencies: - semver: 7.3.8 - dev: false - - /npm-normalize-package-bin/1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: false - - /npm-package-arg/8.1.5: - resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} - engines: {node: '>=10'} - dependencies: - hosted-git-info: 4.1.0 - semver: 7.3.8 - validate-npm-package-name: 3.0.0 - dev: false - - /npm-packlist/2.2.2: - resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - glob: 7.2.3 - ignore-walk: 3.0.4 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: false - - /npm-pick-manifest/6.1.1: - resolution: {integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==} - dependencies: - npm-install-checks: 4.0.0 - npm-normalize-package-bin: 1.0.1 - npm-package-arg: 8.1.5 - semver: 7.3.8 - dev: false - - /npm-registry-fetch/11.0.0: - resolution: {integrity: sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==} - engines: {node: '>=10'} - dependencies: - make-fetch-happen: 9.1.0 - minipass: 3.3.6 - minipass-fetch: 1.4.1 - minipass-json-stream: 1.0.1 - minizlib: 2.1.2 - npm-package-arg: 8.1.5 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /npm-run-all/4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.5 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.8.0 - string.prototype.padend: 3.1.4 - dev: true - - /npm-run-path/2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: true - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /npmlog/4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - dependencies: - are-we-there-yet: 1.1.7 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - dev: false - - /npmlog/5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - dev: false - - /number-is-nan/1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - dev: false - - /nyc/15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true - dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - caching-transform: 4.0.0 - convert-source-map: 1.9.0 - decamelize: 1.2.0 - find-cache-dir: 3.3.2 - find-up: 4.1.0 - foreground-child: 2.0.0 - get-package-type: 0.1.0 - glob: 7.2.3 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-hook: 3.0.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-processinfo: 2.0.3 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - make-dir: 3.1.0 - node-preload: 0.2.1 - p-map: 3.0.0 - process-on-spawn: 1.0.0 - resolve-from: 5.0.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - spawn-wrap: 2.0.0 - test-exclude: 6.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - dev: true - - /oauth-sign/0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - - /object-assign/4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /object-hash/3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - dev: true - - /object-inspect/1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: true - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign/4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.values/1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - dev: true - - /octokit-pagination-methods/1.1.0: - resolution: {integrity: sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==} - dev: true - - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /open/7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: false - - /optimist/0.6.1: - resolution: {integrity: sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==} - dependencies: - minimist: 0.0.10 - wordwrap: 0.0.3 - dev: false - - /optionator/0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - dev: true - - /ora/5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.7.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: true - - /os-name/3.1.0: - resolution: {integrity: sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==} - engines: {node: '>=6'} - dependencies: - macos-release: 2.5.0 - windows-release: 3.3.3 - dev: true - - /os-tmpdir/1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - /override-require/1.1.1: - resolution: {integrity: sha512-eoJ9YWxFcXbrn2U8FKT6RV+/Kj7fiGAB1VvHzbYKt8xM5ZuKZgCGvnHzDxmreEjcBH28ejg5MiOH4iyY1mQnkg==} - dev: true - - /p-cancelable/2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: true - - /p-finally/1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: true - - /p-limit/1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: true - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - - /p-locate/2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: true - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - - /p-map/3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-map/4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - - /p-try/1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - dev: true - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /package-hash/4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.10 - hasha: 5.2.2 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - dev: true - - /pacote/11.3.5: - resolution: {integrity: sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@npmcli/git': 2.1.0 - '@npmcli/installed-package-contents': 1.0.7 - '@npmcli/promise-spawn': 1.3.2 - '@npmcli/run-script': 1.8.6 - cacache: 15.3.0 - chownr: 2.0.0 - fs-minipass: 2.1.0 - infer-owner: 1.0.4 - minipass: 3.3.6 - mkdirp: 1.0.4 - npm-package-arg: 8.1.5 - npm-packlist: 2.2.2 - npm-pick-manifest: 6.1.1 - npm-registry-fetch: 11.0.0 - promise-retry: 2.0.1 - read-package-json-fast: 2.0.3 - rimraf: 3.0.2 - ssri: 8.0.1 - tar: 6.1.13 - transitivePeerDependencies: - - bluebird - - supports-color - dev: false - - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /parse-conflict-json/1.1.1: - resolution: {integrity: sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==} - dependencies: - json-parse-even-better-errors: 2.3.1 - just-diff: 3.1.1 - just-diff-apply: 3.1.2 - dev: false - - /parse-diff/0.7.1: - resolution: {integrity: sha512-1j3l8IKcy4yRK2W4o9EYvJLSzpAVwz4DXqCewYyx2vEwk2gcf3DBPqc8Fj4XV3K33OYJ08A8fWwyu/ykD/HUSg==} - dev: true - - /parse-git-config/2.0.3: - resolution: {integrity: sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A==} - engines: {node: '>=6'} - dependencies: - expand-tilde: 2.0.2 - git-config-path: 1.0.1 - ini: 1.3.8 - dev: true - - /parse-github-url/1.0.2: - resolution: {integrity: sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==} - engines: {node: '>=0.10.0'} - hasBin: true - dev: true - - /parse-json/4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: true - - /parse-json/5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.18.6 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - - /parse-link-header/2.0.0: - resolution: {integrity: sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==} - dependencies: - xtend: 4.0.2 - dev: true - - /parse-passwd/1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - dev: true - - /patch-package/6.5.1: - resolution: {integrity: sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==} - engines: {node: '>=10', npm: '>5'} - hasBin: true - dependencies: - '@yarnpkg/lockfile': 1.1.0 - chalk: 4.1.2 - cross-spawn: 6.0.5 - find-yarn-workspace-root: 2.0.0 - fs-extra: 9.1.0 - is-ci: 2.0.0 - klaw-sync: 6.0.0 - minimist: 1.2.8 - open: 7.4.2 - rimraf: 2.7.1 - semver: 5.7.1 - slash: 2.0.0 - tmp: 0.0.33 - yaml: 1.10.2 - dev: false - - /path-exists/3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - /path-key/2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - /path-type/3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - - /pathval/1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true - - /pend/1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - /performance-now/2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - - /picocolors/1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - /picomatch/2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - /pidtree/0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - - /pify/3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: true - - /pinpoint/1.1.0: - resolution: {integrity: sha512-+04FTD9x7Cls2rihLlo57QDCcHoLBGn5Dk51SwtFBWkUWLxZaBXyNVpCw1S+atvE7GmnFjeaRZ0WLq3UYuqAdg==} - dev: true - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /please-upgrade-node/3.2.0: - resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - dependencies: - semver-compare: 1.0.0 - dev: true - - /plist/3.0.6: - resolution: {integrity: sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==} - engines: {node: '>=6'} - dependencies: - base64-js: 1.5.1 - xmlbuilder: 15.1.1 - dev: false - - /pngjs/6.0.0: - resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} - engines: {node: '>=12.13.0'} - dev: false - - /prelude-ls/1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prettyjson/1.2.5: - resolution: {integrity: sha512-rksPWtoZb2ZpT5OVgtmy0KHVM+Dca3iVwWY9ifwhcexfjebtgjg3wmrUt9PvJ59XIYBcknQeYHD8IAnVlh9lAw==} - hasBin: true - dependencies: - colors: 1.4.0 - minimist: 1.2.8 - dev: true - - /proc-log/1.0.0: - resolution: {integrity: sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==} - dev: false - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - /process-on-spawn/1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} - dependencies: - fromentries: 1.3.2 - dev: true - - /promise-all-reject-late/1.0.1: - resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} - dev: false - - /promise-call-limit/1.0.1: - resolution: {integrity: sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==} - dev: false - - /promise-inflight/1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: false - - /promise-retry/2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - dependencies: - err-code: 2.0.3 - retry: 0.12.0 - dev: false - - /promise/1.3.0: - resolution: {integrity: sha512-R9WrbTF3EPkVtWjp7B7umQGVndpsi+rsDAfrR4xAALQpFLa/+2OriecLhawxzvii2gd9+DZFwROWDuUUaqS5yA==} - dependencies: - is-promise: 1.0.1 - dev: false - - /psl/1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - - /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - - /punycode/2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - /q/1.5.1: - resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} - engines: {node: '>=0.6.0', teleport: '>=0.2.0'} - dev: true - - /qs/6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - - /query-string/6.14.1: - resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} - engines: {node: '>=6'} - dependencies: - decode-uri-component: 0.2.2 - filter-obj: 1.1.0 - split-on-first: 1.1.0 - strict-uri-encode: 2.0.0 - dev: true - - /queue-microtask/1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /quick-lru/4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: true - - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - - /rambda/7.4.0: - resolution: {integrity: sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==} - dev: true - - /randombytes/2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /read-cmd-shim/2.0.0: - resolution: {integrity: sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==} - dev: false - - /read-package-json-fast/2.0.3: - resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} - engines: {node: '>=10'} - dependencies: - json-parse-even-better-errors: 2.3.1 - npm-normalize-package-bin: 1.0.1 - dev: false - - /read-pkg-up/3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} - dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 - dev: true - - /read-pkg-up/7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg/3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - dev: true - - /read-pkg/5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readdir-glob/1.1.2: - resolution: {integrity: sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==} - dependencies: - minimatch: 5.1.6 - dev: false - - /readdir-scoped-modules/1.1.0: - resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} - deprecated: This functionality has been moved to @npmcli/fs - dependencies: - debuglog: 1.0.1 - dezalgo: 1.0.4 - graceful-fs: 4.2.10 - once: 1.4.0 - dev: false - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - - /readline-sync/1.4.10: - resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==} - engines: {node: '>= 0.8.0'} - dev: true - - /redent/3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - - /regenerate-unicode-properties/10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: false - - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: false - - /regenerator-runtime/0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - - /regenerator-transform/0.15.1: - resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} - dependencies: - '@babel/runtime': 7.20.13 - dev: false - - /regexp-tree/0.1.24: - resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} - hasBin: true - dev: true - - /regexp.prototype.flags/1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: true - - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /regexpu-core/5.3.0: - resolution: {integrity: sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==} - engines: {node: '>=4'} - dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 - dev: false - - /regjsparser/0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: false - - /release-zalgo/1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} - dependencies: - es6-error: 4.1.1 - dev: true - - /request-promise-core/1.1.4_request@2.88.2: - resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} - engines: {node: '>=0.10.0'} - peerDependencies: - request: ^2.34 - dependencies: - lodash: 4.17.21 - request: 2.88.2 - dev: true - - /request-promise-native/1.0.9_request@2.88.2: - resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} - engines: {node: '>=0.12.0'} - deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 - peerDependencies: - request: ^2.34 - dependencies: - request: 2.88.2 - request-promise-core: 1.1.4_request@2.88.2 - stealthy-require: 1.1.1 - tough-cookie: 2.5.0 - dev: true - - /request/2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - - /require-directory/2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - - /require-from-string/2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true - - /require-main-filename/2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /resolve-alpn/1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true - - /resolve-dir/1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - dev: true - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve-global/1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: true - - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - /responselike/2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - dependencies: - lowercase-keys: 2.0.0 - dev: true - - /restore-cursor/3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /retry/0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rfdc/1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true - - /rimraf/2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true - dependencies: - glob: 7.2.3 - - /rimraf/2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - - /rollup/2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /run-async/2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - dev: true - - /run-parallel/1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: true - - /rxjs/7.8.0: - resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} - dependencies: - tslib: 2.5.0 - dev: true - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /safe-regex-test/1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 - dev: true - - /safe-regex/2.1.1: - resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} - dependencies: - regexp-tree: 0.1.24 - dev: true - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - /semver-compare/1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} - dev: true - - /semver/5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - - /semver/6.0.0: - resolution: {integrity: sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==} - hasBin: true - dev: false - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /serialize-javascript/6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - dev: true - - /set-blocking/2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - - /shebang-command/1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /shell-quote/1.8.0: - resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} - dev: true - - /shelljs/0.2.6: - resolution: {integrity: sha512-LQiM15qPbSyzHDFfI4v7EVhjBXG5PUAKWVBnVMBXwdlQSHZtzKYeKGzDHBIqpenPrCsPWqBSOF5o7oSvSfX+CA==} - engines: {node: '>=0.8.0'} - hasBin: true - dev: false - - /side-channel/1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - dev: true - - /signal-exit/3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - /simple-plist/1.3.1: - resolution: {integrity: sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==} - dependencies: - bplist-creator: 0.1.0 - bplist-parser: 0.3.1 - plist: 3.0.6 - dev: false - - /slash/2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: false - - /slice-ansi/3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /slice-ansi/4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - - /smart-buffer/4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - dev: false - - /socks-proxy-agent/6.2.1: - resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} - engines: {node: '>= 10'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - socks: 2.7.1 - transitivePeerDependencies: - - supports-color - dev: false - - /socks/2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - dependencies: - ip: 2.0.0 - smart-buffer: 4.2.0 - dev: false - - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - - /spawn-wrap/2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - dependencies: - foreground-child: 2.0.0 - is-windows: 1.0.2 - make-dir: 3.1.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - which: 2.0.2 - dev: true - - /spdx-correct/3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 - dev: true - - /spdx-exceptions/2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse/3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 - dev: true - - /spdx-license-ids/3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} - dev: true - - /split-on-first/1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - dev: true - - /split/1.0.1: - resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - dependencies: - through: 2.3.8 - dev: true - - /split2/3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - dependencies: - readable-stream: 3.6.0 - dev: true - - /sprintf-js/1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - - /sprintf/0.1.5: - resolution: {integrity: sha512-4X5KsuXFQ7f+d7Y+bi4qSb6eI+YoifDTGr0MQJXRoYO7BO7evfRCjds6kk3z7l5CiJYxgDN1x5Er4WiyCt+zTQ==} - engines: {node: '>=0.2.4'} - deprecated: The sprintf package is deprecated in favor of sprintf-js. - - /sshpk/1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - - /ssri/8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - - /stack-trace/0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: true - - /stealthy-require/1.1.1: - resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} - engines: {node: '>=0.10.0'} - dev: true - - /stream-buffers/2.2.0: - resolution: {integrity: sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==} - engines: {node: '>= 0.10.0'} - dev: false - - /stream-splitter/0.3.2: - resolution: {integrity: sha512-9VAHJIhskQFJMbyKbf/5flSXV2HsP9MDFdCp3A8WDBWkZ8tP/SOfkI2c5lEHNNUNzbWdNkJEv6iNvQRJnSbYuA==} - dependencies: - buffers: 0.1.1 - - /strict-uri-encode/2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: true - - /string-argv/0.3.1: - resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} - engines: {node: '>=0.6.19'} - dev: true - - /string-width/1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: false - - /string-width/4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - /string.prototype.padend/3.1.4: - resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - dev: true - - /string.prototype.trimend/1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - dev: true - - /string.prototype.trimstart/1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.1 - dev: true - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - - /stringify-object/3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - dev: true - - /strip-ansi/3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: false - - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - - /strip-bom/3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-eof/1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: true - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-indent/3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - dependencies: - min-indent: 1.0.1 - dev: true - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-hyperlinks/1.0.1: - resolution: {integrity: sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==} - engines: {node: '>=4'} - dependencies: - has-flag: 2.0.0 - supports-color: 5.5.0 - dev: true - - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - /tar-stream/2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: false - - /tar/6.1.13: - resolution: {integrity: sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==} - engines: {node: '>=10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 4.0.3 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /temp-dir/2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - dev: true - - /temp/0.9.4: - resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} - engines: {node: '>=6.0.0'} - dependencies: - mkdirp: 0.5.6 - rimraf: 2.6.3 - - /tempfile/3.0.0: - resolution: {integrity: sha512-uNFCg478XovRi85iD42egu+eSFUmmka750Jy7L5tfHI5hQKKtbPnxaSaXAbBqCDYrw3wx4tXjKwci4/QmsZJxw==} - engines: {node: '>=8'} - dependencies: - temp-dir: 2.0.0 - uuid: 3.4.0 - dev: true - - /test-exclude/6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - - /text-extensions/1.9.0: - resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} - engines: {node: '>=0.10'} - dev: true - - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true - - /through2/2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.7 - xtend: 4.0.2 - dev: true - - /through2/4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.0 - dev: true - - /titanium-docgen/4.10.3: - resolution: {integrity: sha512-zslxOc2+XZiEZEVCk9Gll36rFWRhC9XFl0nof5NIbKTsDslXjaDdigKIa00ilQShu5/mOqsmd0mWAo2+Sefnag==} - hasBin: true - dependencies: - colors: 1.4.0 - ejs: 3.1.8 - js-yaml: 3.14.1 - markdown-it: 12.3.2 - node-appc: 1.1.6 - dev: true - - /titanium/6.1.1: - resolution: {integrity: sha512-jz1pZ1jDB72H63SaHYUYLbiBBVmaGPIprSKQr2rbuoNPNasp9EerMouqSUiVdnvaKElpnW/sWiMmPs4XINmo0w==} - engines: {node: '>=14.15'} - hasBin: true - dependencies: - async: 3.2.4 - colors: 1.4.0 - fields: 0.1.24 - got: 11.8.6 - humanize: 0.0.9 - node-appc: 1.1.6 - request: 2.88.2 - sprintf: 0.1.5 - tmp: 0.2.1 - winston: 2.4.6 - yauzl: 2.10.0 - dev: true - - /tmp/0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - dependencies: - os-tmpdir: 1.0.2 - - /tmp/0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} - dependencies: - rimraf: 3.0.2 - dev: true - - /to-fast-properties/2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /tough-cookie/2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - dependencies: - psl: 1.9.0 - punycode: 2.3.0 - - /tr46/0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - /tr46/1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - dependencies: - punycode: 2.3.0 - dev: true - - /treeverse/1.0.4: - resolution: {integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==} - dev: false - - /trim-newlines/3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - dev: true - - /ts-node/10.9.1_4bewfcp2iebiwuold25d6rgcsy: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.3 - '@types/node': 18.13.0 - acorn: 8.8.2 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - optional: true - - /ts-node/9.1.1_typescript@4.9.5: - resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} - engines: {node: '>=10.0.0'} - hasBin: true - peerDependencies: - typescript: '>=2.7' - dependencies: - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 4.9.5 - yn: 3.1.1 - dev: true - - /tsconfig-paths/3.14.1: - resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true - - /tslib/2.5.0: - resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - dev: true - - /tunnel-agent/0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - - /tweetnacl/0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - - /type-check/0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-detect/4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true - - /type-fest/0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - dev: true - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - /type-fest/0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - /type-fest/0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true - - /type-fest/0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - - /typed-array-length/1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.10 - dev: true - - /typedarray-to-buffer/3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /uc.micro/1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: true - - /uglify-js/3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /uglify-js/3.4.10: - resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - commander: 2.19.0 - source-map: 0.6.1 - dev: false - - /unbox-primitive/1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true - - /unicode-canonical-property-names-ecmascript/2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: false - - /unicode-match-property-ecmascript/2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - dev: false - - /unicode-match-property-value-ecmascript/2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} - dev: false - - /unicode-property-aliases-ecmascript/2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: false - - /unique-filename/1.1.1: - resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} - dependencies: - unique-slug: 2.0.2 - dev: false - - /unique-slug/2.0.2: - resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} - dependencies: - imurmurhash: 0.1.4 - dev: false - - /universal-url/2.0.0: - resolution: {integrity: sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg==} - engines: {node: '>= 6'} - dependencies: - hasurl: 1.0.0 - whatwg-url: 7.1.0 - dev: true - - /universal-user-agent/4.0.1: - resolution: {integrity: sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==} - dependencies: - os-name: 3.1.0 - dev: true - - /universal-user-agent/6.0.0: - resolution: {integrity: sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==} - dev: true - - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false - - /universalify/2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - - /unorm/1.6.0: - resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} - engines: {node: '>= 0.4.0'} - dev: false - - /update-browserslist-db/1.0.10_browserslist@4.21.5: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.5 - escalade: 3.1.1 - picocolors: 1.0.0 - - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - - /util-deprecate/1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /uuid/3.3.3: - resolution: {integrity: sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: false - - /uuid/3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - - /uuid/7.0.3: - resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==} - hasBin: true - dev: false - - /uuid/8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: true - - /uuid/9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - - /v8-compile-cache-lib/3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - optional: true - - /validate-npm-package-license/3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.1.1 - spdx-expression-parse: 3.0.1 - dev: true - - /validate-npm-package-name/3.0.0: - resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} - dependencies: - builtins: 1.0.3 - dev: false - - /verror/1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - - /walk-up-path/1.0.0: - resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} - dev: false - - /wcwidth/1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - - /webidl-conversions/3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - /webidl-conversions/4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: true - - /whatwg-url/5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - /whatwg-url/7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: true - - /which-boxed-primitive/1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-module/2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - dev: true - - /which-typed-array/1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: true - - /which/1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /wide-align/1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - dependencies: - string-width: 1.0.2 - dev: false - - /widest-line/3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - dependencies: - string-width: 4.2.3 - dev: false - - /win-fork/1.1.1: - resolution: {integrity: sha512-kMnrXXHyb/Zx1ynkiMtcEgq+rxXFIfs/IhhxVBmIk+1KwPyIggZU0RAiADExhSyf0NESvCWQyfO4eGdlU9fBSw==} - hasBin: true - dev: false - - /windows-release/3.3.3: - resolution: {integrity: sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==} - engines: {node: '>=6'} - dependencies: - execa: 1.0.0 - dev: true - - /winston/2.4.6: - resolution: {integrity: sha512-J5Zu4p0tojLde8mIOyDSsmLmcP8I3Z6wtwpTDHx1+hGcdhxcJaAmG4CFtagkb+NiN1M9Ek4b42pzMWqfc9jm8w==} - engines: {node: '>= 0.10.0'} - dependencies: - async: 3.2.4 - colors: 1.0.3 - cycle: 1.0.3 - eyes: 0.1.8 - isstream: 0.1.2 - stack-trace: 0.0.10 - dev: true - - /word-wrap/1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - - /wordwrap/0.0.3: - resolution: {integrity: sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==} - engines: {node: '>=0.4.0'} - dev: false - - /wordwrap/1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true - - /workerpool/6.2.0: - resolution: {integrity: sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==} - dev: true - - /wrap-ansi/6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - /write-file-atomic/3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - - /xcode/3.0.1: - resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==} - engines: {node: '>=10.0.0'} - dependencies: - simple-plist: 1.3.1 - uuid: 7.0.3 - dev: false - - /xml/1.0.1: - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - dev: true - - /xmlbuilder/15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} - engines: {node: '>=8.0'} - dev: false - - /xmldom/0.1.27: - resolution: {integrity: sha512-7WpJBYwyhvsddFJA51SOIU0Be9W44sbGGjc6Z3ly8Wx/Wl7nriMPZ5xf6Np9ASlJ6gACfXcTLukm4DtX372lFw==} - engines: {node: '>=0.1'} - deprecated: Deprecated due to CVE-2021-21366 resolved in 0.5.0 - dev: false - - /xmldom/0.5.0: - resolution: {integrity: sha512-Foaj5FXVzgn7xFzsKeNIde9g6aFBxTPi37iwsno8QvApmtg7KYrr+OPyRHcJF7dud2a5nGRBXK3n0dL62Gf7PA==} - engines: {node: '>=10.0.0'} - dev: false - - /xmldom/0.6.0: - resolution: {integrity: sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg==} - engines: {node: '>=10.0.0'} - dev: false - - /xtend/4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: true - - /y18n/4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yallist/3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yaml/1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - /yargs-parser/18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs-parser/20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - dev: true - - /yargs-parser/20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true - - /yargs-parser/21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs-unparser/2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - dev: true - - /yargs/15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.0 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - dev: true - - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yauzl/2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - /yn/3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - /zip-stream/4.1.0: - resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} - engines: {node: '>= 10'} - dependencies: - archiver-utils: 2.1.0 - compress-commons: 4.1.1 - readable-stream: 3.6.0 - dev: false From 644831f18e6f35e987992da3f72e294e0d9649be Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 29 May 2024 04:27:22 +0200 Subject: [PATCH 061/145] chore: node-appc update (#14048) Co-authored-by: Chris Barber --- build/scons-check-lockfile.js | 2 +- package-lock.json | 210 ++++++++++++++++++++++++++++++++-- package.json | 2 +- 3 files changed, 205 insertions(+), 9 deletions(-) diff --git a/build/scons-check-lockfile.js b/build/scons-check-lockfile.js index 53899d25fb3..d06571b28f2 100755 --- a/build/scons-check-lockfile.js +++ b/build/scons-check-lockfile.js @@ -16,7 +16,7 @@ function checkDependencies(deps) { const packageNames = Object.keys(deps); for (const packageName of packageNames) { const whatever = deps[packageName]; - const version = whatever.version; + const version = whatever.version.replace('@', '-').replace('npm:', ''); const resolved = whatever.resolved; if (resolved && !resolved.endsWith(`${version}.tgz`)) { console.error(`There may be a mismatched url (${resolved}) for the given version (${version}) of dependency ${packageName}`); diff --git a/package-lock.json b/package-lock.json index e16762bc6a1..1856dc2fd08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "lodash.merge": "4.6.2", "markdown": "0.5.0", "moment": "2.30.1", - "node-appc": "1.1.6", + "node-appc": "1.1.7", "node-titanium-sdk": "6.0.0", "node-uuid": "1.4.8", "nodeify": "1.0.1", @@ -8905,6 +8905,28 @@ "node": ">=10.13" } }, + "node_modules/ioslib/node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ioslib/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ioslib/node_modules/minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", @@ -8922,6 +8944,40 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/ioslib/node_modules/node-appc": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.6.tgz", + "integrity": "sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==", + "dependencies": { + "@xmldom/xmldom": "^0.8.6", + "async": "^3.2.4", + "colors": "1.4.0", + "fs-extra": "~9.1.0", + "request": "~2.88.0", + "semver": "~7.3.8", + "sprintf": "^0.1.5", + "temp": "~0.9.4", + "uuid": "~9.0.0", + "yauzl": "^2.10.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/ioslib/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -11552,9 +11608,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node_modules/node-appc": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.6.tgz", - "integrity": "sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.7.tgz", + "integrity": "sha512-BrALELUzNC4WWhDIkgBu5pUU/9IzIza65ck1yPTd5A2q1wzrXySYDhLfzKJrFmGZZep37XRKey33U10539Xd0Q==", "dependencies": { "@xmldom/xmldom": "^0.8.6", "async": "^3.2.4", @@ -11852,6 +11908,14 @@ "node": ">=6.0.0" } }, + "node_modules/node-titanium-sdk/node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/node-titanium-sdk/node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -11870,6 +11934,54 @@ "node": ">=14.14" } }, + "node_modules/node-titanium-sdk/node_modules/node-appc": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.6.tgz", + "integrity": "sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==", + "dependencies": { + "@xmldom/xmldom": "^0.8.6", + "async": "^3.2.4", + "colors": "1.4.0", + "fs-extra": "~9.1.0", + "request": "~2.88.0", + "semver": "~7.3.8", + "sprintf": "^0.1.5", + "temp": "~0.9.4", + "uuid": "~9.0.0", + "yauzl": "^2.10.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/node-titanium-sdk/node_modules/node-appc/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-titanium-sdk/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/node-uuid": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", @@ -22917,6 +23029,22 @@ "node-ios-device": "1.11.0" }, "dependencies": { + "@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", @@ -22929,6 +23057,31 @@ "requires": { "minimist": "0.0.8" } + }, + "node-appc": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.6.tgz", + "integrity": "sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==", + "requires": { + "@xmldom/xmldom": "^0.8.6", + "async": "^3.2.4", + "colors": "1.4.0", + "fs-extra": "~9.1.0", + "request": "~2.88.0", + "semver": "~7.3.8", + "sprintf": "^0.1.5", + "temp": "~0.9.4", + "uuid": "~9.0.0", + "yauzl": "^2.10.0" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -24921,9 +25074,9 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node-appc": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.6.tgz", - "integrity": "sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.7.tgz", + "integrity": "sha512-BrALELUzNC4WWhDIkgBu5pUU/9IzIza65ck1yPTd5A2q1wzrXySYDhLfzKJrFmGZZep37XRKey33U10539Xd0Q==", "requires": { "@xmldom/xmldom": "^0.8.6", "async": "^3.2.4", @@ -25129,6 +25282,11 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, + "@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==" + }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -25143,6 +25301,44 @@ "jsonfile": "^6.0.1", "universalify": "^2.0.0" } + }, + "node-appc": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/node-appc/-/node-appc-1.1.6.tgz", + "integrity": "sha512-ZfoHjoDLpNfXYBshztIq+aTjtlvCZF4XAE00ZYNk4u+/qAjQI+8BidCn957b69WzronQtyNw2NtnJEhsP3N7EQ==", + "requires": { + "@xmldom/xmldom": "^0.8.6", + "async": "^3.2.4", + "colors": "1.4.0", + "fs-extra": "~9.1.0", + "request": "~2.88.0", + "semver": "~7.3.8", + "sprintf": "^0.1.5", + "temp": "~0.9.4", + "uuid": "~9.0.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "requires": { + "lru-cache": "^6.0.0" + } } } }, diff --git a/package.json b/package.json index 3d2d26e95c9..2ff50d53c50 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "lodash.merge": "4.6.2", "markdown": "0.5.0", "moment": "2.30.1", - "node-appc": "1.1.6", + "node-appc": "1.1.7", "node-titanium-sdk": "6.0.0", "node-uuid": "1.4.8", "nodeify": "1.0.1", From 2f1212fd9e46a4a8aeae0af7a850aaa7bff34e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 29 May 2024 14:18:31 +0200 Subject: [PATCH 062/145] chore: bump master to 12.4.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1856dc2fd08..c36b739799a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "titanium-mobile", - "version": "12.3.0", + "version": "12.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "titanium-mobile", - "version": "12.3.0", + "version": "12.4.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 2ff50d53c50..090712c8a48 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "titanium-mobile", "description": "Titanium SDK", - "version": "12.3.0", + "version": "12.4.0", "moduleApiVersion": { "iphone": "2", "android": "4" From 1fe2a63bbd0993c342a08f9596ecf6b8a4d8c609 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Wed, 12 Jun 2024 00:06:01 +0000 Subject: [PATCH 063/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e9c697bb97..cda9a23a455 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic Limited +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould ## Features From aeae4d99f6164d1417bd3c45131b5cc39b2a9df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 12 Jun 2024 13:00:31 +0200 Subject: [PATCH 064/145] fix(ios): fix privacy-related Filesystem APIs (#14062) * fix: move privacy-related files to own file outside TitaniumKit * Revert "fix: move privacy-related files to own file outside TitaniumKit" This reverts commit 5e95ac09eea9990951bdf25e5725d71966b2e2ca. * chore: add more flexible approach --- .../Sources/Modules/TiFilesystemFileProxy.m | 22 +++++++++---------- iphone/iphone/project.xcconfig | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m index dfc658b53aa..a646b9caf15 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/Modules/TiFilesystemFileProxy.m @@ -68,7 +68,6 @@ - (NSDate *)createTimestamp:(id)unused return [NSDate new]; } -#ifdef USE_TI_FILESYSTEMCREATEDAT - (NSDate *)createdAt:(id)unused { NSError *error = nil; @@ -76,14 +75,13 @@ - (NSDate *)createdAt:(id)unused if (error != nil) { [self throwException:TiExceptionOSError subreason:[error localizedDescription] location:CODELOCATION]; } - // Have to do this one up special because of 3.x bug where NSFileCreationDate is sometimes undefined - NSDate *result = [resultDict objectForKey:NSFileCreationDate]; + + NSDate *result = [resultDict objectForKey:[self prefixedFileKeyForIdentifier:@"CreationDate"]]; if (result == nil) { - result = [resultDict objectForKey:NSFileModificationDate]; + result = [resultDict objectForKey:[self prefixedFileKeyForIdentifier:@"ModificationDate"]]; } return result; } -#endif - (NSDate *)modificationTimestamp { @@ -97,7 +95,6 @@ - (NSDate *)modificationTimestamp:(id)unused return [NSDate new]; } -#ifdef USE_TI_FILESYSTEMMODIFIEDAT - (NSDate *)modifiedAt:(id)unused { NSError *error = nil; @@ -105,9 +102,8 @@ - (NSDate *)modifiedAt:(id)unused if (error != nil) { [self throwException:TiExceptionOSError subreason:[error localizedDescription] location:CODELOCATION]; } - return [resultDict objectForKey:NSFileModificationDate]; + return [resultDict objectForKey:[self prefixedFileKeyForIdentifier:@"ModificationDate"]]; } -#endif - (NSNumber *)symbolicLink { @@ -151,7 +147,6 @@ - (NSArray *)getDirectoryListing:(id)args return resultArray; } -#ifdef USE_TI_FILESYSTEMSPACEAVAILABLE - (NSNumber *)spaceAvailable:(id)unused { NSError *error = nil; @@ -160,9 +155,8 @@ - (NSNumber *)spaceAvailable:(id)unused NSLog(@"[ERROR] Could not receive available space: %@", error.localizedDescription); return @(0.0); } - return [resultDict objectForKey:NSFileSystemFreeSize]; + return [resultDict objectForKey:[self prefixedFileKeyForIdentifier:@"SystemFreeSize"]]; } -#endif - (NSString *)getProtectionKey:(id)args { @@ -599,4 +593,10 @@ - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL withFlag:(BOOL)flag return success; } +// Utility method to construct enums to access the filesystem +- (NSString *)prefixedFileKeyForIdentifier:(NSString *)identifier +{ + return [@"NSFile" stringByAppendingString:identifier]; +} + @end diff --git a/iphone/iphone/project.xcconfig b/iphone/iphone/project.xcconfig index c82a63c70fd..5ac9d061f36 100644 --- a/iphone/iphone/project.xcconfig +++ b/iphone/iphone/project.xcconfig @@ -1,5 +1,5 @@ TI_VERSION=0.0.0 JSCORE_LD_FLAGS=-weak_framework JavaScriptCore GCC_DEFINITIONS= -TI_SYMBOL_MACROS=USE_JSCORE_FRAMEWORK USE_TI_STREAM USE_TI_CODEC USE_TI_UTILS USE_TI_XML USE_TI_ACCELEROMETER USE_TI_API USE_TI_APP USE_TI_APPTRACKUSERINTERACTION USE_TI_CALENDAR USE_TI_CONTACTS USE_TI_DATABASE USE_TI_FILESYSTEM USE_TI_GEOLOCATION USE_TI_GESTURE USE_TI_MEDIA USE_TI_NETWORK USE_TI_NETWORKSOCKET USE_TI_PLATFORM USE_TI_PLATFORMIDENTIFIERFORADVERTISING USE_TI_PLATFORMGETIDENTIFIERFORADVERTISING USE_TI_WATCHSESSION USE_TI_UI USE_TI_UITAB USE_TI_UILABEL USE_TI_UIBUTTON USE_TI_UIPROGRESSBAR USE_TI_UISEARCHBAR USE_TI_UIACTIVITYINDICATOR USE_TI_UIOPTIONBAR USE_TI_UISLIDER USE_TI_UISWITCH USE_TI_UIPICKER USE_TI_UITEXTAREA USE_TI_UITEXTFIELD USE_TI_UIIMAGEVIEW USE_TI_UIMASKEDIMAGE USE_TI_UIWEBVIEW USE_TI_UIWINDOW USE_TI_UIVIEW USE_TI_UIOPTIONDIALOG USE_TI_UIEMAILDIALOG USE_TI_UIDASHBOARDVIEW USE_TI_UISCROLLVIEW USE_TI_UISCROLLABLEVIEW USE_TI_UITABLEVIEW USE_TI_UILISTVIEW USE_TI_UIANIMATION USE_TI_UIATTRIBUTEDSTRING USE_TI_UIACTIVITYINDICATORSTYLE USE_TI_UITOOLBAR USE_TI_UITABBEDBAR USE_TI_UIAPPLICATIONSHORTCUTS USE_TI_UINAVIGATIONWINDOW USE_TI_UICLIPBOARD USE_TI_UIIPAD USE_TI_UIIPADPOPOVER USE_TI_UIIPADSPLITWINDOW USE_TI_UIIPADSPLITWINDOWBUTTON USE_TI_UIIOS USE_TI_UIIOSADVIEW USE_TI_UIIOSCOVERFLOWVIEW USE_TI_UIIOSTOOLBAR USE_TI_UIIOSTABBEDBAR USE_TI_UIIOSDOCUMENTVIEWER USE_TI_UIIOSNAVIGATIONWINDOW USE_TI_UIIOSSPLITWINDOW USE_TI_UIIOSPREVIEWCONTEXT USE_TI_UIIOSMENUPOPUP USE_TI_UIIOSLIVEPHOTOVIEW USE_TI_UIIOSLIVEPHOTOBADGE USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_OVER_CONTENT USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_LIVE_OFF USE_TI_UIIOSALERTDIALOGSTYLE USE_TI_UIIOSANIMATIONSTYLE USE_TI_UIIOSLISTVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWSCROLLPOSITION USE_TI_UIIOSLISTVIEWSCROLLPOSITION USE_TI_UIIOSTABLEVIEWSTYLE USE_TI_UIIOSLISTVIEWSTYLE USE_TI_UIIOSPROGRESSBARSTYLE USE_TI_UIIOSROWANIMATIONSTYLE USE_TI_UIIOSSCROLLINDICATORSTYLE USE_TI_UIIOSSTATUSBAR USE_TI_UIIOSSYSTEMBUTTONSTYLE USE_TI_UIIOSSYSTEMBUTTON USE_TI_UIIOSSYSTEMICON USE_TI_UIIOSFEEDBACKGENERATOR USE_TI_UIIOSSTEPPER USE_TI_APPIOS USE_TI_APPIOSSEARCHABLEINDEX USE_TI_APPIOSSEARCHABLEITEM USE_TI_APPIOSSEARCHABLEITEMATTRIBUTESET USE_TI_APPIOSSEARCHQUERY USE_TI_APPIOSUSERACTIVITY USE_TI_APPIOSUSERNOTIFICATIONCENTER USE_TI_UIIOSANIMATOR USE_TI_UIIOSSNAPBEHAVIOR USE_TI_UIIOSPUSHBEHAVIOR USE_TI_UIIOSGRAVITYBEHAVIOR USE_TI_UIIOSANCHORATTACHMENTBEHAVIOR USE_TI_UIIOSVIEWATTACHMENTBEHAVIOR USE_TI_UIIOSCOLLISIONBEHAVIOR USE_TI_UIIOSDYNAMICITEMBEHAVIOR USE_TI_UIIOSTRANSITIONANIMATION USE_TI_UIREFRESHCONTROL USE_TI_UIIOSAPPLICATIONSHORTCUTS USE_TI_UISHORTCUT USE_TI_UISHORTCUTITEM USE_TI_UIIOSBLURVIEW USE_TI_NETWORKREGISTERFORPUSHNOTIFICATIONS USE_TI_SILENTPUSH USE_TI_FETCH USE_TI_MEDIASHOWCAMERA USE_TI_MEDIAHIDECAMERA USE_TI_MEDIAOPENPHOTOGALLERY USE_TI_MEDIATAKEPICTURE USE_TI_MEDIASTARTVIDEOCAPTURE USE_TI_MEDIASTOPVIDEOCAPTURE USE_TI_MEDIASWITCHCAMERA USE_TI_MEDIAREQUESTCAMERAPERMISSIONS USE_TI_MEDIAHASCAMERAPERMISSIONS USE_TI_MEDIAHASPHOTOGALLERYPERMISSIONS USE_TI_MEDIAREQUESTPHOTOGALLERYPERMISSIONS USE_TI_MEDIAOPENMUSICLIBRARY USE_TI_MEDIAHIDEMUSICLIBRARY USE_TI_MEDIAQUERYMUSICLIBRARY USE_TI_MEDIAREQUESTAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIOPERMISSIONS USE_TI_MEDIAHASMUSICLIBRARYPERMISSIONS USE_TI_MEDIAREQUESTMUSICLIBRARYPERMISSIONS USE_TI_MEDIACANRECORD USE_TI_MEDIAISCAMERASUPPORTED USE_TI_MEDIAISMEDIATYPESUPPORTED USE_TI_MEDIASAVETOPHOTOGALLERY USE_TI_MEDIASTARTVIDEOEDITING USE_TI_MEDIASTOPVIDEOEDITING USE_TI_MEDIAAUDIOPLAYER USE_TI_MEDIAAUDIORECORDER USE_TI_MEDIAMUSICPLAYER USE_TI_MEDIASYSTEMMUSICPLAYER USE_TI_MEDIASYSTEMALERT USE_TI_MEDIAGETSYSTEMMUSICPLAYER USE_TI_MEDIAAPPMUSICPLAYER USE_TI_MEDIAGETAPPMUSICPLAYER USE_TI_MEDIAVIDEOPLAYER USE_TI_MEDIASOUND USE_TI_MEDIACAMERA_AUTHORIZATION_AUTHORIZED USE_TI_MEDIACAMERA_AUTHORIZATION_DENIED USE_TI_MEDIACAMERA_AUTHORIZATION_RESTRICTED USE_TI_MEDIACAMERA_AUTHORIZATION_UNKNOWN USE_TI_MEDIACAMERA_FRONT USE_TI_MEDIACAMERA_REAR USE_TI_MEDIACAMERA_FLASH_OFF USE_TI_MEDIACAMERA_FLASH_AUTO USE_TI_MEDIACAMERA_FLASH_ON USE_TI_MEDIACAMERAFLASHMODE USE_TI_MEDIAAVAILABLECAMERAMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOGALLERYMEDIATYPES USE_TI_MEDIAAVAILABLECAMERAS USE_TI_MEDIACAMERAAUTHORIZATION USE_TI_MEDIAVOLUME USE_TI_MEDIAAUDIOPLAYING USE_TI_MEDIACURRENTROUTE USE_TI_MEDIAVIBRATE USE_TI_MEDIABEEP USE_TI_MEDIASTARTMICROPHONEMONITOR USE_TI_MEDIASTOPMICROPHONEMONITOR USE_TI_MEDIAPEAKMICROPHONEPOWER USE_TI_MEDIAGETPEAKMICROPHONEPOWER USE_TI_MEDIAAVERAGEMICROPHONEPOWER USE_TI_MEDIAGETAVERAGEMICROPHONEPOWER USE_TI_UITABLEVIEWSCROLLPOSITION USE_TI_UILISTVIEWSCROLLPOSITION USE_TI_FILESYSTEMSPACEAVAILABLE USE_TI_FILESYSTEMCREATEDAT USE_TI_FILESYSTEMMODIFIEDAT USE_TI_PLATFORMUPTIME +TI_SYMBOL_MACROS=USE_JSCORE_FRAMEWORK USE_TI_STREAM USE_TI_CODEC USE_TI_UTILS USE_TI_XML USE_TI_ACCELEROMETER USE_TI_API USE_TI_APP USE_TI_APPTRACKUSERINTERACTION USE_TI_CALENDAR USE_TI_CONTACTS USE_TI_DATABASE USE_TI_FILESYSTEM USE_TI_GEOLOCATION USE_TI_GESTURE USE_TI_MEDIA USE_TI_NETWORK USE_TI_NETWORKSOCKET USE_TI_PLATFORM USE_TI_PLATFORMIDENTIFIERFORADVERTISING USE_TI_PLATFORMGETIDENTIFIERFORADVERTISING USE_TI_WATCHSESSION USE_TI_UI USE_TI_UITAB USE_TI_UILABEL USE_TI_UIBUTTON USE_TI_UIPROGRESSBAR USE_TI_UISEARCHBAR USE_TI_UIACTIVITYINDICATOR USE_TI_UIOPTIONBAR USE_TI_UISLIDER USE_TI_UISWITCH USE_TI_UIPICKER USE_TI_UITEXTAREA USE_TI_UITEXTFIELD USE_TI_UIIMAGEVIEW USE_TI_UIMASKEDIMAGE USE_TI_UIWEBVIEW USE_TI_UIWINDOW USE_TI_UIVIEW USE_TI_UIOPTIONDIALOG USE_TI_UIEMAILDIALOG USE_TI_UIDASHBOARDVIEW USE_TI_UISCROLLVIEW USE_TI_UISCROLLABLEVIEW USE_TI_UITABLEVIEW USE_TI_UILISTVIEW USE_TI_UIANIMATION USE_TI_UIATTRIBUTEDSTRING USE_TI_UIACTIVITYINDICATORSTYLE USE_TI_UITOOLBAR USE_TI_UITABBEDBAR USE_TI_UIAPPLICATIONSHORTCUTS USE_TI_UINAVIGATIONWINDOW USE_TI_UICLIPBOARD USE_TI_UIIPAD USE_TI_UIIPADPOPOVER USE_TI_UIIPADSPLITWINDOW USE_TI_UIIPADSPLITWINDOWBUTTON USE_TI_UIIOS USE_TI_UIIOSADVIEW USE_TI_UIIOSCOVERFLOWVIEW USE_TI_UIIOSTOOLBAR USE_TI_UIIOSTABBEDBAR USE_TI_UIIOSDOCUMENTVIEWER USE_TI_UIIOSNAVIGATIONWINDOW USE_TI_UIIOSSPLITWINDOW USE_TI_UIIOSPREVIEWCONTEXT USE_TI_UIIOSMENUPOPUP USE_TI_UIIOSLIVEPHOTOVIEW USE_TI_UIIOSLIVEPHOTOBADGE USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_OVER_CONTENT USE_TI_UIIOSLIVEPHOTO_BADGE_OPTIONS_LIVE_OFF USE_TI_UIIOSALERTDIALOGSTYLE USE_TI_UIIOSANIMATIONSTYLE USE_TI_UIIOSLISTVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWCELLSELECTIONSTYLE USE_TI_UIIOSTABLEVIEWSCROLLPOSITION USE_TI_UIIOSLISTVIEWSCROLLPOSITION USE_TI_UIIOSTABLEVIEWSTYLE USE_TI_UIIOSLISTVIEWSTYLE USE_TI_UIIOSPROGRESSBARSTYLE USE_TI_UIIOSROWANIMATIONSTYLE USE_TI_UIIOSSCROLLINDICATORSTYLE USE_TI_UIIOSSTATUSBAR USE_TI_UIIOSSYSTEMBUTTONSTYLE USE_TI_UIIOSSYSTEMBUTTON USE_TI_UIIOSSYSTEMICON USE_TI_UIIOSFEEDBACKGENERATOR USE_TI_UIIOSSTEPPER USE_TI_APPIOS USE_TI_APPIOSSEARCHABLEINDEX USE_TI_APPIOSSEARCHABLEITEM USE_TI_APPIOSSEARCHABLEITEMATTRIBUTESET USE_TI_APPIOSSEARCHQUERY USE_TI_APPIOSUSERACTIVITY USE_TI_APPIOSUSERNOTIFICATIONCENTER USE_TI_UIIOSANIMATOR USE_TI_UIIOSSNAPBEHAVIOR USE_TI_UIIOSPUSHBEHAVIOR USE_TI_UIIOSGRAVITYBEHAVIOR USE_TI_UIIOSANCHORATTACHMENTBEHAVIOR USE_TI_UIIOSVIEWATTACHMENTBEHAVIOR USE_TI_UIIOSCOLLISIONBEHAVIOR USE_TI_UIIOSDYNAMICITEMBEHAVIOR USE_TI_UIIOSTRANSITIONANIMATION USE_TI_UIREFRESHCONTROL USE_TI_UIIOSAPPLICATIONSHORTCUTS USE_TI_UISHORTCUT USE_TI_UISHORTCUTITEM USE_TI_UIIOSBLURVIEW USE_TI_NETWORKREGISTERFORPUSHNOTIFICATIONS USE_TI_SILENTPUSH USE_TI_FETCH USE_TI_MEDIASHOWCAMERA USE_TI_MEDIAHIDECAMERA USE_TI_MEDIAOPENPHOTOGALLERY USE_TI_MEDIATAKEPICTURE USE_TI_MEDIASTARTVIDEOCAPTURE USE_TI_MEDIASTOPVIDEOCAPTURE USE_TI_MEDIASWITCHCAMERA USE_TI_MEDIAREQUESTCAMERAPERMISSIONS USE_TI_MEDIAHASCAMERAPERMISSIONS USE_TI_MEDIAHASPHOTOGALLERYPERMISSIONS USE_TI_MEDIAREQUESTPHOTOGALLERYPERMISSIONS USE_TI_MEDIAOPENMUSICLIBRARY USE_TI_MEDIAHIDEMUSICLIBRARY USE_TI_MEDIAQUERYMUSICLIBRARY USE_TI_MEDIAREQUESTAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIORECORDERPERMISSIONS USE_TI_MEDIAHASAUDIOPERMISSIONS USE_TI_MEDIAHASMUSICLIBRARYPERMISSIONS USE_TI_MEDIAREQUESTMUSICLIBRARYPERMISSIONS USE_TI_MEDIACANRECORD USE_TI_MEDIAISCAMERASUPPORTED USE_TI_MEDIAISMEDIATYPESUPPORTED USE_TI_MEDIASAVETOPHOTOGALLERY USE_TI_MEDIASTARTVIDEOEDITING USE_TI_MEDIASTOPVIDEOEDITING USE_TI_MEDIAAUDIOPLAYER USE_TI_MEDIAAUDIORECORDER USE_TI_MEDIAMUSICPLAYER USE_TI_MEDIASYSTEMMUSICPLAYER USE_TI_MEDIASYSTEMALERT USE_TI_MEDIAGETSYSTEMMUSICPLAYER USE_TI_MEDIAAPPMUSICPLAYER USE_TI_MEDIAGETAPPMUSICPLAYER USE_TI_MEDIAVIDEOPLAYER USE_TI_MEDIASOUND USE_TI_MEDIACAMERA_AUTHORIZATION_AUTHORIZED USE_TI_MEDIACAMERA_AUTHORIZATION_DENIED USE_TI_MEDIACAMERA_AUTHORIZATION_RESTRICTED USE_TI_MEDIACAMERA_AUTHORIZATION_UNKNOWN USE_TI_MEDIACAMERA_FRONT USE_TI_MEDIACAMERA_REAR USE_TI_MEDIACAMERA_FLASH_OFF USE_TI_MEDIACAMERA_FLASH_AUTO USE_TI_MEDIACAMERA_FLASH_ON USE_TI_MEDIACAMERAFLASHMODE USE_TI_MEDIAAVAILABLECAMERAMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOMEDIATYPES USE_TI_MEDIAAVAILABLEPHOTOGALLERYMEDIATYPES USE_TI_MEDIAAVAILABLECAMERAS USE_TI_MEDIACAMERAAUTHORIZATION USE_TI_MEDIAVOLUME USE_TI_MEDIAAUDIOPLAYING USE_TI_MEDIACURRENTROUTE USE_TI_MEDIAVIBRATE USE_TI_MEDIABEEP USE_TI_MEDIASTARTMICROPHONEMONITOR USE_TI_MEDIASTOPMICROPHONEMONITOR USE_TI_MEDIAPEAKMICROPHONEPOWER USE_TI_MEDIAGETPEAKMICROPHONEPOWER USE_TI_MEDIAAVERAGEMICROPHONEPOWER USE_TI_MEDIAGETAVERAGEMICROPHONEPOWER USE_TI_UITABLEVIEWSCROLLPOSITION USE_TI_UILISTVIEWSCROLLPOSITION USE_TI_PLATFORMUPTIME From 9f144c12c28fe6ead59237759c53c40509f3d4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 12 Jun 2024 13:02:17 +0200 Subject: [PATCH 065/145] chore: update changelog # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85b21dd319a..8acc98e268b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,52 @@ +## [12.3.1](https://github.com/tidev/titanium_mobile/compare/12_3_0_GA...12.3.1) (2024-06-12) + +## About this release + +Titanium SDK 12.3.1 is a patch release of the SDK, addressing high-priority issues from previous releases. + +As of this GA release, the previous Titanium SDK patch release (12.3.0) is no longer supported. + + +## Community Credits + +* Hans Knöchel + * fix(ios): fix privacy-related Filesystem APIs (#14063) ([ff0bd64](https://github.com/tidev/titanium_mobile/commit/ff0bd64f9f4c8d44247a028f5a266481bfa82f78)) + * add 12.3.1 changelog ([f92e4e0](https://github.com/tidev/titanium_mobile/commit/f92e4e02509cb045b46db4ea2f67bc25495d096a)) + * update package-lock.json after merge conflicts ([eadd4fe](https://github.com/tidev/titanium_mobile/commit/eadd4fece5f8ac77c0a1b35e7af18d131ecc416d)) + * handle first privacy manifest changes ([a6f8ed4](https://github.com/tidev/titanium_mobile/commit/a6f8ed48843334686ab6ace07c52066c4a74dbfc)) + * Revert "feat(ios): support multi-scene applications (#13941)" ([8570d92](https://github.com/tidev/titanium_mobile/commit/8570d922175ba60f2554249d75fdf4505471c110)) + +* Michael Gangolf + * node-appc update ([54acc65](https://github.com/tidev/titanium_mobile/commit/54acc65fc870754b4eb869abd9a3328584752464)) + * fix noresults event in ListView width custom query ([d9ecad7](https://github.com/tidev/titanium_mobile/commit/d9ecad760b6ea2be6089a00939bc95ba6527202f)) + * node-titanium-sdk update ([feffa23](https://github.com/tidev/titanium_mobile/commit/feffa239ca35c5fbf208583e3c78299631bfca66)) + * Ti.UI.Tab selected event returns no data ([abc9e81](https://github.com/tidev/titanium_mobile/commit/abc9e81bd38c01bc3de48219707aa4d1d06e94fe)) + * touchFeedbackColor not working for a bottomNavigation tab ([4639ced](https://github.com/tidev/titanium_mobile/commit/4639cede2baeca7e2f7670595bf376ef94bd77fa)) + * switchCamera method was missing ([5fc9115](https://github.com/tidev/titanium_mobile/commit/5fc91157528805bc984ad05eba851328162c0797)) + +## Bug Fixes + +### Android platform + +* fix noresults event in ListView width custom query ([d9ecad7](https://github.com/tidev/titanium_mobile/commit/d9ecad760b6ea2be6089a00939bc95ba6527202f)) +* switchCamera method was missing ([5fc9115](https://github.com/tidev/titanium_mobile/commit/5fc91157528805bc984ad05eba851328162c0797)) +* Ti.UI.Tab selected event returns no data ([abc9e81](https://github.com/tidev/titanium_mobile/commit/abc9e81bd38c01bc3de48219707aa4d1d06e94fe)) +* touchFeedbackColor not working for a bottomNavigation tab ([4639ced](https://github.com/tidev/titanium_mobile/commit/4639cede2baeca7e2f7670595bf376ef94bd77fa)) + +## SDK Module Versions + +| Module | Android version | iOS Version | +| ----------- | --------------- | ----------- | +| facebook | 12.1.0 | 14.0.0 | +| ti.map | 5.6.0 | 7.3.1 | +| ti.webdialog | 2.3.0 | 3.0.2 | +| ti.playservices | 18.2.0 | n/a | +| ti.identity | 3.1.0 | 5.0.0 | +| urlSession | n/a | 4.0.1 | +| ti.coremotion | n/a | 4.0.1 | +| ti.applesignin | n/a | 3.1.2 | +| hyperloop | 7.0.6 | 7.0.6 | + # [12.3.0](https://github.com/tidev/titanium_mobile/compare/12_2_X...12.3.0) (2024-02-16) ## About this release From 97c75af26364f8c53cddc2608012893745d95363 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Fri, 14 Jun 2024 00:06:00 +0000 Subject: [PATCH 066/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cda9a23a455..2a509f65fbb 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould ## Features From f5dfa923fcf649a10e861251d87a073526af2896 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 10:27:16 +0200 Subject: [PATCH 067/145] docs: update TabbedBar Android properties (#14061) --- apidoc/Titanium/UI/TabbedBar.yml | 14 ++++++++++---- apidoc/Titanium/UI/UI.yml | 12 ++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/apidoc/Titanium/UI/TabbedBar.yml b/apidoc/Titanium/UI/TabbedBar.yml index b95826a26e3..0e846c3b578 100644 --- a/apidoc/Titanium/UI/TabbedBar.yml +++ b/apidoc/Titanium/UI/TabbedBar.yml @@ -44,6 +44,12 @@ properties: availability: creation platforms: [iphone, ipad, android, macos] since: {iphone: "9.0.0", ipad: "9.0.0", android: "12.0.0"} + - name: selectedBackgroundColor + summary: Background color of the selected tab indicator. + type: [ String, Titanium.UI.Color ] + availability: creation + platforms: [android] + since: {android: "8.0.0"} - name: selectedTextColor summary: Color of the selected text type: [ String, Titanium.UI.Color ] @@ -60,10 +66,10 @@ properties: The `BAR` style specifies a more compact style and allows the bar's background color or gradient to show through. - For Android: - [Titanium.UI.TABS_STYLE_*] - In Android [style](Titanium.UI.TabbedBar.style) is only supported in the creation dictionary - of the proxy. + + For Android use [Titanium.UI.TABS_STYLE_DEFAULT](Titanium.UI.TABS_STYLE_DEFAULT) or + [Titanium.UI.TABS_STYLE_BOTTOM_NAVIGATION](Titanium.UI.TABS_STYLE_BOTTOM_NAVIGATION) and + it is only supported in the creation dictionary of the proxy. type: Number default: Titanium.UI.iOS.SystemButtonStyle.PLAIN for iOS, Ti.UI.TABS_STYLE_DEFAULT for Android examples: diff --git a/apidoc/Titanium/UI/UI.yml b/apidoc/Titanium/UI/UI.yml index 76616d9c63d..d468d3dc8a2 100644 --- a/apidoc/Titanium/UI/UI.yml +++ b/apidoc/Titanium/UI/UI.yml @@ -2406,6 +2406,18 @@ properties: permission: read-only since: "10.0.0" + - name: TABS_STYLE_DEFAULT + summary: Default tab style. + type: Number + since: "8.0.0" + permission: read-only + + - name: TABS_STYLE_BOTTOM_NAVIGATION + summary: Bottom navigation style. + type: Number + since: "8.0.0" + permission: read-only + - name: TABLE_VIEW_SEPARATOR_STYLE_NONE summary: The row divider is hidden. type: Number From cb6937849970ac8417ea87f950b03467668672cd Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 10:28:01 +0200 Subject: [PATCH 068/145] docs: attributedString link example (#14056) * docs: attributedString link example * docs: attributedString link example --- apidoc/Titanium/UI/AttributedString.yml | 60 +++++++++++++++++++++++++ apidoc/Titanium/UI/UI.yml | 4 +- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/apidoc/Titanium/UI/AttributedString.yml b/apidoc/Titanium/UI/AttributedString.yml index f7d18b0e188..e64e60605f6 100644 --- a/apidoc/Titanium/UI/AttributedString.yml +++ b/apidoc/Titanium/UI/AttributedString.yml @@ -133,3 +133,63 @@ examples: win.add(label); ``` + - title: Links with underline color. + example: | + ``` js + const win = Ti.UI.createWindow({ + backgroundColor: 'gray', + layout: 'vertical' + }); + const lbl_a = createLink(); + const lbl_b = createLink(); + + colorLink(lbl_b); + + win.add([lbl_a, lbl_b]); + win.open(); + + function createLink() { + const label = Ti.UI.createLabel({ + top: 20, + attributedString: Ti.UI.createAttributedString({ + text: 'Check out Titanium SDK', + attributes: [{ + type: Ti.UI.ATTRIBUTE_LINK, + value: 'https://titaniumsdk.com', + range: [10, 12] + }] + }) + }); + + label.addEventListener('link', e => { + Ti.Platform.openURL(e.url); + }); + + return label; + } + + function colorLink(lbl) { + const attributedString = lbl.attributedString; + const textColor = 'purple'; + const underlineColor = 'yellow'; + + for (const attribute of attributedString.attributes) { + if (attribute.type === Ti.UI.ATTRIBUTE_LINK) { + + // Set new link color. + attributedString.addAttribute({ + type: Ti.UI.ATTRIBUTE_FOREGROUND_COLOR, + value: textColor, + range: attribute.range + }); + + // Set new underline color. + attributedString.addAttribute({ + type: Ti.UI.ATTRIBUTE_UNDERLINE_COLOR, + value: underlineColor, + range: attribute.range + }); + } + } + } + ``` diff --git a/apidoc/Titanium/UI/UI.yml b/apidoc/Titanium/UI/UI.yml index d468d3dc8a2..c65fc46c6e8 100644 --- a/apidoc/Titanium/UI/UI.yml +++ b/apidoc/Titanium/UI/UI.yml @@ -490,8 +490,8 @@ properties: See for more information. type: Number - platforms: [iphone, ipad, macos] - since: "3.6.0" + platforms: [android, iphone, ipad, macos] + since: {iphone: "3.6.0", ipad: "3.6.0", android: "10.0.0"} permission: read-only - name: ATTRIBUTE_STRIKETHROUGH_COLOR From 2e0e2e5dfa8a726561d2f15daad65a9fec7afa3a Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 10:28:23 +0200 Subject: [PATCH 069/145] feat(android): adaptive icons in default template (#14052) --- .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 ++++++ .../android/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5438 bytes .../res/mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 489 bytes .../res/mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 4695 bytes .../res/mipmap-hdpi/ic_launcher_monochrome.png | Bin 0 -> 4695 bytes .../android/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3135 bytes .../res/mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 313 bytes .../res/mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 3459 bytes .../res/mipmap-mdpi/ic_launcher_monochrome.png | Bin 0 -> 3459 bytes .../android/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7107 bytes .../res/mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 650 bytes .../res/mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 7372 bytes .../res/mipmap-xhdpi/ic_launcher_monochrome.png | Bin 0 -> 7372 bytes .../android/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12426 bytes .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 1064 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 9960 bytes .../mipmap-xxhdpi/ic_launcher_monochrome.png | Bin 0 -> 9960 bytes .../android/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 16553 bytes .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 1649 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 15600 bytes .../mipmap-xxxhdpi/ic_launcher_monochrome.png | Bin 0 -> 15600 bytes templates/app/default/template/tiapp.xml | 1 + 22 files changed, 7 insertions(+) create mode 100644 templates/app/default/template/platform/android/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_background.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_monochrome.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-mdpi/ic_launcher.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-mdpi/ic_launcher_background.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-mdpi/ic_launcher_monochrome.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_background.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_monochrome.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_background.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher_background.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png diff --git a/templates/app/default/template/platform/android/res/mipmap-anydpi-v26/ic_launcher.xml b/templates/app/default/template/platform/android/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000000..345888d26e6 --- /dev/null +++ b/templates/app/default/template/platform/android/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher.png b/templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..336181928453d2ce6c03e404513be002a9b9c155 GIT binary patch literal 5438 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 literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_background.png b/templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..e298188cf1e259e9aefff3e24304864bd8d98e9d GIT binary patch literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^i$Iuz4M-mPBqq(kz_`KF#WAEJ?(HQ*Mg|227R9&n yzj`0?PH5bn%Wk(@DM&$yQ)$vDF=)cz1A}L2n`Qptd+UHv$l&Sf=d#Wzp$PytrfKg0 literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_foreground.png b/templates/app/default/template/platform/android/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4854eacd6f166d4bcc3b36736ead3aad585124c5 GIT binary patch literal 4695 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 Z{11Zf+R?I`5TpPA002ovPDHLkV1kHk1}^{r literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-mdpi/ic_launcher_background.png b/templates/app/default/template/platform/android/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..6f6addc419465bbb2ffe661503a26b2cb0bc4c8b GIT binary patch literal 313 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 literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_background.png b/templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..bf98a1ea6de69349298b634e279bf805283707cb GIT binary patch literal 650 zcmeAS@N?(olHy`uVBq!ia0vp^H$a$!4M=t>=)PrOU<&kfaSW-5dwbcCk-9FD R5SYdoJYD@<);T3K0RZ{7peFzT literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_foreground.png b/templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..c955ea130c2667a0bc8b9917fa2e4efa7bb49589 GIT binary patch literal 7372 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 X+fdhx*s$)UO9}X(q@`FTZyohN;l9qG literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_monochrome.png b/templates/app/default/template/platform/android/res/mipmap-xhdpi/ic_launcher_monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..c955ea130c2667a0bc8b9917fa2e4efa7bb49589 GIT binary patch literal 7372 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 X+fdhx*s$)UO9}X(q@`FTZyohN;l9qG literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher.png b/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f52c681d975b99a2f3f5e8b98d32f6873d53c174 GIT binary patch literal 12426 zcmWk#WmKEn7R24%2@u@fg1b9KZgGl3p}4z4gS)#IFHV7CE$&{V#ohgVFKY#Ukd>3{ zvt{Dx{()Bhu{fMfor?<8l zi$Mzlg`pJxK@cjWEy>Q_!Ld`f#=2#$`fF;K{Uuw-x*XF!J-av{D=n*;=C5oFs1g+m zR1zAD#smTt9`xn2KL_RvcHHOtop%KPZ6-p$!LljnDY))E53JY-h79r^1S5&~-;w5T zlZNC=3BHiiL!0~-tvIM^vOGN+-YpBqO2rcXoNIVDoNQHZmS8}nhTe$ipv&)Kw+|J# zit!i_t?(dpC9sD$3F*U@_S>h25vbBp_<~JzlB8m46e+43dw2KC!0YqU;uIX^l7mj_{RS{eh_(hzdT&_ z?Ck8M$jQl#?C$I&A|fJ|=_@gEqu%P`RQ2LVSAm0-$dt1QS@jLNpN?waYwPNsbF#DV zczJm2>zrYa@mW|{>eJHG^GARE676+bYm*Rvd)TE-RPDB^UXrbDK+u+_2%_4VF?yFS#BoAubzy~M(NTO3%@ANzs z8JL}Qt88p++}D{R!%fY|7$GDepy>X*J+S#B44F|sDVi~5IzV&3k`qB&IX5~wx}J)P ziZd%Gr_ajKalL5Lrj|(4#3b-`v&Zkb;lGZiK8*r#VxbtYu9L@^Mm08q_Jd9J2?hMJ z(60>6c2q2^z>U>a-%#K@WA<9(9vL4WpPf8WFVFDE$TzR;frv*v*-%+HSMM$Dydn-% zFoTC=zC0=_>L3LrB_nV-*j3G0RSHZjEF#Hyd9OWPUC*%6qcR~0x)t_y^(es0F%qf7 zj#gS7mQd5v(|0j3FtQg*_-nuPUw_opycjG~$?&{6T@zF7=E-xNhTq!+(1kUt@F^)bMm9EH+0oJC zif%u7l!vDlQ-F?-Og$CrE5qK*$YEjTH5jb{Qb?Pt*-7=)VCuiNZ5I+x5s>=)1&4?tw9I@p5uL% z$Q*ghjU0%^hb$s8vW-f>arxxaM7G*XMnkhnQb9rAYkvrQO;}i1Lk!7MQw?tbP9>7h z-Ras=2XODrZ0zg`#~ye2A;pD-X7`746-x++h#$2Z7cvmt@PQY0cXz7-Er9CDu|luw zd(it^Ru->K;_7!-x>?6Gp9YV}T!d<=e4ul5b-!HwqL~6~Y``QRWS9n`W{G&P%x9S> zf{8=IyXxex|4lUK@H;H-*a&EBzzNJ`^E;&bUyU&`p_qa3RL+*r+;F13@MfJlb8?J# zfuyDP^z?Lb;IFoU5-#W6o^6PNnVG9}K`}6S7!DmMr6_7R((z4AP5;_$XDsS#n?aIt za)=$?m$V(8r)13R>=Awie9r5cd@h^0-@kvyK}JTlFoO|aV&|$aE~W)CQO$X?Tj^}G zM@3m#`Jgacz)5-J= z>o^i7S>}Pm;n{kJOz+bXD;_Sc6b}!N8CP*>B;M%cWMYf`LTro6R{qVwOqjQyAHJWT z-|ROUArn6syUBbp6$?wtv4xrsNNR2!=JkyUo zStBE|l}-=V$G;h-mEpiKCE7_*BtFYxk{fqN3vso^?dlESPQUxJZI`}R&%5=GFTBEd zc22s-(jYkw?9!WhWx4{<1&0_jY}#LXkvEl@BECz7lS~=otM9vxB9vX2UiI3^QWmF0iE-(_;N@a$s-Q2 zgdYS7RtB4zn%avhedNL+5tyJ3dXWOEP|}H_Dp?+7TS%%n!^Ag6oXy$U*(k-B5Eyj2 zaDJ7RBZ+Im%tLN_+<2ZX2O#*K9 zl))$Qy0F>|JUq#cD@_qEkNX8=Rm@e%cwnHx3DM(v+CE8ITmQ|Iiz9jjIy+B=GG0s? zc2z_<9?JQ?UWTiu=bbV#a+KhLi4r<6GQ-$Rx-%(+K1H%`25t*m6lQwS%= zlk!G#WKSc)T)`Js~415YlmMOT19Q3mHZMMInh7|$~nck^_ttPag7 zDRbQ{aE*L8;x$_Ad^9+m0hJqHo^B4e#l^*sZ<1iJb8PNTR_4vpEv_qRqvw~*Y`u;b z6T0tK9dzON?54H&FOEx{mFQsX}9;~ zd!1?DTe_KpMuqVPVi{hvU@j(2KypgTmcv>bJDZPT$Vbf4>*w>nB@v%+vo79zzU*WL z!o#va;(2CI8<5uV;#E#IGc&WwYOBLNeZ}~LEMFQ_86>AqGkX1UJ!Kpo5g|uTN-8|| zlS-8VJT*ccqzVM64T$vKjC%jj?UnORRGE(K{kbU-`B-+FE z%pn(n->J;@f*!V`=D(#Mc|t>5T3R?)TkM*1aYD~P$(Z)c2-QSP8{f=jD*pWW;{>3z zCPR;lRiIyHkyT$@n>CI9`c*ZdWnf@nSyOvm*@Q@6KXrKJ3Iu7 zJ~J?La+ahZcqN2L$ynIhD*m4MZOeu(&|haPSapp>WmoFT6xQ@JJqO~ZOwY*3$m4lp zKvvP*+FEw+_Z~>f%+jfFmXS8&0~d4gzNoKX`mw9cy`70sSw)32@OnZp1sK0+Y##RW~8fQ2(W6y*+D&>-j$ zJRSpJiZV(OcLP@7SUQ~RXA)d#RbaFwW@l%6CRz3y9Aqvx@2$2TzZ<*L=kM4f(1f?x z?J9TsdC%~ndPkZ|eC!MCiM(VF&$U;?Pv-h|Y{?!&Xgnav3%eBi*x zx8x~&ziv`4j>4w?*V)zLF^6D@!zzhd)k8ibWRJe)wT&``I=(4#wv%vj~*n4Kg(bz5#u((!qB zIDwMgxGh%+g&DswqFRbHti5eWNJ=&2eV^;Mx22>r}g*wqli~7HLQ| z>D1%nw&O(Ir5|XA4y`Fjy`Fz}INDtpBSo68-dRH5wvP)t-4j{&J7;huPu?nFL`KMMY5a zrwQ7i*V_-RKbOK$R`Jk>#lX}11wrZ%i2Wi7P%FuOod1FT{#_Ups0Il*J2*JZc71@M zPhK}@{-oA_veH~MjI)VDM6Zp4I^>sMbxA==`dAPg96Ys0wSKzR;ZAPqf1bYx9NX5b zvahb|1fywwVH6b}K3yp;ap{(Vta+O!6NOaN2 zfLm>NucP@Y!ydnT`Bl~v3@v^J`9k|6R(AH&FT}*eE1sqpT%PYD9@*<-Q%eR%D6oSq zQ6Ic^4wgg3A5r|wW;CC4GWLG7N@agA@rhvj?>jV-!8Xy$NJQA{th=&HigXAi{Cs$D zcmJ3!EsBf=c-JTar&Tk-a@~X&+~^37!X`4{lqf;FSy`g}BAkknVx>?2Fw1^utNmGT zqQAU4l6Po?s<373Y0;aPD)T-B{jo!;s;kRM8lBT36UF>#X1g5i?c>3CdIPmZN=;22 z%E`*Ytf$3^oBeQ{&I!i(VDGuFZ-SmL3V zy$m_hh3Y0>;5=g}B6tY+j1#y$d*;hyCp2+OS|cOfF{az2!MgYF0&GN~;HLL(ykr7% z+chNQA>46 zqi$k*J2ol5FJGFhc42J)#ObLLKr&dVap2Q3F#MANu$$w47TIo%pe(8^-MOae*w`2= z00hX{{>rz)GBEP+#9D1i)>uybU=X~&W4{72SbH$50ZEVlu~m)AQ_Q=t%j=%DA(678 zEnIPfWc%H2t2gf-eg$k(bMyOWcX$5;9ZP>J1KDDNIq4SVY=%SK6%Y9hVrPWTw#yAwGb-3j*8rJ|}QaXJ|p9*ZFrz6H4g zCMG5!7i;U=;%G|Q<2D~c{fW2BtE;BO*w|PeKEBi`1r9jH_=~NtvnMjle;5f1gz@gk zAFroS#>ym)^6di@*&EM?2JX)#f-xxg463jd77TEP4`&8d##0Z&k+G@vo*o|&b0vb_ z5;G}>P{0_bnf`YxHXm&!bA5CxYE%$*EM{yh_>3S{e_!v`%-wPYj2;Sj)rsK_q&cc) zqmaoU7-W!e3@S*ed^57%R@4+`_@$#AvumWsAh2S<*-YgpeEDUD+*nUF5B-Na1jcC% z0&own`%pCQ0ey)VXbIVYqv87rAoDE}VYfZ0#)EFCBpN&bKj&PYpPz$D4}Z46GGG)X z@NzfWCzy5L4_)r={rT}4E3bCM@ZW}XY!6n{-oxdt-7FdH^LRZCa^vsczeg`{>6H2c zr{<2UpVUj8K<*)b9Gz%bSnTa2CHt2wB3q!6^Y8Ge?vGc0(*Ta8b&-JLW0z!Mj-VE( z3If3)CztVjec@$h@lB2{=e$BdMxMJOUADD73qH~{@1youS_*ehPuI742}gC0Do1m6 zri`}9nDiCQ_W?69x&Wy66;2w(s75a??h?U5lnWu1tfIU;@bA%)NK>1^WGT*$r3Gn( zq^~d8N^bypM^*|Qx@)QuRjFCO!|!~zmNJPY^JkB;E{_P>c78wv`FenffDvQ&$&o+5}$l0H0hv)kuOMo&*ba3^O5K2$n-S|$%Q zFT|&#eQZkNU6tcwC(~G5O@dXZ4Y9F9xO6!EknM5kP5gQ9bG^|o5pLU>#o)=0kg@Ns zyLO=@ra~wh0;SlY!%xnm%tLj+h9~H<`9hc|x!gJpMWVy$i>N>VP@9;QrKQgCh{M+R zB)Q4=S3zcuz}Yc^U`jk9&&(H6T&d=Vc`5QMGn+6?_|W`u5p$3d<`IUHeeGN|&T4X0 zz~uCFw5PhC>j9TNIX9ofC$(ra10@~Hp)sCZ+(>8i2!VcZ_II6Cu=I2_wx$-8x z0%gP<3)jm_Fh76ZlV{Ca11`lR+ug0VY8tKca9k3macamwx_t)TY! zS;huXTsrw=lOA6kyRh(<$vja!FEI}`ohTqr!73`hU@1aCA+`#*T#ALWv$LbX zEgUzT*P;;+5hcxOY3-eDz$NGBE4M{N&Q_Qb&f_9$-sRKCL{7`ApROvQqX)}=ODdcU zuhu8!OH-Yv%7#R=*v+LcudOBJ!@e~!Oge-DyO<3C?Cz>*HTg|(G(fBO6|s_P04|>b z)(NG!hcOIQf!w&Dyjbw@VxSTpeiA_iMKzJa#@ttB&70iC7D;RYTy1Ofj4Ij+j)o$g zRpjP>(2x*#t0|vF1VTc>$Km1OWvYStN-2;z5$!mVDmBC#x?HJM@}7n>&r?XX8F2sc z3Rtph__94{usf3ghEwhM%yd*NTga8R?l?o`>LNU<rb%(63o{k%E zM~F0dNcmw=@-w~DUYh&_S9;k~1%~kwm2_I^8Q9I&>H1J72#(OOsUY87tgH~=enkIk z#!thqEG^y3t*WxitK_PTS~3ly6z<^vr@Bylp?N2cgZPnMKAu9ZyW3Z@3r-Jnls%n{ ztg_NuQd?VxaO|@UK+oihb-D5+o(SL$$93|YyzHF~(-4-Gl|8Cu^Bw-E;?gfG%9R9o z;R=8`VlhVMsp=P?6hK{lL-+dFnT#xXI{+mPRXpFEVus7Scn7uZ?d?^j%SQLmSCl5l z5py!@vJU(2JaFR?-I03;A6VQ+Z_tI7U&QtS?X>kM2dyf%~5R51Y49y^vACIr(q1dohW%uG-V&k8?l-sOHMZPezjtxOBux7Wt&@a6B2 zFQTnh!J-sb+;y+kc5l^kfJ%Q`nyy>e+A=+AW+K13zD{v+bc8FbFuxV{sJguw$)M%B)n3eOg zA|ep?q9{d2SDG7(<0>$HmV2a>doPE{_e#Es(+Y$t{}-?e@Gq`+cXyo3yv4A+NpKqx zz`pUyXk)W)R3geitXF#8b5G?I4& z0E>8bWMnKIKaoIj48R1i0~N(=!$UGGt{38psi+M->YX0P^*dE{hMG>!&QiWe4@oB{ z6mFNZ)@i*=jn6T0U6OCl8=kB0iX2xkC=UHz5f(pJMUpN7FuDcMhnxhJTr--Hv}Dv& zRBwv_qbpI12`6m|9MKpA06_J0|$P7a?X z06IpDAnFFIr7B0j zDSH+IQX_))WTa1d`y>JS11>pvV<*h569w3PT?dr{(jN3~f=5Y6@8Cze{AoF<=Xz4q z*Oc5008cK6$jH=qd+>TGlAi~82qWWV=N_;3f%0%aG!NL%mmH!Ckn;XVltP;woP>;j za?!Ba{k-bnT z6lZ&Tn_CGSuf<-b$5&)hy=-&$H5s;+sXsBhMV8%_N0%A`gkozYV*Ui45_gSEEmxx2lnwuPl>=EGX z_vC;j=ixUXsk8%n(5DV8ykG`R+m?XGD{Itqebe4B5Od8_@KC6*h`e#}j> z{5%mB7MPPW<9D8DRK7a+Z}Sltf5&V2r{~GC*2bxQJTRk23IHwO0Qf2-jsCXcWrR3q zLzR@NNlA?j*1yu5zG5j@mmpG#vKW(=vSF=1;WMa$SoLcQWn<&wf~1Q_7N(pU-sT-3 z1;tPvahRmQhO^I~1PTN2UD5cfHFbe$4)YMI=@u>`(21jeT)=IGL?aSl!7(i9Ak{Ks=GGQpTNk1X0e?-bM%N-dprL{Y>;~!?z zGEfYiccnG2Grq4M8lO!LMB+fVqUe9Fp9mW?CAP;9=UeYvw`T)Z<_utE_U8zvacrw< z`aytM{dO~_fj=Bi8WuKc1)r_b`~LQPV;g#;E%l`__&?Ir9o2kDhfx?D_@8NXT*;CJ ze*Mp-W3UIzgWYr=t}8!LZp1_s=1{lKH9@uN5hOZEfQcy@$#y#aY#*)^OI7?j$UiRzgAw#_0$>x2EVrgVJUE*M_e=rJ6qlob? z0PG#quQQ6Mr;vs>YWYd2S*O6KV|jUbx#fPgPU<1m1XD~-OMzTsixvo{C5D#qRwxxF z+lPdnlASHT!)c=JemRYp4MmpHz{d94**+_8NhWCI$z25gT%Ae*N&QG|Q%Nh0tpq0C z+1>r>+*4=OsBM;V| zA{k!6k0q>=JGc-kNvAMAhfc@HxIa7)fxd-;iTTqmu=tJI8UZd-0>zbkwF({_o0#~v zytG8DBqu@#f#fQK7&;>~1BFxc>t*ot69F`iA*4JN*J{TSaUs3pp8qcnl z@o%Ixg81jzb_|)o)B0CM6yyRpvEaXwy1Mgc!ND*sU(6%IUz8>n)K9cLmeI6D2}oms z>ZZCYcz@Yf5pIh;D34Vd>@dO5RvZkzrn%S?00gx_tYJ3`3%m}G=eEU1(N(Acd0{-t zsn5px>fEy#@;@3olVwKjqugMjpqcN#7bJ6f}-fT->MBC zyF5$v0GWfI6iNbO|06r3Gh#Gv2M5I-yGMxv)6=KaD2B5sO%r0%3^3lJ6pK64@L+qq^h!i~@Dt7gtxU4R|?P zO`mc5{`nBKBLFQ|{)n!xM?}=yuRB7iLT5l8sz=23n97H>8jioWL#)=745b0{I4*Nl zQESBj9Q+W_>D0D*14N5^1~xJVd`4vqp{Xv{692=)=_MEm&)Q8Z%;=Pg>}xkf;^a9}N8tXi`$r-C;#RZ@c**QmMkXI#C_d z1@(g@+7ObEYL5n+{6l~W3*hp;_*3PUmezk2B_iV@tyiZ#?MeJ79^HaICAolbn*a%p zY2?1VIZ>U{#kC@Wcg%l#ebyNRG)_iiSDJr7&ih|OX=KFrOTW&_`~$=#7xWOxd7`70 z=8D()k6i;sEw(hqHSQyopuzHAQ%_u9*46r zo|_}}%FE)|dxvZ7oToF<%NhS+bACQvtc#66Cr(^$vPKv2`SJM^`+o#gHQo1yEFnXs z(1FJ9fGjBpASQ^;a;fA8ka)NxtEU|VXJNQ)YrLBDmd`;NNo~{E$*nS?vh%W?#n$a3 z&QO_$gWIt_mfFjPx@+n1MF-0-=^y;e7Mp8!a{HFW_pS{q#GNTY{Dr zPL1jDTf_lPmvklFbc(_^-%i%%2-T$q)AxZ)Zp-wQ)z$1@Ud9?QcoP7Ak)kbS>G$z& zFNCglz*A?q*>(kc&#I}B&n@Hm@(9+6ppsT$e(S2Yv6_X0(c5Y`ZH4tNPe>rs)7b?+ zT(L9y{Nz}|`ue(`#OuwR!d!*Md%{|qN>czyDW2kQPFcEJb8~ZaIC%JxUsWljiIk%9 zUN$JkH-I3FcQ6U;$^~CjqU@zJeufdqMZ@k-@1nRCH4_Ms1h!a)%Wywhl zq3MH4O3blm_&rNJs1aqetHjE-zp|hnWv%HJ;H+(C-hiW!RP_X?5urd{>XY-+o#b%9U zRdKv2sH=_zn)Nb;PKQNo23)G{?l+{_c9k(l zFm@Mw#)gKo{Uw&@$SeNLBnr;XR2}~GA=MwOZel1g%g|bK6a_U5LyN~@EQUu$s7>1( zS7HI|@(FF{;|W+=AH7WfiL0s@HGIu?5i2s;_HedL42ZL6pBk{O+?r!^OV({Wa+5Sy z@5opF;1Lig3JA?MG@hxI+`}0=_51@XBl^0UQYug>z?Lmi90p;}%Z&yEsf7DOcoG?V zd;4(!tVPEGm>X9{RBB{|sS@h%+j{dLNkn>oLI*N*lZhR5fg#jyT^vPpa zvT`sp0HS*f*+M@|R00h`M}$M)5`AY5mzb$vXM2{m(T$MKWI2 zKQ|uH*bZPs`re+@fh}aSrKu_T3zj{Mhsoc+*7Jqz4NQz_*is<)Y%A;_tgElL+a}Wp z-_}6%fW@VXuR7SbrnZ(=lWsK@$zHEuS61ss3_hbk0vSJ=Pcxe??A13jX5L&_rRq2- za?~Le8uM>yks^ROXd)00im~C~;27o?#|EZASfyk6;sL%R097i%$;2c{>@L2jSEm(P zzGp5wP2@j`b9^xlSD%3U850%NXKQK63p_u7Oh}Lu$le^I6ATGIiYH_kV6X_JP5J*>fOqD29?+p;78e)gpV0hX zjA6EB0W%&8F!uU#AU;>+0|U~VN~7ez{h_*yT?)?RiYVMlL&{+Uv$nu|Yj}8k?AZZ! zZGCFkk_USjJMwWx7}rbP}{lJ7BZg{?R5D_nLP%0(_R44 z?WVe`%THoiu9ei@I~z6)(T|aaW?RA z89&cjAv)YNd7y+n{Q+rw#PfXf)f$l0bpnt?-cezE+}zxhEiEhpR{)OlE8zJ2AwU^! zj$kp&^ULnvu5nYc!WIHvbIi~QEzX$tL^gj2XV1+nEjc+kuZLmCyZrQeNiprR=sg`R z?IK|DdLP1#!j0atLuF;LV$^WLQBHFi7=>z5498x$Pl*sM&Xh8??q9X7A&ic|4%hWxzt(VS4smH0UU|TUyw0sty6fIGa z_83n91{!E%mUzI^g?gSy&vLaMD{=Pcx6;{jYV2iU%@3rcq=&%j6a}be?VNyy+z<;< zT}8pPE^l&=b+U_HHNo{1qlw83nZS>E`uYUe7GD4cw&39GO#JukY!i3e%e(FtuD{4~ zHZc*AKA>=h2i}ZSz#>U1a<>(Sm#d=8>jmh8@$Y|P%j zf1kLm$5VrWPX7dq>&NBQ)i#)Tj(0z7h}C9x#G^Kt1CNL-I}kLDHNV5RNAsfv&+ z?=b|P?X8{ z0=(Z>T=IoZT<*x8Rb_zkN+CA&Z?x|6JOy-S;a2Cx+N@@v!OE1#Cy)UZIp?lKM^{n~ zxVaaSzXPaNSIfjieJvE?|L_fPWOskBt!0xC6ciK_6@B&voGHUVq<8=ySM1rDSD z`|6JijnojzU{HF1X-}$<^t=LLx%viLUQ+kWM2b?p5Qx+d`h}<>rR~ literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_background.png b/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..e6d4c1b4fc57e4e4179e3aa079b94e84911b23e4 GIT binary patch literal 1064 zcmeAS@N?(olHy`uVBq!ia0y~yU~~at4mO}j{44ik3=GWgJzX3_D&pSW*vNZ?froix z%KwF*kM0&!$Y3hsaDM*%_rCXx4=QC{8tmBx4>+=Th$%I+awI4+g-nukFk<#dV>rpP p;fErV%&6>WXpE+f!JilGr>x^?h_y;u1}p&>JYD@<);T3K0RSyOBK`mX literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_foreground.png b/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..43f4ff9203e8bfe1da0601788a268ae55e4ac4e4 GIT binary patch literal 9960 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 STf_@CfTEn5Y`L^?(Ek9CDtg`k literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png b/templates/app/default/template/platform/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..43f4ff9203e8bfe1da0601788a268ae55e4ac4e4 GIT binary patch literal 9960 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 STf_@CfTEn5Y`L^?(Ek9CDtg`k literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher.png b/templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..75990b152202bf70f6cd41bf988f0dc6b0fe88e2 GIT binary patch literal 16553 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 G7V)E`GV(GQ2rw_) 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 literal 0 HcmV?d00001 diff --git a/templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png b/templates/app/default/template/platform/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png new file mode 100644 index 0000000000000000000000000000000000000000..7a08c16f719fa450918f320fb3fcf04261d2ded7 GIT binary patch literal 15600 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 literal 0 HcmV?d00001 diff --git a/templates/app/default/template/tiapp.xml b/templates/app/default/template/tiapp.xml index 1eb419dfbcf..d4f082129b4 100644 --- a/templates/app/default/template/tiapp.xml +++ b/templates/app/default/template/tiapp.xml @@ -42,6 +42,7 @@ + From 6552a2ccb0c11d01a6bcf185f228dcac709b0453 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 10:28:57 +0200 Subject: [PATCH 070/145] fix(android): bundle webp res files (#14047) * fix(android): bundle webp res files * make it better * add tests * lockfile * lockfile --------- Co-authored-by: Chris Barber --- cli/lib/gather.js | 2 +- package-lock.json | 579 ++---------------- package.json | 2 +- .../android/images/res-hdpi/logo.webp | Bin 0 -> 1766 bytes .../android/images/res-xhdpi/logo.webp | Bin 0 -> 1932 bytes .../android/images/res-xxhdpi/logo.webp | Bin 0 -> 2096 bytes .../android/images/res-xxxhdpi/logo.webp | Bin 0 -> 2240 bytes .../android/snapshots/png@2.625x.png | Bin 0 -> 893 bytes .../android/snapshots/webp@2.625x.png | Bin 0 -> 893 bytes .../android/snapshots/webp_res@2.625x.png | Bin 0 -> 2659 bytes tests/Resources/ti.ui.imageview.test.js | 31 +- 11 files changed, 85 insertions(+), 529 deletions(-) create mode 100644 tests/Resources/android/images/res-hdpi/logo.webp create mode 100644 tests/Resources/android/images/res-xhdpi/logo.webp create mode 100644 tests/Resources/android/images/res-xxhdpi/logo.webp create mode 100644 tests/Resources/android/images/res-xxxhdpi/logo.webp create mode 100644 tests/Resources/android/snapshots/png@2.625x.png create mode 100644 tests/Resources/android/snapshots/webp@2.625x.png create mode 100644 tests/Resources/android/snapshots/webp_res@2.625x.png diff --git a/cli/lib/gather.js b/cli/lib/gather.js index ad12f899da0..d1f2801463f 100644 --- a/cli/lib/gather.js +++ b/cli/lib/gather.js @@ -253,7 +253,7 @@ class Categorizer { case 'css': results.cssFiles.set(relPath, info); break; - + case 'webp': case 'png': if (this.platform === 'ios') { // check if we have an app icon diff --git a/package-lock.json b/package-lock.json index c36b739799a..d3a2244ab9d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,7 +82,7 @@ "rollup": "2.76.0", "ssri": "10.0.4", "stream-splitter": "0.3.2", - "strip-ansi": "7.1.0", + "strip-ansi": "6.0.1", "titanium": "6.1.1", "titanium-docgen": "4.10.4" }, @@ -2052,6 +2052,17 @@ "node": ">=12" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -2084,6 +2095,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -2275,14 +2300,6 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/@mapbox/node-pre-gyp/node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -2339,17 +2356,6 @@ "set-blocking": "^2.0.0" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@npmcli/agent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", @@ -3909,14 +3915,11 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -5331,27 +5334,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -7119,15 +7101,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -7213,18 +7186,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7881,14 +7842,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/gauge/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -7900,17 +7853,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -8775,15 +8717,6 @@ "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -8842,18 +8775,6 @@ "node": ">=8" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/inquirer/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10413,15 +10334,6 @@ "node": ">=10.0.0" } }, - "node_modules/lockfile-lint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/lockfile-lint/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -10433,18 +10345,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/lockfile-lint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lockfile-lint/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -10637,15 +10537,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -10696,18 +10587,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -11378,15 +11257,6 @@ "node": ">=6" } }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/mocha/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -11492,18 +11362,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -12318,15 +12176,6 @@ "node": ">=8.9" } }, - "node_modules/nyc/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/nyc/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12464,18 +12313,6 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -12709,15 +12546,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ora/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -12776,18 +12604,6 @@ "node": ">=8" } }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ora/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -15070,44 +14886,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.padend": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", @@ -15194,17 +14972,14 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/strip-ansi-cjs": { @@ -15219,14 +14994,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -16191,14 +15958,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16229,25 +15988,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -16278,17 +16018,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -17887,6 +17616,11 @@ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, "ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -17907,6 +17641,14 @@ "strip-ansi": "^7.0.1" } }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, "wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -18057,11 +17799,6 @@ "tar": "^6.1.11" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -18105,14 +17842,6 @@ "gauge": "^3.0.0", "set-blocking": "^2.0.0" } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } } } }, @@ -19325,9 +19054,9 @@ } }, "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -20389,23 +20118,6 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, "clone": { @@ -21503,12 +21215,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -21564,15 +21270,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22285,23 +21982,10 @@ "wide-align": "^1.1.5" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } } } }, @@ -22930,12 +22614,6 @@ "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -22976,15 +22654,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -24144,12 +23813,6 @@ "yargs": "^16.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -24161,15 +23824,6 @@ "wrap-ansi": "^7.0.0" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -24340,12 +23994,6 @@ "wrap-ansi": "^6.2.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -24381,15 +24029,6 @@ "is-fullwidth-code-point": "^3.0.0" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -24878,12 +24517,6 @@ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -24964,15 +24597,6 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -25597,12 +25221,6 @@ "yargs": "^15.0.2" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -25704,15 +25322,6 @@ "aggregate-error": "^3.0.0" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -25890,12 +25499,6 @@ "wcwidth": "^1.0.1" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -25936,15 +25539,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27623,21 +27217,6 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, "string-width-cjs": { @@ -27648,21 +27227,6 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } } }, "string.prototype.padend": { @@ -27729,11 +27293,11 @@ } }, "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^5.0.1" } }, "strip-ansi-cjs": { @@ -27742,13 +27306,6 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - } } }, "strip-bom": { @@ -28466,11 +28023,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -28491,14 +28043,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } } } }, @@ -28512,11 +28056,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -28537,14 +28076,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } } } }, diff --git a/package.json b/package.json index 090712c8a48..0585e53a6a8 100644 --- a/package.json +++ b/package.json @@ -157,7 +157,7 @@ "rollup": "2.76.0", "ssri": "10.0.4", "stream-splitter": "0.3.2", - "strip-ansi": "7.1.0", + "strip-ansi": "6.0.1", "titanium": "6.1.1", "titanium-docgen": "4.10.4" }, diff --git a/tests/Resources/android/images/res-hdpi/logo.webp b/tests/Resources/android/images/res-hdpi/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..13bfe0e1bca1b62aff8fbfe30f1db610f3ddd275 GIT binary patch literal 1766 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 literal 0 HcmV?d00001 diff --git a/tests/Resources/android/images/res-xxxhdpi/logo.webp b/tests/Resources/android/images/res-xxxhdpi/logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..d8d50b95f0425cb4a6ed793bce9c0b86251e732a GIT binary patch literal 2240 zcmaJ@c|25WAO9J9SN3aXMz3t4MH!c59ZO72c2i!)Ol6yC46b^~sBGm{N+A-8WUVVZ z*^Q{tMGIF+LZyX@kry-fjNZ@3{p0pNpL3q)d%nN#_c_n+_ngl;$JNQ+zD^9l3ui;{ zB$#@y1Ar~ad3p74vb81Tp^!^J<%N=|;X+mbR9XbX)xiei?L)+fz6D`W21(EdbrLz8 zZcQM#@YVm^I8Q-<9~m^{&-KrmAF}Hy2gAt#0vJSLMW!<%5bTd&lc)$fA7>(1o*YP` zAh-;{1`K3@2p;0|0pIZlK0dsPSCf)wxVzdSxyd6u=J4Nez~3-AkU>Q>+YyZxg-S!_ zM|pq86h4mOV`^w5vbNR6&rsqZ&BF~DwUAQ{9KZ?iKmZH`KqLe~C`5oEGSUzx99)sO z%@6!4t9}CF3P4;zKt>#Pa0IA8TJ-~e4-gH~)@mDm$avc-B_Lq~AUw+BeccEkng+0v z%Hu8N^LQ)Q0R*1|w9?l6NAdtn=Mg@2jnm2nkctPW>0ILiG5~6m0F;L5BnD~qK7vS( zI&=u&OA)|&9{{;O0M_mQUN7-3|$C90_-j&oe{oBGC2y~&w?-uCk`c0zv`CN+5E>`>rk5C6I)lx|#E3dR71 z(Pf}IptrpHA~$2+TuLUNg?KNRMcwvwrsbMFT z8WSJ9h^}4g>s~r1=5S8S34bS7SLB1uxG2Y--NIWIn=EXLkJGnB!ih4H=M6aK!OQ%qbvd%Xv|cv`gFx&ztzv`EtBR;DOqzfxmbt)EHHi2b`W$NejRT+t<+LNpiP8*GsO;| zWBbk)#I!V$Xm)m5ST9y3@hy?)DIOH;Gr6PxczJWb%yENF``p?qiN(Rr?n%X^3OoHe zZ?WQ^Z0f!wH(U`E_(aj^SQwY}OAdMaqCshvxoh8eNM7*7o4}J*V)UKXOR*BFb_yN# z9utyRjY=3Vj8J2~>NoV3Eub%2j~TpceDgb=beyreJDZg6oIMqLjwRfM?%3~Tr_fHs zS)d)pao3|>N4UG3ioC8OJvPnDrooY0>vDv6Ptj4|hPZdzs{85Fx7o^L?_Zl-k=k_1 zvyC!&Y&c=?(}f}1qnEmC7}^;F8pV^7^d=Uw`FN(|kekL;{WCKpXD6AS1x=;aX5xm6 zbqb#pBKJSugDSTpihRS`h`Z{Y`dYlf+5cizsBR2K_AYuawg1T$iOIUW20EVFl8m=s zs1{j7Db(ZjDRh%x-bq9`2V0ADm=A1kwR}}_2c3WWVUqauCHva}AL$9Cw*?vf_WL|e z{#226VwP1pTNT*eoK&=jUKFoUFcwLhoBirl*XD@V{I(%b&V4{j*`id(QX;`ukz;5Y zqm@|Pxbk80?);#>R0?;TL&itdS< z>5w?{f+Z!0zXq0458lK*pKNHOrA;*~1G(z(Tq`6|M~(H`e}+WbK1B+0>D zQmxIY-*@Y~!z!A+_2oB{I>N$|ddkX}Hi|e*Lc%ZJ7qq% zJlC9LlwuxVTQLw4O_r~=*xiB09(btby-D`>1gi&sScqE&9a8d5_B4#I?K&7jYDm5x z>V0!=Rwictaa5d@YT@Q4wG_n*UzD%z{mJJ8PU&`F8j03`yPaE!-iCfw~x}Q zqp+m|=e5e>T*|Iy4lUYv7`J`=C z6kQEk?O{0$Uvcq+|CO;SHj9+x6k<`x7ar4#yj-_PLymxcI;6v{t@6n>*EKa2g#aTc zR8>o_OMRXDR&-XXRjU8xqtVx%aqCfjhReO1rT1xau)ckUtGB?{1YyZqHtHnvvJU<44Oq5zAN3bDhzP#+J)Dxf8vKrBh69=F7P^ ayP7tye17(VS?foeUSux#>OR-?2lxv+*=ZvH literal 0 HcmV?d00001 diff --git a/tests/Resources/android/snapshots/png@2.625x.png b/tests/Resources/android/snapshots/png@2.625x.png new file mode 100644 index 0000000000000000000000000000000000000000..15f2fb936561edf0e4f4e3dccd40a633bb546f41 GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm4M^HB7Cr(}jKx9jP7LeL$-D$|Sc;uILpXq- zh9jkefq_}w)5S5QV$R#Udkb$n2(&$XZ^ISYcDmq^Pwb7I%C4&pPUI>`5`PdgGdh4# z&-tgNK^af;5k?^exw7xIN@6R(YBDL&>Q_VCoa| zHP0_THYjxM^!g-yZEn-is~xYh+Y8N#C9i#$ujLc7c7>N_zpUG>GpP|lb9N}Xsao=R zf07TsvO?u~qG#RXE}5w!3OXm_V=gY9)YPK-vs2qSBxu2gC6A9!Rn^jrh`3bvc-7W< zQ&hAx6Cy5sd~`}|s)&isON+wZMYHmZb3%e1Y*_NIFtyijZjs9-4H|Zk=05|I#V%qwn9J9FpjnFMi!AM6ZA4Ev49qOaBT5 zukM_Z==uAoYsmDayxzCu!~@TI%TD|9Ye&Z_-P(vtrynb=N^LQXkQNVI>l~r%4OCy% zVtTR5`_kTyEYU-|76@K%Ke@`qw0T3?nIoodA-pYD4UT*@`TXg8_PIyAiKbVg-k1LS zoX%I+bSzNtT94wY+sCx-`d_dxIw#MY%;(MTWHPxOJ)h>#P+#g+RAmn+Bv~rU1W5mR4+B6+AX!?b^Xgj ztG3o%I|tPBOFcAV>$Pal`D)$eou>q@$7ddrTC{7v&OK8t=NQjJyV63`s$(7=ekC~d zq)hmW4OMQbn~sT^t(m#v&A+zr&QmEp+9?t4U8hpIwPPZ<155V`XD{2~)LQyvh0nAd zhgzO0YE4#LCy-d#b;_mxbZvy(Vxx(Vi)5!gU*U6Q$DKA&MJ-`Nz3GXrU8i(no*t8( zp6L0@sPdha*5!`Vvg;Fj?cWFl&J+#bS@>|-cLr+<&tGBLZ*AG#_PpCzP|(7PH_0MN bI@r`Rypkwn)4cfI6(sEG>gTe~DWM4f^t*f? literal 0 HcmV?d00001 diff --git a/tests/Resources/android/snapshots/webp@2.625x.png b/tests/Resources/android/snapshots/webp@2.625x.png new file mode 100644 index 0000000000000000000000000000000000000000..15f2fb936561edf0e4f4e3dccd40a633bb546f41 GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm4M^HB7Cr(}jKx9jP7LeL$-D$|Sc;uILpXq- zh9jkefq_}w)5S5QV$R#Udkb$n2(&$XZ^ISYcDmq^Pwb7I%C4&pPUI>`5`PdgGdh4# z&-tgNK^af;5k?^exw7xIN@6R(YBDL&>Q_VCoa| zHP0_THYjxM^!g-yZEn-is~xYh+Y8N#C9i#$ujLc7c7>N_zpUG>GpP|lb9N}Xsao=R zf07TsvO?u~qG#RXE}5w!3OXm_V=gY9)YPK-vs2qSBxu2gC6A9!Rn^jrh`3bvc-7W< zQ&hAx6Cy5sd~`}|s)&isON+wZMYHmZb3%e1Y*_NIFtyijZjs9-4H|Zk=05|I#V%qwn9J9FpjnFMi!AM6ZA4Ev49qOaBT5 zukM_Z==uAoYsmDayxzCu!~@TI%TD|9Ye&Z_-P(vtrynb=N^LQXkQNVI>l~r%4OCy% zVtTR5`_kTyEYU-|76@K%Ke@`qw0T3?nIoodA-pYD4UT*@`TXg8_PIyAiKbVg-k1LS zoX%I+bSzNtT94wY+sCx-`d_dxIw#MY%;(MTWHPxOJ)h>#P+#g+RAmn+Bv~rU1W5mR4+B6+AX!?b^Xgj ztG3o%I|tPBOFcAV>$Pal`D)$eou>q@$7ddrTC{7v&OK8t=NQjJyV63`s$(7=ekC~d zq)hmW4OMQbn~sT^t(m#v&A+zr&QmEp+9?t4U8hpIwPPZ<155V`XD{2~)LQyvh0nAd zhgzO0YE4#LCy-d#b;_mxbZvy(Vxx(Vi)5!gU*U6Q$DKA&MJ-`Nz3GXrU8i(no*t8( zp6L0@sPdha*5!`Vvg;Fj?cWFl&J+#bS@>|-cLr+<&tGBLZ*AG#_PpCzP|(7PH_0MN bI@r`Rypkwn)4cfI6(sEG>gTe~DWM4f^t*f? literal 0 HcmV?d00001 diff --git a/tests/Resources/android/snapshots/webp_res@2.625x.png b/tests/Resources/android/snapshots/webp_res@2.625x.png new file mode 100644 index 0000000000000000000000000000000000000000..49028b8fe75ec6fd8ac5be1134944d7a4f21402a GIT binary patch literal 2659 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 literal 0 HcmV?d00001 diff --git a/tests/Resources/ti.ui.imageview.test.js b/tests/Resources/ti.ui.imageview.test.js index b9f3e0faae8..f04532b8e07 100644 --- a/tests/Resources/ti.ui.imageview.test.js +++ b/tests/Resources/ti.ui.imageview.test.js @@ -8,6 +8,8 @@ /* eslint no-unused-expressions: "off" */ 'use strict'; const should = require('./utilities/assertions'); +const utilities = require('./utilities/utilities'); +const isAndroid = utilities.isAndroid(); describe('Titanium.UI.ImageView', function () { this.timeout(5000); @@ -168,13 +170,16 @@ describe('Titanium.UI.ImageView', function () { imageView.image = fromFile; }); - function doBlobTest(blob, finish) { + function doBlobTest(testName, blob, finish) { win = Ti.UI.createWindow(); const imageView = Ti.UI.createImageView({ image: blob }); imageView.addEventListener('postlayout', function listener(e) { try { imageView.removeEventListener(e.type, listener); should(imageView.size.width > 0).be.true(); + if (isAndroid) { + should(imageView).matchImage('snapshots/' + testName + '.png'); + } finish(); } catch (err) { finish(err); @@ -186,12 +191,16 @@ describe('Titanium.UI.ImageView', function () { it('with Ti.Blob PNG', function (finish) { const blob = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'Logo.png').read(); - doBlobTest(blob, finish); + setTimeout(function () { + doBlobTest('png', blob, finish); + }, 100); }); it('with Ti.Blob WebP', function (finish) { const blob = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'Logo.webp').read(); - doBlobTest(blob, finish); + setTimeout(function () { + doBlobTest('webp', blob, finish); + }, 100); }); it.windowsBroken('with redirected URL and autorotate set to true', function (finish) { @@ -280,6 +289,22 @@ describe('Titanium.UI.ImageView', function () { it('with imageTouchFeedbackColor', function (finish) { test({ image: 'Logo.png', imageTouchFeedback: true, imageTouchFeedbackColor: 'yellow' }, finish); }); + + it('with WebP res file', function (finish) { + win = Ti.UI.createWindow(); + const imageView = Ti.UI.createImageView({ image: '/images/logo.webp' }); + imageView.addEventListener('postlayout', function listener(e) { + try { + imageView.removeEventListener(e.type, listener); + should(imageView).matchImage('snapshots/webp_res.png'); + finish(); + } catch (err) { + finish(err); + } + }); + win.add(imageView); + win.open(); + }); }); // TODO: Combine all tests for 'images' property into one suite From 7b9a4e92b2e26cc6d8816c1f7fbfda06316997b6 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:50:50 +0200 Subject: [PATCH 071/145] feat(android): videoPlayer speed property (#14006) * feat(android): videoPlayer speed property * docs --- .../java/ti/modules/titanium/media/TiUIVideoView.java | 9 +++++++++ apidoc/Titanium/Media/VideoPlayer.yml | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/android/modules/media/src/java/ti/modules/titanium/media/TiUIVideoView.java b/android/modules/media/src/java/ti/modules/titanium/media/TiUIVideoView.java index b3e1edaee54..2b7c6f91b7a 100644 --- a/android/modules/media/src/java/ti/modules/titanium/media/TiUIVideoView.java +++ b/android/modules/media/src/java/ti/modules/titanium/media/TiUIVideoView.java @@ -19,7 +19,9 @@ import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.media.MediaPlayer.OnPreparedListener; +import android.media.PlaybackParams; import android.net.Uri; +import android.os.Build; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; @@ -330,6 +332,13 @@ public void release() @Override public void onPrepared(MediaPlayer mp) { + + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_SPEED) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + PlaybackParams myPlayBackParams = new PlaybackParams(); + myPlayBackParams.setSpeed(TiConvert.toFloat(proxy.getProperty(TiC.PROPERTY_SPEED))); + mp.setPlaybackParams(myPlayBackParams); + } + getPlayerProxy().onPlaybackReady(mp.getDuration()); } diff --git a/apidoc/Titanium/Media/VideoPlayer.yml b/apidoc/Titanium/Media/VideoPlayer.yml index 1dffa9c0787..d723797acb9 100644 --- a/apidoc/Titanium/Media/VideoPlayer.yml +++ b/apidoc/Titanium/Media/VideoPlayer.yml @@ -575,6 +575,15 @@ properties: platforms: [iphone, ipad, macos] type: MovieSize + - name: speed + summary: Playback speed of the video. + description: | + Playback speed of the video. Android: only available for API level >= 23. + type: Number + platforms: [android] + since: 12.4.0 + availability: creation + - name: overlayView summary: Use the overlay view to add additional custom views between the video content and the controls. description: | From 229ef10fcfba15ad3050af9266aca8f2c2012448 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:51:09 +0200 Subject: [PATCH 072/145] feat(android): add moveToBackground method (#14009) --- .../java/ti/modules/titanium/ui/android/AndroidModule.java | 5 +++++ apidoc/Titanium/UI/Android/Android.yml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java b/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java index e5905f249d4..b6d6db771df 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/android/AndroidModule.java @@ -337,6 +337,11 @@ public String harmonizedColor(String value) return String.format("#%06X", (0xFFFFFF & MaterialColors.harmonizeWithPrimary(TiApplication.getAppCurrentActivity(), color))); } + @Kroll.method + public void moveToBackground() + { + TiApplication.getAppRootOrCurrentActivity().moveTaskToBack(true); + } @Override public String getApiName() diff --git a/apidoc/Titanium/UI/Android/Android.yml b/apidoc/Titanium/UI/Android/Android.yml index da74d51c6f0..ef1be7069d2 100644 --- a/apidoc/Titanium/UI/Android/Android.yml +++ b/apidoc/Titanium/UI/Android/Android.yml @@ -29,6 +29,11 @@ methods: type: String since: { android: "12.0.0" } + - name: moveToBackground + summary: Moves the app to the background + platforms: [android] + since: { android: "12.4.0" } + - name: hideSoftKeyboard summary: | Hides the soft keyboard. From a852835f7612d9c0ab034872a0439461dddde488 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:53:15 +0200 Subject: [PATCH 073/145] chore(android): ndk update (#13992) --- android/templates/module/generated/build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/templates/module/generated/build.gradle b/android/templates/module/generated/build.gradle index 50de55cf776..83bb889a7ba 100644 --- a/android/templates/module/generated/build.gradle +++ b/android/templates/module/generated/build.gradle @@ -16,6 +16,7 @@ def tiModuleBindingsJsonPath = "${buildDir}/ti-generated/json/<%- moduleName %>. android { compileSdkVersion <%- compileSdkVersion %> + ndkVersion '22.1.7171670' defaultConfig { minSdkVersion 19 targetSdkVersion <%- compileSdkVersion %> @@ -59,7 +60,8 @@ android { arguments.addAll([ 'APP_STL:=c++_shared', "-j${Runtime.runtime.availableProcessors()}".toString(), - '--output-sync=none' + '--output-sync=none', + 'APP_LD=deprecated' ]) } } From 84ccadbdcbe9b800ebc08dbac8ae5eaeac36a7f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sat, 15 Jun 2024 14:53:58 +0200 Subject: [PATCH 074/145] feat(ios): add iOS 17+ symbol effects (#13982) * feat: add symbol effects * chore: add version guards * chore: fine tune api props, add docs * fix: merge description in summary --- apidoc/Titanium/UI/ImageView.yml | 20 +++++++ iphone/Classes/TiSymbolEffectManager.h | 23 ++++++++ iphone/Classes/TiSymbolEffectManager.m | 59 +++++++++++++++++++ iphone/Classes/TiUIImageView.h | 1 + iphone/Classes/TiUIImageView.m | 22 +++++++ iphone/Classes/TiUIImageViewProxy.m | 8 +++ .../iphone/Titanium.xcodeproj/project.pbxproj | 8 ++- 7 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 iphone/Classes/TiSymbolEffectManager.h create mode 100644 iphone/Classes/TiSymbolEffectManager.m diff --git a/apidoc/Titanium/UI/ImageView.yml b/apidoc/Titanium/UI/ImageView.yml index 462baa48608..f658608e7da 100644 --- a/apidoc/Titanium/UI/ImageView.yml +++ b/apidoc/Titanium/UI/ImageView.yml @@ -70,6 +70,26 @@ methods: platforms: [android, iphone, ipad, macos] returns: type: Titanium.Blob + + - name: addSymbolEffect + summary: Adds a symbol effect to the image view with specified options, animation, and callback. + platforms: [iphone, ipad, macos] + since: "12.4.0" + osver: { ios: { min: "17.0" } } + parameters: + - name: symbolEffect + summary: The symbol effect to add. One of `pulse`, `bounce`, `appear`, `disappear`, `variableColor` or `scale`. + type: String + - name: options + summary: The options for the symbol effect. One of `repeating`, `nonRepeating`, `repeatCount` or `speed`. + type: String + - name: animated + summary: A Boolean value that indicates whether to animate the addition of a `scale`, `appear`, or `disappear` effect. + type: Boolean + default: false + - name: callback + summary: A callback the system calls after the effect’s addition is complete. + type: Callback events: - name: change diff --git a/iphone/Classes/TiSymbolEffectManager.h b/iphone/Classes/TiSymbolEffectManager.h new file mode 100644 index 00000000000..a22d19f829f --- /dev/null +++ b/iphone/Classes/TiSymbolEffectManager.h @@ -0,0 +1,23 @@ +/** + * Titanium SDK + * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ + +#import + +NS_ASSUME_NONNULL_BEGIN + +API_AVAILABLE(ios(17)) +@interface TiSymbolEffectManager : NSObject + +- (instancetype)initWithConfiguration:(NSDictionary *)configuration; + +@property (nonatomic, strong) NSDictionary *configuration; +@property (nonatomic, strong) NSSymbolEffect *symbolEffect; +@property (nonatomic, strong) NSSymbolEffectOptions *symbolEffectOptions; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iphone/Classes/TiSymbolEffectManager.m b/iphone/Classes/TiSymbolEffectManager.m new file mode 100644 index 00000000000..c898f18cd36 --- /dev/null +++ b/iphone/Classes/TiSymbolEffectManager.m @@ -0,0 +1,59 @@ +/** + * Titanium SDK + * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. + * Licensed under the terms of the Apache Public License + * Please see the LICENSE included with this distribution for details. + */ + +#import "TiSymbolEffectManager.h" +#import + +@implementation TiSymbolEffectManager + +- (instancetype)initWithConfiguration:(NSDictionary *)configuration +{ + if (self = [self init]) { + self.configuration = configuration; + } + return self; +} + +- (NSSymbolEffect *)symbolEffect +{ + NSString *symbolEffectString = [self.configuration valueForKey:@"symbolEffect"]; + + if ([symbolEffectString isEqualToString:@"pulse"]) { + return NSSymbolPulseEffect.effect; + } else if ([symbolEffectString isEqualToString:@"bounce"]) { + return NSSymbolBounceEffect.effect; + } else if ([symbolEffectString isEqualToString:@"appear"]) { + return NSSymbolAppearEffect.effect; + } else if ([symbolEffectString isEqualToString:@"disappear"]) { + return NSSymbolDisappearEffect.effect; + } else if ([symbolEffectString isEqualToString:@"variableColor"]) { + return NSSymbolVariableColorEffect.effect; + } else if ([symbolEffectString isEqualToString:@"scale"]) { + return NSSymbolScaleEffect.effect; + } + + @throw [NSException exceptionWithName:@"io.tidev.titanium-sdk" reason:@"Invalid symbol effect provided" userInfo:nil]; +} + +- (NSSymbolEffectOptions *)symbolEffectOptions +{ + NSDictionary *symbolEffectOptions = [self.configuration valueForKey:@"options"]; + + if ([TiUtils boolValue:@"repeating" properties:symbolEffectOptions def:NO]) { + return [NSSymbolEffectOptions optionsWithRepeating]; + } else if ([TiUtils boolValue:@"nonRepeating" properties:symbolEffectOptions def:NO]) { + return [NSSymbolEffectOptions optionsWithNonRepeating]; + } else if ([TiUtils intValue:@"repeatCount" properties:symbolEffectOptions def:0] > 0) { + return [NSSymbolEffectOptions optionsWithRepeatCount:[TiUtils intValue:@"repeatCount" properties:symbolEffectOptions def:1]]; + } else if ([TiUtils doubleValue:@"speed" properties:symbolEffectOptions def:0] > 0) { + return [NSSymbolEffectOptions optionsWithSpeed:[TiUtils doubleValue:@"speed" properties:symbolEffectOptions def:1.0]]; + } + + return [NSSymbolEffectOptions options]; +} + +@end diff --git a/iphone/Classes/TiUIImageView.h b/iphone/Classes/TiUIImageView.h index 005232bce53..5c1aa2c4cf1 100644 --- a/iphone/Classes/TiUIImageView.h +++ b/iphone/Classes/TiUIImageView.h @@ -45,6 +45,7 @@ - (void)resume; - (void)setImage_:(id)arg; +- (void)addSymbolEffect:(NSDictionary *)args; @end diff --git a/iphone/Classes/TiUIImageView.m b/iphone/Classes/TiUIImageView.m index 2bf4bc7a453..7a60c454f6e 100644 --- a/iphone/Classes/TiUIImageView.m +++ b/iphone/Classes/TiUIImageView.m @@ -7,6 +7,7 @@ #ifdef USE_TI_UIIMAGEVIEW #import "TiUIImageView.h" +#import "TiSymbolEffectManager.h" #import "TiUIImageViewProxy.h" #import #import @@ -685,6 +686,27 @@ - (void)setTintColor_:(id)value [imageView setTintColor:value ? [[TiUtils colorValue:value] color] : nil]; } +- (void)addSymbolEffect:(NSDictionary *)args +{ + BOOL animated = [TiUtils boolValue:@"animated" properties:args def:NO]; + KrollCallback *callback = [args valueForKey:@"callback"]; + + if (@available(iOS 17.0, *)) { + TiSymbolEffectManager *symbolEffectManager = [[TiSymbolEffectManager alloc] initWithConfiguration:args]; + + [imageView addSymbolEffect:symbolEffectManager.symbolEffect + options:symbolEffectManager.symbolEffectOptions + animated:animated + completion:^(UISymbolEffectCompletionContext *_Nonnull context) { + if (callback != nil) { + [callback call:@[ @{@"finished" : @(context.isFinished)} ] thisObject:self.proxy]; + } + }]; + } else { + NSLog(@"[ERROR] The \"addSymbolEffect\" API is only available on iOS 17+"); + } +} + - (void)setImage_:(id)arg { id currentImage = [self.proxy valueForUndefinedKey:@"image"]; diff --git a/iphone/Classes/TiUIImageViewProxy.m b/iphone/Classes/TiUIImageViewProxy.m index 5a69e03ae0d..e8cbbbdd1b2 100644 --- a/iphone/Classes/TiUIImageViewProxy.m +++ b/iphone/Classes/TiUIImageViewProxy.m @@ -62,6 +62,14 @@ - (void)_configure [self replaceValue:NUMFLOAT(DEFAULT_IMAGEVIEW_INTERVAL) forKey:@"duration" notification:NO]; } +- (void)addSymbolEffect:(id)args +{ + ENSURE_SINGLE_ARG(args, NSDictionary); + + TiUIImageView *iv = (TiUIImageView *)[self view]; + [iv addSymbolEffect:args]; +} + - (void)start:(id)args { TiThreadPerformOnMainThread( diff --git a/iphone/iphone/Titanium.xcodeproj/project.pbxproj b/iphone/iphone/Titanium.xcodeproj/project.pbxproj index a00c3e2c5c4..5a110b83e4a 100644 --- a/iphone/iphone/Titanium.xcodeproj/project.pbxproj +++ b/iphone/iphone/Titanium.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 52; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -160,6 +160,7 @@ 3A0E54371BE811CD003EE654 /* TiUIiOSMenuPopupProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A0E54361BE811CD003EE654 /* TiUIiOSMenuPopupProxy.m */; }; 3A1E40511BEAC73D00943233 /* TiUIiOSMenuPopup.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A1E40501BEAC73D00943233 /* TiUIiOSMenuPopup.m */; }; 3A275F3E1BA881B300EC4912 /* TiUIActivityIndicatorStyleProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A275F3D1BA881B300EC4912 /* TiUIActivityIndicatorStyleProxy.m */; }; + 3A320F992B6EDC7600009E90 /* TiSymbolEffectManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A320F982B6EDC7600009E90 /* TiSymbolEffectManager.m */; }; 3A38F30424D6EBBD00CC6EFB /* TiUtils+Addons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A38F30324D6EBBD00CC6EFB /* TiUtils+Addons.swift */; }; 3A3BBAF51D3E2F0F008450DF /* TiAppiOSUserNotificationCenterProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A3BBAF41D3E2F0F008450DF /* TiAppiOSUserNotificationCenterProxy.m */; }; 3A527EB327E0F77700A470D6 /* TiUITableViewScrollPositionProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A527EB227E0F77700A470D6 /* TiUITableViewScrollPositionProxy.m */; }; @@ -608,6 +609,8 @@ 3A1E40501BEAC73D00943233 /* TiUIiOSMenuPopup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TiUIiOSMenuPopup.m; sourceTree = ""; }; 3A275F3C1BA881B300EC4912 /* TiUIActivityIndicatorStyleProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TiUIActivityIndicatorStyleProxy.h; sourceTree = ""; }; 3A275F3D1BA881B300EC4912 /* TiUIActivityIndicatorStyleProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TiUIActivityIndicatorStyleProxy.m; sourceTree = ""; }; + 3A320F972B6EDC7600009E90 /* TiSymbolEffectManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TiSymbolEffectManager.h; sourceTree = ""; }; + 3A320F982B6EDC7600009E90 /* TiSymbolEffectManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TiSymbolEffectManager.m; sourceTree = ""; }; 3A38F30324D6EBBD00CC6EFB /* TiUtils+Addons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TiUtils+Addons.swift"; sourceTree = ""; }; 3A3BBAF31D3E2F0F008450DF /* TiAppiOSUserNotificationCenterProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TiAppiOSUserNotificationCenterProxy.h; sourceTree = ""; }; 3A3BBAF41D3E2F0F008450DF /* TiAppiOSUserNotificationCenterProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TiAppiOSUserNotificationCenterProxy.m; sourceTree = ""; }; @@ -1240,6 +1243,8 @@ 24C012881140D30B00A94CE2 /* TiUIMaskedImageProxy.m */, 24C0128D1140D31C00A94CE2 /* TiUIMaskedImage.h */, 24C0128E1140D31C00A94CE2 /* TiUIMaskedImage.m */, + 3A320F972B6EDC7600009E90 /* TiSymbolEffectManager.h */, + 3A320F982B6EDC7600009E90 /* TiSymbolEffectManager.m */, ); name = ImageView; sourceTree = ""; @@ -2152,6 +2157,7 @@ 3A275F3E1BA881B300EC4912 /* TiUIActivityIndicatorStyleProxy.m in Sources */, 24CA8B74111161FE0084E2DE /* TiUIWebViewProxy.m in Sources */, 3A1E40511BEAC73D00943233 /* TiUIiOSMenuPopup.m in Sources */, + 3A320F992B6EDC7600009E90 /* TiSymbolEffectManager.m in Sources */, 84A0100417FC8D3500D4BF94 /* TiGravityBehavior.m in Sources */, 24CA8B79111161FE0084E2DE /* TiUITextFieldProxy.m in Sources */, 3A38F30424D6EBBD00CC6EFB /* TiUtils+Addons.swift in Sources */, From 1f7508484839ec20626f6c189e94068fca042f08 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:55:28 +0200 Subject: [PATCH 075/145] feat(android): expose contentOffset getter in TableView/ListView (#14058) --- .../ui/src/java/ti/modules/titanium/ui/TableViewProxy.java | 2 +- .../modules/titanium/ui/widget/listview/ListViewProxy.java | 2 +- apidoc/Titanium/UI/ListView.yml | 6 ++++++ apidoc/Titanium/UI/TableView.yml | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewProxy.java index b4478759dc8..65bc33c7acd 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TableViewProxy.java @@ -414,7 +414,7 @@ public String getApiName() return "Ti.UI.TableView"; } - // NOTE: For internal use only. + @Kroll.getProperty public KrollDict getContentOffset() { final TiTableView tableView = getTableView(); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java index db356d99f48..79b5769f8f8 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewProxy.java @@ -450,7 +450,7 @@ public void setActivity(Activity activity) } } - // NOTE: For internal use only. + @Kroll.getProperty public KrollDict getContentOffset() { final TiListView listView = getListView(); diff --git a/apidoc/Titanium/UI/ListView.yml b/apidoc/Titanium/UI/ListView.yml index 4ad734202b0..5cbb58e0f68 100644 --- a/apidoc/Titanium/UI/ListView.yml +++ b/apidoc/Titanium/UI/ListView.yml @@ -684,6 +684,12 @@ properties: ipad: 3.2.0 platforms: [android, iphone, ipad, macos] + - name: contentOffset + summary: X and Y coordinates to which to reposition the top-left point of the content region. + type: Point + since: {android: "12.4.0"} + platforms: [android] + - name: disableBounce summary: Determines whether the scroll-bounce of the list view should be disabled. description: | diff --git a/apidoc/Titanium/UI/TableView.yml b/apidoc/Titanium/UI/TableView.yml index ccc7eba714c..24103d3a306 100644 --- a/apidoc/Titanium/UI/TableView.yml +++ b/apidoc/Titanium/UI/TableView.yml @@ -1073,6 +1073,12 @@ properties: type: [String, Titanium.UI.Color] default: transparent on non-iOS platforms, white on the iOS platform + - name: contentOffset + summary: X and Y coordinates to which to reposition the top-left point of the content region. + type: Point + since: {android: "12.4.0"} + platforms: [android] + - name: data summary: Rows of the table view. type: [Array, Array] From dc180b94f05aa810aa1f302958ee3f6b36ae69c4 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:56:58 +0200 Subject: [PATCH 076/145] feat(android): update ti.playservice to 18.3.0 (#14049) --- support/module/packaged/modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support/module/packaged/modules.json b/support/module/packaged/modules.json index 3f1f980a504..2d69caef138 100644 --- a/support/module/packaged/modules.json +++ b/support/module/packaged/modules.json @@ -43,8 +43,8 @@ "integrity": "sha512-OsLB3hr6sFqduoUbY2dotQ/Zk7u+eJW8ZKJLG+FzOf9WP/xlUe7S9kz2dMBnI50bnpULnXEYkbr2kb/rNu8lZw==" }, "ti.playservices": { - "url": "https://github.com/tidev/ti.playservices/releases/download/v18.2.0/ti.playservices-android-18.2.0.zip", - "integrity": "sha512-ifkAeWKqAFrNuKrlS8CnWEjDA4akCjPL1YpQ8VSN/pxik9vngJ4jjSHoqIhM5/WQR0CtBURKbqNWkbbWKu5unQ==" + "url": "https://github.com/tidev/ti.playservices/releases/download/v18.3.0/ti.playservices-android-18.3.0.zip", + "integrity": "sha512-Sg9tKSbleTZmEcQMoHX57bQOIKqDh+TzLjxASozqB/YJR1rbsXL3Ighdf5kQl4WvAIkjIvYlwoPLWWtY7HxjEw==" }, "ti.identity": { "url": "https://github.com/tidev/titanium-identity/releases/download/v3.1.0-android/ti.identity-android-3.1.0.zip", From 6926f0d9bfc177fe74e43fa1242adc8f30972cae Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:58:46 +0200 Subject: [PATCH 077/145] chore(android): remove some dead analytics code (#14022) --- .../titanium/test/TitaniumTestAppInfo.java | 5 --- android/cli/commands/_build.js | 39 ------------------- android/templates/build/AppInfo.java | 4 -- .../org/appcelerator/titanium/ITiAppInfo.java | 1 - .../appcelerator/titanium/TiApplication.java | 26 ------------- .../titanium/TiApplicationLifecycle.java | 12 ------ 6 files changed, 87 deletions(-) diff --git a/android/app/src/main/java/com/titanium/test/TitaniumTestAppInfo.java b/android/app/src/main/java/com/titanium/test/TitaniumTestAppInfo.java index 6d79409bd19..7da287d9665 100644 --- a/android/app/src/main/java/com/titanium/test/TitaniumTestAppInfo.java +++ b/android/app/src/main/java/com/titanium/test/TitaniumTestAppInfo.java @@ -60,11 +60,6 @@ public String getIcon() return "appicon.png"; } - public boolean isAnalyticsEnabled() - { - return true; - } - public String getGUID() { return "edf09efc-69ef-46fd-9777-35d6aaa2d7b5"; diff --git a/android/cli/commands/_build.js b/android/cli/commands/_build.js index e2b784efec0..ee4a6d17c9b 100644 --- a/android/cli/commands/_build.js +++ b/android/cli/commands/_build.js @@ -1541,9 +1541,6 @@ AndroidBuilder.prototype.run = async function run(logger, config, cli, finished) // Notify plugins that we're about to begin. await new Promise(resolve => cli.emit('build.pre.construct', this, resolve)); - // Post build analytics. - await this.doAnalytics(); - // Initialize build system. Checks if we need to do a clean or incremental build. await this.initialize(); await this.loginfo(); @@ -1602,35 +1599,6 @@ AndroidBuilder.prototype.run = async function run(logger, config, cli, finished) } }; -AndroidBuilder.prototype.doAnalytics = async function doAnalytics() { - const cli = this.cli; - let eventName = 'android.' + cli.argv.target; - - if (cli.argv.target === 'dist-playstore') { - eventName = 'android.distribute.playstore'; - } else if (this.allowDebugging && this.debugPort) { - eventName += '.debug'; - } else if (this.allowProfiling && this.profilerPort) { - eventName += '.profile'; - } else { - eventName += '.run'; - } - - cli.addAnalyticsEvent(eventName, { - name: cli.tiapp.name, - publisher: cli.tiapp.publisher, - url: cli.tiapp.url, - image: cli.tiapp.icon, - appid: cli.tiapp.id, - description: cli.tiapp.description, - type: cli.argv.type, - guid: cli.tiapp.guid, - version: cli.tiapp.version, - copyright: cli.tiapp.copyright, - date: (new Date()).toDateString() - }); -}; - AndroidBuilder.prototype.initialize = async function initialize() { const argv = this.cli.argv; @@ -1865,12 +1833,6 @@ AndroidBuilder.prototype.checkIfShouldForceRebuild = function checkIfShouldForce return true; } - if (!this.tiapp.analytics !== !manifest.analytics) { - this.logger.info(__('Forcing rebuild: tiapp.xml analytics flag changed since last build')); - this.logger.info(' ' + __('Was: %s', !!manifest.analytics)); - this.logger.info(' ' + __('Now: %s', !!this.tiapp.analytics)); - return true; - } if (this.tiapp.publisher !== manifest.publisher) { this.logger.info(__('Forcing rebuild: tiapp.xml publisher changed since last build')); this.logger.info(' ' + __('Was: %s', manifest.publisher)); @@ -3822,7 +3784,6 @@ AndroidBuilder.prototype.writeBuildManifest = async function writeBuildManifest( outputDir: this.cli.argv['output-dir'], name: this.tiapp.name, id: this.tiapp.id, - analytics: this.tiapp.analytics, publisher: this.tiapp.publisher, url: this.tiapp.url, version: this.tiapp.version, diff --git a/android/templates/build/AppInfo.java b/android/templates/build/AppInfo.java index 45ce3eb7c8c..5fa19fa689c 100644 --- a/android/templates/build/AppInfo.java +++ b/android/templates/build/AppInfo.java @@ -52,10 +52,6 @@ public String getIcon() { return "<%- tiapp.icon %>"; } - public boolean isAnalyticsEnabled() { - return <%- !!tiapp.analytics %>; - } - public String getGUID() { return "<%- tiapp.guid %>"; } diff --git a/android/titanium/src/java/org/appcelerator/titanium/ITiAppInfo.java b/android/titanium/src/java/org/appcelerator/titanium/ITiAppInfo.java index 929c4939cf5..a2dba973523 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/ITiAppInfo.java +++ b/android/titanium/src/java/org/appcelerator/titanium/ITiAppInfo.java @@ -15,7 +15,6 @@ public interface ITiAppInfo { String getCopyright(); String getDescription(); String getIcon(); - boolean isAnalyticsEnabled(); String getGUID(); boolean isFullscreen(); String getDeployType(); diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java b/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java index 37f9ec8eab0..eff4749d181 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java @@ -99,7 +99,6 @@ public abstract class TiApplication extends Application implements KrollApplicat protected ITiAppInfo appInfo; protected TiStylesheet stylesheet; protected HashMap> modules; - protected String[] filteredAnalyticsEvents; public static AtomicBoolean isActivityTransition = new AtomicBoolean(false); protected static ArrayList activityTransitionListeners = new ArrayList<>(); @@ -738,11 +737,6 @@ public KrollProxy unregisterProxy(String proxyId) return proxy; } - public boolean isAnalyticsEnabled() - { - return false; - } - /** * Determines if Titanium's JavaScript runtime should run on the main UI thread or not * based on the "tiapp.xml" property "run-on-main-thread". @@ -755,26 +749,6 @@ public boolean runOnMainThread() return true; } - public void setFilterAnalyticsEvents(String[] events) - { - filteredAnalyticsEvents = events; - } - - public boolean isAnalyticsFiltered(String eventName) - { - if (filteredAnalyticsEvents == null) { - return false; - } - - for (int i = 0; i < filteredAnalyticsEvents.length; ++i) { - String currentName = filteredAnalyticsEvents[i]; - if (eventName.equals(currentName)) { - return true; - } - } - return false; - } - @Override public String getDeployType() { diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiApplicationLifecycle.java b/android/titanium/src/java/org/appcelerator/titanium/TiApplicationLifecycle.java index 1bbd3734789..13443d124d1 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiApplicationLifecycle.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiApplicationLifecycle.java @@ -10,8 +10,6 @@ import android.app.Application; import android.os.Bundle; -import com.appcelerator.aps.APSAnalytics; - import org.appcelerator.kroll.KrollModule; public class TiApplicationLifecycle implements Application.ActivityLifecycleCallbacks @@ -50,11 +48,6 @@ public void onActivityStarted(Activity activity) } appModule.fireEvent(TiC.EVENT_RESUMED, null); } - - // Post analytics for this event, if enabled. - if (this.tiApp.isAnalyticsEnabled()) { - APSAnalytics.getInstance().sendAppForegroundEvent(); - } } // Increment number of "started" activities. These are activities that are currently in the foreground. @@ -76,11 +69,6 @@ public void onActivityStopped(Activity activity) appModule.fireEvent(TiC.EVENT_PAUSE, null); appModule.fireEvent(TiC.EVENT_PAUSED, null); } - - // Post analytics for this event, if enabled. - if (this.tiApp.isAnalyticsEnabled()) { - APSAnalytics.getInstance().sendAppBackgroundEvent(); - } } // Decrement count of started/visible activities. From 960d40cd153fc3ee9e0cad09e5171a7a65c62253 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 14:59:29 +0200 Subject: [PATCH 078/145] feat(android): add source to webView fireEvent (#14023) * feat(android): add source to webView fireEvent * lint --- .../titanium/ui/widget/webview/TiWebViewBinding.java | 6 +++++- .../modules/titanium/ui/widget/webview/TiWebViewClient.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewBinding.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewBinding.java index f5985452a38..3b12250d2b0 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewBinding.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewBinding.java @@ -22,6 +22,7 @@ import org.appcelerator.kroll.common.Log; import org.appcelerator.kroll.util.KrollAssetHelper; import org.appcelerator.titanium.TiApplication; +import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.util.TiConvert; import org.json.JSONException; import org.json.JSONObject; @@ -88,12 +89,14 @@ public class TiWebViewBinding private AppBinding appBinding; private TiReturn tiReturn; private WebView webView; + private TiViewProxy proxy; private boolean interfacesAdded = false; - public TiWebViewBinding(WebView webView) + public TiWebViewBinding(WebView webView, TiViewProxy proxy) { codeSnippets = new Stack(); this.webView = webView; + this.proxy = proxy; apiBinding = new ApiBinding(); appBinding = new AppBinding(); tiReturn = new TiReturn(); @@ -238,6 +241,7 @@ public void fireEvent(String event, String json) if (json != null && !json.equals("undefined")) { dict = new KrollDict(new JSONObject(json)); } + dict.put("source", proxy); module.fireEvent(event, dict); } catch (JSONException e) { Log.e(TAG, "Error parsing event JSON", e); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewClient.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewClient.java index 47539ad94b9..3d455af0654 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewClient.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/webview/TiWebViewClient.java @@ -45,7 +45,7 @@ public TiWebViewClient(TiUIWebView tiWebView, WebView webView) { super(); this.webView = tiWebView; - binding = new TiWebViewBinding(webView); + binding = new TiWebViewBinding(webView, tiWebView.getProxy()); } @Override From afb253e697442cb6bafdb430a9d8d3539235d58e Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 15:00:04 +0200 Subject: [PATCH 079/145] feat(android): textAlignment for DatePicker (#14012) * feat(android): textAlignment for DatePicker * docs --- .../titanium/ui/widget/picker/TiUIDatePicker.java | 10 ++++++++++ apidoc/Titanium/UI/Picker.yml | 9 +++++++++ 2 files changed, 19 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/picker/TiUIDatePicker.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/picker/TiUIDatePicker.java index ee3fb90a86f..1f0c29e857c 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/picker/TiUIDatePicker.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/picker/TiUIDatePicker.java @@ -7,6 +7,7 @@ package ti.modules.titanium.ui.widget.picker; import android.os.Build; +import android.view.Gravity; import android.view.View; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; @@ -100,6 +101,15 @@ public TiUIDatePicker(@NonNull PickerProxy proxy) }; textInputLayout.getEditText().setOnClickListener(clickListener); textInputLayout.setEndIconOnClickListener(clickListener); + + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_TEXT_ALIGN)) { + String textAlign = TiConvert.toString(proxy.getProperty(TiC.PROPERTY_TEXT_ALIGN)); + if (textAlign.equals("center")) { + textInputLayout.getEditText().setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER); + } else if (textAlign.equals("right")) { + textInputLayout.getEditText().setGravity(Gravity.CENTER_VERTICAL | Gravity.END); + } + } view = textInputLayout; } } diff --git a/apidoc/Titanium/UI/Picker.yml b/apidoc/Titanium/UI/Picker.yml index 84235b4a4eb..6e808fb2c6f 100644 --- a/apidoc/Titanium/UI/Picker.yml +++ b/apidoc/Titanium/UI/Picker.yml @@ -409,6 +409,15 @@ properties: platforms: [android] since: "5.0.0" + - name: textAlign + summary: | + Horizontal text alignment of the date picker when using . + type: [String, Number] + constants: Titanium.UI.TEXT_ALIGNMENT_* + default: , + platforms: [android] + since: "12.4.0" + - name: datePickerStyle summary: Determines how a date or time picker should appear. description: | From 29964cf5a6830948b802810a41e42230c3b1e820 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 15 Jun 2024 16:18:42 +0200 Subject: [PATCH 080/145] feat(android): new event for empty TextFields (#13975) * feat(android): new event for empty TextFields * docs and length check * rename and check for listener --- .../ti/modules/titanium/ui/widget/TiUIText.java | 16 ++++++++++++++++ apidoc/Titanium/UI/TextField.yml | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index b5cc0adbc88..0af9c82ac5d 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -135,6 +135,22 @@ public void onLayoutChange( this.tv.setOnEditorActionListener(this); this.tv.setOnFocusChangeListener(this); this.tv.setIncludeFontPadding(true); + if (proxy.hasListeners("empty")) { + this.tv.setOnKeyListener(new View.OnKeyListener() + { + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) + { + if (tv.getText().length() == 0) { + KrollDict data = new KrollDict(); + data.put("keyCode", keyCode); + fireEvent("empty", data); + } + return false; + } + }); + } + if (field) { this.tv.setGravity(Gravity.CENTER_VERTICAL | Gravity.START); } else { diff --git a/apidoc/Titanium/UI/TextField.yml b/apidoc/Titanium/UI/TextField.yml index 20661b799e8..f107ba0a6a4 100644 --- a/apidoc/Titanium/UI/TextField.yml +++ b/apidoc/Titanium/UI/TextField.yml @@ -610,6 +610,15 @@ events: summary: New value of the field. type: String + - name: empty + summary: Fired when the field is empty and you press backspace key again. + since: {android: "12.4.0"} + platforms: [android] + properties: + - name: keyCode + summary: Key code of the key. + type: Number + - name: focus summary: Fired when the field gains focus. properties: From 7b82317907a492b57c52059d8a648ad0e07fb834 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 20 Jun 2024 17:01:08 +0200 Subject: [PATCH 081/145] chore: ioslib update (#14069) --- package-lock.json | 87 +++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 47 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index d3a2244ab9d..4b577831625 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "ejs": "3.1.9", "fields": "0.1.24", "fs-extra": "11.2.0", - "ioslib": "1.7.35", + "ioslib": "1.7.36", "liveview": "1.5.6", "lodash.merge": "4.6.2", "markdown": "0.5.0", @@ -2282,9 +2282,9 @@ } }, "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -2304,6 +2304,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -2316,6 +2317,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -2349,6 +2351,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -6487,9 +6490,9 @@ } }, "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } @@ -8810,9 +8813,9 @@ } }, "node_modules/ioslib": { - "version": "1.7.35", - "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.35.tgz", - "integrity": "sha512-vay0+j92jZy1GSgiDiPVN5eIiYtCf+cIHaXxDuRmsPHa0jS4U99whhpISuQ0WQIpmkFPjsg7KRAiCK4kGSN6NQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.36.tgz", + "integrity": "sha512-LxmVa7TrKPXOE2IWxlNyNASTonSLjizxfG1dO8wZwGWowng+9/YBeIbPcQxaFgT8GMGeSMkkK1Npi2XUl7iiVQ==", "dependencies": { "always-tail": "0.2.0", "async": "^3.2.4", @@ -8820,7 +8823,7 @@ "debug": "^4.3.4", "mkdirp": "0.5.1", "node-appc": "1.1.6", - "node-ios-device": "1.11.0" + "node-ios-device": "1.12.0" }, "engines": { "node": ">=10.13" @@ -11424,9 +11427,9 @@ "dev": true }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==" }, "node_modules/nanoid": { "version": "3.3.1", @@ -11691,14 +11694,14 @@ } }, "node_modules/node-ios-device": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.11.0.tgz", - "integrity": "sha512-MUctq/+qq67v8Bd08XnHzOoK/YFJAVj8e35i9tLxqCh8C8MwcSIR27f0wQlYrUQ4UfnGdb8Dtx2DuNnMrpGSMw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.12.0.tgz", + "integrity": "sha512-ewGLYmcW1LbsTqs5UYmlLcm/52GCmGcuFTysWBqWnHPp88PfOh7uVm4zonb9r4MR/Nublt0vt0mNDIum0R71pw==", "hasInstallScript": true, "dependencies": { "@mapbox/node-pre-gyp": "^1.0.10", "debug": "^4.3.4", - "nan": "^2.17.0", + "nan": "^2.20.0", "node-pre-gyp-init": "^1.2.1", "patch-package": "^6.5.1" }, @@ -12963,6 +12966,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12998,6 +13002,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -13006,9 +13011,9 @@ } }, "node_modules/patch-package/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } @@ -17784,9 +17789,9 @@ } }, "@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", "requires": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -20951,9 +20956,9 @@ "dev": true }, "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" }, "diff": { "version": "5.0.0", @@ -22685,9 +22690,9 @@ } }, "ioslib": { - "version": "1.7.35", - "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.35.tgz", - "integrity": "sha512-vay0+j92jZy1GSgiDiPVN5eIiYtCf+cIHaXxDuRmsPHa0jS4U99whhpISuQ0WQIpmkFPjsg7KRAiCK4kGSN6NQ==", + "version": "1.7.36", + "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.36.tgz", + "integrity": "sha512-LxmVa7TrKPXOE2IWxlNyNASTonSLjizxfG1dO8wZwGWowng+9/YBeIbPcQxaFgT8GMGeSMkkK1Npi2XUl7iiVQ==", "requires": { "always-tail": "0.2.0", "async": "^3.2.4", @@ -22695,7 +22700,7 @@ "debug": "^4.3.4", "mkdirp": "0.5.1", "node-appc": "1.1.6", - "node-ios-device": "1.11.0" + "node-ios-device": "1.12.0" }, "dependencies": { "@xmldom/xmldom": { @@ -24665,9 +24670,9 @@ "dev": true }, "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==" + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==" }, "nanoid": { "version": "3.3.1", @@ -24847,13 +24852,13 @@ } }, "node-ios-device": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.11.0.tgz", - "integrity": "sha512-MUctq/+qq67v8Bd08XnHzOoK/YFJAVj8e35i9tLxqCh8C8MwcSIR27f0wQlYrUQ4UfnGdb8Dtx2DuNnMrpGSMw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.12.0.tgz", + "integrity": "sha512-ewGLYmcW1LbsTqs5UYmlLcm/52GCmGcuFTysWBqWnHPp88PfOh7uVm4zonb9r4MR/Nublt0vt0mNDIum0R71pw==", "requires": { "@mapbox/node-pre-gyp": "^1.0.10", "debug": "^4.3.4", - "nan": "^2.17.0", + "nan": "^2.20.0", "node-pre-gyp-init": "^1.2.1", "patch-package": "^6.5.1" } @@ -25832,9 +25837,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" }, "shebang-command": { "version": "1.2.0", diff --git a/package.json b/package.json index 0585e53a6a8..87fb7f8cfd5 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "ejs": "3.1.9", "fields": "0.1.24", "fs-extra": "11.2.0", - "ioslib": "1.7.35", + "ioslib": "1.7.36", "liveview": "1.5.6", "lodash.merge": "4.6.2", "markdown": "0.5.0", From 40808cd5ffed82abaeb7e7523100f901f336298f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Tue, 25 Jun 2024 04:58:01 +0200 Subject: [PATCH 082/145] feat: add swipe actions support for Ti.UI.TableView (#14065) * feat: add swipe actions support for Ti.UI.TableView * fix: fix linting issue * feat: support both leading and trailing state * feat: support leading edit actions in list view as well --- apidoc/Titanium/UI/ListItem.yml | 29 +++++++++- apidoc/Titanium/UI/TableView.yml | 34 ++++++++++++ apidoc/Titanium/UI/TableViewRow.yml | 8 +++ iphone/Classes/TiUIListView.m | 86 +++++++++++++++-------------- iphone/Classes/TiUITableView.m | 67 ++++++++++++++++++++++ iphone/Classes/TiUIiOSProxy.h | 2 +- iphone/Classes/TiUIiOSProxy.m | 17 ++---- 7 files changed, 186 insertions(+), 57 deletions(-) diff --git a/apidoc/Titanium/UI/ListItem.yml b/apidoc/Titanium/UI/ListItem.yml index 30065848130..d29225625cb 100644 --- a/apidoc/Titanium/UI/ListItem.yml +++ b/apidoc/Titanium/UI/ListItem.yml @@ -674,12 +674,27 @@ properties: --- name: RowActionType -summary: Represents the custom edit action for a ListItem. +summary: Represents the custom edit action for a ListItem or TableViewRow. description: | - By default when a listItem has [canEdit](Titanium.UI.ListItem.canEdit) set to true, a left swipe on the the row presens the 'Delete' button. + Edit actions can be used to add contextual buttons to your list items / table view rows. The configuration of + this API is the same for list items (if you use ) and table view rows (if you use . + description: | + Do not rely on the `source` property to determine which item fired the event. Use the + `row` and `section`, or the `index` to determine the table row that generated + the event. + + Note that the `index` property of this event correspond to the list view state + before the user action. + platforms: [iphone, ipad, macos] + since: 12.4.0 + properties: + - name: action + summary: The [title](RowActionType.title) as defined in the row action object. + type: String + + - name: identifier + summary: | + The [identifier](RowActionType. identifier) of the row action. Only included in the event + if previously defined. + type: String + + - name: row + summary: The row that fired this event. + type: [Titanium.UI.TableViewRow, Dictionary] + + - name: section + summary: The section that fired this event. + type: Titanium.UI.TableViewSection + + - name: index + summary: The index of the row that fired this event. + type: Number + methods: - name: appendRow summary: Appends a single row or an array of rows to the end of the table. diff --git a/apidoc/Titanium/UI/TableViewRow.yml b/apidoc/Titanium/UI/TableViewRow.yml index a5fb76598bc..a5e511827b9 100644 --- a/apidoc/Titanium/UI/TableViewRow.yml +++ b/apidoc/Titanium/UI/TableViewRow.yml @@ -226,6 +226,14 @@ properties: platforms: [android, iphone, ipad, macos] since: {android: "9.3.0", iphone: "3.2.0", ipad: "3.2.0", macos: "9.2.0"} + - name: editActions + summary: Specifies custom action items to be shown when when a list item is edited. + description: | + For more information see the "Editing Support" section of . + type: Array + since: 12.4.0 + platforms: [iphone, ipad, macos] + - name: filterAlwaysInclude summary: | This row will always be visible when you filter your content. diff --git a/iphone/Classes/TiUIListView.m b/iphone/Classes/TiUIListView.m index f1ca5250794..ae821bb0393 100644 --- a/iphone/Classes/TiUIListView.m +++ b/iphone/Classes/TiUIListView.m @@ -1146,23 +1146,49 @@ - (BOOL)tableView:(UITableView *)tableView canHandleDropSession:(id *editActions = [editActionProxies filteredArrayUsingPredicate:predicate]; + NSMutableArray *nativeEditActions = [NSMutableArray arrayWithCapacity:editActions.count]; + + if (IS_NULL_OR_NIL(editActions) || editActions.count == 0) { + return nil; + } - for (id prop in propArray) { - ENSURE_DICT(prop); + for (id prop in editActions) { NSString *title = [TiUtils stringValue:@"title" properties:prop]; NSString *identifier = [TiUtils stringValue:@"identifier" properties:prop]; - int actionStyle = [TiUtils intValue:@"style" properties:prop def:UITableViewRowActionStyleDefault]; + UIContextualActionStyle style = [TiUtils intValue:@"style" properties:prop def:UIContextualActionStyleNormal]; TiColor *color = [TiUtils colorValue:@"color" properties:prop]; id image = [prop objectForKey:@"image"]; - UITableViewRowAction *theAction = [UITableViewRowAction rowActionWithStyle:actionStyle + UIContextualAction *action = [UIContextualAction contextualActionWithStyle:style title:title - handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { + handler:^(UIContextualAction *_Nonnull action, __kindof UIView *_Nonnull sourceView, void (^_Nonnull completionHandler)(BOOL)) { + completionHandler(YES); NSString *eventName = @"editaction"; NSIndexPath *realIndexPath = [self pathForSearchPath:indexPath]; @@ -1192,27 +1218,22 @@ - (NSArray *)editActionsFromValue:(id)value } // Hide editActions after selection - [[self tableView] setEditing:NO]; + // [[self tableView] setEditing:NO]; }]; - if (color) { - theAction.backgroundColor = [color color]; + + if (color != nil) { + action.backgroundColor = color.color; } - if (image) { + + if (image != nil) { NSURL *url = [TiUtils toURL:image proxy:(TiProxy *)self.proxy]; - UIImage *nativeImage = [[ImageLoader sharedLoader] loadImmediateImage:url]; - if (color) { - nativeImage = [self generateImage:nativeImage withBackgroundColor:[color color]]; - } - theAction.backgroundColor = [UIColor colorWithPatternImage:nativeImage]; - } - if (!returnArray) { - returnArray = [NSMutableArray arrayWithObject:theAction]; - } else { - [returnArray addObject:theAction]; + action.image = [[ImageLoader sharedLoader] loadImmediateImage:url]; } + + [nativeEditActions addObject:action]; } - return returnArray; + return [UISwipeActionsConfiguration configurationWithActions:nativeEditActions]; } - (UIImage *)generateImage:(UIImage *)image withBackgroundColor:(UIColor *)bgColor @@ -1388,23 +1409,6 @@ - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleFo return UITableViewCellEditingStyleNone; } -- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath -{ - NSIndexPath *realIndexPath = [self pathForSearchPath:indexPath]; - - if (![self canEditRowAtIndexPath:realIndexPath]) { - return nil; - } - - id editValue = [self valueWithKey:@"editActions" atIndexPath:realIndexPath]; - - if (IS_NULL_OR_NIL(editValue)) { - return nil; - } - - return [self editActionsFromValue:editValue]; -} - - (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { NSIndexPath *realIndexPath = [self pathForSearchPath:indexPath]; diff --git a/iphone/Classes/TiUITableView.m b/iphone/Classes/TiUITableView.m index 31fba206cbb..bb417a072b6 100644 --- a/iphone/Classes/TiUITableView.m +++ b/iphone/Classes/TiUITableView.m @@ -2338,6 +2338,73 @@ - (void)tableViewDidEndMultipleSelectionInteraction:(UITableView *)tableView [self fireRowsSelectedEvent]; } +- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return [self swipeConfigurationForState:@"leading" withIndexPath:indexPath isDefault:NO]; +} + +- (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return [self swipeConfigurationForState:@"trailing" withIndexPath:indexPath isDefault:YES]; +} + +- (UISwipeActionsConfiguration *)swipeConfigurationForState:(NSString *)state withIndexPath:(NSIndexPath *)indexPath isDefault:(BOOL)isDefault +{ + TiUITableViewRowProxy *row = [self rowForIndexPath:indexPath]; + TiUITableViewSectionProxy *section = [self sectionForIndex:indexPath.section]; + + BOOL canEdit = [TiUtils boolValue:[row valueForKey:@"editable"] def:NO]; + + if (!canEdit) { + return nil; + } + + NSArray *editActionProxies = (NSArray *)[row valueForKey:@"editActions"]; + NSPredicate *predicate = [NSPredicate predicateWithFormat:isDefault ? @"state == nil OR state == %@" : @"state == %@", state]; + NSArray *editActions = [editActionProxies filteredArrayUsingPredicate:predicate]; + NSMutableArray *nativeEditActions = [NSMutableArray arrayWithCapacity:editActions.count]; + + if (IS_NULL_OR_NIL(editActions) || editActions.count == 0) { + return nil; + } + + for (id prop in editActions) { + NSString *title = [TiUtils stringValue:@"title" properties:prop]; + NSString *identifier = [TiUtils stringValue:@"identifier" properties:prop]; + UIContextualActionStyle style = [TiUtils intValue:@"style" properties:prop def:UIContextualActionStyleNormal]; + TiColor *color = [TiUtils colorValue:@"color" properties:prop]; + id image = [prop objectForKey:@"image"]; + + UIContextualAction *action = [UIContextualAction contextualActionWithStyle:style + title:title + handler:^(UIContextualAction *_Nonnull action, __kindof UIView *_Nonnull sourceView, void (^_Nonnull completionHandler)(BOOL)) { + completionHandler(YES); + + [[self proxy] fireEvent:@"editaction" + withObject:@{ + @"index" : @(indexPath.row), + @"row" : row, + @"section" : section, + @"action" : NULL_IF_NIL(action.title), + @"identifier" : NULL_IF_NIL(identifier) + }]; + }]; + + if (color != nil) { + action.backgroundColor = color.color; + } + + if (image != nil) { + NSURL *url = [TiUtils toURL:image proxy:(TiProxy *)self.proxy]; + action.image = [[ImageLoader sharedLoader] loadImmediateImage:url]; + } + + [nativeEditActions addObject:action]; + } + + return [UISwipeActionsConfiguration configurationWithActions:nativeEditActions]; +} + #pragma mark Collation - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)ourTableView diff --git a/iphone/Classes/TiUIiOSProxy.h b/iphone/Classes/TiUIiOSProxy.h index 0350a3dea11..ef246632734 100644 --- a/iphone/Classes/TiUIiOSProxy.h +++ b/iphone/Classes/TiUIiOSProxy.h @@ -67,7 +67,7 @@ @property (nonatomic, readonly) NSNumber *CLIP_MODE_ENABLED; @property (nonatomic, readonly) NSNumber *CLIP_MODE_DISABLED; -#ifdef USE_TI_UILISTVIEW +#if defined(USE_TI_UILISTVIEW) || defined(USE_TI_UITABLEVIEW) @property (nonatomic, readonly) NSNumber *ROW_ACTION_STYLE_DEFAULT; @property (nonatomic, readonly) NSNumber *ROW_ACTION_STYLE_DESTRUCTIVE; @property (nonatomic, readonly) NSNumber *ROW_ACTION_STYLE_NORMAL; diff --git a/iphone/Classes/TiUIiOSProxy.m b/iphone/Classes/TiUIiOSProxy.m index ceb94efd132..e06f49302e4 100644 --- a/iphone/Classes/TiUIiOSProxy.m +++ b/iphone/Classes/TiUIiOSProxy.m @@ -154,19 +154,10 @@ - (NSNumber *)CLIP_MODE_DISABLED return NUMINT(-1); } -#ifdef USE_TI_UILISTVIEW -- (NSNumber *)ROW_ACTION_STYLE_DEFAULT -{ - return @(UIContextualActionStyleNormal); -} -- (NSNumber *)ROW_ACTION_STYLE_DESTRUCTIVE -{ - return @(UIContextualActionStyleDestructive); -} -- (NSNumber *)ROW_ACTION_STYLE_NORMAL -{ - return @(UIContextualActionStyleNormal); -} +#if defined(USE_TI_UILISTVIEW) || defined(USE_TI_UITABLEVIEW) +MAKE_SYSTEM_PROP(ROW_ACTION_STYLE_DEFAULT, UIContextualActionStyleNormal); +MAKE_SYSTEM_PROP(ROW_ACTION_STYLE_DESTRUCTIVE, UIContextualActionStyleDestructive); +MAKE_SYSTEM_PROP(ROW_ACTION_STYLE_NORMAL, UIContextualActionStyleNormal); #endif #ifdef USE_TI_UIPICKER From 9f85623fa45dda478124a9b52794c77eb60bd5ac Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 25 Jun 2024 04:58:37 +0200 Subject: [PATCH 083/145] docs: add iOS WebViewConfiguration link (#14072) --- .../Titanium/UI/iOS/WebViewConfiguration.yml | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/apidoc/Titanium/UI/iOS/WebViewConfiguration.yml b/apidoc/Titanium/UI/iOS/WebViewConfiguration.yml index e7c2d29788f..7bf7efc2eb2 100644 --- a/apidoc/Titanium/UI/iOS/WebViewConfiguration.yml +++ b/apidoc/Titanium/UI/iOS/WebViewConfiguration.yml @@ -3,10 +3,12 @@ name: Titanium.UI.iOS.WebViewConfiguration summary: A collection of properties used to initialize a web view. description: | Use the method to create and use as a parameter of . - Using this you can determine how soon a webpage is rendered, how media playback is handled, the granularity of items that the + Using this you can determine how soon a webpage is rendered, how media playback is handled, the granularity of items that the user can select, and many other options. This property can only be set when creating the webview and will be ignored when set afterwards. See the example section "Usage of WebViewConfiguration with WebView in iOS". + Information on additional available preferences can be derived from the original WebKit sources: + [WKPreferences.mm](https://github.com/WebKit/webkit/blob/main/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm) extends: Titanium.Proxy platforms: [iphone, ipad, macos] since: {iphone: "8.0.0", ipad: "8.0.0", macos: "9.2.0"} @@ -30,7 +32,7 @@ properties: - name: suppressesIncrementalRendering summary: | - A Boolean value indicating whether the web view suppresses content rendering until it is fully + A Boolean value indicating whether the web view suppresses content rendering until it is fully loaded into memory. type: Boolean default: false @@ -39,8 +41,8 @@ properties: summary: | A Boolean value indicating whether HTML5 videos play inline or use the native full-screen controller. description: | - You must set this property to play inline video. Set this property to true to play videos inline. - Set this property to false to use the native full-screen controller. When adding a video element + You must set this property to play inline video. Set this property to true to play videos inline. + Set this property to false to use the native full-screen controller. When adding a video element to a HTML document on the iPhone, you must also include the playsinline attribute. The default value for iPhone is false and the default value for iPad is true. type: Boolean @@ -59,7 +61,7 @@ properties: - name: processPool summary: The process pool from which to obtain the Web Content process of view. description: | - When a web view is initialized, either a new web content process is created for it from the + When a web view is initialized, either a new web content process is created for it from the specified pool or an existing process in that pool is used. type: Titanium.UI.iOS.WebViewProcessPool platforms: [iphone, ipad, macos] @@ -77,7 +79,7 @@ properties: - name: javaScriptEnabled summary: A Boolean value indicating whether JavaScript is enabled. description: | - Setting this property to false disables JavaScripts that are loaded or executed by the web page. + Setting this property to false disables JavaScripts that are loaded or executed by the web page. This setting does not affect user scripts. type: Boolean default: true @@ -93,11 +95,11 @@ examples: Creates a configuration object and use it as property of webview. ``` js - var config = Ti.UI.iOS.createWebViewConfiguration({ + var config = Ti.UI.iOS.createWebViewConfiguration({ allowsPictureInPictureMediaPlayback: true, - preferences: { + preferences: { minimumFontSize : 20, - }, + }, }); var webView = Ti.UI.createWebView({ From ada10bb065851d4b8c55e1342b2a888a776ad381 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 25 Jun 2024 05:00:32 +0200 Subject: [PATCH 084/145] chore(android): prepare SDK for Android 34 (#13940) * chore(android): target API 34 * stay on target 33 --- android/gradle.properties | 2 +- .../ti/modules/titanium/android/AndroidModule.java | 9 ++++++++- .../ti/modules/titanium/network/TiNetworkListener.java | 10 +++++++++- .../java/org/appcelerator/titanium/TiApplication.java | 9 ++++++++- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index e5e7569a7a5..a5678e41a60 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -14,4 +14,4 @@ android.useAndroidX=true android.enableJetifier=false # remove if com.android.tools.build:gradle can be raised in /android/build.gradle -android.suppressUnsupportedCompileSdk=33 +android.suppressUnsupportedCompileSdk=33,34 diff --git a/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java b/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java index 947cc59cde4..fdc5c89431a 100644 --- a/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java +++ b/android/modules/android/src/java/ti/modules/titanium/android/AndroidModule.java @@ -756,7 +756,14 @@ public void registerBroadcastReceiver(BroadcastReceiverProxy receiverProxy, Obje filter.addAction(TiConvert.toString(action)); } - TiApplication.getInstance().registerReceiver(receiverProxy.getBroadcastReceiver(), filter); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU + && TiApplication.getInstance().getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.TIRAMISU) { + int receiverFlags = Context.RECEIVER_EXPORTED; + TiApplication.getInstance().registerReceiver( + receiverProxy.getBroadcastReceiver(), filter, receiverFlags); + } else { + TiApplication.getInstance().registerReceiver(receiverProxy.getBroadcastReceiver(), filter); + } if (this.registeredBroadcastReceiverProxyList.contains(receiverProxy) == false) { this.registeredBroadcastReceiverProxyList.add(receiverProxy); } diff --git a/android/modules/network/src/java/ti/modules/titanium/network/TiNetworkListener.java b/android/modules/network/src/java/ti/modules/titanium/network/TiNetworkListener.java index 9474800138d..88eec58c041 100644 --- a/android/modules/network/src/java/ti/modules/titanium/network/TiNetworkListener.java +++ b/android/modules/network/src/java/ti/modules/titanium/network/TiNetworkListener.java @@ -7,6 +7,7 @@ package ti.modules.titanium.network; import org.appcelerator.kroll.common.Log; +import org.appcelerator.titanium.TiApplication; import android.content.BroadcastReceiver; import android.content.Context; @@ -14,6 +15,7 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -110,7 +112,13 @@ public void attach(Context context) } else { throw new IllegalStateException("Context was not cleaned up from last release."); } - context.registerReceiver(receiver, connectivityIntentFilter); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU + && TiApplication.getInstance().getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.TIRAMISU) { + int receiverFlags = Context.RECEIVER_EXPORTED; + context.registerReceiver(receiver, connectivityIntentFilter, receiverFlags); + } else { + context.registerReceiver(receiver, connectivityIntentFilter); + } listening = true; } else { Log.w(TAG, "Connectivity listener is already attached"); diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java b/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java index eff4749d181..cbaef3950dd 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiApplication.java @@ -14,6 +14,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.res.Configuration; +import android.os.Build; import android.os.Looper; import android.os.SystemClock; import android.util.DisplayMetrics; @@ -961,7 +962,13 @@ public void onReceive(Context context, Intent intent) } }; - registerReceiver(localeReceiver, new IntentFilter(Intent.ACTION_LOCALE_CHANGED)); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU + && TiApplication.getInstance().getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.TIRAMISU) { + int receiverFlags = Context.RECEIVER_EXPORTED; + registerReceiver(localeReceiver, new IntentFilter(Intent.ACTION_LOCALE_CHANGED), receiverFlags); + } else { + registerReceiver(localeReceiver, new IntentFilter(Intent.ACTION_LOCALE_CHANGED)); + } } private void stopLocaleMonitor() From 07df6890e2a363f40e44757147287bf307e86808 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 25 Jun 2024 05:06:12 +0200 Subject: [PATCH 085/145] feat(android): track color of the Ti.UI.Switch (#14054) * feat(android): track color of the Ti.UI.Switch * docs * thumb colors * update * docs * doc update --- .../ti/modules/titanium/ui/SwitchProxy.java | 6 +- .../titanium/ui/widget/TiUISwitch.java | 68 ++++++++++++++++++- .../java/org/appcelerator/titanium/TiC.java | 3 + apidoc/Titanium/UI/Switch.yml | 32 +++++++-- 4 files changed, 101 insertions(+), 8 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java index a4389620c6a..3bdcac73f38 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java @@ -23,7 +23,11 @@ TiC.PROPERTY_COLOR, TiC.PROPERTY_FONT, TiC.PROPERTY_TEXT_ALIGN, - TiC.PROPERTY_VERTICAL_ALIGN + TiC.PROPERTY_TINT_COLOR, + TiC.PROPERTY_ON_TINT_COLOR, + TiC.PROPERTY_VERTICAL_ALIGN, + TiC.PROPERTY_ON_THUMB_COLOR, + TiC.PROPERTY_THUMB_COLOR }) public class SwitchProxy extends TiViewProxy { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUISwitch.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUISwitch.java index cd4f66f0482..da3bb4a1112 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUISwitch.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUISwitch.java @@ -7,13 +7,17 @@ package ti.modules.titanium.ui.widget; import android.app.Activity; +import android.content.res.ColorStateList; import android.view.View; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; + import androidx.appcompat.widget.AppCompatToggleButton; + import com.google.android.material.checkbox.MaterialCheckBox; import com.google.android.material.chip.Chip; import com.google.android.material.switchmaterial.SwitchMaterial; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; import org.appcelerator.kroll.common.Log; @@ -23,13 +27,14 @@ import org.appcelerator.titanium.util.TiConvert; import org.appcelerator.titanium.util.TiUIHelper; import org.appcelerator.titanium.view.TiUIView; + import ti.modules.titanium.ui.UIModule; public class TiUISwitch extends TiUIView implements OnCheckedChangeListener { private static final String TAG = "TiUISwitch"; - private View.OnLayoutChangeListener layoutListener; + private final View.OnLayoutChangeListener layoutListener; private boolean oldValue = false; public TiUISwitch(TiViewProxy proxy) @@ -37,7 +42,8 @@ public TiUISwitch(TiViewProxy proxy) super(proxy); Log.d(TAG, "Creating a switch", Log.DEBUG_MODE); - this.layoutListener = new View.OnLayoutChangeListener() { + this.layoutListener = new View.OnLayoutChangeListener() + { @Override public void onLayoutChange( View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) @@ -58,6 +64,62 @@ public void processProperties(KrollDict d) setStyle(TiConvert.toInt(d.get(TiC.PROPERTY_STYLE), UIModule.SWITCH_STYLE_SLIDER)); } + if (d.containsKeyAndNotNull(TiC.PROPERTY_THUMB_COLOR) + || d.containsKeyAndNotNull(TiC.PROPERTY_ON_THUMB_COLOR)) { + CompoundButton currentButton = (CompoundButton) getNativeView(); + if (currentButton instanceof SwitchMaterial) { + + int colActive = d.containsKeyAndNotNull(TiC.PROPERTY_ON_THUMB_COLOR) + ? TiConvert.toColor(d, TiC.PROPERTY_ON_THUMB_COLOR) + : TiConvert.toColor(d, TiC.PROPERTY_THUMB_COLOR); + int colNormal = d.containsKeyAndNotNull(TiC.PROPERTY_THUMB_COLOR) + ? TiConvert.toColor(d, TiC.PROPERTY_THUMB_COLOR) + : TiConvert.toColor(d, TiC.PROPERTY_ON_THUMB_COLOR); + + ColorStateList trackStates = new ColorStateList( + new int[][] { + new int[] { -android.R.attr.state_enabled }, + new int[] { android.R.attr.state_checked }, + new int[] {} + }, + new int[] { + colNormal, + colActive, + colNormal + } + ); + ((SwitchMaterial) currentButton).setThumbTintList(trackStates); + } + } + + if (d.containsKeyAndNotNull(TiC.PROPERTY_TINT_COLOR) + || d.containsKeyAndNotNull(TiC.PROPERTY_ON_TINT_COLOR)) { + CompoundButton currentButton = (CompoundButton) getNativeView(); + if (currentButton instanceof SwitchMaterial) { + + int colActive = d.containsKeyAndNotNull(TiC.PROPERTY_ON_TINT_COLOR) + ? TiConvert.toColor(d, TiC.PROPERTY_ON_TINT_COLOR) + : TiConvert.toColor(d, TiC.PROPERTY_TINT_COLOR); + int colNormal = d.containsKeyAndNotNull(TiC.PROPERTY_TINT_COLOR) + ? TiConvert.toColor(d, TiC.PROPERTY_TINT_COLOR) + : TiConvert.toColor(d, TiC.PROPERTY_ON_TINT_COLOR); + + ColorStateList trackStates = new ColorStateList( + new int[][] { + new int[] { -android.R.attr.state_enabled }, + new int[] { android.R.attr.state_checked }, + new int[] {} + }, + new int[] { + colNormal, + colActive, + colNormal + } + ); + ((SwitchMaterial) currentButton).setTrackTintList(trackStates); + } + } + if (d.containsKey(TiC.PROPERTY_VALUE)) { oldValue = TiConvert.toBoolean(d, TiC.PROPERTY_VALUE); } @@ -151,7 +213,7 @@ public void propertyChanged(String key, Object oldValue, Object newValue, KrollP } else { super.propertyChanged(key, oldValue, newValue, proxy); } - } + } @Override public void onCheckedChanged(CompoundButton btn, boolean value) diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index 58beebdde16..4f219b4c308 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -142,6 +142,8 @@ public class TiC public static final String EVENT_PROPERTY_TAB = "tab"; public static final String EVENT_PROPERTY_THUMB_OFFSET = "thumbOffset"; public static final String EVENT_PROPERTY_THUMB_SIZE = "thumbSize"; + public static final String PROPERTY_THUMB_COLOR = "thumbColor"; + public static final String PROPERTY_ON_THUMB_COLOR = "onThumbColor"; public static final String EVENT_PROPERTY_TYPE = "type"; public static final String EVENT_PROPERTY_VELOCITY = "velocity"; public static final String EVENT_PROPERTY_X = "x"; @@ -608,6 +610,7 @@ public class TiC public static final String PROPERTY_ON_RESTART = "onRestart"; public static final String PROPERTY_ON_PAUSE = "onPause"; public static final String PROPERTY_ON_STOP = "onStop"; + public static final String PROPERTY_ON_TINT_COLOR = "onTintColor"; public static final String PROPERTY_TLS_VERSION = "tlsVersion"; public static final String PROPERTY_ON_DESTROY = "onDestroy"; public static final String PROPERTY_ON_CREATE_WINDOW = "onCreateWindow"; diff --git a/apidoc/Titanium/UI/Switch.yml b/apidoc/Titanium/UI/Switch.yml index 326e54165f7..4ff5536acd5 100644 --- a/apidoc/Titanium/UI/Switch.yml +++ b/apidoc/Titanium/UI/Switch.yml @@ -118,17 +118,41 @@ properties: - name: tintColor summary: The color used to tint the outline of the switch when it is turned off. + description: | + The color used to tint the outline of the switch when it is turned off. + + Android: Track color of the Material Switch. type: [String, Titanium.UI.Color] default: undefined - platforms: [iphone, ipad, macos] - since: "3.3.0" + platforms: [android, iphone, ipad] + since: {android: 12.4.0, iphone: 3.3.0, ipad: 3.3.0} + + - name: onThumbColor + description: | + The color used to tint the thumb icon of the switch when it is turned on. + + Android: Active thumb color of the Material Switch. + type: [String, Titanium.UI.Color] + default: undefined + platforms: [android] + since: {android: 12.4.0} + + - name: thumbColor + description: | + The color used to tint the thumb icon of the switch when it is turned off. + + Android: Inactive thumb color of the Material Switch. + type: [String, Titanium.UI.Color] + default: undefined + platforms: [android] + since: {android: 12.4.0} - name: onTintColor summary: The color used to tint the appearance of the switch when it is turned on. type: [String, Titanium.UI.Color] default: undefined - platforms: [iphone, ipad, macos] - since: "3.3.0" + platforms: [android, iphone, ipad, macos] + since: {android: 12.4.0, iphone: 3.3.0, ipad: 3.3.0} - name: thumbTintColor summary: The color used to tint the appearance of the thumb. From ceda65eb73492c671b6dc74639dee072fa512439 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 25 Jun 2024 05:23:27 +0200 Subject: [PATCH 086/145] chore(android): new Android Studio settings xml (#14043) Co-authored-by: Chris Barber --- .../inspectionProfiles/Project_Default.xml | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/android/.idea/inspectionProfiles/Project_Default.xml b/android/.idea/inspectionProfiles/Project_Default.xml index 1eb788b1487..23c812cbcc9 100644 --- a/android/.idea/inspectionProfiles/Project_Default.xml +++ b/android/.idea/inspectionProfiles/Project_Default.xml @@ -10,7 +10,11 @@ - + + @@ -155,11 +159,21 @@ - - + + \ No newline at end of file From 420ccdceadff8658803e02bb6144e853c8767a20 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 25 Jun 2024 05:23:34 +0200 Subject: [PATCH 087/145] chore: fix webpack command name issue (#14067) --- cli/hooks/webpack.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cli/hooks/webpack.js b/cli/hooks/webpack.js index cd9c06a36a8..943e87c29d6 100644 --- a/cli/hooks/webpack.js +++ b/cli/hooks/webpack.js @@ -35,6 +35,9 @@ exports.init = (logger, config, cli) => { cli.on('cli:command-loaded', (hookData) => { const command = hookData.command; commandName = command.name; + if (typeof command.name === 'function') { + commandName = command.name(); + } }); cli.on('cli:post-validate', () => { From d1bbe8ac2d5fc8530858bcaa48b56d94b9c407e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 10 Jul 2024 10:33:14 +0200 Subject: [PATCH 088/145] =?UTF-8?q?fix(android):=20add=20missing=20?= =?UTF-8?q?=E2=80=9CCalendar.Event.remove=E2=80=9D=20method=20(#14076)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(android): add missing “Calendar.Event.remove” method * fix: remove eventId parameter, use inner ID --- .../ti/modules/titanium/calendar/EventProxy.java | 15 +++++++++++++++ apidoc/Titanium/Calendar/Event.yml | 11 ++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/android/modules/calendar/src/java/ti/modules/titanium/calendar/EventProxy.java b/android/modules/calendar/src/java/ti/modules/titanium/calendar/EventProxy.java index 7a8c8c9846c..9ad71100316 100644 --- a/android/modules/calendar/src/java/ti/modules/titanium/calendar/EventProxy.java +++ b/android/modules/calendar/src/java/ti/modules/titanium/calendar/EventProxy.java @@ -559,6 +559,21 @@ public void setExtendedProperty(String name, String value) contentResolver.insert(extPropsUri, values); } + @Kroll.method + public boolean remove() + { + ContentResolver contentResolver = TiApplication.getInstance().getContentResolver(); + + try { + Uri deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, TiConvert.toInt(id)); + contentResolver.delete(deleteUri, null, null); + } catch (IllegalArgumentException e) { + return false; + } + + return true; + } + @Override public String getApiName() { diff --git a/apidoc/Titanium/Calendar/Event.yml b/apidoc/Titanium/Calendar/Event.yml index 51d4831c44a..da4d8cbe140 100644 --- a/apidoc/Titanium/Calendar/Event.yml +++ b/apidoc/Titanium/Calendar/Event.yml @@ -72,7 +72,7 @@ methods: - name: save summary: Saves changes to an event permanently. description: | - This method raises an exception if it is passed an event from another event store. + This method raises an exception if it is passed an event from another calendar. When an event is saved, it is updated in the Calendar database. Any fields you did not modify are updated to reflect the most recent value in the database. If the @@ -94,20 +94,21 @@ methods: since: {android: "7.1.0", iphone: "3.1.0", ipad: "3.1.0"} - name: remove - summary: Removes an event from the event store. + summary: Removes an event from the calendar. description: | - This method raises an exception if it is passed an event from another event store. + This method raises an exception on iOS if an event from another calendar is used. returns: type: Boolean parameters: - name: span summary: | - The span to use. Indicates whether to remove future instances of the event in + iOS-only: The span to use. Indicates whether to remove future instances of the event in the case of a recurring event. type: Number constants: Titanium.Calendar.SPAN_* default: - platforms: [iphone, ipad, macos] + since: {android: "12.4.0", iphone: "3.1.0", ipad: "3.1.0", macos: "9.2.0"} + platforms: [android, iphone, ipad, macos] - name: refresh summary: Updates the event's data with the current information in the Calendar database. From d5cff3c32d33b2df2469af949c54c4bab1734676 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 10 Jul 2024 10:35:28 +0200 Subject: [PATCH 089/145] feat(android): optionBar color properties (#14066) * feat(android): optionBar color properties * remove unused states * docs --- .../titanium/ui/widget/TiUIOptionBar.java | 53 +++++++++++++++++++ apidoc/Titanium/UI/OptionBar.yml | 24 +++++++++ 2 files changed, 77 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIOptionBar.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIOptionBar.java index 729549b64ad..cc18e9b3e95 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIOptionBar.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIOptionBar.java @@ -7,6 +7,7 @@ package ti.modules.titanium.ui.widget; import android.content.Context; +import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; @@ -207,6 +208,58 @@ private void addButton(String title, String accessibilityLabel, Drawable imageDr MaterialButton button = new MaterialButton(context, null, attributeId); button.setEnabled(isEnabled); button.setText(title); + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_SELECTED_BACKGROUND_COLOR)) { + ColorStateList oldColors = button.getBackgroundTintList(); + int col = TiConvert.toColor((String) proxy.getProperty(TiC.PROPERTY_SELECTED_BACKGROUND_COLOR), context); + ColorStateList trackStates = new ColorStateList( + new int[][] { + new int[] { -android.R.attr.state_checked }, + new int[] { android.R.attr.state_checked }, + }, + new int[] { + oldColors.getColorForState(new int[] { -android.R.attr.state_checked }, R.attr.colorOnSurface), + col + } + ); + button.setBackgroundTintList(trackStates); + } + if (proxy.hasPropertyAndNotNull("selectedBorderColor")) { + ColorStateList oldColors = button.getStrokeColor(); + int col = TiConvert.toColor((String) proxy.getProperty("selectedBorderColor"), context); + ColorStateList trackStates = new ColorStateList( + new int[][] { + new int[] { -android.R.attr.state_checked }, + new int[] { android.R.attr.state_checked }, + }, + new int[] { + oldColors.getColorForState(new int[] { -android.R.attr.state_checked }, R.attr.colorOnSurface), + col + } + ); + button.setStrokeColor(trackStates); + } + if (proxy.hasPropertyAndNotNull("selectedTextColor") || proxy.hasPropertyAndNotNull(TiC.PROPERTY_COLOR)) { + int textCol = button.getCurrentHintTextColor(); + int selCol = button.getCurrentTextColor(); + + if (proxy.hasPropertyAndNotNull("selectedTextColor")) { + selCol = TiConvert.toColor((String) proxy.getProperty("selectedTextColor"), context); + } + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_COLOR)) { + textCol = TiConvert.toColor((String) proxy.getProperty(TiC.PROPERTY_COLOR), context); + } + ColorStateList trackStates = new ColorStateList( + new int[][] { + new int[] { -android.R.attr.state_checked }, + new int[] { android.R.attr.state_checked }, + }, + new int[] { + textCol, + selCol, + } + ); + button.setTextColor(trackStates); + } if ((accessibilityLabel != null) && !accessibilityLabel.isEmpty()) { button.setContentDescription(accessibilityLabel); } diff --git a/apidoc/Titanium/UI/OptionBar.yml b/apidoc/Titanium/UI/OptionBar.yml index 9c6fc680bf1..f96bbe19130 100644 --- a/apidoc/Titanium/UI/OptionBar.yml +++ b/apidoc/Titanium/UI/OptionBar.yml @@ -60,6 +60,30 @@ properties: default: horizontal availability: creation + - name: selectedBackgroundColor + summary: Background color of the selected button + type: [String, Titanium.UI.Color] + platforms: [android] + since: { android: "12.4.0"} + + - name: selectedTextColor + summary: Text color of the selected button + type: [String, Titanium.UI.Color] + platforms: [android] + since: { android: "12.4.0"} + + - name: selectedBorderColor + summary: Border color of the selected button + type: [String, Titanium.UI.Color] + platforms: [android] + since: { android: "12.4.0"} + + - name: color + summary: Text color of the unselected button + type: [String, Titanium.UI.Color] + platforms: [android] + since: { android: "12.4.0"} + examples: - title: Text-Only Buttons example: | From 52cab4293d6c9a0472428f4ed0d0fb7566ebb530 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 10 Jul 2024 18:27:53 +0200 Subject: [PATCH 090/145] chore: bump master to 12.5.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4b577831625..8e1c2c4b90d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "titanium-mobile", - "version": "12.4.0", + "version": "12.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "titanium-mobile", - "version": "12.4.0", + "version": "12.5.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 87fb7f8cfd5..7afa00d6aed 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "titanium-mobile", "description": "Titanium SDK", - "version": "12.4.0", + "version": "12.5.0", "moduleApiVersion": { "iphone": "2", "android": "4" From 7e370bb6e787a722840f2afed5962731d64c3eab Mon Sep 17 00:00:00 2001 From: hansemannn Date: Sat, 13 Jul 2024 00:06:32 +0000 Subject: [PATCH 091/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a509f65fbb..020044ccfa2 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldWillie Kwok ## Features From d999024678db60117762377bd6fec256acb46eb8 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Mon, 15 Jul 2024 00:06:24 +0000 Subject: [PATCH 092/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 020044ccfa2..1aeaff191fa 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierAvinash DalviJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldWillie Kwok +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldWillie Kwok ## Features From 7593940da3bd2772d09c9e4210cbede9dcf3bdf3 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 16 Jul 2024 16:29:31 +0200 Subject: [PATCH 093/145] fix(android): focus event in TabGroup (#14083) --- .../ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java index c1849cdc9de..ce97a31f23c 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java @@ -569,7 +569,7 @@ public void onTabSelected(TabProxy tabProxy) tabProxy.onSelectionChanged(true); tabProxy.onFocusChanged(true, focusEventData); - tabProxy.fireEvent(TiC.EVENT_SELECTED, focusEventData, false); + tabProxy.fireEvent(TiC.EVENT_SELECTED, focusEventData.clone(), false); } @Override From 595e698450737792db4b1570a2bf2938f261edcc Mon Sep 17 00:00:00 2001 From: Ewan Harris Date: Mon, 15 Jul 2024 21:57:44 +0100 Subject: [PATCH 094/145] chore: update ioslib to fix node-ios-device x64 issue --- package-lock.json | 74 +++++++++++++++++++++++++++++++++++------------ package.json | 2 +- 2 files changed, 56 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e1c2c4b90d..fd968703387 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,7 @@ "ejs": "3.1.9", "fields": "0.1.24", "fs-extra": "11.2.0", - "ioslib": "1.7.36", + "ioslib": "1.7.37", "liveview": "1.5.6", "lodash.merge": "4.6.2", "markdown": "0.5.0", @@ -2285,6 +2285,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", "dependencies": { "detect-libc": "^2.0.0", "https-proxy-agent": "^5.0.0", @@ -2305,6 +2306,7 @@ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -2318,6 +2320,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.2", @@ -2337,6 +2340,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -2352,6 +2356,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "are-we-there-yet": "^2.0.0", "console-control-strings": "^1.1.0", @@ -3744,7 +3749,8 @@ "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "license": "BSD-2-Clause" }, "node_modules/@yarnpkg/parsers": { "version": "3.0.0-rc.41", @@ -5192,7 +5198,8 @@ "node_modules/ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" }, "node_modules/clang-format": { "version": "1.6.0", @@ -6493,6 +6500,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -7590,6 +7598,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", "dependencies": { "micromatch": "^4.0.2" } @@ -8813,9 +8822,10 @@ } }, "node_modules/ioslib": { - "version": "1.7.36", - "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.36.tgz", - "integrity": "sha512-LxmVa7TrKPXOE2IWxlNyNASTonSLjizxfG1dO8wZwGWowng+9/YBeIbPcQxaFgT8GMGeSMkkK1Npi2XUl7iiVQ==", + "version": "1.7.37", + "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.37.tgz", + "integrity": "sha512-D4SrH3QocN2GBlzSBcv9V1WKpmcOVUk3F6rjHafWXtrAFs7ZrsPtyR0nA4t1ubqjOYwkTZLgMliEUrs5bpfqXQ==", + "license": "Apache-2.0", "dependencies": { "always-tail": "0.2.0", "async": "^3.2.4", @@ -8823,7 +8833,7 @@ "debug": "^4.3.4", "mkdirp": "0.5.1", "node-appc": "1.1.6", - "node-ios-device": "1.12.0" + "node-ios-device": "^1.12.1" }, "engines": { "node": ">=10.13" @@ -8982,6 +8992,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "license": "MIT", "dependencies": { "ci-info": "^2.0.0" }, @@ -9019,6 +9030,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9302,6 +9314,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -9799,6 +9812,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11" } @@ -11429,7 +11443,8 @@ "node_modules/nan": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", - "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==" + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.1", @@ -11694,10 +11709,11 @@ } }, "node_modules/node-ios-device": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.12.0.tgz", - "integrity": "sha512-ewGLYmcW1LbsTqs5UYmlLcm/52GCmGcuFTysWBqWnHPp88PfOh7uVm4zonb9r4MR/Nublt0vt0mNDIum0R71pw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.12.1.tgz", + "integrity": "sha512-qcCfQw5qXek1l4NDuKt19w4gCZK4Sra4AM2PXQrpW5NhhCCl0pGfDKknBNzB0UmVd+lRm5CF5Wvy8c2Nor2jEQ==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.10", "debug": "^4.3.4", @@ -11713,6 +11729,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/node-pre-gyp-init/-/node-pre-gyp-init-1.2.1.tgz", "integrity": "sha512-gbC2fERRmWbJFvj54f4yyiY/O6J1kkLrN7jkwRvzNmgMgPCufZLv76l2luzWjj+Ge0xQF6zDalZ6iIgzCHJ95Q==", + "license": "MIT", "dependencies": { "@mapbox/node-pre-gyp": "^1.0.1" } @@ -12383,6 +12400,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12476,6 +12494,7 @@ "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -12864,6 +12883,7 @@ "version": "6.5.1", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", + "license": "MIT", "dependencies": { "@yarnpkg/lockfile": "^1.1.0", "chalk": "^4.1.2", @@ -12892,6 +12912,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -12906,6 +12927,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12921,6 +12943,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -12931,12 +12954,14 @@ "node_modules/patch-package/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/patch-package/node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -12952,6 +12977,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -12967,6 +12993,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -12986,6 +13013,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -12994,6 +13022,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -13003,6 +13032,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -13014,6 +13044,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -13022,6 +13053,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -13033,6 +13065,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13041,6 +13074,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -13052,6 +13086,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -14543,6 +14578,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "license": "MIT", "engines": { "node": ">=6" } @@ -22690,9 +22726,9 @@ } }, "ioslib": { - "version": "1.7.36", - "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.36.tgz", - "integrity": "sha512-LxmVa7TrKPXOE2IWxlNyNASTonSLjizxfG1dO8wZwGWowng+9/YBeIbPcQxaFgT8GMGeSMkkK1Npi2XUl7iiVQ==", + "version": "1.7.37", + "resolved": "https://registry.npmjs.org/ioslib/-/ioslib-1.7.37.tgz", + "integrity": "sha512-D4SrH3QocN2GBlzSBcv9V1WKpmcOVUk3F6rjHafWXtrAFs7ZrsPtyR0nA4t1ubqjOYwkTZLgMliEUrs5bpfqXQ==", "requires": { "always-tail": "0.2.0", "async": "^3.2.4", @@ -22700,7 +22736,7 @@ "debug": "^4.3.4", "mkdirp": "0.5.1", "node-appc": "1.1.6", - "node-ios-device": "1.12.0" + "node-ios-device": "^1.12.1" }, "dependencies": { "@xmldom/xmldom": { @@ -24852,9 +24888,9 @@ } }, "node-ios-device": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.12.0.tgz", - "integrity": "sha512-ewGLYmcW1LbsTqs5UYmlLcm/52GCmGcuFTysWBqWnHPp88PfOh7uVm4zonb9r4MR/Nublt0vt0mNDIum0R71pw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/node-ios-device/-/node-ios-device-1.12.1.tgz", + "integrity": "sha512-qcCfQw5qXek1l4NDuKt19w4gCZK4Sra4AM2PXQrpW5NhhCCl0pGfDKknBNzB0UmVd+lRm5CF5Wvy8c2Nor2jEQ==", "requires": { "@mapbox/node-pre-gyp": "^1.0.10", "debug": "^4.3.4", diff --git a/package.json b/package.json index 7afa00d6aed..543a66416e7 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "ejs": "3.1.9", "fields": "0.1.24", "fs-extra": "11.2.0", - "ioslib": "1.7.36", + "ioslib": "1.7.37", "liveview": "1.5.6", "lodash.merge": "4.6.2", "markdown": "0.5.0", From 9388600a951db750e188eaca6c14b6e1683ffd7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Wed, 17 Jul 2024 20:20:41 +0200 Subject: [PATCH 095/145] feat: add 12.4.0.GA changelog # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8acc98e268b..ca98a09d798 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,132 @@ +# [12.4.0](https://github.com/tidev/titanium_mobile/compare/12_3_X...12.4.0) (2024-07-17) + +## About this release + +Titanium SDK 12.4.0 is a minor release of the SDK, adding new features and platform updates. + +## Community Credits + +* Hans Knöchel + * add 12.4.0 changelog ([874e5f2](https://github.com/tidev/titanium_mobile/commit/874e5f2a86a1a58f99f4de50378c824e5b67029f)) + * add missing “Calendar.Event.remove” method ([d1bbe8a](https://github.com/tidev/titanium_mobile/commit/d1bbe8ac2d5fc8530858bcaa48b56d94b9c407e4)) + * add swipe actions support for Ti.UI.TableView ([40808cd](https://github.com/tidev/titanium_mobile/commit/40808cd5ffed82abaeb7e7523100f901f336298f)) + * add iOS 17+ symbol effects ([84ccadb](https://github.com/tidev/titanium_mobile/commit/84ccadbdcbe9b800ebc08dbac8ae5eaeac36a7f8)) + * update changelog ([9f144c1](https://github.com/tidev/titanium_mobile/commit/9f144c12c28fe6ead59237759c53c40509f3d4cc)) + * bump master to 12.4.0 ([2f1212f](https://github.com/tidev/titanium_mobile/commit/2f1212fd9e46a4a8aeae0af7a850aaa7bff34e52)) + * address all whitespace-related linting issues part 2 ([8c92dc7](https://github.com/tidev/titanium_mobile/commit/8c92dc7521219efebad8943a5305348014bd32e4)) + * address all whitespace-related linting issues ([e2bf653](https://github.com/tidev/titanium_mobile/commit/e2bf653d406b772deeafb504a0b9f68e363cf3e5)) + * fix linting issues ([bf24bf2](https://github.com/tidev/titanium_mobile/commit/bf24bf26ae07ebda2e2d70c23de198bac6b2ba8e)) + * Revert "feat(ios): support multi-scene applications (#13941)" ([82203d7](https://github.com/tidev/titanium_mobile/commit/82203d782fd499a33723bf86b41e1019e50bc99d)) + * fix some open issues related to scenes ([a0a3aea](https://github.com/tidev/titanium_mobile/commit/a0a3aeaf666b864fbcb75e57f011a142dbae715c)) + * fix debug issues with scenes ([8bcd5c3](https://github.com/tidev/titanium_mobile/commit/8bcd5c31a8dc86415c231a6086c1d83bbb183565)) + * Revert "feat(ios): support multi-scene applications (#13941)" ([4a1d20f](https://github.com/tidev/titanium_mobile/commit/4a1d20f43c82296dd21bfd760fa63b65927e98fd)) + +* Michael Gangolf + * optionBar color properties ([d5cff3c](https://github.com/tidev/titanium_mobile/commit/d5cff3c32d33b2df2469af949c54c4bab1734676)) + * fix webpack command name issue ([420ccdc](https://github.com/tidev/titanium_mobile/commit/420ccdceadff8658803e02bb6144e853c8767a20)) + * new Android Studio settings xml ([ceda65e](https://github.com/tidev/titanium_mobile/commit/ceda65eb73492c671b6dc74639dee072fa512439)) + * track color of the Ti.UI.Switch ([07df689](https://github.com/tidev/titanium_mobile/commit/07df6890e2a363f40e44757147287bf307e86808)) + * prepare SDK for Android 34 ([ada10bb](https://github.com/tidev/titanium_mobile/commit/ada10bb065851d4b8c55e1342b2a888a776ad381)) + * add iOS WebViewConfiguration link ([9f85623](https://github.com/tidev/titanium_mobile/commit/9f85623fa45dda478124a9b52794c77eb60bd5ac)) + * ioslib update ([7b82317](https://github.com/tidev/titanium_mobile/commit/7b82317907a492b57c52059d8a648ad0e07fb834)) + * new event for empty TextFields ([29964cf](https://github.com/tidev/titanium_mobile/commit/29964cf5a6830948b802810a41e42230c3b1e820)) + * textAlignment for DatePicker ([afb253e](https://github.com/tidev/titanium_mobile/commit/afb253e697442cb6bafdb430a9d8d3539235d58e)) + * add source to webView fireEvent ([960d40c](https://github.com/tidev/titanium_mobile/commit/960d40cd153fc3ee9e0cad09e5171a7a65c62253)) + * remove some dead analytics code ([6926f0d](https://github.com/tidev/titanium_mobile/commit/6926f0d9bfc177fe74e43fa1242adc8f30972cae)) + * update ti.playservice to 18.3.0 ([dc180b9](https://github.com/tidev/titanium_mobile/commit/dc180b94f05aa810aa1f302958ee3f6b36ae69c4)) + * expose contentOffset getter in TableView/ListView ([1f75084](https://github.com/tidev/titanium_mobile/commit/1f7508484839ec20626f6c189e94068fca042f08)) + * ndk update ([a852835](https://github.com/tidev/titanium_mobile/commit/a852835f7612d9c0ab034872a0439461dddde488)) + * add moveToBackground method ([229ef10](https://github.com/tidev/titanium_mobile/commit/229ef10fcfba15ad3050af9266aca8f2c2012448)) + * videoPlayer speed property ([7b9a4e9](https://github.com/tidev/titanium_mobile/commit/7b9a4e92b2e26cc6d8816c1f7fbfda06316997b6)) + * bundle webp res files ([6552a2c](https://github.com/tidev/titanium_mobile/commit/6552a2ccb0c11d01a6bcf185f228dcac709b0453)) + * adaptive icons in default template ([2e0e2e5](https://github.com/tidev/titanium_mobile/commit/2e0e2e5dfa8a726561d2f15daad65a9fec7afa3a)) + * attributedString link example ([cb69378](https://github.com/tidev/titanium_mobile/commit/cb6937849970ac8417ea87f950b03467668672cd)) + * update TabbedBar Android properties ([f5dfa92](https://github.com/tidev/titanium_mobile/commit/f5dfa923fcf649a10e861251d87a073526af2896)) + * node-appc update ([644831f](https://github.com/tidev/titanium_mobile/commit/644831f18e6f35e987992da3f72e294e0d9649be)) + * create alloy project with spaces with --alloy ([c601e7e](https://github.com/tidev/titanium_mobile/commit/c601e7e7579b7b527cc2321b63c82232b169faf4)) + * improve accessibility text ([3171e14](https://github.com/tidev/titanium_mobile/commit/3171e140fd106afb3b42f09076b1cc0a0b86f895)) + * remove some deprecated classes ([e1f2dc1](https://github.com/tidev/titanium_mobile/commit/e1f2dc1e4b246c7156e31fd68a287ca04cc4b752)) + * raise android max sdk support ([eb87849](https://github.com/tidev/titanium_mobile/commit/eb87849b67b68205567247e20e30c7d43e8ea990)) + * add overrideUserInterfaceStyle to Picker ([0c93fa7](https://github.com/tidev/titanium_mobile/commit/0c93fa77aa911e92d3dfbae312e2884706414753)) + * fixing typos ([a298387](https://github.com/tidev/titanium_mobile/commit/a2983877b5a7d6c14bdfdc5426a82e2aca590074)) + * improve the ScrollableView clipView description ([940ca9e](https://github.com/tidev/titanium_mobile/commit/940ca9e959aad1010cc42c6196d9a21a92febc0b)) + * npm packages ([48afddf](https://github.com/tidev/titanium_mobile/commit/48afddf5652602ae2f8cc376d9a37156c828d9c1)) + * hide scrollbars in WebView ([6642ed1](https://github.com/tidev/titanium_mobile/commit/6642ed16ec984331cafa62658a887b33c6a9cd2f)) + * indent log correctly ([a7b145d](https://github.com/tidev/titanium_mobile/commit/a7b145d5668b661f903fdfe53b380bd35a82265a)) + * backgroundColor for RefreshControl ([4f78a79](https://github.com/tidev/titanium_mobile/commit/4f78a79cc51b9a90fa7eb2226e98fad471a6db8d)) + * defaultLang option in tiapp.xml ([07e9a6a](https://github.com/tidev/titanium_mobile/commit/07e9a6ac58a72178c35bda6fdf298860d7786885)) + * pass platform to tiappxml ([760ca45](https://github.com/tidev/titanium_mobile/commit/760ca45c9b63c0aa06940a36010d051b7bb2cbed)) + * try/catch around unlink snapshots ([115bbb2](https://github.com/tidev/titanium_mobile/commit/115bbb24214374228d06a299ce720e72661785cb)) + * update gradle ([e41650c](https://github.com/tidev/titanium_mobile/commit/e41650cd9d088435e8e9641ceae5a2802223a3d2)) + * add info about iOS foreground notifications ([4e5ca53](https://github.com/tidev/titanium_mobile/commit/4e5ca53bf58db474d968bbe1616fcca6d18b2b90)) + * link idleTimerDisabled and keepScreenOn ([bd5c5e7](https://github.com/tidev/titanium_mobile/commit/bd5c5e71d24b04691b510f96b1567da16a5b8283)) + * fix some doc errors ([cf14a9b](https://github.com/tidev/titanium_mobile/commit/cf14a9b4ed83cef111e80d87189cc3e89a906d11)) + * update ti.map ([5eb950c](https://github.com/tidev/titanium_mobile/commit/5eb950ce1c3392f26496a6c6317b5dea24eee9e4)) + +## Bug Fixes + +### Multiple platforms + +* address all whitespace-related linting issues ([e2bf653](https://github.com/tidev/titanium_mobile/commit/e2bf653d406b772deeafb504a0b9f68e363cf3e5)) +* address all whitespace-related linting issues part 2 ([8c92dc7](https://github.com/tidev/titanium_mobile/commit/8c92dc7521219efebad8943a5305348014bd32e4)) +* create alloy project with spaces with --alloy ([c601e7e](https://github.com/tidev/titanium_mobile/commit/c601e7e7579b7b527cc2321b63c82232b169faf4)) +* fix linting issues ([bf24bf2](https://github.com/tidev/titanium_mobile/commit/bf24bf26ae07ebda2e2d70c23de198bac6b2ba8e)) + +### Android platform + +* add missing “Calendar.Event.remove” method ([d1bbe8a](https://github.com/tidev/titanium_mobile/commit/d1bbe8ac2d5fc8530858bcaa48b56d94b9c407e4)) +* bundle webp res files ([6552a2c](https://github.com/tidev/titanium_mobile/commit/6552a2ccb0c11d01a6bcf185f228dcac709b0453)) +* remove some deprecated classes ([e1f2dc1](https://github.com/tidev/titanium_mobile/commit/e1f2dc1e4b246c7156e31fd68a287ca04cc4b752)) + +### iOS platform + +* fix debug issues with scenes ([8bcd5c3](https://github.com/tidev/titanium_mobile/commit/8bcd5c31a8dc86415c231a6086c1d83bbb183565)) +* fix some open issues related to scenes ([a0a3aea](https://github.com/tidev/titanium_mobile/commit/a0a3aeaf666b864fbcb75e57f011a142dbae715c)) + +## Features + +### Multiple platforms + +* add swipe actions support for Ti.UI.TableView ([40808cd](https://github.com/tidev/titanium_mobile/commit/40808cd5ffed82abaeb7e7523100f901f336298f)) + +### Android platform + +* adaptive icons in default template ([2e0e2e5](https://github.com/tidev/titanium_mobile/commit/2e0e2e5dfa8a726561d2f15daad65a9fec7afa3a)) +* add moveToBackground method ([229ef10](https://github.com/tidev/titanium_mobile/commit/229ef10fcfba15ad3050af9266aca8f2c2012448)) +* add source to webView fireEvent ([960d40c](https://github.com/tidev/titanium_mobile/commit/960d40cd153fc3ee9e0cad09e5171a7a65c62253)) +* defaultLang option in tiapp.xml ([07e9a6a](https://github.com/tidev/titanium_mobile/commit/07e9a6ac58a72178c35bda6fdf298860d7786885)) +* expose contentOffset getter in TableView/ListView ([1f75084](https://github.com/tidev/titanium_mobile/commit/1f7508484839ec20626f6c189e94068fca042f08)) +* hide scrollbars in WebView ([6642ed1](https://github.com/tidev/titanium_mobile/commit/6642ed16ec984331cafa62658a887b33c6a9cd2f)) +* improve accessibility text ([3171e14](https://github.com/tidev/titanium_mobile/commit/3171e140fd106afb3b42f09076b1cc0a0b86f895)) +* indent log correctly ([a7b145d](https://github.com/tidev/titanium_mobile/commit/a7b145d5668b661f903fdfe53b380bd35a82265a)) +* new event for empty TextFields ([29964cf](https://github.com/tidev/titanium_mobile/commit/29964cf5a6830948b802810a41e42230c3b1e820)) +* optionBar color properties ([d5cff3c](https://github.com/tidev/titanium_mobile/commit/d5cff3c32d33b2df2469af949c54c4bab1734676)) +* textAlignment for DatePicker ([afb253e](https://github.com/tidev/titanium_mobile/commit/afb253e697442cb6bafdb430a9d8d3539235d58e)) +* track color of the Ti.UI.Switch ([07df689](https://github.com/tidev/titanium_mobile/commit/07df6890e2a363f40e44757147287bf307e86808)) +* update gradle ([e41650c](https://github.com/tidev/titanium_mobile/commit/e41650cd9d088435e8e9641ceae5a2802223a3d2)) +* update ti.playservice to 18.3.0 ([dc180b9](https://github.com/tidev/titanium_mobile/commit/dc180b94f05aa810aa1f302958ee3f6b36ae69c4)) +* videoPlayer speed property ([7b9a4e9](https://github.com/tidev/titanium_mobile/commit/7b9a4e92b2e26cc6d8816c1f7fbfda06316997b6)) + +### iOS platform + +* add iOS 17+ symbol effects ([84ccadb](https://github.com/tidev/titanium_mobile/commit/84ccadbdcbe9b800ebc08dbac8ae5eaeac36a7f8)) +* add overrideUserInterfaceStyle to Picker ([0c93fa7](https://github.com/tidev/titanium_mobile/commit/0c93fa77aa911e92d3dfbae312e2884706414753)) +* backgroundColor for RefreshControl ([4f78a79](https://github.com/tidev/titanium_mobile/commit/4f78a79cc51b9a90fa7eb2226e98fad471a6db8d)) + +## SDK Module Versions + +| Module | Android version | iOS Version | +| ----------- | --------------- | ----------- | +| facebook | 12.1.0 | 14.0.0 | +| ti.map | 5.6.1 | 7.3.1 | +| ti.webdialog | 2.3.0 | 3.0.2 | +| ti.playservices | 18.3.0 | n/a | +| ti.identity | 3.1.0 | 5.0.0 | +| urlSession | n/a | 4.0.1 | +| ti.coremotion | n/a | 4.0.1 | +| ti.applesignin | n/a | 3.1.2 | +| hyperloop | 7.0.6 | 7.0.6 | + ## [12.3.1](https://github.com/tidev/titanium_mobile/compare/12_3_0_GA...12.3.1) (2024-06-12) ## About this release From 9eed7f9de52949510e27e8056eeec96c3a863677 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Mon, 12 Aug 2024 00:06:43 +0000 Subject: [PATCH 096/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1aeaff191fa..8a8daa39497 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldWillie Kwok +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould ## Features From f3e5a0bd90eb75dfa7ec0c5e6a4b4cc39ac4b95a Mon Sep 17 00:00:00 2001 From: Chris Barber Date: Thu, 15 Aug 2024 09:01:01 -0500 Subject: [PATCH 097/145] fix: sdk build on windows needs shell: true to run batch files (#14095) --- build/lib/android/index.js | 6 +++++- build/lib/docs.js | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build/lib/android/index.js b/build/lib/android/index.js index 5e6a731b2ba..7da8a8faa16 100644 --- a/build/lib/android/index.js +++ b/build/lib/android/index.js @@ -173,7 +173,11 @@ class Android { async function gradlew(args) { await new Promise((resolve, reject) => { - const childProcess = spawn(GRADLEW_FILE_PATH, args, { cwd: TITANIUM_ANDROID_PATH, stdio: 'inherit' }); + const childProcess = spawn(GRADLEW_FILE_PATH, args, { + cwd: TITANIUM_ANDROID_PATH, + shell: process.platform === 'win32', + stdio: 'inherit' + }); childProcess.on('error', reject); childProcess.on('exit', (exitCode) => { if (exitCode === 0) { diff --git a/build/lib/docs.js b/build/lib/docs.js index 6b10a836e11..67e054a4533 100644 --- a/build/lib/docs.js +++ b/build/lib/docs.js @@ -23,7 +23,10 @@ class Documentation { const outputFile = path.join(this.outputDir, filename); return new Promise((resolve, reject) => { - const prc = spawn(cmdPath, args, { cwd: DOC_DIR }); + const prc = spawn(cmdPath, args, { + cwd: DOC_DIR, + shell: process.platform === 'win32' + }); prc.stdout.on('data', data => console.log(data.toString().trim())); prc.stderr.on('data', data => console.error(data.toString().trim())); prc.on('close', code => { From b0e14c65fbd7447615fc92722014bf7bfa212584 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Fri, 16 Aug 2024 00:06:10 +0000 Subject: [PATCH 098/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a8daa39497..8f761235fa5 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould +Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldJoaquin Maroto ## Features From 017c0524dc1a76527a8ba342964ea881633492d5 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 15:08:15 +0200 Subject: [PATCH 099/145] fix(android): fix titleAttribute when it's not a creation parameter (#14090) --- .../src/java/org/appcelerator/titanium/proxy/TiWindowProxy.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/titanium/src/java/org/appcelerator/titanium/proxy/TiWindowProxy.java b/android/titanium/src/java/org/appcelerator/titanium/proxy/TiWindowProxy.java index a7546b6ab63..237924bbb95 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/proxy/TiWindowProxy.java +++ b/android/titanium/src/java/org/appcelerator/titanium/proxy/TiWindowProxy.java @@ -51,6 +51,7 @@ TiC.PROPERTY_ON_BACK, TiC.PROPERTY_TITLE, TiC.PROPERTY_TITLEID, + TiC.PROPERTY_TITLE_ATTRIBUTES, TiC.PROPERTY_WINDOW_SOFT_INPUT_MODE }) public abstract class TiWindowProxy extends TiViewProxy From 51be36662445ad4755438a7f1b511a837196df69 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 15:08:42 +0200 Subject: [PATCH 100/145] fix(android): keep Tab tintColor when changing icons (#14080) * fix(android): keep Tab tintColor when changing icons * Update TiUIBottomNavigationTabGroup.java --- .../ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java | 1 + .../titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java | 1 + 2 files changed, 2 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java index f63c4790757..1ead9f66615 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUIBottomNavigationTabGroup.java @@ -501,6 +501,7 @@ public void updateTabIcon(int index) final Drawable drawable = TiUIHelper.getResourceDrawable(tabProxy.getProperty(TiC.PROPERTY_ICON)); this.mBottomNavigationView.getMenu().getItem(index).setIcon(drawable); + updateIconTint(); } @Override diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java index 4023d321162..a4d35f234a3 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java @@ -361,6 +361,7 @@ public void updateTabIcon(int index) TabLayout.Tab tab = this.mTabLayout.getTabAt(index); tab.setIcon(TiUIHelper.getResourceDrawable(tabProxy.getProperty(TiC.PROPERTY_ICON))); scaleIconToFit(tab); + updateIconTint(); } @Override From 803bd04350df89f2197842d110ad3c0384a97c7f Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 15:09:19 +0200 Subject: [PATCH 101/145] fix(android): fix Actionbar backgroundImage doc and improve setter (#14044) --- .../appcelerator/titanium/proxy/ActionBarProxy.java | 12 ++++++++++++ apidoc/Titanium/Android/ActionBar.yml | 11 ++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java b/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java index 988e87c6746..3d29ce309e2 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java +++ b/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java @@ -15,6 +15,7 @@ import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.util.TiConvert; import org.appcelerator.titanium.util.TiUIHelper; +import org.appcelerator.titanium.view.TiDrawableReference; @SuppressWarnings("deprecation") @Kroll.proxy(propertyAccessors = { TiC.PROPERTY_ON_HOME_ICON_ITEM_SELECTED, TiC.PROPERTY_CUSTOM_VIEW }) @@ -102,6 +103,17 @@ public void setBackgroundImage(String url) actionBar.setDisplayShowTitleEnabled(showTitleEnabled); actionBar.setBackgroundDrawable(backgroundImage); + } else { + // fallback check with TiDrawableReference + TiDrawableReference source = TiDrawableReference.fromUrl(this, url); + if (source.getDrawable() != null) { + actionBar.setDisplayShowTitleEnabled(!showTitleEnabled); + actionBar.setDisplayShowTitleEnabled(showTitleEnabled); + actionBar.setBackgroundDrawable(source.getDrawable()); + } else { + // fail - show error + Log.e(TAG, "Image " + url + " not found"); + } } } diff --git a/apidoc/Titanium/Android/ActionBar.yml b/apidoc/Titanium/Android/ActionBar.yml index 2450257cbde..db9f36e9bb5 100644 --- a/apidoc/Titanium/Android/ActionBar.yml +++ b/apidoc/Titanium/Android/ActionBar.yml @@ -55,6 +55,15 @@ examples: ``` + + `app/controllers/index.js`: + ``` + function doMenuClick() {} + function openSettings() {} + function doSearch() {} + $.index.open(); + ``` + `app/styles/index.tss`: ``` "MenuItem": { @@ -85,7 +94,7 @@ examples: win.activity.onCreate = () => { const actionBar = win.activity.actionBar; if (actionBar) { - actionBar.backgroundImage = "/bg.png"; + actionBar.backgroundImage = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'bg.png').nativePath; actionBar.title = "New Title"; actionBar.onHomeIconItemSelected = () => { Ti.API.info("Home icon clicked!"); From 5fc81f08bdb3f9ba64d9cb4972848c8523f2d190 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 16:03:11 +0200 Subject: [PATCH 102/145] feat(android): set targetSDK to Android 34 (#14068) --- android/app/build.gradle | 2 +- android/titanium/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 22de0c84364..f9ee6f9cdb1 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -13,7 +13,7 @@ android { defaultConfig { applicationId 'com.titanium.test' minSdkVersion 21 - targetSdkVersion 33 + targetSdkVersion 34 versionCode 1 versionName '1.0' manifestPlaceholders = project.ext.tiManifestPlaceholders diff --git a/android/titanium/build.gradle b/android/titanium/build.gradle index d92e05cf820..4288d2e211b 100644 --- a/android/titanium/build.gradle +++ b/android/titanium/build.gradle @@ -44,7 +44,7 @@ android { compileSdkVersion 33 defaultConfig { minSdkVersion 21 - targetSdkVersion 33 + targetSdkVersion 34 versionName tiBuildVersionString versionCode tiBuildVersionCode buildConfigField('int', 'VERSION_CODE', tiBuildVersionCode.toString()) From 2e92f1ddd00b9610ff9a6fc14775545b7cdf089e Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 17:32:38 +0200 Subject: [PATCH 103/145] fix(android): fix tintColor and activeTintColor in a TabbedBar (#14088) * fix(android): fix tintColor and activeTintColor in a TabbedBar * apidocs * use method and add guards * more functions --------- Co-authored-by: Chris Barber --- .../titanium/ui/widget/TiUITabbedBar.java | 26 +++++++++++++++++-- apidoc/Titanium/UI/TabbedBar.yml | 8 +++++- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUITabbedBar.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUITabbedBar.java index 0486e21cd6e..8ca71d59e4b 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUITabbedBar.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUITabbedBar.java @@ -10,6 +10,7 @@ import android.content.Context; import android.content.res.Configuration; import android.graphics.Color; +import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.view.MenuItem; import androidx.annotation.ColorInt; @@ -133,9 +134,11 @@ protected void onLayout(boolean changed, int l, int t, int r, int b) // no selected color specified but a text color -> use that selectedTextColor = textColor; } - this.tabLayout.setTabTextColors(textColor, selectedTextColor); } + if (getProxy().hasPropertyAndNotNull(TiC.PROPERTY_ACTIVE_TINT_COLOR)) { + setTintColor(this.tabLayout.getTabAt(0), TiC.PROPERTY_ACTIVE_TINT_COLOR); + } setNativeView(this.tabLayout); } @@ -261,6 +264,10 @@ private void addItem(Object value) if (value instanceof Drawable) { tab.setIcon(((Drawable) value)); TiUITabLayoutTabGroup.scaleIconToFit(tab); + + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_TINT_COLOR)) { + setTintColor(tab, TiC.PROPERTY_TINT_COLOR); + } } else { tab.setText(value.toString()); } @@ -282,6 +289,14 @@ private void addItem(Object value) } } + private void setTintColor(TabLayout.Tab tab, String color) + { + if (tab != null && tab.getIcon() != null) { + tab.getIcon().setColorFilter(TiConvert.toColor(proxy.getProperty(color), + TiApplication.getAppCurrentActivity()), PorterDuff.Mode.SRC_IN); + } + } + // Handle switching styles after creation public void setNewStyle(int newStyle) { @@ -394,6 +409,10 @@ private void onTabIndexChangedTo(int index) // First, update the proxy's "index" property. proxy.setProperty(TiC.PROPERTY_INDEX, index); + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_ACTIVE_TINT_COLOR)) { + setTintColor(this.tabLayout.getTabAt(index), TiC.PROPERTY_ACTIVE_TINT_COLOR); + } + // Last, fire a "click" event. if (!skipClickEvent) { KrollDict data = new KrollDict(); @@ -406,7 +425,10 @@ private void onTabIndexChangedTo(int index) @Override public void onTabUnselected(TabLayout.Tab tab) { - // No override + // set old tint color again + if (proxy.hasPropertyAndNotNull(TiC.PROPERTY_TINT_COLOR)) { + setTintColor(tab, TiC.PROPERTY_TINT_COLOR); + } } @Override diff --git a/apidoc/Titanium/UI/TabbedBar.yml b/apidoc/Titanium/UI/TabbedBar.yml index 0e846c3b578..6857a5eda60 100644 --- a/apidoc/Titanium/UI/TabbedBar.yml +++ b/apidoc/Titanium/UI/TabbedBar.yml @@ -56,6 +56,12 @@ properties: availability: creation platforms: [iphone, ipad, android, macos] since: {iphone: "9.0.0", ipad: "9.0.0", android: "12.0.0"} + - name: activeTintColor + summary: Icon tint color of the selected tab + type: [ String, Titanium.UI.Color ] + availability: creation + platforms: [android] + since: {android: "12.5.0"} - name: style summary: Style of the tabbed bar. description: | @@ -66,7 +72,7 @@ properties: The `BAR` style specifies a more compact style and allows the bar's background color or gradient to show through. - + For Android use [Titanium.UI.TABS_STYLE_DEFAULT](Titanium.UI.TABS_STYLE_DEFAULT) or [Titanium.UI.TABS_STYLE_BOTTOM_NAVIGATION](Titanium.UI.TABS_STYLE_BOTTOM_NAVIGATION) and it is only supported in the creation dictionary of the proxy. From 8846f07955e0157ff134c122bd544f66c2fdb501 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 18:10:56 +0200 Subject: [PATCH 104/145] chore(android): update cmake, checkstyle (#13966) Co-authored-by: Chris Barber --- android/build.gradle | 2 +- .../titanium/contacts/PersonProxy.java | 37 ++-- .../titanium/media/VideoPlayerProxy.java | 52 ++--- .../modules/titanium/network/CookieProxy.java | 17 +- .../titanium/network/HTTPClientProxy.java | 36 ++-- .../titanium/ui/ActivityIndicatorProxy.java | 7 +- .../modules/titanium/ui/AlertDialogProxy.java | 8 +- .../modules/titanium/ui/AnimationProxy.java | 2 +- .../ti/modules/titanium/ui/ButtonProxy.java | 5 +- .../modules/titanium/ui/EmailDialogProxy.java | 38 ++-- .../modules/titanium/ui/ImageViewProxy.java | 16 +- .../ti/modules/titanium/ui/LabelProxy.java | 5 +- .../modules/titanium/ui/MaskedImageProxy.java | 4 +- .../titanium/ui/OptionDialogProxy.java | 6 +- .../titanium/ui/PickerColumnProxy.java | 14 +- .../ti/modules/titanium/ui/PickerProxy.java | 98 +++++----- .../modules/titanium/ui/ProgressBarProxy.java | 5 +- .../titanium/ui/RefreshControlProxy.java | 129 +++++++------ .../modules/titanium/ui/ScrollViewProxy.java | 22 ++- .../titanium/ui/ScrollableViewProxy.java | 41 ++-- .../modules/titanium/ui/SearchBarProxy.java | 11 +- .../ti/modules/titanium/ui/SliderProxy.java | 5 +- .../ti/modules/titanium/ui/SwitchProxy.java | 6 +- .../ti/modules/titanium/ui/TabGroupProxy.java | 50 +++-- .../ti/modules/titanium/ui/TextAreaProxy.java | 5 +- .../modules/titanium/ui/TextFieldProxy.java | 5 +- .../ti/modules/titanium/ui/TiDialogProxy.java | 9 +- .../ti/modules/titanium/ui/ToolbarProxy.java | 8 +- .../ti/modules/titanium/ui/WebViewProxy.java | 178 +++++++++--------- .../ti/modules/titanium/ui/WindowProxy.java | 100 +++++----- .../titanium/ui/android/CardViewProxy.java | 5 +- .../ui/android/ProgressIndicatorProxy.java | 5 +- .../titanium/ui/android/SearchViewProxy.java | 5 +- android/package.json | 4 +- android/runtime/v8/src/native/CMakeLists.txt | 2 +- android/titanium/build.gradle | 2 +- .../titanium/proxy/ActionBarProxy.java | 70 +++---- .../titanium/util/TiNinePatchHelper.java | 20 +- .../java/ti/modules/titanium/BufferProxy.java | 14 +- 39 files changed, 547 insertions(+), 501 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 580edafef28..319eec9c71a 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -29,7 +29,7 @@ allprojects { // Load plugin used to enforce our Java coding style guidelines. project.apply plugin: 'checkstyle' checkstyle { - toolVersion = '8.38' + toolVersion = '10.11.0' configFile file("${rootDir}/checkstyle.xml"); ignoreFailures false showViolations true diff --git a/android/modules/contacts/src/java/ti/modules/titanium/contacts/PersonProxy.java b/android/modules/contacts/src/java/ti/modules/titanium/contacts/PersonProxy.java index 5b21d6648f4..b681ce02485 100644 --- a/android/modules/contacts/src/java/ti/modules/titanium/contacts/PersonProxy.java +++ b/android/modules/contacts/src/java/ti/modules/titanium/contacts/PersonProxy.java @@ -7,9 +7,8 @@ package ti.modules.titanium.contacts; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; +import android.graphics.Bitmap; +import android.util.Log; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; @@ -17,8 +16,9 @@ import org.appcelerator.titanium.TiBlob; import org.appcelerator.titanium.TiC; -import android.graphics.Bitmap; -import android.util.Log; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; @Kroll.proxy(parentModule = ContactsModule.class, propertyAccessors = { @@ -44,18 +44,17 @@ TiC.PROPERTY_LASTPHONETIC, TiC.PROPERTY_JOBTITLE, TiC.PROPERTY_DEPARTMENT -}) + }) public class PersonProxy extends KrollProxy { private static final String TAG = "Person"; + // Contact Modifications + private final HashMap modified = new HashMap<>(); + protected boolean hasImage = false; private TiBlob image = null; private boolean imageFetched; // lazy load these bitmap images - protected boolean hasImage = false; private String fullName = ""; - // Contact Modifications - private final HashMap modified = new HashMap<>(); - public PersonProxy() { super(); @@ -189,15 +188,15 @@ public void onPropertyChanged(String name, Object value) || name.equals(TiC.PROPERTY_LASTNAME)) { modified.put(TiC.PROPERTY_NAME, true); } else if (name.equals(TiC.PROPERTY_BIRTHDAY) || name.equals(TiC.PROPERTY_ORGANIZATION) - || name.equals(TiC.PROPERTY_NOTE) || name.equals(TiC.PROPERTY_NICKNAME) - || name.equals(TiC.PROPERTY_PHONE) || name.equals(TiC.PROPERTY_ADDRESS) - || name.equals(TiC.PROPERTY_INSTANTMSG) || name.equals(TiC.PROPERTY_URL) - || name.equals(TiC.PROPERTY_EMAIL) || name.equals(TiC.PROPERTY_RELATED_NAMES) - || name.equals(TiC.PROPERTY_DATE) || name.equals(TiC.PROPERTY_KIND) - || name.equals(TiC.PROPERTY_PREFIX) || name.equals(TiC.PROPERTY_SUFFIX) - || name.equals(TiC.PROPERTY_FIRSTPHONETIC) || name.equals(TiC.PROPERTY_MIDDLEPHONETIC) - || name.equals(TiC.PROPERTY_LASTPHONETIC) || name.equals(TiC.PROPERTY_JOBTITLE) - || name.equals(TiC.PROPERTY_DEPARTMENT)) { + || name.equals(TiC.PROPERTY_NOTE) || name.equals(TiC.PROPERTY_NICKNAME) + || name.equals(TiC.PROPERTY_PHONE) || name.equals(TiC.PROPERTY_ADDRESS) + || name.equals(TiC.PROPERTY_INSTANTMSG) || name.equals(TiC.PROPERTY_URL) + || name.equals(TiC.PROPERTY_EMAIL) || name.equals(TiC.PROPERTY_RELATED_NAMES) + || name.equals(TiC.PROPERTY_DATE) || name.equals(TiC.PROPERTY_KIND) + || name.equals(TiC.PROPERTY_PREFIX) || name.equals(TiC.PROPERTY_SUFFIX) + || name.equals(TiC.PROPERTY_FIRSTPHONETIC) || name.equals(TiC.PROPERTY_MIDDLEPHONETIC) + || name.equals(TiC.PROPERTY_LASTPHONETIC) || name.equals(TiC.PROPERTY_JOBTITLE) + || name.equals(TiC.PROPERTY_DEPARTMENT)) { modified.put(name, true); } diff --git a/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java b/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java index f7fd67028c4..34185dcf79c 100644 --- a/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java +++ b/android/modules/media/src/java/ti/modules/titanium/media/VideoPlayerProxy.java @@ -6,7 +6,14 @@ */ package ti.modules.titanium.media; -import java.lang.ref.WeakReference; +import android.app.Activity; +import android.content.Intent; +import android.media.MediaPlayer; +import android.net.Uri; +import android.os.Handler; +import android.os.Message; +import android.os.Messenger; +import android.webkit.URLUtil; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollFunction; @@ -23,15 +30,9 @@ import org.appcelerator.titanium.view.TiCompositeLayout; import org.appcelerator.titanium.view.TiUIView; +import java.lang.ref.WeakReference; + import ti.modules.titanium.media.TiThumbnailRetriever.ThumbnailResponseHandler; -import android.app.Activity; -import android.content.Intent; -import android.media.MediaPlayer; -import android.net.Uri; -import android.os.Handler; -import android.os.Message; -import android.os.Messenger; -import android.webkit.URLUtil; @Kroll.proxy(creatableInModule = MediaModule.class, propertyAccessors = { @@ -43,14 +44,15 @@ TiC.PROPERTY_PLAYABLE_DURATION, TiC.PROPERTY_VOLUME, TiC.PROPERTY_SHOWS_CONTROLS, -}) + }) public class VideoPlayerProxy extends TiViewProxy implements TiLifecycle.OnLifecycleEvent { - private static final String TAG = "VideoPlayerProxy"; - + // The player doesn't automatically preserve its current location and seek back to + // there when being resumed. This internal property lets us track that. + public static final String PROPERTY_SEEK_TO_ON_RESUME = "__seek_to_on_resume__"; protected static final int CONTROL_MSG_ACTIVITY_AVAILABLE = 101; protected static final int CONTROL_MSG_CONFIG_CHANGED = 102; - + private static final String TAG = "VideoPlayerProxy"; private static final int MSG_FIRST_ID = TiViewProxy.MSG_LAST_ID + 1; private static final int MSG_PLAY = MSG_FIRST_ID + 101; private static final int MSG_STOP = MSG_FIRST_ID + 102; @@ -64,16 +66,10 @@ public class VideoPlayerProxy extends TiViewProxy implements TiLifecycle.OnLifec private static final int MSG_HIDE_MEDIA_CONTROLLER = MSG_FIRST_ID + 110; private static final int MSG_SET_VIEW_FROM_ACTIVITY = MSG_FIRST_ID + 111; private static final int MSG_REPEAT_CHANGE = MSG_FIRST_ID + 112; - // Keeping these out of TiC because I believe we'll stop supporting them // in favor of the documented property, which is "mediaControlStyle". private static final String PROPERTY_MOVIE_CONTROL_MODE = "movieControlMode"; private static final String PROPERTY_MOVIE_CONTROL_STYLE = "movieControlStyle"; - - // The player doesn't automatically preserve its current location and seek back to - // there when being resumed. This internal property lets us track that. - public static final String PROPERTY_SEEK_TO_ON_RESUME = "__seek_to_on_resume__"; - protected int mediaControlStyle = MediaModule.VIDEO_CONTROL_DEFAULT; protected int scalingMode = MediaModule.VIDEO_SCALING_RESIZE_ASPECT; private int loadState = MediaModule.VIDEO_LOAD_STATE_UNKNOWN; @@ -127,6 +123,7 @@ public void setActivity(Activity activity) * a TiUIVideoView so we have on common interface to the VideoView * and so we can handle child views in our standard way without any * extra code beyond this here. + * * @param layout The content view of the TiVideoActivity. It already contains a VideoView. */ // @@ -192,11 +189,13 @@ private void launchVideoActivity(KrollDict options) /** * Create handler used for communication from TiVideoActivity to this proxy. + * * @return Returns the handler used to send commands to the video view. */ private Handler createControlHandler() { - return new Handler(new Handler.Callback() { + return new Handler(new Handler.Callback() + { @Override public boolean handleMessage(Message msg) { @@ -613,7 +612,7 @@ public void onPlaybackReady(int duration) setProperty(TiC.PROPERTY_DURATION, duration); setProperty(TiC.PROPERTY_PLAYABLE_DURATION, duration); setProperty(TiC.PROPERTY_END_PLAYBACK_TIME, - duration); // Currently we're not doing anything else with this property in Android. + duration); // Currently we're not doing anything else with this property in Android. if (!hasProperty(TiC.PROPERTY_INITIAL_PLAYBACK_TIME)) { setProperty(TiC.PROPERTY_INITIAL_PLAYBACK_TIME, 0); } @@ -778,7 +777,7 @@ public void requestThumbnailImagesAtTimes(Object[] times, Object option, KrollFu Uri uri = Uri.parse(url); mTiThumbnailRetriever.setUri(uri); mTiThumbnailRetriever.getBitmap(TiConvert.toIntArray(times), TiConvert.toInt(option), - createThumbnailResponseHandler(callback)); + createThumbnailResponseHandler(callback)); } } @@ -795,14 +794,15 @@ public void cancelAllThumbnailImageRequests() * Convenience method for creating a response handler that is used when getting a * bitmap. * - * @param callback Javascript function that the response handler will invoke - * once the bitmap response is ready - * @return the bitmap response handler + * @param callback Javascript function that the response handler will invoke + * once the bitmap response is ready + * @return the bitmap response handler */ private ThumbnailResponseHandler createThumbnailResponseHandler(final KrollFunction callback) { final VideoPlayerProxy videoPlayerProxy = this; - return new ThumbnailResponseHandler() { + return new ThumbnailResponseHandler() + { @Override public void handleThumbnailResponse(KrollDict bitmapResponse) { diff --git a/android/modules/network/src/java/ti/modules/titanium/network/CookieProxy.java b/android/modules/network/src/java/ti/modules/titanium/network/CookieProxy.java index 1862fdc3d15..d7f8b4084b2 100644 --- a/android/modules/network/src/java/ti/modules/titanium/network/CookieProxy.java +++ b/android/modules/network/src/java/ti/modules/titanium/network/CookieProxy.java @@ -7,10 +7,6 @@ package ti.modules.titanium.network; -import java.net.HttpCookie; -import java.text.SimpleDateFormat; -import java.util.TimeZone; - import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; import org.appcelerator.kroll.annotations.Kroll; @@ -18,6 +14,10 @@ import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.util.TiConvert; +import java.net.HttpCookie; +import java.text.SimpleDateFormat; +import java.util.TimeZone; + @Kroll.proxy(creatableInModule = NetworkModule.class, propertyAccessors = { TiC.PROPERTY_VALUE, @@ -28,14 +28,15 @@ TiC.PROPERTY_SECURE, TiC.PROPERTY_HTTP_ONLY, TiC.PROPERTY_VERSION -}) + }) public class CookieProxy extends KrollProxy { + public static final SimpleDateFormat systemExpiryDateFormatter = + new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss 'GMT'"); private static final String TAG = "CookieProxy"; private static final TimeZone timezone = TimeZone.getTimeZone("GMT"); private static final SimpleDateFormat httpExpiryDateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); - public static final SimpleDateFormat systemExpiryDateFormatter = - new SimpleDateFormat("EEE, dd-MMM-yyyy HH:mm:ss 'GMT'"); + static { httpExpiryDateFormatter.setTimeZone(timezone); @@ -53,7 +54,7 @@ public CookieProxy(HttpCookie cookie) { super(); if (cookie instanceof HttpCookie) { - httpCookie = (HttpCookie) cookie; + httpCookie = cookie; setProperty(TiC.PROPERTY_NAME, httpCookie.getName()); setProperty(TiC.PROPERTY_VALUE, httpCookie.getValue()); setProperty(TiC.PROPERTY_DOMAIN, httpCookie.getDomain()); diff --git a/android/modules/network/src/java/ti/modules/titanium/network/HTTPClientProxy.java b/android/modules/network/src/java/ti/modules/titanium/network/HTTPClientProxy.java index cceab6df10d..397ccf9d2e6 100644 --- a/android/modules/network/src/java/ti/modules/titanium/network/HTTPClientProxy.java +++ b/android/modules/network/src/java/ti/modules/titanium/network/HTTPClientProxy.java @@ -6,7 +6,7 @@ */ package ti.modules.titanium.network; -import java.io.UnsupportedEncodingException; +import android.os.Build; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; @@ -15,8 +15,9 @@ import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.util.TiConvert; +import java.io.UnsupportedEncodingException; + import ti.modules.titanium.xml.DocumentProxy; -import android.os.Build; @Kroll.proxy(creatableInModule = NetworkModule.class, propertyAccessors = { @@ -26,7 +27,7 @@ TiC.PROPERTY_ONERROR, TiC.PROPERTY_ONREADYSTATECHANGE, TiC.PROPERTY_ONDATASTREAM -}) + }) public class HTTPClientProxy extends KrollProxy { @Kroll.constant @@ -39,9 +40,8 @@ public class HTTPClientProxy extends KrollProxy public static final int LOADING = TiHTTPClient.READY_STATE_LOADING; @Kroll.constant public static final int DONE = TiHTTPClient.READY_STATE_DONE; - - private static final String TAG = "TiHTTPClientProxy"; public static final String PROPERTY_SECURITY_MANAGER = "securityManager"; + private static final String TAG = "TiHTTPClientProxy"; private TiHTTPClient client; public HTTPClientProxy() @@ -82,7 +82,7 @@ public void handleCreationDict(KrollDict dict) } else { throw new IllegalArgumentException( "Invalid argument passed to securityManager property." - + " Does not conform to SecurityManagerProtocol"); + + " Does not conform to SecurityManagerProtocol"); } } } @@ -241,12 +241,6 @@ public void setValidatesSecureCertificate(boolean value) this.setProperty("validatesSecureCertificate", value); } - @Kroll.setProperty - public void setUsername(String value) - { - this.setProperty(TiC.PROPERTY_USERNAME, value); - } - @Kroll.getProperty public String getUsername() { @@ -257,9 +251,9 @@ public String getUsername() } @Kroll.setProperty - public void setPassword(String value) + public void setUsername(String value) { - this.setProperty(TiC.PROPERTY_PASSWORD, value); + this.setProperty(TiC.PROPERTY_USERNAME, value); } @Kroll.getProperty @@ -272,9 +266,9 @@ public String getPassword() } @Kroll.setProperty - public void setDomain(String value) + public void setPassword(String value) { - this.setProperty(TiC.PROPERTY_DOMAIN, value); + this.setProperty(TiC.PROPERTY_PASSWORD, value); } @Kroll.getProperty @@ -287,9 +281,9 @@ public String getDomain() } @Kroll.setProperty - public void setTlsVersion(int tlsVersion) + public void setDomain(String value) { - client.setTlsVersion(tlsVersion); + this.setProperty(TiC.PROPERTY_DOMAIN, value); } @Kroll.getProperty @@ -309,6 +303,12 @@ public int getTlsVersion() return tlsVersion; } + @Kroll.setProperty + public void setTlsVersion(int tlsVersion) + { + client.setTlsVersion(tlsVersion); + } + @Override public String getApiName() { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ActivityIndicatorProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ActivityIndicatorProxy.java index 44f8400ae49..379119eff3c 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ActivityIndicatorProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ActivityIndicatorProxy.java @@ -6,6 +6,9 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; +import android.os.Message; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; @@ -13,8 +16,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIActivityIndicator; -import android.app.Activity; -import android.os.Message; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -24,7 +25,7 @@ TiC.PROPERTY_FONT, TiC.PROPERTY_STYLE, TiC.PROPERTY_INDICATOR_COLOR -}) + }) @Kroll.dynamicApis(methods = { "hide", "show" }) public class ActivityIndicatorProxy extends TiViewProxy { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/AlertDialogProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/AlertDialogProxy.java index 8727e95e3b2..84c38669b9e 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/AlertDialogProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/AlertDialogProxy.java @@ -6,6 +6,8 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; @@ -14,7 +16,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIDialog; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -29,7 +30,7 @@ TiC.PROPERTY_OK, TiC.PROPERTY_OKID, TiC.PROPERTY_PERSISTENT -}) + }) public class AlertDialogProxy extends TiViewProxy { public AlertDialogProxy() @@ -63,7 +64,8 @@ protected void handleShow(KrollDict options) // dialog should occur above the "topmost" activity, so if activity // stack transitions are occurring, try to give them a chance to "settle" // before determining which Activity should be the context for the AlertDialog. - TiUIHelper.runUiDelayedIfBlock(new Runnable() { + TiUIHelper.runUiDelayedIfBlock(new Runnable() + { @Override public void run() { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/AnimationProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/AnimationProxy.java index cc80f1d48b0..73e03fe0c84 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/AnimationProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/AnimationProxy.java @@ -27,7 +27,7 @@ TiC.PROPERTY_WIDTH, TiC.PROPERTY_HEIGHT, TiC.PROPERTY_BACKGROUND_COLOR -}) + }) public class AnimationProxy extends TiAnimation { @Override diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ButtonProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ButtonProxy.java index 5b64456d758..7be131fa2c6 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ButtonProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ButtonProxy.java @@ -6,6 +6,8 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; @@ -13,7 +15,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIButton; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -30,7 +31,7 @@ TiC.PROPERTY_SHADOW_COLOR, TiC.PROPERTY_SHADOW_RADIUS, TiC.PROPERTY_TINT_COLOR -}) + }) public class ButtonProxy extends TiViewProxy { public ButtonProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/EmailDialogProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/EmailDialogProxy.java index 34e53a758af..4dab5f3abb2 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/EmailDialogProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/EmailDialogProxy.java @@ -6,17 +6,21 @@ */ package ti.modules.titanium.ui; -import java.io.File; -import java.util.ArrayList; -import java.util.List; +import android.app.Activity; +import android.content.ClipData; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.text.Html; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.kroll.common.Log; -import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.TiApplication; import org.appcelerator.titanium.TiApplication.ActivityTransitionListener; import org.appcelerator.titanium.TiBlob; +import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.io.TiBaseFile; import org.appcelerator.titanium.io.TiFile; import org.appcelerator.titanium.io.TiFileFactory; @@ -29,14 +33,11 @@ import org.appcelerator.titanium.util.TiMimeTypeHelper; import org.appcelerator.titanium.view.TiUIView; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + import ti.modules.titanium.filesystem.FileProxy; -import android.app.Activity; -import android.content.ClipData; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.net.Uri; -import android.text.Html; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -46,12 +47,10 @@ "messageBody", "subject", "toRecipients" -}) + }) public class EmailDialogProxy extends TiViewProxy implements ActivityTransitionListener { - private static final String TAG = "EmailDialogProxy"; - @Kroll.constant public static final int CANCELLED = 0; @Kroll.constant @@ -60,7 +59,7 @@ public class EmailDialogProxy extends TiViewProxy implements ActivityTransitionL public static final int SENT = 2; @Kroll.constant public static final int FAILED = 3; - + private static final String TAG = "EmailDialogProxy"; private ArrayList attachments; private String privateDataDirectoryPath = null; @@ -103,9 +102,9 @@ public void addAttachment(Object attachment) } else { // silently ignore? Log.d(TAG, - "addAttachment for type " + attachment.getClass().getName() - + " ignored. Only files and blobs may be attached.", - Log.DEBUG_MODE); + "addAttachment for type " + attachment.getClass().getName() + + " ignored. Only files and blobs may be attached.", + Log.DEBUG_MODE); } } @@ -149,7 +148,8 @@ public void doOpen() TiActivitySupport activitySupport = (TiActivitySupport) activity; final int code = activitySupport.getUniqueResultCode(); - activitySupport.launchActivityForResult(choosingIntent, code, new TiActivityResultHandler() { + activitySupport.launchActivityForResult(choosingIntent, code, new TiActivityResultHandler() + { @Override public void onResult(Activity activity, int requestCode, int resultCode, Intent data) { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ImageViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ImageViewProxy.java index b1546041d2d..41419f4a825 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ImageViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ImageViewProxy.java @@ -7,10 +7,12 @@ package ti.modules.titanium.ui; import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiBlob; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.view.TiUIView; + import ti.modules.titanium.media.MediaModule; import ti.modules.titanium.ui.widget.TiUIImageView; @@ -27,7 +29,7 @@ TiC.PROPERTY_IMAGES, TiC.PROPERTY_REPEAT_COUNT, TiC.PROPERTY_SCALING_MODE -}) + }) public class ImageViewProxy extends ViewProxy { public ImageViewProxy() @@ -108,18 +110,18 @@ public TiBlob toBlob() return getImageView().toBlob(); } - @Kroll.setProperty(runOnUiThread = true) - public void setTintColor(String color) - { - getImageView().setTintColor(color); - } - @Kroll.getProperty public int getTintColor() { return getImageView().getTintColor(); } + @Kroll.setProperty(runOnUiThread = true) + public void setTintColor(String color) + { + getImageView().setTintColor(color); + } + @Override public String getApiName() { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java index 61e2ab2d739..a2cb6669b01 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/LabelProxy.java @@ -6,6 +6,8 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; @@ -13,7 +15,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUILabel; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -38,7 +39,7 @@ TiC.PROPERTY_MINIMUM_FONT_SIZE, TiC.PROPERTY_BREAK_STRATEGY, TiC.PROPERTY_HYPHENATION_FREQUENCY -}) + }) public class LabelProxy extends TiViewProxy { private static final String TAG = "LabelProxy"; diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/MaskedImageProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/MaskedImageProxy.java index 1194e53aef8..40600c13a93 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/MaskedImageProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/MaskedImageProxy.java @@ -7,9 +7,11 @@ package ti.modules.titanium.ui; import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.view.TiUIView; + import ti.modules.titanium.ui.widget.TiUIMaskedImage; @Kroll.proxy(creatableInModule = UIModule.class, @@ -19,7 +21,7 @@ TiC.PROPERTY_MODE, TiC.PROPERTY_TINT, TiC.PROPERTY_TINT_COLOR -}) + }) public class MaskedImageProxy extends ViewProxy { public MaskedImageProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/OptionDialogProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/OptionDialogProxy.java index 02dba5586cb..da9391fd199 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/OptionDialogProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/OptionDialogProxy.java @@ -6,13 +6,15 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIDialog; -import android.app.Activity; + @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_ANDROID_VIEW, @@ -22,7 +24,7 @@ TiC.PROPERTY_TITLE, TiC.PROPERTY_TITLEID, TiC.PROPERTY_PERSISTENT -}) + }) public class OptionDialogProxy extends TiDialogProxy { public OptionDialogProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/PickerColumnProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/PickerColumnProxy.java index a0333188283..df6f2bd18f0 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/PickerColumnProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/PickerColumnProxy.java @@ -7,22 +7,20 @@ package ti.modules.titanium.ui; import android.util.Log; -import java.util.ArrayList; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; +import java.util.ArrayList; + @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_WIDTH, -}) + }) public class PickerColumnProxy extends KrollProxy implements PickerRowProxy.OnChangedListener { - public interface OnChangedListener { - void onChanged(PickerColumnProxy proxy); - } - private static final String TAG = "PickerColumnProxy"; private final ArrayList rowList = new ArrayList<>(); private final ArrayList listeners = new ArrayList<>(); @@ -222,4 +220,8 @@ public String getApiName() { return "Ti.UI.PickerColumn"; } + + public interface OnChangedListener { + void onChanged(PickerColumnProxy proxy); + } } diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/PickerProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/PickerProxy.java index 7bbaaca3649..d2536898cfc 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/PickerProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/PickerProxy.java @@ -6,31 +6,6 @@ */ package ti.modules.titanium.ui; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.TimeZone; -import java.util.concurrent.atomic.AtomicInteger; - -import org.appcelerator.kroll.KrollDict; -import org.appcelerator.kroll.KrollFunction; -import org.appcelerator.kroll.annotations.Kroll; -import org.appcelerator.titanium.R; -import org.appcelerator.titanium.TiApplication; -import org.appcelerator.titanium.TiC; -import org.appcelerator.titanium.TiDimension; -import org.appcelerator.titanium.proxy.TiViewProxy; -import org.appcelerator.titanium.util.TiConvert; -import org.appcelerator.titanium.util.TiUIHelper; -import org.appcelerator.titanium.view.TiUIView; - -import ti.modules.titanium.ui.widget.picker.TiUIDatePicker; -import ti.modules.titanium.ui.widget.picker.TiUIPlainDropDownPicker; -import ti.modules.titanium.ui.widget.picker.TiUIPlainPicker; -import ti.modules.titanium.ui.widget.picker.TiUIPlainSpinnerPicker; -import ti.modules.titanium.ui.widget.picker.TiUITimePicker; - import android.annotation.SuppressLint; import android.app.Activity; import android.graphics.Color; @@ -56,6 +31,31 @@ import com.google.android.material.timepicker.MaterialTimePicker; import com.google.android.material.timepicker.TimeFormat; +import org.appcelerator.kroll.KrollDict; +import org.appcelerator.kroll.KrollFunction; +import org.appcelerator.kroll.annotations.Kroll; +import org.appcelerator.titanium.R; +import org.appcelerator.titanium.TiApplication; +import org.appcelerator.titanium.TiC; +import org.appcelerator.titanium.TiDimension; +import org.appcelerator.titanium.proxy.TiViewProxy; +import org.appcelerator.titanium.util.TiConvert; +import org.appcelerator.titanium.util.TiUIHelper; +import org.appcelerator.titanium.view.TiUIView; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.TimeZone; +import java.util.concurrent.atomic.AtomicInteger; + +import ti.modules.titanium.ui.widget.picker.TiUIDatePicker; +import ti.modules.titanium.ui.widget.picker.TiUIPlainDropDownPicker; +import ti.modules.titanium.ui.widget.picker.TiUIPlainPicker; +import ti.modules.titanium.ui.widget.picker.TiUIPlainSpinnerPicker; +import ti.modules.titanium.ui.widget.picker.TiUITimePicker; + @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_CALENDAR_VIEW_SHOWN, @@ -66,13 +66,13 @@ TiC.PROPERTY_MAX_DATE, TiC.PROPERTY_SELECTION_OPENS, TiC.PROPERTY_VALUE -}) + }) public class PickerProxy extends TiViewProxy implements PickerColumnProxy.OnChangedListener { private static final String TAG = "PickerProxy"; - private int type = UIModule.PICKER_TYPE_PLAIN; private final ArrayList columnList = new ArrayList<>(); private final ArrayList selectedRows = new ArrayList<>(); + private int type = UIModule.PICKER_TYPE_PLAIN; private boolean useSpinner = false; private boolean canFireColumnEvents = true; @@ -83,6 +83,26 @@ public PickerProxy() defaultValues.put(TiC.PROPERTY_DATE_PICKER_STYLE, UIModule.DATE_PICKER_STYLE_AUTOMATIC); } + /** + * Trim hour, minute, second and millisecond from the date + * + * @param inDate input date + * @return return the trimmed date + */ + private static Date createDateWithoutTime(Date inDate) + { + if (inDate == null) { + return null; + } + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); + cal.setTime(inDate); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return cal.getTime(); + } + @Override public void handleCreationDict(KrollDict dict) { @@ -187,17 +207,20 @@ public TextInputLayout createTextInputLayout() editText.setSingleLine(); editText.setMaxLines(1); editText.setGravity(Gravity.CENTER_VERTICAL | Gravity.START); - editText.setKeyListener(new BaseKeyListener() { + editText.setKeyListener(new BaseKeyListener() + { @Override public int getInputType() { return InputType.TYPE_NULL; } + @Override public boolean backspace(View view, Editable content, int keyCode, KeyEvent event) { return false; } + @Override public boolean forwardDelete(View view, Editable content, int keyCode, KeyEvent event) { @@ -635,25 +658,6 @@ public void showDatePickerDialog(Object[] args) picker.show(appCompatActivity.getSupportFragmentManager(), picker.toString()); } - /** - * Trim hour, minute, second and millisecond from the date - * @param inDate input date - * @return return the trimmed date - */ - private static Date createDateWithoutTime(Date inDate) - { - if (inDate == null) { - return null; - } - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); - cal.setTime(inDate); - cal.set(Calendar.HOUR_OF_DAY, 0); - cal.set(Calendar.MINUTE, 0); - cal.set(Calendar.SECOND, 0); - cal.set(Calendar.MILLISECOND, 0); - return cal.getTime(); - } - // This is meant to be a kind of "static" method, in the sense that // it doesn't use any state except for context. It's a quick hit way // of getting a date dialog up, in other words. diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ProgressBarProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ProgressBarProxy.java index aeaaed67488..b6b0a5f4346 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ProgressBarProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ProgressBarProxy.java @@ -6,13 +6,14 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIProgressBar; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -24,7 +25,7 @@ TiC.PROPERTY_COLOR, TiC.PROPERTY_TINT_COLOR, TiC.PROPERTY_TRACK_TINT_COLOR, -}) + }) public class ProgressBarProxy extends TiViewProxy { public ProgressBarProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/RefreshControlProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/RefreshControlProxy.java index 67a5141eb77..f4a8fd62783 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/RefreshControlProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/RefreshControlProxy.java @@ -7,23 +7,28 @@ package ti.modules.titanium.ui; import android.graphics.Color; -import java.util.HashSet; -import org.appcelerator.kroll.annotations.Kroll; -import org.appcelerator.kroll.common.Log; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollProxy; +import org.appcelerator.kroll.annotations.Kroll; +import org.appcelerator.kroll.common.Log; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.util.TiColorHelper; + +import java.util.HashSet; + import ti.modules.titanium.ui.widget.TiSwipeRefreshLayout; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_TINT_COLOR, TiC.PROPERTY_TITLE, -}) + }) public class RefreshControlProxy extends KrollProxy { - /** The default Android log tag name to be used by this class. */ + /** + * The default Android log tag name to be used by this class. + */ private static final String TAG = "RefreshControlProxy"; /** @@ -39,7 +44,9 @@ public class RefreshControlProxy extends KrollProxy */ private static final HashSet assignedControls = new HashSet<>(); - /** Color integer value to be applied to the refresh layout's progress indicator. */ + /** + * Color integer value to be applied to the refresh layout's progress indicator. + */ private int tintColor = DEFAULT_TINT_COLOR; /** @@ -48,14 +55,55 @@ public class RefreshControlProxy extends KrollProxy */ private TiSwipeRefreshLayout swipeRefreshLayout; - /** Creates a new Titanium "RefreshControl" proxy binding. */ + /** + * Creates a new Titanium "RefreshControl" proxy binding. + */ public RefreshControlProxy() { super(); } + /** + * Unassigns the given view from a RefreshControlProxy instance that was once assigned to + * it via the assignTo() method. A view is expected to call this method when removed from the + * window or to disable pull-down refresh support. + * + * @param view The view to be unassigned from a refresh control, if currently assigned. Can be null. + */ + public static void unassignFrom(TiSwipeRefreshLayout view) + { + // Validate argument. + if (view == null) { + return; + } + + // Attempt to find a refresh control that is currently assigned to the given view. + RefreshControlProxy proxy = null; + for (RefreshControlProxy nextProxy : RefreshControlProxy.assignedControls) { + if ((nextProxy != null) && (nextProxy.swipeRefreshLayout == view)) { + proxy = nextProxy; + break; + } + } + if (proxy == null) { + return; + } + + // Remove the refresh event listener. + proxy.swipeRefreshLayout.setOnRefreshListener(null); + + // Disable pull-down refresh support. + proxy.endRefreshing(); + proxy.swipeRefreshLayout.setSwipeRefreshEnabled(false); + + // Unassign the view from the refresh control. + RefreshControlProxy.assignedControls.remove(proxy); + proxy.swipeRefreshLayout = null; + } + /** * Fetches the JavaScript type name of this proxy object. + * * @return Returns the unique type name of this proxy object. */ @Override @@ -69,6 +117,7 @@ public String getApiName() *

* Expected to be called on the runtime thread when the * JavaScript Ti.UI.createRefreshControl() function has been invoked. + * * @param properties Dictionary of property settings. */ @Override @@ -94,7 +143,8 @@ public void handleCreationDict(KrollDict properties) /** * Called when a single property setting has been changed. * Expected to be called on the JavaScript runtime thread. - * @param name The unique name of the property that was changed. + * + * @param name The unique name of the property that was changed. * @param value The property new value. Can be null. */ @Override @@ -116,9 +166,9 @@ public void onPropertyChanged(String name, Object value) /** * Stores the given tint color value to be applied to the refresh progress indicator. - * @param colorName - * The color value to be applied. Expected to be a string such as "red", "blue", "#00FF00", etc. - * Can be null, in which case, the progress indicator will revert back to its default color. + * + * @param colorName The color value to be applied. Expected to be a string such as "red", "blue", "#00FF00", etc. + * Can be null, in which case, the progress indicator will revert back to its default color. */ private void onTintColorChanged(Object colorName) { @@ -141,7 +191,9 @@ private void onTintColorChanged(Object colorName) this.swipeRefreshLayout.setColorSchemeColors(tintColor); } - /** Displays the refresh progress indicator if a SwipeRefreshLayout is currently assigned. */ + /** + * Displays the refresh progress indicator if a SwipeRefreshLayout is currently assigned. + */ @Kroll.method public void beginRefreshing() { @@ -162,7 +214,9 @@ public void beginRefreshing() fireEvent(TiC.EVENT_REFRESH_START, null); } - /** Hides the refresh progress indicator if a SwipeRefreshLayout is currently assigned. */ + /** + * Hides the refresh progress indicator if a SwipeRefreshLayout is currently assigned. + */ @Kroll.method public void endRefreshing() { @@ -195,10 +249,10 @@ public void endRefreshing() *

* If this refresh control is currently assigned to another view, then it will be automatically * unassigned from the previous view before being assigned the given view. - * @param view - * The view to be assigned to this refresh control. - *

- * Can be null, in which case, this method will do nothing. + * + * @param view The view to be assigned to this refresh control. + *

+ * Can be null, in which case, this method will do nothing. */ public void assignTo(TiSwipeRefreshLayout view) { @@ -222,7 +276,8 @@ public void assignTo(TiSwipeRefreshLayout view) // Set up the given view for pull-down refresh support. view.setColorSchemeColors(this.tintColor); view.setSwipeRefreshEnabled(true); - view.setOnRefreshListener(new TiSwipeRefreshLayout.OnRefreshListener() { + view.setOnRefreshListener(new TiSwipeRefreshLayout.OnRefreshListener() + { @Override public void onRefresh() { @@ -232,42 +287,4 @@ public void onRefresh() } }); } - - /** - * Unassigns the given view from a RefreshControlProxy instance that was once assigned to - * it via the assignTo() method. A view is expected to call this method when removed from the - * window or to disable pull-down refresh support. - * @param view - * The view to be unassigned from a refresh control, if currently assigned. Can be null. - */ - public static void unassignFrom(TiSwipeRefreshLayout view) - { - // Validate argument. - if (view == null) { - return; - } - - // Attempt to find a refresh control that is currently assigned to the given view. - RefreshControlProxy proxy = null; - for (RefreshControlProxy nextProxy : RefreshControlProxy.assignedControls) { - if ((nextProxy != null) && (nextProxy.swipeRefreshLayout == view)) { - proxy = nextProxy; - break; - } - } - if (proxy == null) { - return; - } - - // Remove the refresh event listener. - proxy.swipeRefreshLayout.setOnRefreshListener(null); - - // Disable pull-down refresh support. - proxy.endRefreshing(); - proxy.swipeRefreshLayout.setSwipeRefreshEnabled(false); - - // Unassign the view from the refresh control. - RefreshControlProxy.assignedControls.remove(proxy); - proxy.swipeRefreshLayout = null; - } } diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollViewProxy.java index d8a48cd4f0b..81ee8644f2d 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollViewProxy.java @@ -6,17 +6,19 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiViewProxy; -import org.appcelerator.titanium.view.TiUIView; import org.appcelerator.titanium.util.TiConvert; +import org.appcelerator.titanium.view.TiUIView; -import ti.modules.titanium.ui.widget.TiUIScrollView; -import android.app.Activity; import java.util.HashMap; +import ti.modules.titanium.ui.widget.TiUIScrollView; + @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_CONTENT_HEIGHT, @@ -28,7 +30,7 @@ TiC.PROPERTY_CAN_CANCEL_EVENTS, TiC.PROPERTY_OVER_SCROLL_MODE, TiC.PROPERTY_REFRESH_CONTROL -}) + }) public class ScrollViewProxy extends TiViewProxy { private static final int MSG_FIRST_ID = TiViewProxy.MSG_LAST_ID + 1; @@ -65,18 +67,18 @@ public void scrollTo(int x, int y, @Kroll.argument(optional = true) HashMap args handleScrollTo(x, y, animated); } - @Kroll.setProperty - public void setScrollingEnabled(Object enabled) - { - getScrollView().setScrollingEnabled(enabled); - } - @Kroll.getProperty public boolean getScrollingEnabled() { return getScrollView().getScrollingEnabled(); } + @Kroll.setProperty + public void setScrollingEnabled(Object enabled) + { + getScrollView().setScrollingEnabled(enabled); + } + @Kroll.method public void scrollToBottom() { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollableViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollableViewProxy.java index 0f0ab6a1925..b3ab5c08940 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollableViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ScrollableViewProxy.java @@ -6,9 +6,8 @@ */ package ti.modules.titanium.ui; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; +import android.app.Activity; +import android.os.Message; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; @@ -17,9 +16,11 @@ import org.appcelerator.titanium.util.TiConvert; import org.appcelerator.titanium.view.TiUIView; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + import ti.modules.titanium.ui.widget.TiUIScrollableView; -import android.app.Activity; -import android.os.Message; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -28,11 +29,11 @@ TiC.PROPERTY_PADDING, TiC.PROPERTY_SHOW_PAGING_CONTROL, TiC.PROPERTY_OVER_SCROLL_MODE -}) + }) public class ScrollableViewProxy extends TiViewProxy { + public static final int MIN_CACHE_SIZE = 3; private static final String TAG = "TiScrollableView"; - private static final int MSG_FIRST_ID = TiViewProxy.MSG_LAST_ID + 1; public static final int MSG_HIDE_PAGER = MSG_FIRST_ID + 101; public static final int MSG_MOVE_PREV = MSG_FIRST_ID + 102; @@ -41,12 +42,9 @@ public class ScrollableViewProxy extends TiViewProxy public static final int MSG_SET_CURRENT = MSG_FIRST_ID + 107; public static final int MSG_SET_ENABLED = MSG_FIRST_ID + 109; public static final int MSG_LAST_ID = MSG_FIRST_ID + 999; - private static final int DEFAULT_PAGING_CONTROL_TIMEOUT = 3000; - public static final int MIN_CACHE_SIZE = 3; - protected AtomicBoolean inScroll; - private List views = new ArrayList<>(); + private final List views = new ArrayList<>(); private TiUIScrollableView scrollableView; public ScrollableViewProxy() @@ -351,6 +349,13 @@ public void fireScroll(int currentPage, float currentPageAsFloat, TiViewProxy cu } } + @Kroll.getProperty + public boolean getScrollingEnabled() + { + return (scrollableView != null) ? scrollableView.getEnabled() + : getProperties().optBoolean(TiC.PROPERTY_SCROLLING_ENABLED, true); + } + @Kroll.setProperty public void setScrollingEnabled(boolean value) { @@ -358,11 +363,12 @@ public void setScrollingEnabled(boolean value) scrollableView.setEnabled(value); } } + @Kroll.getProperty - public boolean getScrollingEnabled() + public int getCurrentPage() { - return (scrollableView != null) ? scrollableView.getEnabled() - : getProperties().optBoolean(TiC.PROPERTY_SCROLLING_ENABLED, true); + return (scrollableView != null) ? scrollableView.getCurrentPage() + : getProperties().optInt(TiC.PROPERTY_CURRENT_PAGE, 0); } @Kroll.setProperty @@ -375,13 +381,6 @@ public void setCurrentPage(int currentPage) } } - @Kroll.getProperty - public int getCurrentPage() - { - return (scrollableView != null) ? scrollableView.getCurrentPage() - : getProperties().optInt(TiC.PROPERTY_CURRENT_PAGE, 0); - } - @Override public void releaseViews() { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/SearchBarProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/SearchBarProxy.java index 59b8002414c..0bfadaae48c 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/SearchBarProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/SearchBarProxy.java @@ -1,11 +1,7 @@ -/** - * Titanium SDK - * Copyright TiDev, Inc. 04/07/2022-Present. All Rights Reserved. - * Licensed under the terms of the Apache Public License - * Please see the LICENSE included with this distribution for details. - */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; @@ -14,7 +10,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.searchbar.TiUISearchBar; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -30,7 +25,7 @@ TiC.PROPERTY_PROMPT, TiC.PROPERTY_PROMPT_ID, TiC.PROPERTY_VALUE -}) + }) public class SearchBarProxy extends TiViewProxy { public SearchBarProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/SliderProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/SliderProxy.java index d6349387c34..eff016c99ed 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/SliderProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/SliderProxy.java @@ -6,13 +6,14 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUISlider; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -27,7 +28,7 @@ TiC.PROPERTY_TINT_COLOR, TiC.PROPERTY_TRACK_TINT_COLOR, TiC.PROPERTY_VALUE -}) + }) public class SliderProxy extends TiViewProxy { public SliderProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java index 3bdcac73f38..f3758a97fa9 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/SwitchProxy.java @@ -6,12 +6,14 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.view.TiUIView; + import ti.modules.titanium.ui.widget.TiUISwitch; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -28,7 +30,7 @@ TiC.PROPERTY_VERTICAL_ALIGN, TiC.PROPERTY_ON_THUMB_COLOR, TiC.PROPERTY_THUMB_COLOR -}) + }) public class SwitchProxy extends TiViewProxy { public SwitchProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java index ce97a31f23c..0c76925eb2e 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TabGroupProxy.java @@ -6,9 +6,15 @@ */ package ti.modules.titanium.ui; -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; @@ -27,20 +33,15 @@ import org.appcelerator.titanium.util.TiRHelper; import org.appcelerator.titanium.util.TiUIHelper; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.HashMap; + import ti.modules.titanium.ui.android.AndroidModule; import ti.modules.titanium.ui.widget.tabgroup.TiUIAbstractTabGroup; import ti.modules.titanium.ui.widget.tabgroup.TiUIBottomNavigationTabGroup; import ti.modules.titanium.ui.widget.tabgroup.TiUITabLayoutTabGroup; -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import android.view.LayoutInflater; - @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_TABS_BACKGROUND_COLOR, @@ -49,27 +50,24 @@ TiC.PROPERTY_AUTO_TAB_TITLE, TiC.PROPERTY_EXIT_ON_CLOSE, TiC.PROPERTY_SMOOTH_SCROLL_ON_TAB_CLICK -}) + }) public class TabGroupProxy extends TiWindowProxy implements TiActivityWindow { private static final String TAG = "TabGroupProxy"; private static final String PROPERTY_POST_TAB_GROUP_CREATED = "postTabGroupCreated"; private static final int MSG_FIRST_ID = TiWindowProxy.MSG_LAST_ID + 1; - + protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; private static final int MSG_ADD_TAB = MSG_FIRST_ID + 100; private static final int MSG_REMOVE_TAB = MSG_FIRST_ID + 101; private static final int MSG_SET_ACTIVE_TAB = MSG_FIRST_ID + 102; private static final int MSG_GET_ACTIVE_TAB = MSG_FIRST_ID + 103; private static final int MSG_SET_TABS = MSG_FIRST_ID + 104; private static final int MSG_DISABLE_TAB_NAVIGATION = MSG_FIRST_ID + 105; - - protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; - - private ArrayList tabs = new ArrayList<>(); + private static int id_toolbar; + private final ArrayList tabs = new ArrayList<>(); private WeakReference tabGroupActivity = new WeakReference<>(null); private Object selectedTab; // NOTE: Can be TabProxy or Number private String tabGroupTitle = null; - private static int id_toolbar; private boolean autoTabTitle = false; public TabGroupProxy() @@ -167,12 +165,6 @@ public Object getActiveTab() } } - private TabProxy getActiveTabProxy() - { - Object activeTab = getActiveTab(); - return (activeTab != null) ? parseTab(activeTab) : null; - } - @Kroll.setProperty public void setActiveTab(Object tabOrIndex) { @@ -197,6 +189,12 @@ public void setActiveTab(Object tabOrIndex) } } + private TabProxy getActiveTabProxy() + { + Object activeTab = getActiveTab(); + return (activeTab != null) ? parseTab(activeTab) : null; + } + @Kroll.getProperty(name = "activity") public ActivityProxy _getActivity() { @@ -337,7 +335,7 @@ protected void handleOpen(KrollDict options) topActivity.startActivity(intent); topActivity.overridePendingTransition(0, 0); } else if (options.containsKey(TiC.PROPERTY_ACTIVITY_ENTER_ANIMATION) - || options.containsKey(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION)) { + || options.containsKey(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION)) { topActivity.startActivity(intent); int enterAnimation = TiConvert.toInt(options.get(TiC.PROPERTY_ACTIVITY_ENTER_ANIMATION), 0); int exitAnimation = TiConvert.toInt(options.get(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION), 0); diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TextAreaProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TextAreaProxy.java index 1661afb3a4d..d88956f5f91 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TextAreaProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TextAreaProxy.java @@ -6,6 +6,8 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollModule; import org.appcelerator.kroll.annotations.Kroll; @@ -15,7 +17,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIText; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -46,7 +47,7 @@ TiC.PROPERTY_VERTICAL_ALIGN, TiC.PROPERTY_PADDING, TiC.PROPERTY_RETURN_KEY_TYPE -}) + }) public class TextAreaProxy extends TiViewProxy { public TextAreaProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TextFieldProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TextFieldProxy.java index 65b1f153690..b594c7fadbb 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TextFieldProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TextFieldProxy.java @@ -6,6 +6,8 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollModule; import org.appcelerator.kroll.annotations.Kroll; @@ -15,7 +17,6 @@ import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUIText; -import android.app.Activity; @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { @@ -46,7 +47,7 @@ TiC.PROPERTY_VERTICAL_ALIGN, TiC.PROPERTY_RETURN_KEY_TYPE, TiC.PROPERTY_PADDING -}) + }) public class TextFieldProxy extends TiViewProxy { public TextFieldProxy() diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/TiDialogProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/TiDialogProxy.java index 0f4b3bf5f88..2fe493d11a0 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/TiDialogProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/TiDialogProxy.java @@ -6,14 +6,14 @@ */ package ti.modules.titanium.ui; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.kroll.common.CurrentActivityListener; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.util.TiUIHelper; -import android.app.Activity; - @Kroll.proxy(parentModule = UIModule.class, propertyAccessors = { "title", @@ -24,7 +24,7 @@ "options", "selectedIndex", "cancel" -}) + }) public abstract class TiDialogProxy extends TiViewProxy { protected boolean showing = false; @@ -38,7 +38,8 @@ public TiDialogProxy() public void show(final KrollDict options) { showing = true; - TiUIHelper.waitForCurrentActivity(new CurrentActivityListener() { + TiUIHelper.waitForCurrentActivity(new CurrentActivityListener() + { @Override public void onCurrentActivityReady(Activity activity) { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/ToolbarProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/ToolbarProxy.java index ec1cd8a6912..0599bdf2f09 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/ToolbarProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/ToolbarProxy.java @@ -1,13 +1,16 @@ package ti.modules.titanium.ui; import android.app.Activity; -import androidx.appcompat.widget.Toolbar; import android.view.View; + +import androidx.appcompat.widget.Toolbar; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiToolbarProxy; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.view.TiUIView; + import ti.modules.titanium.ui.widget.TiToolbar; @Kroll.proxy(creatableInModule = UIModule.class, @@ -26,7 +29,7 @@ TiC.PROPERTY_SUBTITLE_TEXT_COLOR, TiC.PROPERTY_CONTENT_INSET_END_WITH_ACTIONS, TiC.PROPERTY_CONTENT_INSET_START_WITH_NAVIGATION -}) + }) public class ToolbarProxy extends TiToolbarProxy { private static final java.lang.String TAG = "Toolbar"; @@ -53,6 +56,7 @@ public TiUIView createView(Activity activity) /** * Sets the activity this proxy's view should be attached to. + * * @param activity The activity this proxy's view should be attached to. */ @Override diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java index 8be6063b52b..d0506b36a19 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/WebViewProxy.java @@ -56,28 +56,25 @@ TiC.PROPERTY_LIGHT_TOUCH_ENABLED, TiC.PROPERTY_ON_LINK, TiC.PROPERTY_SCROLLBARS -}) + }) + public class WebViewProxy extends ViewProxy implements Handler.Callback, OnLifecycleEvent, interceptOnBackPressedEvent { + public static final String OPTIONS_IN_SETHTML = "optionsInSetHtml"; private static final String TAG = "WebViewProxy"; private static final int MSG_FIRST_ID = ViewProxy.MSG_LAST_ID + 1; - + protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; private static final int MSG_GO_BACK = MSG_FIRST_ID + 101; private static final int MSG_GO_FORWARD = MSG_FIRST_ID + 102; private static final int MSG_RELOAD = MSG_FIRST_ID + 103; private static final int MSG_STOP_LOADING = MSG_FIRST_ID + 104; private static final int MSG_RELEASE = MSG_FIRST_ID + 110; - - protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; + private static final Map fevalJSRequests = new HashMap<>(); + private static final int frequestID = 0; private static String fusername; private static String fpassword; - private static int frequestID = 0; - private static final Map fevalJSRequests = new HashMap<>(); - - private Message postCreateMessage; PrintManager printManager; - - public static final String OPTIONS_IN_SETHTML = "optionsInSetHtml"; + private Message postCreateMessage; public WebViewProxy() { @@ -89,6 +86,15 @@ public WebViewProxy() defaultValues.put(TiC.PROPERTY_ZOOM_LEVEL, 1.0); } + private static void sendPostCreateMessage(WebView view, Message postCreateMessage) + { + WebView.WebViewTransport transport = (WebView.WebViewTransport) postCreateMessage.obj; + if (transport != null) { + transport.setWebView(view); + } + postCreateMessage.sendToTarget(); + } + @Override public TiUIView createView(Activity activity) { @@ -131,40 +137,6 @@ public Object evalJS(String code, @Kroll.argument(optional = true) KrollFunction return view.getJSValue(code); } - private static class EvalJSRunnable implements Runnable - { - private final TiUIWebView view; - private final KrollObject krollObject; - private final String code; - private final KrollFunction callback; - - public EvalJSRunnable(TiUIWebView view, KrollObject krollObject, String code, KrollFunction callback) - { - this.view = view; - this.krollObject = krollObject; - this.code = code; - this.callback = callback; - } - - public void run() - { - // Runs the "old" API we built - String result = view.getJSValue(code); - callback.callAsync(krollObject, new Object[] { result }); - } - - public void runAsync() - { - // Runs the newer API provided by Android - view.getWebView().evaluateJavascript(code, new ValueCallback() { - public void onReceiveValue(String value) - { - callback.callAsync(krollObject, new Object[] { value }); - } - }); - } - } - @Kroll.getProperty public String getHtml() { @@ -243,6 +215,16 @@ public void setBasicAuthentication(String username, String password) getWebView().setBasicAuthentication(username, password); } + @Kroll.getProperty + public String getUserAgent() + { + TiUIWebView currWebView = getWebView(); + if (currWebView != null) { + return currWebView.getUserAgentString(); + } + return ""; + } + @Kroll.setProperty public void setUserAgent(String userAgent) { @@ -253,13 +235,13 @@ public void setUserAgent(String userAgent) } @Kroll.getProperty - public String getUserAgent() + public HashMap getRequestHeaders() { TiUIWebView currWebView = getWebView(); if (currWebView != null) { - return currWebView.getUserAgentString(); + return currWebView.getRequestHeaders(); } - return ""; + return new HashMap(); } @Kroll.setProperty @@ -273,16 +255,6 @@ public void setRequestHeaders(HashMap params) } } - @Kroll.getProperty - public HashMap getRequestHeaders() - { - TiUIWebView currWebView = getWebView(); - if (currWebView != null) { - return currWebView.getRequestHeaders(); - } - return new HashMap(); - } - @Kroll.method public boolean canGoBack() { @@ -432,9 +404,17 @@ public int getPluginState() } @Kroll.setProperty - public void setDisableContextMenu(boolean disableContextMenu) + public void setPluginState(int pluginState) { - setPropertyAndFire(TiC.PROPERTY_DISABLE_CONTEXT_MENU, disableContextMenu); + switch (pluginState) { + case TiUIWebView.PLUGIN_STATE_OFF: + case TiUIWebView.PLUGIN_STATE_ON: + case TiUIWebView.PLUGIN_STATE_ON_DEMAND: + setPropertyAndFire(TiC.PROPERTY_PLUGIN_STATE, pluginState); + break; + default: + setPropertyAndFire(TiC.PROPERTY_PLUGIN_STATE, TiUIWebView.PLUGIN_STATE_OFF); + } } @Kroll.getProperty @@ -447,17 +427,9 @@ public boolean getDisableContextMenu() } @Kroll.setProperty - public void setPluginState(int pluginState) + public void setDisableContextMenu(boolean disableContextMenu) { - switch (pluginState) { - case TiUIWebView.PLUGIN_STATE_OFF: - case TiUIWebView.PLUGIN_STATE_ON: - case TiUIWebView.PLUGIN_STATE_ON_DEMAND: - setPropertyAndFire(TiC.PROPERTY_PLUGIN_STATE, pluginState); - break; - default: - setPropertyAndFire(TiC.PROPERTY_PLUGIN_STATE, TiUIWebView.PLUGIN_STATE_OFF); - } + setPropertyAndFire(TiC.PROPERTY_DISABLE_CONTEXT_MENU, disableContextMenu); } @Kroll.method @@ -476,12 +448,6 @@ public void resume() } } - @Kroll.setProperty(runOnUiThread = true) - public void setEnableZoomControls(boolean enabled) - { - setPropertyAndFire(TiC.PROPERTY_ENABLE_ZOOM_CONTROLS, enabled); - } - @Kroll.getProperty public boolean getEnableZoomControls() { @@ -493,6 +459,12 @@ public boolean getEnableZoomControls() return enabled; } + @Kroll.setProperty(runOnUiThread = true) + public void setEnableZoomControls(boolean enabled) + { + setPropertyAndFire(TiC.PROPERTY_ENABLE_ZOOM_CONTROLS, enabled); + } + @Kroll.getProperty public float getZoomLevel() { @@ -517,12 +489,6 @@ public void setZoomLevel(float value) } } - @Kroll.setProperty - public void setAllowFileAccess(boolean enabled) - { - setPropertyAndFire(TiC.PROPERTY_ALLOW_FILE_ACCESS, enabled); - } - @Kroll.getProperty public boolean getAllowFileAccess() { @@ -534,6 +500,12 @@ public boolean getAllowFileAccess() return enabled; } + @Kroll.setProperty + public void setAllowFileAccess(boolean enabled) + { + setPropertyAndFire(TiC.PROPERTY_ALLOW_FILE_ACCESS, enabled); + } + @Kroll.getProperty public double getProgress() { @@ -570,15 +542,6 @@ public void setPostCreateMessage(Message postCreateMessage) } } - private static void sendPostCreateMessage(WebView view, Message postCreateMessage) - { - WebView.WebViewTransport transport = (WebView.WebViewTransport) postCreateMessage.obj; - if (transport != null) { - transport.setWebView(view); - } - postCreateMessage.sendToTarget(); - } - /** * Don't release the web view when it's removed. TIMOB-7808 */ @@ -656,4 +619,39 @@ public String getApiName() { return "Ti.UI.WebView"; } + + private static class EvalJSRunnable implements Runnable + { + private final TiUIWebView view; + private final KrollObject krollObject; + private final String code; + private final KrollFunction callback; + + public EvalJSRunnable(TiUIWebView view, KrollObject krollObject, String code, KrollFunction callback) + { + this.view = view; + this.krollObject = krollObject; + this.code = code; + this.callback = callback; + } + + public void run() + { + // Runs the "old" API we built + String result = view.getJSValue(code); + callback.callAsync(krollObject, new Object[] { result }); + } + + public void runAsync() + { + // Runs the newer API provided by Android + view.getWebView().evaluateJavascript(code, new ValueCallback() + { + public void onReceiveValue(String value) + { + callback.callAsync(krollObject, new Object[] { value }); + } + }); + } + } } diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java index 02d2eaafcaa..73dbe8f5f67 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java @@ -7,30 +7,6 @@ package ti.modules.titanium.ui; -import java.lang.ref.WeakReference; -import java.util.HashMap; - -import org.appcelerator.kroll.KrollDict; -import org.appcelerator.kroll.KrollPromise; -import org.appcelerator.kroll.annotations.Kroll; -import org.appcelerator.kroll.common.Log; -import org.appcelerator.titanium.TiActivity; -import org.appcelerator.titanium.TiActivityWindow; -import org.appcelerator.titanium.TiActivityWindows; -import org.appcelerator.titanium.TiApplication; -import org.appcelerator.titanium.TiBaseActivity; -import org.appcelerator.titanium.TiC; -import org.appcelerator.titanium.TiDimension; -import org.appcelerator.titanium.TiRootActivity; -import org.appcelerator.titanium.TiTranslucentActivity; -import org.appcelerator.titanium.proxy.ActivityProxy; -import org.appcelerator.titanium.proxy.TiWindowProxy; -import org.appcelerator.titanium.util.TiColorHelper; -import org.appcelerator.titanium.util.TiConvert; -import org.appcelerator.titanium.util.TiRHelper; -import org.appcelerator.titanium.view.TiUIView; -import ti.modules.titanium.ui.widget.TiView; - import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; @@ -40,12 +16,6 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Message; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; - import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; @@ -63,23 +33,53 @@ import android.view.ViewGroup.LayoutParams; import android.view.Window; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; + +import org.appcelerator.kroll.KrollDict; +import org.appcelerator.kroll.KrollPromise; +import org.appcelerator.kroll.annotations.Kroll; +import org.appcelerator.kroll.common.Log; +import org.appcelerator.titanium.TiActivity; +import org.appcelerator.titanium.TiActivityWindow; +import org.appcelerator.titanium.TiActivityWindows; +import org.appcelerator.titanium.TiApplication; +import org.appcelerator.titanium.TiBaseActivity; +import org.appcelerator.titanium.TiC; +import org.appcelerator.titanium.TiDimension; +import org.appcelerator.titanium.TiRootActivity; +import org.appcelerator.titanium.TiTranslucentActivity; +import org.appcelerator.titanium.proxy.ActivityProxy; +import org.appcelerator.titanium.proxy.TiWindowProxy; +import org.appcelerator.titanium.util.TiColorHelper; +import org.appcelerator.titanium.util.TiConvert; +import org.appcelerator.titanium.util.TiRHelper; +import org.appcelerator.titanium.view.TiUIView; + +import java.lang.ref.WeakReference; +import java.util.HashMap; + +import ti.modules.titanium.ui.widget.TiView; + @Kroll.proxy(creatableInModule = UIModule.class, propertyAccessors = { TiC.PROPERTY_MODAL, TiC.PROPERTY_WINDOW_PIXEL_FORMAT, TiC.PROPERTY_FLAG_SECURE, TiC.PROPERTY_BAR_COLOR -}) + }) public class WindowProxy extends TiWindowProxy implements TiActivityWindow { private static final String TAG = "WindowProxy"; private static final String PROPERTY_POST_WINDOW_CREATED = "postWindowCreated"; private static final int MSG_FIRST_ID = TiWindowProxy.MSG_LAST_ID + 1; + protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; private static final int MSG_SET_PIXEL_FORMAT = MSG_FIRST_ID + 100; private static final int MSG_SET_TITLE = MSG_FIRST_ID + 101; - protected static final int MSG_LAST_ID = MSG_FIRST_ID + 999; - private static int id_toolbar; private int barColor = -1; @@ -156,7 +156,7 @@ protected void handleOpen(KrollDict options) topActivity.startActivity(intent); topActivity.overridePendingTransition(0, 0); } else if (options.containsKey(TiC.PROPERTY_ACTIVITY_ENTER_ANIMATION) - || options.containsKey(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION)) { + || options.containsKey(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION)) { topActivity.startActivity(intent); int enterAnimation = TiConvert.toInt(options.get(TiC.PROPERTY_ACTIVITY_ENTER_ANIMATION), 0); int exitAnimation = TiConvert.toInt(options.get(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION), 0); @@ -211,7 +211,7 @@ protected void handleClose(@NonNull KrollDict options) if (!animated) { activity.overridePendingTransition(0, 0); } else if (options.containsKey(TiC.PROPERTY_ACTIVITY_ENTER_ANIMATION) - || options.containsKey(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION)) { + || options.containsKey(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION)) { int enterAnimation = TiConvert.toInt(options.get(TiC.PROPERTY_ACTIVITY_ENTER_ANIMATION), 0); int exitAnimation = TiConvert.toInt(options.get(TiC.PROPERTY_ACTIVITY_EXIT_ANIMATION), 0); activity.overridePendingTransition(enterAnimation, exitAnimation); @@ -397,7 +397,7 @@ protected void fillIntent(Activity activity, Intent intent) } if (hasProperty(TiC.PROPERTY_WINDOW_PIXEL_FORMAT)) { intent.putExtra(TiC.PROPERTY_WINDOW_PIXEL_FORMAT, - TiConvert.toInt(getProperty(TiC.PROPERTY_WINDOW_PIXEL_FORMAT), PixelFormat.UNKNOWN)); + TiConvert.toInt(getProperty(TiC.PROPERTY_WINDOW_PIXEL_FORMAT), PixelFormat.UNKNOWN)); } // Set the splitActionBar property @@ -418,7 +418,7 @@ public void onPropertyChanged(String name, Object value) } else if (TiC.PROPERTY_TITLE.equals(name)) { getMainHandler().obtainMessage(MSG_SET_TITLE, value).sendToTarget(); } else if (TiC.PROPERTY_TOP.equals(name) || TiC.PROPERTY_BOTTOM.equals(name) - || TiC.PROPERTY_LEFT.equals(name) || TiC.PROPERTY_RIGHT.equals(name)) { + || TiC.PROPERTY_LEFT.equals(name) || TiC.PROPERTY_RIGHT.equals(name)) { // The "top", "bottom", "left" and "right" properties do not work for heavyweight windows. return; } else if (TiC.PROPERTY_HIDES_BACK_BUTTON.equals(name)) { @@ -465,6 +465,12 @@ public void onPropertyChanged(String name, Object value) super.onPropertyChanged(name, value); } + @Kroll.getProperty + public boolean getSustainedPerformanceMode() + { + return TiConvert.toBoolean(getProperty(TiC.PROPERTY_SUSTAINED_PERFORMANCE_MODE), false); + } + @Kroll.setProperty public void setSustainedPerformanceMode(boolean mode) { @@ -475,12 +481,6 @@ public void setSustainedPerformanceMode(boolean mode) } } - @Kroll.getProperty - public boolean getSustainedPerformanceMode() - { - return TiConvert.toBoolean(getProperty(TiC.PROPERTY_SUSTAINED_PERFORMANCE_MODE), false); - } - @Override @Kroll.setProperty(retain = false) public void setWidth(Object width) @@ -518,7 +518,7 @@ public boolean handleMessage(Message msg) if (activity != null) { Window win = activity.getWindow(); if (win != null) { - win.setFormat(TiConvert.toInt((Object) (msg.obj), PixelFormat.UNKNOWN)); + win.setFormat(TiConvert.toInt(msg.obj, PixelFormat.UNKNOWN)); win.getDecorView().invalidate(); } } @@ -527,21 +527,21 @@ public boolean handleMessage(Message msg) case MSG_SET_TITLE: { Activity activity = getWindowActivity(); if (activity != null) { - activity.setTitle(TiConvert.toString((Object) (msg.obj), "")); + activity.setTitle(TiConvert.toString(msg.obj, "")); if (windowActivity != null && windowActivity.get() != null && windowActivity.get().getSupportActionBar() != null) { ActionBar actionBar = windowActivity.get().getSupportActionBar(); if (actionBar.getTitle() instanceof SpannableStringBuilder) { SpannableStringBuilder stringBuilder = - new SpannableStringBuilder(TiConvert.toString((Object) (msg.obj), "")); + new SpannableStringBuilder(TiConvert.toString(msg.obj, "")); if (barColor != -1) { stringBuilder.setSpan(new ForegroundColorSpan(barColor), 0, stringBuilder.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); } actionBar.setTitle(stringBuilder); } else { - actionBar.setTitle(TiConvert.toString((Object) (msg.obj), "")); + actionBar.setTitle(TiConvert.toString(msg.obj, "")); } } } @@ -581,7 +581,8 @@ private void setWindowWidthHeight(Object width, Object height) /** * Helper method to apply activity transitions. - * @param win The window holding the activity. + * + * @param win The window holding the activity. * @param props The property dictionary. */ private void applyActivityTransitions(Window win, KrollDict props) @@ -627,8 +628,9 @@ private void applyActivityTransitions(Window win, KrollDict props) /** * Creates a transition for the supplied transition type. + * * @param props The property dictionary. - * @param key The transition type + * @param key The transition type * @return A Transition or null if UIModule.TRANSITION_NONE or unknown transition is specified. */ @SuppressLint({ "InlinedApi", "RtlHardcoded" }) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/android/CardViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/android/CardViewProxy.java index caf6767d816..e1c2db91a01 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/android/CardViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/android/CardViewProxy.java @@ -6,13 +6,14 @@ */ package ti.modules.titanium.ui.android; +import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.TiUICardView; -import android.app.Activity; @Kroll.proxy(creatableInModule = AndroidModule.class, propertyAccessors = { @@ -26,7 +27,7 @@ TiC.PROPERTY_PADDING_LEFT, TiC.PROPERTY_PADDING_RIGHT, TiC.PROPERTY_PADDING_TOP -}) + }) public class CardViewProxy extends TiViewProxy { private static final int MSG_FIRST_ID = TiViewProxy.MSG_LAST_ID + 1; diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/android/ProgressIndicatorProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/android/ProgressIndicatorProxy.java index d5f26372070..f596f29d3c3 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/android/ProgressIndicatorProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/android/ProgressIndicatorProxy.java @@ -6,6 +6,8 @@ */ package ti.modules.titanium.ui.android; +import android.app.Activity; + import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; @@ -13,7 +15,6 @@ import ti.modules.titanium.ui.TiDialogProxy; import ti.modules.titanium.ui.widget.TiUIProgressIndicator; -import android.app.Activity; @Kroll.proxy(creatableInModule = AndroidModule.class, propertyAccessors = { @@ -26,7 +27,7 @@ TiC.PROPERTY_MAX, TiC.PROPERTY_CANCELABLE, TiC.PROPERTY_CANCELED_ON_TOUCH_OUTSIDE -}) + }) @Kroll.dynamicApis(methods = { "hide", "show" }) public class ProgressIndicatorProxy extends TiDialogProxy { diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/android/SearchViewProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/android/SearchViewProxy.java index b8fbd13c8d6..d120d62e76d 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/android/SearchViewProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/android/SearchViewProxy.java @@ -6,13 +6,14 @@ */ package ti.modules.titanium.ui.android; +import android.app.Activity; + import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.proxy.TiViewProxy; import org.appcelerator.titanium.view.TiUIView; import ti.modules.titanium.ui.widget.searchview.TiUISearchView; -import android.app.Activity; @Kroll.proxy(creatableInModule = AndroidModule.class, propertyAccessors = { @@ -22,7 +23,7 @@ TiC.PROPERTY_HINT_TEXT, TiC.PROPERTY_HINT_TEXT_COLOR, TiC.PROPERTY_VALUE -}) + }) public class SearchViewProxy extends TiViewProxy { private static final String TAG = "SearchProxy"; diff --git a/android/package.json b/android/package.json index ad6f5134f67..cb890f2d580 100644 --- a/android/package.json +++ b/android/package.json @@ -20,9 +20,9 @@ "compileSDKVersion": "33", "vendorDependencies": { "android sdk": ">=23.x <=34.x", - "android build tools": ">=30.0.2 <=33.x", + "android build tools": ">=30.0.2 <=34.x", "android platform tools": "33.x", - "android tools": "<=26.x", + "android tools": "<=34.x", "android ndk": ">=r21 <=r22b", "java": ">=11.x" }, diff --git a/android/runtime/v8/src/native/CMakeLists.txt b/android/runtime/v8/src/native/CMakeLists.txt index fb6fdb9953a..4c363604f1b 100644 --- a/android/runtime/v8/src/native/CMakeLists.txt +++ b/android/runtime/v8/src/native/CMakeLists.txt @@ -5,7 +5,7 @@ # Please see the LICENSE included with this distribution for details. ################################################################################ -cmake_minimum_required(VERSION 3.10.2) +cmake_minimum_required(VERSION 3.22.1) # Set project/library name and have it use the C++ compiler. # Note: Built library will be named "lib${PROJECT_NAME}.so". diff --git a/android/titanium/build.gradle b/android/titanium/build.gradle index 4288d2e211b..97fac679e34 100644 --- a/android/titanium/build.gradle +++ b/android/titanium/build.gradle @@ -74,7 +74,7 @@ android { } externalNativeBuild { cmake { - version '3.10.2' + version '3.22.1' path "${projectDir}/../runtime/v8/src/native/CMakeLists.txt" } } diff --git a/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java b/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java index 3d29ce309e2..e49244cc65c 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java +++ b/android/titanium/src/java/org/appcelerator/titanium/proxy/ActionBarProxy.java @@ -7,8 +7,10 @@ package org.appcelerator.titanium.proxy; import android.graphics.drawable.Drawable; + import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; + import org.appcelerator.kroll.KrollProxy; import org.appcelerator.kroll.annotations.Kroll; import org.appcelerator.kroll.common.Log; @@ -24,7 +26,7 @@ public class ActionBarProxy extends KrollProxy private static final String TAG = "ActionBarProxy"; private static final String ACTION_BAR_NOT_AVAILABLE_MESSAGE = "ActionBar is not enabled"; - private ActionBar actionBar; + private final ActionBar actionBar; private boolean showTitleEnabled = true; public ActionBarProxy(AppCompatActivity activity) @@ -34,7 +36,7 @@ public ActionBarProxy(AppCompatActivity activity) // Guard against calls to ActionBar made before inflating the ActionBarView if (actionBar != null) { actionBar.setDisplayOptions(ActionBar.DISPLAY_USE_LOGO | ActionBar.DISPLAY_SHOW_HOME - | ActionBar.DISPLAY_SHOW_TITLE); + | ActionBar.DISPLAY_SHOW_TITLE); } else { Log.w(TAG, "Trying to get a reference to ActionBar before its container was inflated."); } @@ -77,16 +79,6 @@ public void setHomeButtonEnabled(boolean homeButtonEnabled) } } - @Kroll.setProperty - public void setNavigationMode(int navigationMode) - { - if (actionBar != null) { - actionBar.setNavigationMode(navigationMode); - } else { - Log.w(TAG, ACTION_BAR_NOT_AVAILABLE_MESSAGE); - } - } - @Kroll.setProperty public void setBackgroundImage(String url) { @@ -117,27 +109,6 @@ public void setBackgroundImage(String url) } } - @Kroll.setProperty - public void setTitle(String title) - { - if (actionBar != null) { - actionBar.setTitle(title); - } else { - Log.w(TAG, ACTION_BAR_NOT_AVAILABLE_MESSAGE); - } - } - - @Kroll.setProperty - public void setSubtitle(String subTitle) - { - if (actionBar != null) { - actionBar.setDisplayShowTitleEnabled(true); - actionBar.setSubtitle(subTitle); - } else { - Log.w(TAG, ACTION_BAR_NOT_AVAILABLE_MESSAGE); - } - } - @Kroll.method public void setDisplayShowHomeEnabled(boolean show) { @@ -164,6 +135,17 @@ public String getSubtitle() return (String) actionBar.getSubtitle(); } + @Kroll.setProperty + public void setSubtitle(String subTitle) + { + if (actionBar != null) { + actionBar.setDisplayShowTitleEnabled(true); + actionBar.setSubtitle(subTitle); + } else { + Log.w(TAG, ACTION_BAR_NOT_AVAILABLE_MESSAGE); + } + } + @Kroll.getProperty public String getTitle() { @@ -173,13 +155,33 @@ public String getTitle() return (String) actionBar.getTitle(); } + @Kroll.setProperty + public void setTitle(String title) + { + if (actionBar != null) { + actionBar.setTitle(title); + } else { + Log.w(TAG, ACTION_BAR_NOT_AVAILABLE_MESSAGE); + } + } + @Kroll.getProperty public int getNavigationMode() { if (actionBar == null) { return 0; } - return (int) actionBar.getNavigationMode(); + return actionBar.getNavigationMode(); + } + + @Kroll.setProperty + public void setNavigationMode(int navigationMode) + { + if (actionBar != null) { + actionBar.setNavigationMode(navigationMode); + } else { + Log.w(TAG, ACTION_BAR_NOT_AVAILABLE_MESSAGE); + } } @Kroll.method diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiNinePatchHelper.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiNinePatchHelper.java index 652820f4b8c..0509e6ef62c 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiNinePatchHelper.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiNinePatchHelper.java @@ -6,8 +6,6 @@ */ package org.appcelerator.titanium.util; -import java.util.ArrayList; - import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Rect; @@ -15,15 +13,11 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.NinePatchDrawable; +import java.util.ArrayList; + @SuppressWarnings("deprecation") public class TiNinePatchHelper { - private static class SegmentColor - { - int index; - int color; - } - public Drawable process(Drawable d) { Drawable nd = d; @@ -199,8 +193,8 @@ byte[] createChunk(Bitmap b) numColors = colors.size(); // Figure out the size / looks like padded to 32bits. - int size = 32 + // wasDeserialized, numXDivs, numYDivs, numColors, padLeft, padRight, padTop, padBottom - numXDivs * 32 + numYDivs * 32 + numColors * 32; + int size = 32 // wasDeserialized, numXDivs, numYDivs, numColors, padLeft, padRight, padTop, padBottom + + numXDivs * 32 + numYDivs * 32 + numColors * 32; chunk = new byte[size]; chunk[0] = 0; @@ -245,4 +239,10 @@ private void toBytes(byte[] a, int offset, int v) a[offset + 2] = (byte) ((0x00FF0000 & v) >> 16); a[offset + 3] = (byte) ((0xFF000000 & v) >> 24); } + + private static class SegmentColor + { + int index; + int color; + } } diff --git a/android/titanium/src/java/ti/modules/titanium/BufferProxy.java b/android/titanium/src/java/ti/modules/titanium/BufferProxy.java index a0422f7dcbb..1825b2082df 100644 --- a/android/titanium/src/java/ti/modules/titanium/BufferProxy.java +++ b/android/titanium/src/java/ti/modules/titanium/BufferProxy.java @@ -6,9 +6,6 @@ */ package ti.modules.titanium; -import java.io.UnsupportedEncodingException; -import java.util.Arrays; - import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.KrollModule; import org.appcelerator.kroll.KrollProxy; @@ -18,6 +15,9 @@ import org.appcelerator.titanium.TiC; import org.appcelerator.titanium.util.TiConvert; +import java.io.UnsupportedEncodingException; +import java.util.Arrays; + import ti.modules.titanium.codec.CodecModule; /** @@ -28,7 +28,7 @@ TiC.PROPERTY_BYTE_ORDER, TiC.PROPERTY_TYPE, TiC.PROPERTY_VALUE -}) + }) public class BufferProxy extends KrollProxy { private static final String TAG = "BufferProxy"; @@ -170,13 +170,14 @@ protected void validateOffsetAndLength(int offset, int length, int bufferLength) { if (length > offset + bufferLength) { throw new IllegalArgumentException("offset of " + offset + " and length of " + length - + " is larger than the buffer length: " + bufferLength); + + " is larger than the buffer length: " + bufferLength); } } /** * Writes data from sourceBuffer into this. - * @param position the offset position of this buffer. + * + * @param position the offset position of this buffer. * @param sourceBuffer the source buffer to write from. * @param sourceOffset the offset position of the sourceBuffer. * @param sourceLength the length of the sourceBuffer. @@ -372,6 +373,7 @@ public int getLength() /** * Sets the length of this buffer proxy by either growing or shrinking * the allocated buffer space + * * @param length The new length of this buffer proxy in bytes */ @Kroll.setProperty From c719bcd5cd061cccaefe888b8edaf7f25143f412 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Tue, 20 Aug 2024 19:14:37 +0200 Subject: [PATCH 105/145] feat(android): enable Signature Scheme v3 (#13938) Co-authored-by: Chris Barber --- android/templates/build/app.build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/android/templates/build/app.build.gradle b/android/templates/build/app.build.gradle index 4a1607f99fc..44f859dfa54 100644 --- a/android/templates/build/app.build.gradle +++ b/android/templates/build/app.build.gradle @@ -62,6 +62,7 @@ android { storePassword tiKeystorePassword keyAlias tiKeystoreAliasName keyPassword tiKeystoreAliasPassword + enableV3Signing true } } buildTypes { From dfb1b5c312cbfac159fbae4d7277330dad71d6e0 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 21 Aug 2024 10:57:43 +0200 Subject: [PATCH 106/145] feat(android): fire `selected` event again when clicking the same Tab again (#14094) * feat(android): new 'reselected' event on a Tab * check for listener * reselected -> selected * docs --- .../ui/widget/tabgroup/TiUITabLayoutTabGroup.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java index a4d35f234a3..97d81da263e 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/tabgroup/TiUITabLayoutTabGroup.java @@ -6,6 +6,7 @@ */ package ti.modules.titanium.ui.widget.tabgroup; +import org.appcelerator.kroll.KrollDict; import org.appcelerator.kroll.common.Log; import org.appcelerator.titanium.TiBaseActivity; import org.appcelerator.titanium.TiC; @@ -412,6 +413,17 @@ public void onTabUnselected(TabLayout.Tab tab) @Override public void onTabReselected(TabLayout.Tab tab) { + if (tab != null) { + int index = tab.getPosition(); + if ((index >= 0) && (index < this.tabs.size())) { + TiViewProxy tabProxy = this.tabs.get(index).getProxy(); + if (tabProxy != null && tabProxy.hasListeners(TiC.EVENT_SELECTED)) { + KrollDict data = new KrollDict(); + data.put("index", index); + tabProxy.fireEvent(TiC.EVENT_SELECTED, data, false); + } + } + } } public void setTabMode(int value) From 3eda594e2721651a412a9557f6a05830c19efb29 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Wed, 21 Aug 2024 23:17:32 +0200 Subject: [PATCH 107/145] feat(android): add maxImages and pathOnly to openPhotoGallery (#14086) * feat(android): add maxImages to openPhotoGallery * pathOnly --- .../modules/titanium/media/MediaModule.java | 23 ++++++++++++++++--- .../java/org/appcelerator/titanium/TiC.java | 2 ++ apidoc/Titanium/Media/Media.yml | 20 ++++++++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java b/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java index 306c99ed35a..87ec0194fcf 100644 --- a/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java +++ b/android/modules/media/src/java/ti/modules/titanium/media/MediaModule.java @@ -241,6 +241,7 @@ public class MediaModule extends KrollModule implements Handler.Callback private static String mediaType = MEDIA_TYPE_PHOTO; private static ContentResolver contentResolver; private boolean useCameraX = false; + private static boolean pathOnly = false; public MediaModule() { @@ -1116,6 +1117,15 @@ public void openPhotoGallery(KrollDict options) TiIntentWrapper galleryIntent = new TiIntentWrapper(new Intent()); galleryIntent.getIntent().setAction(Intent.ACTION_GET_CONTENT); + if (options.containsKeyAndNotNull(TiC.PROPERTY_MAX_IMAGES) + && options.containsKey(TiC.PROPERTY_ALLOW_MULTIPLE) + && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + // set max image count + galleryIntent = new TiIntentWrapper(new Intent(MediaStore.ACTION_PICK_IMAGES)); + galleryIntent.getIntent() + .putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, options.getInt(TiC.PROPERTY_MAX_IMAGES)); + } + boolean isSelectingPhoto = false; boolean isSelectingVideo = false; if (options.containsKey(TiC.PROPERTY_MEDIA_TYPES)) { @@ -1163,6 +1173,11 @@ public void openPhotoGallery(KrollDict options) galleryIntent.getIntent().putExtra(Intent.EXTRA_ALLOW_MULTIPLE, allowMultiple); } + pathOnly = false; + if (options.containsKeyAndNotNull(TiC.PROPERTY_PATH_ONLY)) { + pathOnly = options.getBoolean(TiC.PROPERTY_PATH_ONLY); + } + final int code = allowMultiple ? PICK_IMAGE_MULTIPLE : PICK_IMAGE_SINGLE; activitySupport.launchActivityForResult(galleryIntent.getIntent(), code, new TiActivityResultHandler() { @@ -1401,16 +1416,18 @@ protected static KrollDict createDictForImage(TiBlob imageData, String mimeType) d.put("width", width); d.put("height", height); - // Add the image/video's crop dimensiosn to the dictionary. + // Add the image/video's crop dimension to the dictionary. KrollDict cropRect = new KrollDict(); cropRect.put("x", 0); cropRect.put("y", 0); cropRect.put("width", width); cropRect.put("height", height); d.put("cropRect", cropRect); - + d.put("path", imageData.getNativePath()); // Add the blob to the dictionary. - d.put("media", imageData); + if (!pathOnly) { + d.put("media", imageData); + } return d; } diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index 4f219b4c308..c7da4f79aa8 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -560,6 +560,7 @@ public class TiC public static final String PROPERTY_MAX_AGE = "maxAge"; public static final String PROPERTY_MAX_CLASSNAME = "maxClassname"; public static final String PROPERTY_MAX_ELEVATION = "maxElevation"; + public static final String PROPERTY_MAX_IMAGES = "maxImages"; public static final String PROPERTY_MAX_LENGTH = "maxLength"; public static final String PROPERTY_MAX_LINES = "maxLines"; public static final String PROPERTY_MAX_ROW_HEIGHT = "maxRowHeight"; @@ -640,6 +641,7 @@ public class TiC public static final String PROPERTY_PASSWORD = "password"; public static final String PROPERTY_PASSWORD_MASK = "passwordMask"; public static final String PROPERTY_PATH = "path"; + public static final String PROPERTY_PATH_ONLY = "pathOnly"; public static final String PROPERTY_PERSISTENT = "persistent"; public static final String PROPERTY_PHONE = "phone"; public static final String PROPERTY_PIN_IMAGE = "pinImage"; diff --git a/apidoc/Titanium/Media/Media.yml b/apidoc/Titanium/Media/Media.yml index 8f093d29dac..8e6a97e518e 100644 --- a/apidoc/Titanium/Media/Media.yml +++ b/apidoc/Titanium/Media/Media.yml @@ -2235,6 +2235,20 @@ properties: osver: {ios: {min: "14.0"}} since: { android: "6.0.0", iphone: "9.2.0", ipad: "9.2.0" } + - name: maxImages + summary: Specifies the number of images a user can select at maximum. + description: | + Only available on Android API 21 and above and with `allowMultiple:true` + type: Boolean + platforms: [android] + since: { android: "12.5.0" } + + - name: pathOnly + summary: Do not include the blob in the result + type: Boolean + platforms: [android] + since: { android: "12.5.0" } + - name: selectionLimit summary: Specifies number of media item that can be selected. description: | @@ -2284,6 +2298,12 @@ properties: summary: The media object, as a [Blob](Titanium.Blob). type: Titanium.Blob + - name: path + summary: The path of the image when returning data from the gallery. + type: String + platforms: [android] + since: "12.5.0" + - name: mediaType summary: The type of media, either `MEDIA_TYPE_PHOTO`, `MEDIA_TYPE_LIVEPHOTO` or `MEDIA_TYPE_VIDEO` defined in . type: String From b9fd68326f1dca7f7dc4eeb20e9fffa881dbce6d Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 26 Aug 2024 19:32:08 +0200 Subject: [PATCH 108/145] feat(android): flatten ListView layout (#14037) * feat(android): flatten ListView layout * change layout order * adjust right padding * fix footer/headerView * update library, move to async updates --- .../layout/titanium_ui_listview_holder.xml | 167 +++++++++--------- .../ui/widget/listview/ListViewAdapter.java | 4 +- .../ui/widget/listview/ListViewHolder.java | 29 ++- .../listview/TiRecyclerViewAdapter.java | 6 +- android/titanium/build.gradle | 2 +- 5 files changed, 113 insertions(+), 95 deletions(-) diff --git a/android/modules/ui/res/layout/titanium_ui_listview_holder.xml b/android/modules/ui/res/layout/titanium_ui_listview_holder.xml index 88cab51e45a..de8cfbe1581 100644 --- a/android/modules/ui/res/layout/titanium_ui_listview_holder.xml +++ b/android/modules/ui/res/layout/titanium_ui_listview_holder.xml @@ -1,96 +1,91 @@ - + - - + - - - + - - + - + - + - - + - - + - - - - + diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewAdapter.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewAdapter.java index 5b641c8ed3d..dc59801541c 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewAdapter.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewAdapter.java @@ -16,9 +16,9 @@ import android.content.Context; import android.view.ViewGroup; -import android.widget.RelativeLayout; import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; public class ListViewAdapter extends TiRecyclerViewAdapter { @@ -112,7 +112,7 @@ public void onBindViewHolder(@NonNull ListViewHolder holder, int position) public ListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // Create new TableViewHolder instance. - final RelativeLayout layout = (RelativeLayout) inflater.inflate(id_holder, null); + final ConstraintLayout layout = (ConstraintLayout) inflater.inflate(id_holder, null); return new ListViewHolder(parent.getContext(), layout); } diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java index 6b7defa8ae1..0a400cd4705 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/ListViewHolder.java @@ -18,6 +18,7 @@ import org.appcelerator.titanium.view.TiCompositeLayout; import org.appcelerator.titanium.view.TiUIView; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.res.Resources; @@ -33,6 +34,8 @@ import android.widget.ImageView; import android.widget.TextView; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintSet; import androidx.recyclerview.widget.RecyclerView; import java.lang.ref.WeakReference; @@ -70,7 +73,7 @@ public ListViewHolder(final Context context, final ViewGroup viewGroup) // Header attributes. setTitleAttributes("header", context, this.headerTitle); - this.container = viewGroup.findViewById(R.id.titanium_ui_listview_holder_outer_content_container); + this.container = viewGroup.findViewById(R.id.titanium_ui_listview_holder); this.leftImage = viewGroup.findViewById(R.id.titanium_ui_listview_holder_left_image); @@ -92,6 +95,7 @@ public ListViewHolder(final Context context, final ViewGroup viewGroup) * @param proxy ListItemProxy to bind. * @param selected Is row selected. */ + @SuppressLint("ClickableViewAccessibility") public void bind(final ListItemProxy proxy, final boolean selected) { reset(); @@ -165,7 +169,6 @@ public void bind(final ListItemProxy proxy, final boolean selected) this.rightImage.setVisibility(View.VISIBLE); RecyclerView.ViewHolder mViewHolder = this; - this.rightImage.setOnTouchListener(new View.OnTouchListener() { @Override @@ -252,7 +255,7 @@ public boolean onTouch(View view, MotionEvent motionEvent) borderView.setAddStatesFromChildren(true); // Amend maximum size for content to parent ListView measured height. - this.content.setChildFillHeight(nativeListView.getMeasuredHeight()); + this.container.setMinimumHeight(nativeListView.getMeasuredHeight()); // Add ListViewItem to content. this.content.addView(borderView, view.getLayoutParams()); @@ -362,6 +365,16 @@ private void setHeaderFooter(TiViewProxy listViewProxy, this.header.addView(headerView, view.getLayoutParams()); this.header.setVisibility(View.VISIBLE); + + ConstraintSet constraintSet = new ConstraintSet(); + constraintSet.clone((ConstraintLayout) this.container); + constraintSet.connect(R.id.titanium_ui_listview_holder_content, ConstraintSet.TOP, + R.id.titanium_ui_listview_holder_header, ConstraintSet.BOTTOM, 0); + constraintSet.connect(R.id.titanium_ui_listview_holder_left_image, ConstraintSet.TOP, + R.id.titanium_ui_listview_holder_header, ConstraintSet.BOTTOM, 0); + constraintSet.connect(R.id.titanium_ui_listview_holder_right_image, ConstraintSet.TOP, + R.id.titanium_ui_listview_holder_header, ConstraintSet.BOTTOM, 0); + constraintSet.applyTo((ConstraintLayout) this.container); } } } @@ -396,6 +409,16 @@ private void setHeaderFooter(TiViewProxy listViewProxy, this.footer.addView(footerView, view.getLayoutParams()); this.footer.setVisibility(View.VISIBLE); + + ConstraintSet constraintSet = new ConstraintSet(); + constraintSet.clone((ConstraintLayout) this.container); + constraintSet.connect(R.id.titanium_ui_listview_holder_content, ConstraintSet.BOTTOM, + R.id.titanium_ui_listview_holder_footer, ConstraintSet.TOP, 0); + constraintSet.connect(R.id.titanium_ui_listview_holder_left_image, ConstraintSet.BOTTOM, + R.id.titanium_ui_listview_holder_footer, ConstraintSet.TOP, 0); + constraintSet.connect(R.id.titanium_ui_listview_holder_right_image, ConstraintSet.BOTTOM, + R.id.titanium_ui_listview_holder_footer, ConstraintSet.TOP, 0); + constraintSet.applyTo((ConstraintLayout) this.container); } } } diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiRecyclerViewAdapter.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiRecyclerViewAdapter.java index 56eab7ada66..cca19084f9b 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiRecyclerViewAdapter.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/listview/TiRecyclerViewAdapter.java @@ -117,7 +117,7 @@ public void update(List newModels, boolean force) return; } - final var diffResult = DiffUtil.calculateDiff(new DiffCallback(newModelsClone, this.models)); + final var diffResult = DiffUtil.calculateDiff(new AsyncListDiffer(newModelsClone, this.models)); // Update models. this.models = newModelsClone; @@ -129,13 +129,13 @@ public void update(List newModels, boolean force) /** * Define DiffUtil.Callback to optimize updating the adapter. */ - private class DiffCallback extends DiffUtil.Callback + private class AsyncListDiffer extends DiffUtil.Callback { List newViews; List oldViews; - public DiffCallback(List newViews, List oldViews) + public AsyncListDiffer(List newViews, List oldViews) { this.newViews = newViews; this.oldViews = oldViews; diff --git a/android/titanium/build.gradle b/android/titanium/build.gradle index 97fac679e34..160a9417a4d 100644 --- a/android/titanium/build.gradle +++ b/android/titanium/build.gradle @@ -254,7 +254,7 @@ dependencies { implementation 'androidx.exifinterface:exifinterface:1.3.6' implementation "androidx.fragment:fragment:${project.ext.tiAndroidXFragmentLibVersion}" implementation 'androidx.media:media:1.6.0' - implementation 'androidx.recyclerview:recyclerview:1.3.1' + implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'androidx.recyclerview:recyclerview-selection:1.1.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'androidx.transition:transition:1.4.1' From 5b274a769b10fc3f25d2c746d6ec24aec6b5e014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Tue, 27 Aug 2024 15:01:40 +0200 Subject: [PATCH 109/145] chore: bump master to 12.6.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd968703387..97000a2d7b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "titanium-mobile", - "version": "12.5.0", + "version": "12.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "titanium-mobile", - "version": "12.5.0", + "version": "12.6.0", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 543a66416e7..57779acbd5f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "titanium-mobile", "description": "Titanium SDK", - "version": "12.5.0", + "version": "12.6.0", "moduleApiVersion": { "iphone": "2", "android": "4" From 266b6d5ed1d2b9ac77d5de999d5ab2a352f2fa1f Mon Sep 17 00:00:00 2001 From: hansemannn Date: Wed, 28 Aug 2024 00:06:24 +0000 Subject: [PATCH 110/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f761235fa5..1d5222cd372 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánJason KneenMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldJoaquin Maroto +Rene PotRodrigo FarfánMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldJoaquin Maroto ## Features From 1bbcc5bc02591facf3543d5e01315b3d1f8c7e0d Mon Sep 17 00:00:00 2001 From: hansemannn Date: Mon, 2 Sep 2024 00:06:44 +0000 Subject: [PATCH 111/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d5222cd372..f2ce0db7e75 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldJoaquin Maroto +Rene PotRodrigo FarfánMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldJoaquin Maroto ## Features From d98f6a6fbf5d6406ceb20492ba89410400b6a95c Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 5 Sep 2024 17:02:24 +0200 Subject: [PATCH 112/145] docs: add responseDictionary to HTTPClient documentation (#14101) Co-authored-by: Chris Barber --- apidoc/Titanium/Network/HTTPClient.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/apidoc/Titanium/Network/HTTPClient.yml b/apidoc/Titanium/Network/HTTPClient.yml index 21f72dc2e05..d758baa8a6c 100644 --- a/apidoc/Titanium/Network/HTTPClient.yml +++ b/apidoc/Titanium/Network/HTTPClient.yml @@ -493,6 +493,13 @@ properties: type: String permission: read-only + - name: responseDictionary + summary: Response as JSON object. + description: Set to `null` if the content type returned by the server was not a JSON or if the content could + not be parsed. + type: String + permission: read-only + - name: responseXML summary: Response object as an XML DOM Document object. description: From 3db8223a9052dc607ca9c435b8532370207056d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Tue, 10 Sep 2024 15:52:13 +0200 Subject: [PATCH 113/145] Revert "fix(ios): fix unbalanced view controller transitions causing issues on iOS 16+ (#13586)" This reverts commit 50814d717910f5b42b6f61972b30f8d10f85a268. --- iphone/Classes/TiUINavigationWindowProxy.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iphone/Classes/TiUINavigationWindowProxy.m b/iphone/Classes/TiUINavigationWindowProxy.m index d6f2f9ac4c2..1c47611fb7b 100644 --- a/iphone/Classes/TiUINavigationWindowProxy.m +++ b/iphone/Classes/TiUINavigationWindowProxy.m @@ -393,14 +393,14 @@ - (void)viewWillAppear:(BOOL)animated UIViewController *parentController = [self windowHoldingController]; [parentController addChildViewController:navController]; [navController didMoveToParentViewController:parentController]; - [navController beginAppearanceTransition:YES animated:animated]; + [navController viewWillAppear:animated]; } [super viewWillAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { if ([self viewAttached]) { - [navController endAppearanceTransition]; + [navController viewWillDisappear:animated]; } [super viewWillDisappear:animated]; } @@ -408,14 +408,14 @@ - (void)viewWillDisappear:(BOOL)animated - (void)viewDidAppear:(BOOL)animated { if ([self viewAttached]) { - [navController beginAppearanceTransition:YES animated:animated]; + [navController viewDidAppear:animated]; } [super viewDidAppear:animated]; } - (void)viewDidDisappear:(BOOL)animated { if ([self viewAttached]) { - [navController endAppearanceTransition]; + [navController viewDidDisappear:animated]; } [super viewDidDisappear:animated]; } From f3676e19e1eacadba532010f511f6123efc0f244 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Thu, 12 Sep 2024 17:29:09 +0200 Subject: [PATCH 114/145] chore: update gradle files (#13888) --- android/app/build.gradle | 8 +-- android/build.gradle | 2 +- android/kroll-apt/build.gradle | 8 +-- android/templates/build/root.build.gradle | 2 +- .../templates/module/generated/build.gradle | 2 +- android/titanium/build.gradle | 18 ++--- android/untar.gradle | 72 +++++++++---------- 7 files changed, 56 insertions(+), 56 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index f9ee6f9cdb1..d2ac439bee8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -39,17 +39,17 @@ android { // Checks our Java code against our style guidelines and for common coding mistakes using "checkstyle.xml". // Will trigger a build failure if any violations have been detected. // Customize all the Checkstyle tasks -tasks.withType(Checkstyle) { +tasks.withType(Checkstyle).configureEach { // Specify all files that should be checked classpath = files() source android.sourceSets.main.java.srcDirs } // Execute Checkstyle on all files -task checkJavaStyle(type: Checkstyle) { +tasks.register('checkJavaStyle', Checkstyle) { // include '**/*.java' } // Execute Checkstyle on all modified files -task checkstyleChanged(type: Checkstyle) { +tasks.register('checkstyleChanged', Checkstyle) { include getChangedFiles() } @@ -73,7 +73,7 @@ def getChangedFiles() { files } -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { dependsOn checkJavaStyle } diff --git a/android/build.gradle b/android/build.gradle index 319eec9c71a..325c0af0c32 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -39,6 +39,6 @@ allprojects { project.apply from: "${rootDir}/templates/build/ti.constants.gradle" } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } diff --git a/android/kroll-apt/build.gradle b/android/kroll-apt/build.gradle index 8f5d9d6ddc6..addda9dcd4f 100644 --- a/android/kroll-apt/build.gradle +++ b/android/kroll-apt/build.gradle @@ -13,16 +13,16 @@ targetCompatibility = JavaVersion.VERSION_11 // Checks our Java code against our style guidelines and for common coding mistakes using "checkstyle.xml". // Will trigger a build failure if any violations have been detected. // Customize all the Checkstyle tasks -tasks.withType(Checkstyle) { +tasks.withType(Checkstyle).configureEach { // Specify all files that should be checked classpath = files() source 'src/main/java' } // Execute Checkstyle on all files -task checkJavaStyle(type: Checkstyle) { +tasks.register('checkJavaStyle', Checkstyle) { // include '**/*.java' } -task checkstyleChanged(type: Checkstyle) { +tasks.register('checkstyleChanged', Checkstyle) { include getChangedFiles() } @@ -47,7 +47,7 @@ def getChangedFiles() { } // Hook into Java compile task. -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { // Check Java code for mistakes before compiling. dependsOn checkJavaStyle diff --git a/android/templates/build/root.build.gradle b/android/templates/build/root.build.gradle index 8df90e3f35f..c8b563a07cc 100644 --- a/android/templates/build/root.build.gradle +++ b/android/templates/build/root.build.gradle @@ -21,6 +21,6 @@ allprojects { project.apply from: "${rootDir}/ti.constants.gradle" } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } diff --git a/android/templates/module/generated/build.gradle b/android/templates/module/generated/build.gradle index 83bb889a7ba..35106af223b 100644 --- a/android/templates/module/generated/build.gradle +++ b/android/templates/module/generated/build.gradle @@ -164,7 +164,7 @@ project.afterEvaluate { } // Hook into Java compile task. -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { // Log all Java linting errors/warnings. options.compilerArgs << "-Xlint:all" diff --git a/android/titanium/build.gradle b/android/titanium/build.gradle index 160a9417a4d..2e78280442e 100644 --- a/android/titanium/build.gradle +++ b/android/titanium/build.gradle @@ -125,7 +125,7 @@ android { } // Downloads/extracts V8 library and creates a cmake file for it. To be executed before C/C++ "build" or "clean". -task updateV8Library() { +tasks.register('updateV8Library') { def packageJson = new JsonSlurper().parse(file("${projectDir}/../package.json")) def v8MakeFilePath = "${projectDir}/../runtime/v8/src/ndk-modules/libv8/V8Settings.cmake" inputs.property 'v8.version', packageJson.v8.version @@ -139,8 +139,8 @@ task updateV8Library() { def v8MakeFile = file(v8MakeFilePath) v8MakeFile.getParentFile().mkdirs() v8MakeFile.text = [ - "set(LIBV8_VERSION \"${packageJson.v8.version}\")", - "set(LIBV8_MODE \"${packageJson.v8.mode}\")" + "set(LIBV8_VERSION \"${packageJson.v8.version}\")", + "set(LIBV8_MODE \"${packageJson.v8.mode}\")" ].join('\n') + '\n' // Download/install the V8 library referenced in our "package.json", if not already done. @@ -152,24 +152,24 @@ task updateV8Library() { } } preBuild.dependsOn updateV8Library -tasks.withType(ExternalNativeCleanTask) { +tasks.withType(ExternalNativeCleanTask).configureEach { dependsOn updateV8Library } // Checks our Java code against our style guidelines and for common coding mistakes using "checkstyle.xml". // Will trigger a build failure if any violations have been detected. // Customize all the Checkstyle tasks -tasks.withType(Checkstyle) { +tasks.withType(Checkstyle).configureEach { // Specify all files that should be checked classpath = files() source android.sourceSets.main.java.srcDirs } // Execute Checkstyle on all files -task checkJavaStyle(type: Checkstyle) { +tasks.register('checkJavaStyle', Checkstyle) { // include '**/*.java' } // Execute Checkstyle on all modified files -task checkstyleChanged(type: Checkstyle) { +tasks.register('checkstyleChanged', Checkstyle) { include getChangedFiles() } @@ -196,7 +196,7 @@ def getChangedFiles() { // Performs a transpile/polyfill/rollup of our "titanium_mobile/common/Resources" directory tree's JS files, // takes a V8 snapshot of rolled-up files, and then generates a C++ header file of that snapshot to be compiled-in. // Note: This supports incremental builds. Only executes when JS files change or snapshot output file is missing. -task snapshotTiCommonFiles() { +tasks.register('snapshotTiCommonFiles') { inputs.dir "${projectDir}/../../common/Resources" inputs.file "${projectDir}/../../build/lib/builder.js" inputs.file "${projectDir}/../../build/lib/android/index.js" @@ -221,7 +221,7 @@ project.afterEvaluate { // Runs our "prebuild.js" script before the C/C++ compile, but after Java compile. (Mid-build script?) // Generates C/C++ files providing our Android-only JS files via byte arrays. -tasks.withType(JavaCompile) { +tasks.withType(JavaCompile).configureEach { dependsOn checkJavaStyle dependsOn snapshotTiCommonFiles doLast { diff --git a/android/untar.gradle b/android/untar.gradle index c8073c36141..145bb23b4eb 100644 --- a/android/untar.gradle +++ b/android/untar.gradle @@ -1,36 +1,36 @@ -/** - * Titanium SDK - * Copyright TiDev, Inc. 04/07/2022-Present - * Licensed under the terms of the Apache Public License. - * Please see the LICENSE included with this distribution for details. - */ - -// Extracts a "*.tar" file using the same parameters as the ant task. -// Used by our prebuild step to extract our "libv8-*.tar.bz2" file. -task untar() { - // Throw an error if required gradle property has not been set. - if (!project.hasProperty('src')) { - throw new InvalidUserDataException('You must set a "src" property.') - } - - // Assign a default value to any unassigned properties. - if (!project.hasProperty('compression')) { - project.ext.compression = 'none' - } - if (!project.hasProperty('overwrite')) { - project.ext.overwrite = 'true' - } - if (!project.hasProperty('dest')) { - def sourceFile = new File(src) - project.ext.dest = sourceFile.getParentFile().getPath() - } - - // Use "ant" to extract the given tarball. - ant.untar( - compression: project.properties.compression, - overwrite: project.properties.overwrite, - src: project.properties.src, - dest: project.properties.dest) -} - -defaultTasks 'untar' +/** + * Titanium SDK + * Copyright TiDev, Inc. 04/07/2022-Present + * Licensed under the terms of the Apache Public License. + * Please see the LICENSE included with this distribution for details. + */ + +// Extracts a "*.tar" file using the same parameters as the ant task. +// Used by our prebuild step to extract our "libv8-*.tar.bz2" file. +tasks.register('untar') { + // Throw an error if required gradle property has not been set. + if (!project.hasProperty('src')) { + throw new InvalidUserDataException('You must set a "src" property.') + } + + // Assign a default value to any unassigned properties. + if (!project.hasProperty('compression')) { + project.ext.compression = 'none' + } + if (!project.hasProperty('overwrite')) { + project.ext.overwrite = 'true' + } + if (!project.hasProperty('dest')) { + def sourceFile = new File(src) + project.ext.dest = sourceFile.getParentFile().getPath() + } + + // Use "ant" to extract the given tarball. + ant.untar( + compression: project.properties.compression, + overwrite: project.properties.overwrite, + src: project.properties.src, + dest: project.properties.dest) +} + +defaultTasks 'untar' \ No newline at end of file From 78bf085340df90c3b10196cbef8bbec2cd8cbfa4 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 14 Sep 2024 00:33:02 +0200 Subject: [PATCH 115/145] feat(android): statusBarColor for Window (#14089) Co-authored-by: Chris Barber --- .../ti/modules/titanium/ui/WindowProxy.java | 18 +++++++++++++++++- .../java/org/appcelerator/titanium/TiC.java | 1 + apidoc/Titanium/UI/Window.yml | 6 ++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java b/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java index 73dbe8f5f67..43d68e76c01 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/WindowProxy.java @@ -69,8 +69,10 @@ TiC.PROPERTY_MODAL, TiC.PROPERTY_WINDOW_PIXEL_FORMAT, TiC.PROPERTY_FLAG_SECURE, - TiC.PROPERTY_BAR_COLOR + TiC.PROPERTY_BAR_COLOR, + TiC.PROPERTY_STATUS_BAR_COLOR }) + public class WindowProxy extends TiWindowProxy implements TiActivityWindow { private static final String TAG = "WindowProxy"; @@ -320,6 +322,12 @@ public void windowCreated(TiBaseActivity activity, Bundle savedInstanceState) } } + if (hasProperty(TiC.PROPERTY_STATUS_BAR_COLOR)) { + int colorInt = TiColorHelper.parseColor( + TiConvert.toString(getProperty(TiC.PROPERTY_STATUS_BAR_COLOR)), activity); + win.setStatusBarColor(colorInt); + } + // Handle titleAttributes property. if (hasProperty(TiC.PROPERTY_TITLE_ATTRIBUTES)) { KrollDict innerAttributes = getProperties().getKrollDict(TiC.PROPERTY_TITLE_ATTRIBUTES); @@ -446,6 +454,14 @@ public void onPropertyChanged(String name, Object value) } } + if (name.equals(TiC.PROPERTY_STATUS_BAR_COLOR)) { + if (windowActivity != null && windowActivity.get() != null) { + AppCompatActivity activity = windowActivity.get(); + int colorInt = TiColorHelper.parseColor(TiConvert.toString(value), activity); + activity.getWindow().setStatusBarColor(colorInt); + } + } + if (name.equals(TiC.PROPERTY_TITLE_ATTRIBUTES)) { if (windowActivity != null && windowActivity.get() != null) { // Get a reference to the ActionBar. diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index c7da4f79aa8..040d9a003fd 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -305,6 +305,7 @@ public class TiC public static final String PROPERTY_TOUCH_FEEDBACK_COLOR = "touchFeedbackColor"; public static final String PROPERTY_TRANSITION_NAME = "transitionName"; public static final String PROPERTY_BAR_COLOR = "barColor"; + public static final String PROPERTY_STATUS_BAR_COLOR = "statusBarColor"; public static final String PROPERTY_BASE_URL = "baseUrl"; public static final String PROPERTY_BASE_URL_WEBVIEW = "baseURL"; public static final String PROPERTY_BIG_TEXT = "bigText"; diff --git a/apidoc/Titanium/UI/Window.yml b/apidoc/Titanium/UI/Window.yml index bbc3aef2a6f..9ebae2d4a9a 100644 --- a/apidoc/Titanium/UI/Window.yml +++ b/apidoc/Titanium/UI/Window.yml @@ -1353,6 +1353,12 @@ properties: platforms: [iphone, ipad, macos] since: {iphone: "3.1.3", ipad: "3.1.3", macos: "9.2.0"} + - name: statusBarColor + summary: The color of the status bar (top bar) for this window. + type: [Number] + platforms: [android] + since: {android: "12.5.0"} + - name: sustainedPerformanceMode summary: Maintain a sustainable level of performance. description: | From 4c1c067206f56d0c5862a2e9faf099dd417dbd3e Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Sat, 14 Sep 2024 18:01:14 +0200 Subject: [PATCH 116/145] chore(android): forward --sdk in module build process (#14112) * chore(android): forward --sdk in module build process * optimize code --- android/cli/commands/_buildModule.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/android/cli/commands/_buildModule.js b/android/cli/commands/_buildModule.js index 30e6f003cf5..1fdf5c78767 100644 --- a/android/cli/commands/_buildModule.js +++ b/android/cli/commands/_buildModule.js @@ -58,6 +58,7 @@ AndroidModuleBuilder.prototype.migrate = async function migrate() { const manifestModuleAPIVersion = this.manifest.apiversion; const manifestTemplateFile = path.join(this.platformPath, 'templates', 'module', 'default', 'template', 'android', 'manifest.ejs'); let newVersion = semver.inc(this.manifest.version, 'major'); + this.tiSdkVersion = cliSDKVersion; // Determine if the "manifest" file's "apiversion" needs updating. let isApiVersionUpdateRequired = false; @@ -873,6 +874,7 @@ AndroidModuleBuilder.prototype.runModule = async function (cli) { '-u', 'localhost', '-d', tmpDir, '-p', 'android', + '--sdk', this.tiSdkVersion, '--force' ], this.logger @@ -917,7 +919,7 @@ AndroidModuleBuilder.prototype.runModule = async function (cli) { // Run the temp app. this.logger.debug(__('Running example project...', tmpDir.cyan)); - let buildArgs = [ process.argv[1], 'build', '-p', 'android', '-d', tmpProjectDir ]; + let buildArgs = [ process.argv[1], 'build', '-p', 'android', '-d', tmpProjectDir, '--sdk', this.tiSdkVersion ]; if (this.target) { buildArgs.push('-T'); buildArgs.push(this.target); From fac2c4b82f39b0d12ee2c42ace4bf6567f52b3fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Sat, 14 Sep 2024 18:06:13 +0200 Subject: [PATCH 117/145] fix(android): textfield padding (#13513) * Revert "Revert "fix(android): textfield padding (#13279)" (#13512)" This reverts commit 918388a75a98c3f5458d27f6ed035f11883b303e. * fix(android): fix input value * reset padding --------- Co-authored-by: m1ga Co-authored-by: Michael Gangolf --- .../modules/titanium/ui/widget/TiUIText.java | 56 ++++++++++++------ .../snapshots/textfieldPadding@2.75x.png | Bin 0 -> 3469 bytes tests/Resources/ti.ui.textfield.test.js | 37 ++++++++++++ 3 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 tests/Resources/android/snapshots/textfieldPadding@2.75x.png diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index 0af9c82ac5d..da19265a5b2 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -67,6 +67,7 @@ public class TiUIText extends TiUIView implements TextWatcher, OnEditorActionLis private int viewHeightInLines; private int maxLines = Integer.MAX_VALUE; private int hintTextPadding; + private HashMap defaultPadding = new HashMap(); private InputFilterHandler inputFilterHandler; protected TiUIEditText tv; @@ -159,6 +160,11 @@ public boolean onKey(View v, int keyCode, KeyEvent event) textInputLayout.addView(this.tv, new TextInputLayout.LayoutParams( TextInputLayout.LayoutParams.MATCH_PARENT, TextInputLayout.LayoutParams.MATCH_PARENT)); + // store default padding + this.defaultPadding.put(TiC.PROPERTY_TOP, this.tv.getPaddingTop()); + this.defaultPadding.put(TiC.PROPERTY_RIGHT, this.tv.getPaddingRight()); + this.defaultPadding.put(TiC.PROPERTY_BOTTOM, this.tv.getPaddingBottom()); + this.defaultPadding.put(TiC.PROPERTY_LEFT, this.tv.getPaddingLeft()); setNativeView(textInputLayout); } @@ -326,28 +332,39 @@ private void updateTextField() private void setTextPadding(HashMap d) { - int paddingLeft = textInputLayout.getPaddingLeft(); - int paddingRight = textInputLayout.getPaddingRight(); - int paddingTop = textInputLayout.getPaddingTop(); - int paddingBottom = textInputLayout.getPaddingBottom(); - - if (d.containsKey(TiC.PROPERTY_LEFT)) { - paddingLeft = TiConvert.toInt(d.get(TiC.PROPERTY_LEFT), 0); - } + int paddingLeft = tv.getPaddingLeft(); + int paddingRight = tv.getPaddingRight(); + int paddingTop = tv.getPaddingTop(); + int paddingBottom = tv.getPaddingBottom(); + + if (d == null) { + // reset to default padding + paddingLeft = (int) this.defaultPadding.get(TiC.PROPERTY_LEFT); + paddingRight = (int) this.defaultPadding.get(TiC.PROPERTY_RIGHT); + paddingTop = (int) this.defaultPadding.get(TiC.PROPERTY_TOP); + paddingBottom = (int) this.defaultPadding.get(TiC.PROPERTY_BOTTOM); + } else { + if (d.containsKey(TiC.PROPERTY_LEFT)) { + paddingLeft = (int) TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_LEFT), 0), + TiDimension.TYPE_LEFT).getAsPixels(textInputLayout); + } - if (d.containsKey(TiC.PROPERTY_RIGHT)) { - paddingRight = TiConvert.toInt(d.get(TiC.PROPERTY_RIGHT), 0); - } + if (d.containsKey(TiC.PROPERTY_RIGHT)) { + paddingRight = (int) TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_RIGHT), 0), + TiDimension.TYPE_RIGHT).getAsPixels(textInputLayout); + } - if (d.containsKey(TiC.PROPERTY_TOP)) { - paddingTop = TiConvert.toInt(d.get(TiC.PROPERTY_TOP), 0); - } + if (d.containsKey(TiC.PROPERTY_TOP)) { + paddingTop = (int) TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_TOP), 0), + TiDimension.TYPE_TOP).getAsPixels(textInputLayout); + } - if (d.containsKey(TiC.PROPERTY_BOTTOM)) { - paddingBottom = TiConvert.toInt(d.get(TiC.PROPERTY_BOTTOM), 0); + if (d.containsKey(TiC.PROPERTY_BOTTOM)) { + paddingBottom = (int) TiConvert.toTiDimension(TiConvert.toInt(d.get(TiC.PROPERTY_BOTTOM), 0), + TiDimension.TYPE_BOTTOM).getAsPixels(textInputLayout); + } } - - textInputLayout.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); + tv.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); } @Override @@ -984,6 +1001,9 @@ public void setHintText(int type, CharSequence hintText) this.textInputLayout.setHintEnabled(true); } + this.defaultPadding.put(TiC.PROPERTY_TOP, (type == UIModule.HINT_TYPE_ANIMATED) + ? this.hintTextPadding : this.defaultPadding.get(TiC.PROPERTY_BOTTOM)); + this.tv.setPadding( this.tv.getPaddingLeft(), (type == UIModule.HINT_TYPE_ANIMATED) ? this.hintTextPadding : this.tv.getPaddingBottom(), diff --git a/tests/Resources/android/snapshots/textfieldPadding@2.75x.png b/tests/Resources/android/snapshots/textfieldPadding@2.75x.png new file mode 100644 index 0000000000000000000000000000000000000000..86e7eb32cc3a95839e6b3f63f17939893bc7deaa GIT binary patch literal 3469 zcmd6q`9D9LfQed%%g1-==X(v^9+x$Em8c}%sln}EjJLSK^|B-7k|+|@ zZb?31Ap=1uLYSxRy~Fv-hj`4LXXA_gPfmRcf)wogkA<%6Xs(2BeBGPcqx-INCe}43 z7pF;Ekllir*UJjiQg2BWeR*?RGJWDv~B=8j)vNBfm<_)ixpI`a6Z}&bx zqP4Eu)h5_fJ-UaosV?R@E^JEh>lCT0t^GMq%&Ej+(%!szV~C;*z|u7JWo2bE^YcwF zUE*@hsS^`st=xU}O*VUAY3Zt-zJ9t{dC6j7bb+Ll6gPxhV2=-o6XWL-6pV|Dv((mp zz21z)-W*_V4pFK4^?s9OVe1Q)R#vA=%gP?u*?s8ZjIx5ge0_tnb+omw%E}s%8< zQc_dZh$h+KqIhw*2X%2OmF6Q8^X=|1#;KeT^82q{&9!c+(`U~b$l0Plm73(F8<&2t znY{OkN2JcKKf#b)I>;EQd{~~_KE3*1b3}h9DgRD;dV2a8Ta(O96uOez;gUxkfkL4) zqI~Nzj{Ebc1)FRjf!*Javaz-8YPPkoP^b>-O-xAeXA{EK-8)5Kv$M0yZ{=H_ycND4 zpx!bxWEH%>%aPp?KX-1L4u;}P|1<;y2I6rkDJfccF>)C_-`T$>e+b{OzdgSNTVLp} zLZeBjmKdY2aXnTN3*S){6^740=95TU(zN5}JM9r=p^gnUSFb1YvA#ZqC)%$f#&_ z)&JMh(nmVo?!1IVd1t3S9UoZU6{WYtU=-!&i*0ij3lkFzOUOSvQ$zs=Qdhixe#vr-PjSYXIQ^X%V;P;p6?C#h5ju#h3Z6`Jo z2*}^j|4he!dQe#b1a1m^=p|;b52~Z1V^5p*SBUxcbzpE1?-XBKtL$DwD_i#7S{b)T zNSkDT4qPM|(eH@y+d!dmv=emPGtnBmYVj_D4^0v6U~GI0g+jrC2}o4<4*OZ~>eM}& z6CsbTn76AIx_VJ5&(z+5FiyHACnrtd*VEJc61n3-)ZGvhf%UmyKW{RJ12>)E3~4Hr zDpTpLilAX(U6)~=9v&7NTTf24y;Wv!U~Vp8 zVrV!;zW|Af=v9pukjUO${KaG-o<3DE)z;CWN7EiGp}bIUq6 zA^#98IdX4v*nT{SNi~Y9-2FB7NSmpvoUC{iNo4egH=_ty@x3j z>B>cvg5VuK6s7l+kPseji*ei>X>Ff=f@xYiHoUUE$rK;udHb=EpDG+_NO=`@B3OXuWSxc8b0f5)$o*^VQKg6cik+M)V#=m)=LH%G&+N zz79Q25pw=fpefFbjg7T{!`146ititK*CZ3b4-}*w6pEa`pdNfxO$*5XReAX|=mK0r zK9^_gz(}P>ogG?3Ljw%O6cxRaTb!RK9}>{`7^;cKx-@d&oq9zD`=$@bmB0g zUk3U^#gvM6U{c^V7{~ssDG%@(b98X9gV0aVEb*y9%Cy~fa%Ebe%FHoQ)J6<{7e zx@v9%(nnTc{Q4EJuMP(Hv7|>=Dy*(0rKAL9SKG+#t^a_e!vT~}_X zNfJJjcqN~Uv#VCVeS66|93U&}S|!D+C;ONnc{U9~%9;<3`^wcdFbJIQ2~ms*4^%X@ z#~3`vBo`Rxoq{Jxn@U}-&n&m1%A*{VfmECdY_U#ZSy6#8ZjzFMx72*rFTLb2kW^nE8?N$yB ztcY_d`sDU?C}37mQL$m|)?|c^d(C4@D578gidp_t_Op@C_i$)t&X=mHWU%nt;?1ko zi+0R-k ze@XyAp?9|?qr-h*3L+IvO%Y{p=CT029RwJOod5O9tA|=4)+v&endwg~h-5#Wo?W*E z){>BL?D%n6W#vpc?ix}4A?~Kge>Nt3i;&%dc*+ZPzg#~v2M#H88L^(j5?ZXyH$gxNpvQWVWT9Cfu&l(;)lZ<5*75l|s|Utql#20#MvnhxkT- z%;MqWWY z^U@uK&Jn0za|eaOcv02Vlz&1%K%F_l3Z?>Dx3;!+xez;6V=e-#0&l+xHNkI_^qpWo|idWrojh=%`x&HT9V>C+ZQMu{`TDwvDQQoKaeJ28`s zjjhmGIMT$?Q5>liNq?L7PvIdx{-3EA)GrhJ-IYS(7_pd^?WEw}6Pltr55ba>uX~9^ z>5vo9Y8x*fpHJJ{@E)lP85tRsWo4bLdts94V=YA#ub7$4?RH9E2H&k9}oyx z2&AyMxY(5m1QWi)ss}3BA15MU%sT96=)b) zT3V*RJbwAOF!*D7`YAvUOU}sIbW_P5%C+9ZH@rMOi$W&C;@jHV+`}>p0HL(h)8mQc z?rmivku02}i;H9=XFkWu$w_{vYhNUw6(X(0(Gi!BhbwKZBSmlI-rQ?|3vX(0CjsAfG~yH(cOI{C@9GC#f#cG r+}pcxfBXN1U0;4s!oUA0@Q=Vi)757U%!X#*NCh&|Gt)(DKY9H>D*3T> literal 0 HcmV?d00001 diff --git a/tests/Resources/ti.ui.textfield.test.js b/tests/Resources/ti.ui.textfield.test.js index 30bee55770d..7d33e739b92 100644 --- a/tests/Resources/ti.ui.textfield.test.js +++ b/tests/Resources/ti.ui.textfield.test.js @@ -144,6 +144,43 @@ describe('Titanium.UI.TextField', () => { win.open(); }); + it.android('android padding (visual check)', function (finish) { + this.timeout(5000); + const textField = Ti.UI.createTextField({ + value: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec ullamcorper massa, eget tempor sapien. Phasellus nisi metus, tempus a magna nec, ultricies rutrum lacus. Aliquam sit amet augue suscipit, dignissim tellus eu, consectetur elit. Praesent ligula velit, blandit vel urna sit amet, suscipit euismod nunc.', + width: 100, + height: 40, + backgroundColor: 'white', + color: 'black', + padding: { + top: 10, + bottom: 10 + } + }); + const bgView = Ti.UI.createView({ + width: 200, + height: 100, + backgroundColor: 'red' + }); + win = Ti.UI.createWindow({ + backgroundColor: '#eee' + }); + bgView.add(textField); + win.add(bgView); + + win.addEventListener('postlayout', function postlayout() { // FIXME: Support once! + win.removeEventListener('postlayout', postlayout); // only run once + try { + should(textField).matchImage('snapshots/textfieldPadding.png'); + } catch (err) { + return finish(err); + } + finish(); + }); + + win.open(); + }); + describe('.hintText', () => { let textField; beforeEach(() => { From d1c05edf9efa759e5f0186dcca2f12b3a5979f71 Mon Sep 17 00:00:00 2001 From: hansemannn Date: Mon, 16 Sep 2024 00:07:09 +0000 Subject: [PATCH 118/145] Apply automatic changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f2ce0db7e75..91ae530b24d 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ today and benefit from 1:1 sessions with the core team, exclusive modules, merch Learn more about sponsoring TiDev, the organization behind the Titanium SDK, [here](https://github.com/sponsors/tidev) 🚀. -Rene PotRodrigo FarfánMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn GouldJoaquin Maroto +Rene PotRodrigo FarfánMatt Delmarterdlewis23Daniel EthierJoe KniesekVittorio SorberaMarcus OlovssonAlessandro La RoccaReshopperGusJason David MillerMichael ZaladonisVincenzo QuacquarelliMighty GmbHFruugulKorelogic LimitedJohn Gould ## Features From 7e5f1ade3bd9cdd1cd8159f069b9cce76dcc6592 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Mon, 16 Sep 2024 12:00:23 +0300 Subject: [PATCH 119/145] fix(ios): pause returns false (#14114) --- iphone/Classes/TiMediaAudioPlayerProxy.m | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/iphone/Classes/TiMediaAudioPlayerProxy.m b/iphone/Classes/TiMediaAudioPlayerProxy.m index 59e47ad36a9..12941a0c393 100644 --- a/iphone/Classes/TiMediaAudioPlayerProxy.m +++ b/iphone/Classes/TiMediaAudioPlayerProxy.m @@ -472,11 +472,7 @@ - (void)handleTimeControlStatusNotification:(NSNotification *)note if (_player.timeControlStatus == AVPlayerTimeControlStatusPlaying) { _state = TiAudioPlayerStatePlaying; } else if (_player.timeControlStatus == AVPlayerTimeControlStatusPaused) { - if (_player.currentItem.currentTime.value == 0.0 || oldState == TiAudioPlayerStateStopping) { - _state = TiAudioPlayerStateStopped; - } else { - _state = TiAudioPlayerStatePaused; - } + _state = TiAudioPlayerStatePaused; } else if (_player.timeControlStatus == AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate) { _state = TiAudioPlayerStateWaitingForQueueToStart; } From cd0b55fd4a7263b96f31918f229cf3f1b6de0aa0 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 16 Sep 2024 11:02:01 +0200 Subject: [PATCH 120/145] docs: update NotificationChannel example (#14107) --- apidoc/Titanium/Android/NotificationChannel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apidoc/Titanium/Android/NotificationChannel.yml b/apidoc/Titanium/Android/NotificationChannel.yml index aeda2e4bfde..d108242eda1 100644 --- a/apidoc/Titanium/Android/NotificationChannel.yml +++ b/apidoc/Titanium/Android/NotificationChannel.yml @@ -25,7 +25,7 @@ examples: icon: Ti.Android.R.drawable.ic_dialog_info, contentTitle: 'TITLE', contentText : 'This is a test', - channelId: channel.getId() + channelId: channel.id }); Ti.Android.NotificationManager.notify(100, notification); From 5baf6a1840c134c785f28bd224c1466757059cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Mon, 16 Sep 2024 11:02:20 +0200 Subject: [PATCH 121/145] =?UTF-8?q?feat(ios):=20add=20=E2=80=9Cinteractive?= =?UTF-8?q?DismissModeEnabled=E2=80=9D=20API=20(#14103)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(ios): add “interactiveDismissModeEnabled” API * chore: add docs --- apidoc/Titanium/UI/NavigationWindow.yml | 10 ++++++ apidoc/Titanium/UI/TabGroup.yml | 10 ++++++ iphone/Classes/TiUINavigationWindowProxy.h | 2 ++ iphone/Classes/TiUINavigationWindowProxy.m | 38 ++++++++++++++++++++++ iphone/Classes/TiUITabProxy.h | 2 ++ iphone/Classes/TiUITabProxy.m | 38 ++++++++++++++++++++++ 6 files changed, 100 insertions(+) diff --git a/apidoc/Titanium/UI/NavigationWindow.yml b/apidoc/Titanium/UI/NavigationWindow.yml index b173599898e..83e9098e85d 100644 --- a/apidoc/Titanium/UI/NavigationWindow.yml +++ b/apidoc/Titanium/UI/NavigationWindow.yml @@ -31,6 +31,16 @@ properties: availability: creation optional: false + - name: interactiveDismissModeEnabled + summary: | + A boolean indicating whether or not child windows of this navigation window + should have the ability to be swipe-to-closed over the full width of it's window or not. + type: Boolean + default: false + platforms: [iphone, ipad, macos] + since: "12.5.0" + availability: creation + methods: - name: closeWindow summary: Closes a window and removes it from the navigation window. diff --git a/apidoc/Titanium/UI/TabGroup.yml b/apidoc/Titanium/UI/TabGroup.yml index c789b8a7624..66cbf4c1d4b 100644 --- a/apidoc/Titanium/UI/TabGroup.yml +++ b/apidoc/Titanium/UI/TabGroup.yml @@ -609,6 +609,16 @@ properties: platforms: [android, iphone, ipad, macos] since: "12.1.0" + - name: interactiveDismissModeEnabled + summary: | + A boolean indicating whether or not child windows of this tab group + should have the ability to be swipe-to-closed over the full width of it's window or not. + type: Boolean + default: false + platforms: [iphone, ipad, macos] + since: "12.5.0" + availability: creation + examples: - title: Alloy XML Markup example: | diff --git a/iphone/Classes/TiUINavigationWindowProxy.h b/iphone/Classes/TiUINavigationWindowProxy.h index f5777d15981..f7324480351 100644 --- a/iphone/Classes/TiUINavigationWindowProxy.h +++ b/iphone/Classes/TiUINavigationWindowProxy.h @@ -16,6 +16,8 @@ TiWindowProxy *current; BOOL transitionIsAnimating; BOOL transitionWithGesture; + + UIPanGestureRecognizer *fullWidthBackGestureRecognizer; } // Private API diff --git a/iphone/Classes/TiUINavigationWindowProxy.m b/iphone/Classes/TiUINavigationWindowProxy.m index 1c47611fb7b..ac13e26b1c8 100644 --- a/iphone/Classes/TiUINavigationWindowProxy.m +++ b/iphone/Classes/TiUINavigationWindowProxy.m @@ -16,9 +16,16 @@ @implementation TiUINavigationWindowProxy - (void)_destroy { + if (fullWidthBackGestureRecognizer != nil) { + [fullWidthBackGestureRecognizer setDelegate:nil]; + [navController.view removeGestureRecognizer:fullWidthBackGestureRecognizer]; + } + RELEASE_TO_NIL(rootWindow); RELEASE_TO_NIL(navController); RELEASE_TO_NIL(current); + RELEASE_TO_NIL(fullWidthBackGestureRecognizer); + [super _destroy]; } @@ -88,14 +95,45 @@ - (UINavigationController *)controller [TiUtils configureController:navController withObject:self]; [navController.interactivePopGestureRecognizer addTarget:self action:@selector(popGestureStateHandler:)]; [[navController interactivePopGestureRecognizer] setDelegate:self]; + + BOOL interactiveDismissModeEnabled = [TiUtils boolValue:[self valueForKey:@"interactiveDismissModeEnabled"] def:NO]; + if (interactiveDismissModeEnabled) { + [self configureFullWidthSwipeToClose]; + } } return navController; } +- (void)configureFullWidthSwipeToClose +{ + fullWidthBackGestureRecognizer = [[UIPanGestureRecognizer alloc] init]; + + if (navController.interactivePopGestureRecognizer == nil) { + return; + } + + id targets = [navController.interactivePopGestureRecognizer valueForKey:@"targets"]; + if (targets == nil) { + return; + } + + [fullWidthBackGestureRecognizer setValue:targets forKey:@"targets"]; + [fullWidthBackGestureRecognizer setDelegate:self]; + [navController.view addGestureRecognizer:fullWidthBackGestureRecognizer]; +} + - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { BOOL isRootWindow = (current == rootWindow); + BOOL interactiveDismissModeEnabled = [TiUtils boolValue:[self valueForKey:@"interactiveDismissModeEnabled"] def:NO]; + if (interactiveDismissModeEnabled && [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { + BOOL isSystemSwipeToCloseEnabled = navController.interactivePopGestureRecognizer.isEnabled == YES; + BOOL areThereStackedViewControllers = navController.viewControllers.count > 1; + + return isSystemSwipeToCloseEnabled || areThereStackedViewControllers; + } + if (current != nil && !isRootWindow) { return [TiUtils boolValue:[current valueForKey:@"swipeToClose"] def:YES]; } diff --git a/iphone/Classes/TiUITabProxy.h b/iphone/Classes/TiUITabProxy.h index f44e5dadb20..f4ef08abe18 100644 --- a/iphone/Classes/TiUITabProxy.h +++ b/iphone/Classes/TiUITabProxy.h @@ -30,6 +30,8 @@ BOOL activeIconOriginal; id parentOrientationController; + + UIPanGestureRecognizer *fullWidthBackGestureRecognizer; } - (void)setTabGroup:(TiUITabGroupProxy *)proxy; diff --git a/iphone/Classes/TiUITabProxy.m b/iphone/Classes/TiUITabProxy.m index c14e0ff3ce0..4f33b856b89 100644 --- a/iphone/Classes/TiUITabProxy.m +++ b/iphone/Classes/TiUITabProxy.m @@ -32,6 +32,11 @@ - (void)_destroy { [[NSNotificationCenter defaultCenter] removeObserver:self name:kTiTraitCollectionChanged object:nil]; + if (fullWidthBackGestureRecognizer != nil) { + [fullWidthBackGestureRecognizer setDelegate:nil]; + [controller.view removeGestureRecognizer:fullWidthBackGestureRecognizer]; + } + if (rootWindow != nil) { [self cleanNavStack:YES]; } @@ -39,6 +44,8 @@ - (void)_destroy RELEASE_TO_NIL(rootWindow); RELEASE_TO_NIL(controller); RELEASE_TO_NIL(current); + RELEASE_TO_NIL(fullWidthBackGestureRecognizer); + [super _destroy]; } @@ -260,12 +267,43 @@ - (UINavigationController *)controller [controllerStack addObject:[self rootController]]; [controller.interactivePopGestureRecognizer addTarget:self action:@selector(popGestureStateHandler:)]; [[controller interactivePopGestureRecognizer] setDelegate:self]; + + BOOL interactiveDismissModeEnabled = [TiUtils boolValue:[tabGroup valueForKey:@"interactiveDismissModeEnabled"] def:NO]; + if (interactiveDismissModeEnabled) { + [self configureFullWidthSwipeToClose]; + } } return controller; } +- (void)configureFullWidthSwipeToClose +{ + fullWidthBackGestureRecognizer = [[UIPanGestureRecognizer alloc] init]; + + if (controller.interactivePopGestureRecognizer == nil) { + return; + } + + id targets = [controller.interactivePopGestureRecognizer valueForKey:@"targets"]; + if (targets == nil) { + return; + } + + [fullWidthBackGestureRecognizer setValue:targets forKey:@"targets"]; + [fullWidthBackGestureRecognizer setDelegate:self]; + [controller.view addGestureRecognizer:fullWidthBackGestureRecognizer]; +} + - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + BOOL interactiveDismissModeEnabled = [TiUtils boolValue:[self valueForKey:@"interactiveDismissModeEnabled"] def:NO]; + if (interactiveDismissModeEnabled && [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { + BOOL isSystemSwipeToCloseEnabled = controller.interactivePopGestureRecognizer.isEnabled == YES; + BOOL areThereStackedViewControllers = controller.viewControllers.count > 1; + + return isSystemSwipeToCloseEnabled || areThereStackedViewControllers; + } + if (current != nil) { return [TiUtils boolValue:[current valueForKey:@"swipeToClose"] def:YES]; } From 322b09bc09153c3e5adcd6570199b4d82c41f994 Mon Sep 17 00:00:00 2001 From: Michael Gangolf Date: Mon, 16 Sep 2024 11:02:50 +0200 Subject: [PATCH 122/145] feat(android): more log output (#13999) * feat(android): more log output * remove if * change for loop * Update android/runtime/v8/src/native/modules/APIModule.cpp Co-authored-by: Chris Barber --------- Co-authored-by: Chris Barber --- android/runtime/v8/src/native/modules/APIModule.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/android/runtime/v8/src/native/modules/APIModule.cpp b/android/runtime/v8/src/native/modules/APIModule.cpp index a2628327880..c460ac87dc2 100644 --- a/android/runtime/v8/src/native/modules/APIModule.cpp +++ b/android/runtime/v8/src/native/modules/APIModule.cpp @@ -115,7 +115,13 @@ void APIModule::logInfo(const FunctionCallbackInfo& args) Isolate* isolate = args.GetIsolate(); HandleScope scope(isolate); v8::String::Utf8Value message(isolate, APIModule::combineLogMessages(args)); - APIModule::logInternal(LOG_LEVEL_INFO, LCAT, *message); + + std::string cppStr(*message); + + int maxChunk = 4050; + for (size_t i = 0, len = cppStr.length(); i < len; i+=maxChunk) { + APIModule::logInternal(LOG_LEVEL_INFO, LCAT, cppStr.substr(i , maxChunk).c_str()); + } } void APIModule::logWarn(const FunctionCallbackInfo& args) From abbd387dedeec56ce1841196bf04e92a7622e410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Mon, 16 Sep 2024 11:17:49 +0200 Subject: [PATCH 123/145] feat: add 12.5.0.GA changelog # Conflicts: # CHANGELOG.md --- CHANGELOG.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca98a09d798..584645fff44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,93 @@ +# [12.5.0](https://github.com/tidev/titanium_mobile/compare/12_4_X...12.5.0) (2024-09-16) + +## About this release + +Titanium SDK 12.5.0 is a minor release of the SDK, adding new features and platform updates. It also adds stable support for +iOS 18 and Xcode 16, the latest software in the Apple ecosystem. + +## Community Credits + +* Michael Gangolf + * forward --sdk in module build process ([07f435d](https://github.com/tidev/titanium_mobile/commit/07f435d836f644ec469f9f7485682b74d25e0699)) + * more log output ([694766b](https://github.com/tidev/titanium_mobile/commit/694766b63323e3fee70e64abee07841b267fdce7)) + * statusBarColor for Window ([91499ef](https://github.com/tidev/titanium_mobile/commit/91499efadc6cc1c9a8fd2c82cdddf4ddd340f213)) + * flatten ListView layout ([b9fd683](https://github.com/tidev/titanium_mobile/commit/b9fd68326f1dca7f7dc4eeb20e9fffa881dbce6d)) + * add maxImages and pathOnly to openPhotoGallery ([3eda594](https://github.com/tidev/titanium_mobile/commit/3eda594e2721651a412a9557f6a05830c19efb29)) + * fire `selected` event again when clicking the same Tab again ([dfb1b5c](https://github.com/tidev/titanium_mobile/commit/dfb1b5c312cbfac159fbae4d7277330dad71d6e0)) + * enable Signature Scheme v3 ([c719bcd](https://github.com/tidev/titanium_mobile/commit/c719bcd5cd061cccaefe888b8edaf7f25143f412)) + * update cmake, checkstyle ([8846f07](https://github.com/tidev/titanium_mobile/commit/8846f07955e0157ff134c122bd544f66c2fdb501)) + * fix tintColor and activeTintColor in a TabbedBar ([2e92f1d](https://github.com/tidev/titanium_mobile/commit/2e92f1ddd00b9610ff9a6fc14775545b7cdf089e)) + * set targetSDK to Android 34 ([5fc81f0](https://github.com/tidev/titanium_mobile/commit/5fc81f08bdb3f9ba64d9cb4972848c8523f2d190)) + * fix Actionbar backgroundImage doc and improve setter ([803bd04](https://github.com/tidev/titanium_mobile/commit/803bd04350df89f2197842d110ad3c0384a97c7f)) + * keep Tab tintColor when changing icons ([51be366](https://github.com/tidev/titanium_mobile/commit/51be36662445ad4755438a7f1b511a837196df69)) + * fix titleAttribute when it's not a creation parameter ([017c052](https://github.com/tidev/titanium_mobile/commit/017c0524dc1a76527a8ba342964ea881633492d5)) + +* Hans Knöchel + * add “interactiveDismissModeEnabled” API ([1d2cdd5](https://github.com/tidev/titanium_mobile/commit/1d2cdd5ff802fcc628ab67cd1a882117b1e74c00)) + * textfield padding ([d75fc9e](https://github.com/tidev/titanium_mobile/commit/d75fc9efb225aa798101388d6ba50d9751a2847a)) + * Revert "fix(ios): fix unbalanced view controller transitions causing issues on iOS 16+ (#13586)" ([b9932b2](https://github.com/tidev/titanium_mobile/commit/b9932b2f3929a19523a29a453710afecb84ea7f7)) + * bump master to 12.5.0 ([52cab42](https://github.com/tidev/titanium_mobile/commit/52cab4293d6c9a0472428f4ed0d0fb7566ebb530)) + * add 12.5.0 changelog ([e5e3f33](https://github.com/tidev/titanium_mobile/commit/e5e3f33323e65593f69eda2fc56f750e7611ec7a)) + +* Abdullah Al-Faqeir + * pause returns false ([e577bce](https://github.com/tidev/titanium_mobile/commit/e577bce9b640974ce92a9ad209846fa2f5b7915b)) + +## Bug Fixes + +### Android platform + +* fix Actionbar backgroundImage doc and improve setter ([803bd04](https://github.com/tidev/titanium_mobile/commit/803bd04350df89f2197842d110ad3c0384a97c7f)) +* fix tintColor and activeTintColor in a TabbedBar ([2e92f1d](https://github.com/tidev/titanium_mobile/commit/2e92f1ddd00b9610ff9a6fc14775545b7cdf089e)) +* fix titleAttribute when it's not a creation parameter ([017c052](https://github.com/tidev/titanium_mobile/commit/017c0524dc1a76527a8ba342964ea881633492d5)) +* keep Tab tintColor when changing icons ([51be366](https://github.com/tidev/titanium_mobile/commit/51be36662445ad4755438a7f1b511a837196df69)) +* textfield padding ([d75fc9e](https://github.com/tidev/titanium_mobile/commit/d75fc9efb225aa798101388d6ba50d9751a2847a)) + +### iOS platform + +* pause returns false ([e577bce](https://github.com/tidev/titanium_mobile/commit/e577bce9b640974ce92a9ad209846fa2f5b7915b)) + +### Multiple platforms + +* sdk build on windows needs shell: true to run batch files ([f3e5a0b](https://github.com/tidev/titanium_mobile/commit/f3e5a0bd90eb75dfa7ec0c5e6a4b4cc39ac4b95a)) + +## Features + +### Multiple platforms + +* add 12.4.0.GA changelog ([9388600](https://github.com/tidev/titanium_mobile/commit/9388600a951db750e188eaca6c14b6e1683ffd7c)) +* add 12.5.0 changelog ([e5e3f33](https://github.com/tidev/titanium_mobile/commit/e5e3f33323e65593f69eda2fc56f750e7611ec7a)) + +### Android platform + +* add maxImages and pathOnly to openPhotoGallery ([3eda594](https://github.com/tidev/titanium_mobile/commit/3eda594e2721651a412a9557f6a05830c19efb29)) +* enable Signature Scheme v3 ([c719bcd](https://github.com/tidev/titanium_mobile/commit/c719bcd5cd061cccaefe888b8edaf7f25143f412)) +* fire `selected` event again when clicking the same Tab again ([dfb1b5c](https://github.com/tidev/titanium_mobile/commit/dfb1b5c312cbfac159fbae4d7277330dad71d6e0)) +* flatten ListView layout ([b9fd683](https://github.com/tidev/titanium_mobile/commit/b9fd68326f1dca7f7dc4eeb20e9fffa881dbce6d)) +* more log output ([694766b](https://github.com/tidev/titanium_mobile/commit/694766b63323e3fee70e64abee07841b267fdce7)) +* set targetSDK to Android 34 ([5fc81f0](https://github.com/tidev/titanium_mobile/commit/5fc81f08bdb3f9ba64d9cb4972848c8523f2d190)) +* statusBarColor for Window ([91499ef](https://github.com/tidev/titanium_mobile/commit/91499efadc6cc1c9a8fd2c82cdddf4ddd340f213)) + +### iOS platform + +* add “interactiveDismissModeEnabled” API ([1d2cdd5](https://github.com/tidev/titanium_mobile/commit/1d2cdd5ff802fcc628ab67cd1a882117b1e74c00)) + +## BREAKING CHANGES + + +## SDK Module Versions + +| Module | Android version | iOS Version | +| ----------- | --------------- | ----------- | +| facebook | 12.1.0 | 14.0.0 | +| ti.map | 5.6.1 | 7.3.1 | +| ti.webdialog | 2.3.0 | 3.0.2 | +| ti.playservices | 18.3.0 | n/a | +| ti.identity | 3.1.0 | 5.0.0 | +| urlSession | n/a | 4.0.1 | +| ti.coremotion | n/a | 4.0.1 | +| ti.applesignin | n/a | 3.1.2 | +| hyperloop | 7.0.6 | 7.0.6 | + # [12.4.0](https://github.com/tidev/titanium_mobile/compare/12_3_X...12.4.0) (2024-07-17) ## About this release From 6cc8830f874474a176cc181390e4d3c18f7b8b38 Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Mon, 16 Sep 2024 13:17:11 +0300 Subject: [PATCH 124/145] fix(android): ios click speed (#14115) * fix(android): ios click speed * fix(android): remove listener from touch end event --- iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m index f433f0bd01f..3f0331e6921 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiUIView.m @@ -1312,6 +1312,7 @@ - (UITapGestureRecognizer *)singleTapRecognizer { if (singleTapRecognizer == nil) { singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(recognizedTap:)]; + [singleTapRecognizer setNumberOfTapsRequired:1]; [self configureGestureRecognizer:singleTapRecognizer]; [self addGestureRecognizer:singleTapRecognizer]; if (doubleTapRecognizer != nil) { @@ -1434,6 +1435,8 @@ - (void)recognizedTap:(UITapGestureRecognizer *)recognizer [proxy fireEvent:@"dblclick" withObject:event propagate:YES]; } [proxy fireEvent:@"doubletap" withObject:event]; + } else if ([recognizer numberOfTapsRequired] == 1 && [proxy _hasListeners:@"click"]) { + [proxy fireEvent:@"click" withObject:event propagate:YES]; } else { [proxy fireEvent:@"singletap" withObject:event]; } @@ -1609,12 +1612,7 @@ - (void)processTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event // Click handling is special; don't propagate if we have a delegate, // but DO invoke the touch delegate. // clicks should also be handled by any control the view is embedded in. - if ([touch tapCount] == 1 && [proxy _hasListeners:@"click"]) { - if (touchDelegate == nil) { - [proxy fireEvent:@"click" withObject:evt propagate:YES]; - return; - } - } else if ([touch tapCount] == 2 && [proxy _hasListeners:@"dblclick"]) { + if ([touch tapCount] == 2 && [proxy _hasListeners:@"dblclick"]) { [proxy fireEvent:@"dblclick" withObject:evt propagate:YES]; return; } From d084485ed0bd0c0bfcc84154ad543be4ccdd59cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hans=20Kn=C3=B6chel?= Date: Mon, 16 Sep 2024 13:38:39 +0200 Subject: [PATCH 125/145] feat: update hyperloop to 7.0.7 --- support/module/packaged/modules.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/support/module/packaged/modules.json b/support/module/packaged/modules.json index 2d69caef138..9c7bb9c9a84 100644 --- a/support/module/packaged/modules.json +++ b/support/module/packaged/modules.json @@ -54,8 +54,8 @@ "commonjs": {}, "hyperloop": { "hyperloop": { - "url": "https://github.com/tidev/hyperloop.next/releases/download/v7.0.6/hyperloop-7.0.6.zip", - "integrity": "sha512-ZHmm7GINiCyrjvNMn232G1Tkby6PhwsmSxPZlPNDWH4jRn6iCpjIqX1Ha12MBedma01a4hlvARLaiUQ9j3SPow==" + "url": "https://github.com/tidev/hyperloop.next/releases/download/v7.0.7/hyperloop-7.0.7.zip", + "integrity": "sha512-+CF+1G1ClJZrY4VzrZMUCX37JT/tSGvnWWUXouiAtd6WLlPPvUI+Q7ytNoTm/q/g/hPwiiV6qzV9Rgm61qsXOg==" } } } From 50d8604ea40b4c2aacb55ee1128a2706f421715c Mon Sep 17 00:00:00 2001 From: Abdullah Al-Faqeir Date: Tue, 17 Sep 2024 10:26:35 +0300 Subject: [PATCH 126/145] chore(android): gradle 8 (#14014) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(android): let there be gradle 8 chore(android): fixed deprecations in kroll-apt project chore(android): made kroll-apt incremental to enhance build time * fix(android): revert change to java files fix(android): gradle 8 compatibility update to template build.gradle fix(android): revert dependency updates fix(android): revert minSdk and targetSdk * fix(android): kitchensink-app not running after gradle 8 fix(android): update _build.js & _buildModule.js for new gradle * Update android/app/build.gradle Co-authored-by: Chris Barber * Update android/templates/build/ti.constants.gradle Co-authored-by: Chris Barber * Update android/titanium/build.gradle Co-authored-by: Chris Barber * Update android/titanium/build.gradle Co-authored-by: Chris Barber * Update android/untar.gradle Co-authored-by: Chris Barber * Update android/titanium/build.gradle Co-authored-by: Chris Barber * fix material.r * github action * optimize material imports * optimize material imports * fix(android): fix module building * fix(android): bump ndk version for generated modules --------- Co-authored-by: Hans Knöchel Co-authored-by: Chris Barber Co-authored-by: Michael Gangolf Co-authored-by: Michael Gangolf --- .github/workflows/build.yml | 12 +- .github/workflows/release.yml | 10 +- android/.gitignore | 1 + android/.idea/codeStyles/Project.xml | 3 + android/app/build.gradle | 14 +- android/build.gradle | 8 +- android/cli/commands/_build.js | 6 +- android/cli/commands/_buildModule.js | 6 - android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 3 +- android/kroll-apt/build.gradle | 7 +- .../generator/KrollJSONGenerator.java | 2 +- .../gradle/incremental.annotation.processors | 1 + .../ti/modules/titanium/ui/PickerProxy.java | 2 +- .../titanium/ui/widget/TiImageView.java | 2 +- .../ui/widget/TiUIActivityIndicator.java | 2 +- .../titanium/ui/widget/TiUIButton.java | 2 +- .../titanium/ui/widget/TiUIButtonBar.java | 4 +- .../titanium/ui/widget/TiUIOptionBar.java | 12 +- .../titanium/ui/widget/TiUITabbedBar.java | 2 +- .../modules/titanium/ui/widget/TiUIText.java | 2 +- .../widget/listview/TiRecyclerViewHolder.java | 5 +- .../ui/widget/searchbar/TiUISearchBar.java | 2 +- .../widget/tabgroup/TiUIAbstractTabGroup.java | 2 +- android/settings.gradle | 4 +- android/templates/build/AndroidManifest.xml | 1 - android/templates/build/app.build.gradle | 8 +- android/templates/build/root.build.gradle | 7 +- android/templates/build/ti.constants.gradle | 3 +- .../templates/module/generated/build.gradle | 33 ++-- android/titanium/AndroidManifest.xml | 27 +-- android/titanium/build.gradle | 162 +++++++++++------- android/untar.gradle | 72 ++++---- 33 files changed, 238 insertions(+), 192 deletions(-) create mode 100644 android/kroll-apt/src/main/resources/META-INF/gradle/incremental.annotation.processors diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f0c0afcb02d..7ee41f0c410 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,8 +21,8 @@ jobs: - name: Android build uses: ./.github/actions/build-android with: - node-version: '16.x' - java-version: '11' + node-version: '18.x' + java-version: '17' ios: runs-on: macos-13 @@ -39,7 +39,7 @@ jobs: - name: iOS build uses: ./.github/actions/build-ios with: - node-version: '16.x' + node-version: '18.x' js: runs-on: ubuntu-latest @@ -50,10 +50,10 @@ jobs: with: fetch-depth: 0 - - name: Use Node.js 16.x + - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: '16.x' + node-version: '18.x' cache: 'npm' - name: Install dependencies @@ -84,5 +84,5 @@ jobs: uses: ./.github/actions/package with: node-version: '16.x' - java-version: '11' + java-version: '17' vtag: ${{ env.vtag }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9ab7e263666..120c547b08c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -77,8 +77,8 @@ jobs: - name: Android build uses: ./.github/actions/build-android with: - node-version: '16.x' - java-version: '11' + node-version: '18.x' + java-version: '17' ios: runs-on: macos-13 @@ -97,7 +97,7 @@ jobs: - name: iOS build uses: ./.github/actions/build-ios with: - node-version: '16.x' + node-version: '18.x' package: runs-on: macos-12 @@ -116,8 +116,8 @@ jobs: - name: Package uses: ./.github/actions/package with: - node-version: '16.x' - java-version: '11' + node-version: '18.x' + java-version: '17' vtag: ${{ env.vtag }} release: diff --git a/android/.gitignore b/android/.gitignore index 56cacb3ced2..b6bd8f6c33d 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -14,3 +14,4 @@ build/ /kroll-apt/bin/ /local.properties /titanium/assets/Resources/ti.internal/build.properties +/.idea/ diff --git a/android/.idea/codeStyles/Project.xml b/android/.idea/codeStyles/Project.xml index 8d13c04b12c..36d210ea229 100644 --- a/android/.idea/codeStyles/Project.xml +++ b/android/.idea/codeStyles/Project.xml @@ -9,6 +9,9 @@ + +