From 031d6bf2332f98ce9af3d555a867c9ef34e5b73c Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Mon, 17 Jan 2022 23:43:54 -0500 Subject: [PATCH 01/73] Fixes #271 - Updated LoggerTestUtils to lazy-load standard user profile, using all possible translated names to ensure it works, regardless of the current user's specified language --- config/scripts/build/generate-lwc-docs.ps1 | 4 +- .../tests/common/classes/LoggerTestUtils.cls | 71 ++++++++++++++++++- 2 files changed, 70 insertions(+), 5 deletions(-) diff --git a/config/scripts/build/generate-lwc-docs.ps1 b/config/scripts/build/generate-lwc-docs.ps1 index d68c6249b..544a763a4 100644 --- a/config/scripts/build/generate-lwc-docs.ps1 +++ b/config/scripts/build/generate-lwc-docs.ps1 @@ -1,6 +1,6 @@ # This script is used to generate the markdown files used by Github pages for lightning component jsdocs -npx jsdoc2md nebula-logger/main/logger-engine/lwc/logger/logger.js > ./docs/lightning-components/Logger.md -npx jsdoc2md nebula-logger/main/logger-engine/lwc/logger/logEntryBuilder.js > ./docs/lightning-components/LogEntryBuilder.md +npx jsdoc2md nebula-logger/core/main/logger-engine/lwc/logger/logger.js > ./docs/lightning-components/Logger.md +npx jsdoc2md nebula-logger/core/main/logger-engine/lwc/logger/logEntryBuilder.js > ./docs/lightning-components/LogEntryBuilder.md $docsSubdirectories = "docs/lightning-components/*.*" foreach($file in Get-ChildItem $docsSubdirectories) { diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index ae58b94d7..b3e68450a 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -3,13 +3,12 @@ // See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. // //------------------------------------------------------------------------------------------------// -@SuppressWarnings('PMD.PropertyNamingConventions') +@SuppressWarnings('PMD.MethodNamingConventions, PMD.PropertyNamingConventions') @IsTest public class LoggerTestUtils { private static final Map SOBJECT_TYPE_TO_MOCK_ID_COUNT = new Map(); - private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User' LIMIT 1]; - // Lazy-load & cache permission sets + // Lazy-load & cache permission sets & profiles private static final Map PERMISSION_SETS_BY_NAME { get { if (PERMISSION_SETS_BY_NAME == null) { @@ -60,6 +59,16 @@ public class LoggerTestUtils { private set; } + private static final Profile STANDARD_USER_PROFILE { + get { + if (STANDARD_USER_PROFILE == null) { + STANDARD_USER_PROFILE = queryStandardUserProfile(); + } + return STANDARD_USER_PROFILE; + } + private set; + } + /** * @description Assigns the permission set `LoggerAdmin` to the specified user ID * @param userId The ID of the user that should be assigned the permission set @@ -228,4 +237,60 @@ public class LoggerTestUtils { } return results; } + + private static Profile queryStandardUserProfile() { + // The Profile object does not have a DeveloperName field, and tandard profile names are (annoyingly) translated + // to the current user's language - to ensure that this // query works for all languages, the translated names + // have been included for these languages: + // 'en_US', 'de', 'es', 'fr', 'it', 'ja', 'sv', 'ko', 'zh_TW', 'zh_CN', 'pt_BR', 'nl_NL', 'da', 'th', 'fi', 'ru', 'es_MX', 'no' + List translatedProfileNames = new List{ + 'Standard User', + 'Standardbenutzer', + 'Usuario estándar', + 'Utilisateur standard', + 'Utente standard', + '標準ユーザ', + 'Standardanvändare', + '표준 사용자', + '標準使用者', + '标准用户', + 'Usuário Padrão', + 'Standaardgebruiker', + 'Standardbruger', + 'ผู้ใช้มาตรฐาน', + 'Vakiokäyttäjä', + 'Стандартный пользователь', + 'Usuario estándar', + 'Standardbruker' + }; + return [SELECT Id FROM Profile WHERE Name IN :translatedProfileNames LIMIT 1]; + } + + // Actual test methods for LoggerTestUtils - the goal of this class is to be a utility class for other test classes, + // but this test ensures that this utility class is working as expected. Yes, this does DML in a for-loop, which is normally + // HORRIBLE to do, but in this case, it's the only way to ensure that the current user's language has been updated + // to ensure that the profile's name is using the expected language + @SuppressWarnings('PMD.OperationWithLimitsInLoop') + @IsTest + static void it_should_return_standard_user_profile_in_all_languages() { + User currentUser = new User(Id = UserInfo.getUserId(), LanguageLocaleKey = 'en_US'); + update currentUser; + Profile expectedProfile; + // Using 'en_US', get the expected profile using the name 'Standard Profile' + System.runAs(currentUser) { + currentUser = [SELECT Id, LanguageLocaleKey FROM User WHERE Id = :UserInfo.getUserId()]; + System.assertEquals('en_US', currentUser.LanguageLocaleKey); + expectedProfile = [SELECT Id, Name FROM Profile WHERE Name = 'Standard User']; + } + // Test that each value of LanguageLocaleKey returns a value for STANDARD_USER_PROFILE + for (PicklistEntry picklistEntry : Schema.User.LanguageLocaleKey.getDescribe().getPickListValues()) { + User user = new User(Id = UserInfo.getUserId(), LanguageLocaleKey = picklistEntry.getValue()); + update user; + System.runAs(user) { + currentUser = [SELECT Id, LanguageLocaleKey FROM User WHERE Id = :UserInfo.getUserId()]; + System.assertEquals(picklistEntry.getValue(), currentUser.LanguageLocaleKey); + System.assertEquals(expectedProfile.Id, STANDARD_USER_PROFILE.Id); + } + } + } } From 226ccf091607584c02264d8315ebaaeb9c568163 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Fri, 7 Jan 2022 12:37:30 -0500 Subject: [PATCH 02/73] Added picklist values for API versions in calendar year 2022 --- .../Log__c/fields/ApiVersion__c.field-meta.xml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/nebula-logger/core/main/log-management/objects/Log__c/fields/ApiVersion__c.field-meta.xml b/nebula-logger/core/main/log-management/objects/Log__c/fields/ApiVersion__c.field-meta.xml index ededde81f..ece640f1e 100644 --- a/nebula-logger/core/main/log-management/objects/Log__c/fields/ApiVersion__c.field-meta.xml +++ b/nebula-logger/core/main/log-management/objects/Log__c/fields/ApiVersion__c.field-meta.xml @@ -14,14 +14,19 @@ false - v53.0 + v56.0 false - + - v52.0 + v55.0 false - + + + + v54.0 + false + From 6dab2fe9d849aeda34f968dfc56d4eedb47a2676 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Fri, 7 Jan 2022 15:13:57 -0500 Subject: [PATCH 03/73] Added getVersionNumber() and getNamespacePrefix() methods in Logger.cls --- docs/apex/index.md | 8 ++++++ docs/apex/logger-engine/Logger.md | 28 +++++++++++++++++++ .../main/logger-engine/classes/Logger.cls | 19 +++++++++++++ 3 files changed, 55 insertions(+) diff --git a/docs/apex/index.md b/docs/apex/index.md index 4cd178744..2d733bcef 100644 --- a/docs/apex/index.md +++ b/docs/apex/index.md @@ -72,6 +72,10 @@ Manages setting fields on `Log__c` before insert & before update Manages mass deleting `Log__c` records that have been selected by a user on a `Log__c` list view +### [LoggerInfoController](log-management/LoggerInfoController) + +Controller class for lwc `loggerInfo`, used to display system information about Nebula Logger + ### [LoggerSObjectHandler](log-management/LoggerSObjectHandler) Abstract class used by trigger handlers for shared logic @@ -100,6 +104,10 @@ Provides a centralized way to load parameters for SObject handlers & plugins ## Plugin Framework +### [LoggerPlugin](plugin-framework/LoggerPlugin) + +Abstract class used to create custom Apex & Flow plugins + ### [LoggerSObjectHandlerPlugin](plugin-framework/LoggerSObjectHandlerPlugin) Abstract class used to create custom Apex plugins to execute for all trigger operations on `Log__c` or `LogEntry__c` diff --git a/docs/apex/logger-engine/Logger.md b/docs/apex/logger-engine/Logger.md index 65f61e5fc..5ac3a5304 100644 --- a/docs/apex/logger-engine/Logger.md +++ b/docs/apex/logger-engine/Logger.md @@ -3216,6 +3216,20 @@ LoggingLevel The matching instance of LoggingLevel (or a default value if a match is not found) +#### `getNamespacePrefix()` → `String` + +Returns the current namespace of Nebula Logger + +##### Return + +**Type** + +String + +**Description** + +The current namespace prefix, or an empty string when no namespace is being used + #### `getParentLogTransactionId()` → `String` Returns the transaction ID value that will be used to relate the current transaction's log to a parent log @@ -3320,6 +3334,20 @@ String A string containing the UUID value. +#### `getVersionNumber()` → `String` + +Returns the current version number of Nebula Logger + +##### Return + +**Type** + +String + +**Description** + +The current version number, in the format `v0.0.0` + #### `info(LogMessage logMessage, Database.DeleteResult deleteResult)` → `LogEntryEventBuilder` Creates a new log entry with logging level == `LoggingLevel.INFO` diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls b/nebula-logger/core/main/logger-engine/classes/Logger.cls index 8b31b5d31..6b389be27 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls @@ -65,6 +65,25 @@ global with sharing class Logger { SYNCHRONOUS_DML } + // System info methods + + /** + * @description Returns the current version number of Nebula Logger + * @return The current version number, in the format `v0.0.0` + */ + public static String getVersionNumber() { + return CURRENT_VERSION_NUMBER; + } + + /** + * @description Returns the current namespace of Nebula Logger + * @return The current namespace prefix, or an empty string when no namespace is being used + */ + public static String getNamespacePrefix() { + String className = Logger.class.getName(); + return className.contains('.') ? className.substringBefore('.') : ''; + } + // Settings management methods /** From 75e5c2a21bbe944bb5b853619ccd40d8991d3a2a Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Tue, 18 Jan 2022 22:50:29 -0500 Subject: [PATCH 04/73] Improved logic LoggerTestUtils for handling standard user query --- docs/apex/index.md | 8 --- .../tests/common/classes/LoggerTestUtils.cls | 66 ++++++++++--------- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/docs/apex/index.md b/docs/apex/index.md index 2d733bcef..4cd178744 100644 --- a/docs/apex/index.md +++ b/docs/apex/index.md @@ -72,10 +72,6 @@ Manages setting fields on `Log__c` before insert & before update Manages mass deleting `Log__c` records that have been selected by a user on a `Log__c` list view -### [LoggerInfoController](log-management/LoggerInfoController) - -Controller class for lwc `loggerInfo`, used to display system information about Nebula Logger - ### [LoggerSObjectHandler](log-management/LoggerSObjectHandler) Abstract class used by trigger handlers for shared logic @@ -104,10 +100,6 @@ Provides a centralized way to load parameters for SObject handlers & plugins ## Plugin Framework -### [LoggerPlugin](plugin-framework/LoggerPlugin) - -Abstract class used to create custom Apex & Flow plugins - ### [LoggerSObjectHandlerPlugin](plugin-framework/LoggerSObjectHandlerPlugin) Abstract class used to create custom Apex plugins to execute for all trigger operations on `Log__c` or `LogEntry__c` diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index b3e68450a..2371a20cb 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -8,6 +8,8 @@ public class LoggerTestUtils { private static final Map SOBJECT_TYPE_TO_MOCK_ID_COUNT = new Map(); + private static Boolean cacheQueries = true; + // Lazy-load & cache permission sets & profiles private static final Map PERMISSION_SETS_BY_NAME { get { @@ -61,7 +63,7 @@ public class LoggerTestUtils { private static final Profile STANDARD_USER_PROFILE { get { - if (STANDARD_USER_PROFILE == null) { + if (STANDARD_USER_PROFILE == null || cacheQueries == false) { STANDARD_USER_PROFILE = queryStandardUserProfile(); } return STANDARD_USER_PROFILE; @@ -240,36 +242,37 @@ public class LoggerTestUtils { private static Profile queryStandardUserProfile() { // The Profile object does not have a DeveloperName field, and tandard profile names are (annoyingly) translated - // to the current user's language - to ensure that this // query works for all languages, the translated names - // have been included for these languages: - // 'en_US', 'de', 'es', 'fr', 'it', 'ja', 'sv', 'ko', 'zh_TW', 'zh_CN', 'pt_BR', 'nl_NL', 'da', 'th', 'fi', 'ru', 'es_MX', 'no' - List translatedProfileNames = new List{ - 'Standard User', - 'Standardbenutzer', - 'Usuario estándar', - 'Utilisateur standard', - 'Utente standard', - '標準ユーザ', - 'Standardanvändare', - '표준 사용자', - '標準使用者', - '标准用户', - 'Usuário Padrão', - 'Standaardgebruiker', - 'Standardbruger', - 'ผู้ใช้มาตรฐาน', - 'Vakiokäyttäjä', - 'Стандартный пользователь', - 'Usuario estándar', - 'Standardbruker' + // to the current user's language - to ensure that this query works for all languages, the translated names + // have been as part of the query's filter. + // And no, this doesn't have to be a map (only .values() is used below), but it makes maintenance & readability easier + Map profileNamesByLanguageLocaleKey = new Map{ + 'da' => 'Standardbruger', + 'de' => 'Standardbenutzer', + 'en_US' => 'Standard User', + 'es_MX' => 'Usuario estándar', + 'es' => 'Usuario estándar', + 'fi' => 'Vakiokäyttäjä', + 'fr' => 'Utilisateur standard', + 'it' => 'Utente standard', + 'ja' => '標準ユーザ', + 'ko' => '표준 사용자', + 'nl_NL' => 'Standaardgebruiker', + 'no' => 'Standardbruker', + 'pt_BR' => 'Usuário Padrão', + 'ru' => 'Стандартный пользователь', + 'sv' => 'Standardanvändare', + 'th' => 'ผู้ใช้มาตรฐาน', + 'zh_CN' => '标准用户', + 'zh_TW' => '標準使用者' }; - return [SELECT Id FROM Profile WHERE Name IN :translatedProfileNames LIMIT 1]; + return [SELECT Id, Name FROM Profile WHERE Name IN :profileNamesByLanguageLocaleKey.values() LIMIT 1]; } - // Actual test methods for LoggerTestUtils - the goal of this class is to be a utility class for other test classes, - // but this test ensures that this utility class is working as expected. Yes, this does DML in a for-loop, which is normally - // HORRIBLE to do, but in this case, it's the only way to ensure that the current user's language has been updated - // to ensure that the profile's name is using the expected language + // Actual test methods for LoggerTestUtils - the goal of this class is to be a utility class for other test classes + // (instead of actually containing tests), but this verifies that this utility class is working as expected. + // Yes, this does DML in a for-loop, which is HORRIBLE to do, but in this case, it's within the governor limits, + // it's only in a test class, and it ensures that the current user's language has been updated + // so that the profile's name is using the expected language @SuppressWarnings('PMD.OperationWithLimitsInLoop') @IsTest static void it_should_return_standard_user_profile_in_all_languages() { @@ -284,9 +287,10 @@ public class LoggerTestUtils { } // Test that each value of LanguageLocaleKey returns a value for STANDARD_USER_PROFILE for (PicklistEntry picklistEntry : Schema.User.LanguageLocaleKey.getDescribe().getPickListValues()) { - User user = new User(Id = UserInfo.getUserId(), LanguageLocaleKey = picklistEntry.getValue()); - update user; - System.runAs(user) { + currentUser.LanguageLocaleKey = picklistEntry.getValue(); + update currentUser; + System.runAs(currentUser) { + cacheQueries = false; currentUser = [SELECT Id, LanguageLocaleKey FROM User WHERE Id = :UserInfo.getUserId()]; System.assertEquals(picklistEntry.getValue(), currentUser.LanguageLocaleKey); System.assertEquals(expectedProfile.Id, STANDARD_USER_PROFILE.Id); From a80177a620c3ac69893746597da3f09bdf237466 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Tue, 18 Jan 2022 23:56:39 -0500 Subject: [PATCH 05/73] Switched to using getters & imports in loggerSettings lwc for handling namespaced object & fields --- .../lwc/loggerSettings/loggerSettings.html | 62 +++++------ .../lwc/loggerSettings/loggerSettings.js | 104 +++++++++++++++++- 2 files changed, 129 insertions(+), 37 deletions(-) diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html index 833bf7cf0..e20e24338 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html @@ -192,10 +192,10 @@

> > > Date: Wed, 19 Jan 2022 00:10:21 -0500 Subject: [PATCH 06/73] Bumped package version to v4.7.0, added devDependencies for outdated packages reported by dependabot in GitHub --- README.md | 4 +- .../main/logger-engine/classes/Logger.cls | 2 +- .../managed-package/sfdx-project.json | 3 +- package-lock.json | 212 ++++++------------ package.json | 7 +- sfdx-project.json | 4 +- 6 files changed, 75 insertions(+), 157 deletions(-) diff --git a/README.md b/README.md index 6e3132aa2..4905b6c3b 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@ Designed for Salesforce admins, developers & architects. A robust logger for Apex, Lightning Components, Flow, Process Builder & Integrations. -## Unlocked Package - v4.6.16 +## Unlocked Package - v4.7.0 [![Install Unlocked Package in a Sandbox](./images/btn-install-unlocked-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t5Y0000015lLzQAI) [![Install Unlocked Package in Production](./images/btn-install-unlocked-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y0000015lLzQAI) [![View Documentation](./images/btn-view-documentation.png)](https://jongpie.github.io/NebulaLogger/) -## Managed Package - v4.6.0 +## Managed Package - v4.7.0 [![Install Managed Package in a Sandbox](./images/btn-install-managed-package-sandbox.png)](https://test.salesforce.com/packaging/installPackage.apexp?mgd=true&p0=04t5Y0000015keOQAQ) [![Install Managed Package in Production](./images/btn-install-managed-package-production.png)](https://login.salesforce.com/packaging/installPackage.apexp?mgd=true&p0=04t5Y0000015keOQAQ) diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls b/nebula-logger/core/main/logger-engine/classes/Logger.cls index 6b389be27..5c73f5159 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls @@ -15,7 +15,7 @@ global with sharing class Logger { // There's no reliable way to get the version number dynamically in Apex @TestVisible - private static final String CURRENT_VERSION_NUMBER = 'v4.6.16'; + private static final String CURRENT_VERSION_NUMBER = 'v4.7.0'; private static final LoggingLevel DEFAULT_LOGGING_LEVEL = LoggingLevel.DEBUG; private static final List LOG_ENTRIES_BUFFER = new List(); @TestVisible diff --git a/nebula-logger/managed-package/sfdx-project.json b/nebula-logger/managed-package/sfdx-project.json index aef207205..239409f8b 100644 --- a/nebula-logger/managed-package/sfdx-project.json +++ b/nebula-logger/managed-package/sfdx-project.json @@ -23,7 +23,6 @@ "Nebula Logger - Managed Package@4.3.0-3-logger-console-app": "04t5Y000000YLDLQA4", "Nebula Logger - Managed Package@4.4.0-2-configurable-default-save-method": "04t5Y0000027FFgQAM", "Nebula Logger - Managed Package@4.5.0-0-logger-plugin-framework": "04t5Y0000027FMhQAM", - "Nebula Logger - Managed Package@4.6.0-0-tagging-system-overhaul": "04t5Y0000015keOQAQ", - "Nebula Logger - Managed Package@4.7.0-0": "04t5Y0000015lBAQAY" + "Nebula Logger - Managed Package@4.6.0-0-tagging-system-overhaul": "04t5Y0000015keOQAQ" } } diff --git a/package-lock.json b/package-lock.json index 62480223d..433d78f91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "nebula-logger", - "version": "4.6.15", + "version": "4.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -8486,6 +8486,12 @@ "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", "dev": true }, + "marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "dev": true + }, "reduce-flatten": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz", @@ -9882,9 +9888,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "version": "1.14.7", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz", + "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==", "dev": true }, "for-in": { @@ -12857,6 +12863,25 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true + }, + "markdown-it": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", + "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "entities": "~2.0.0", + "linkify-it": "^2.0.0", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "marked": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", + "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "dev": true } } }, @@ -13024,25 +13049,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "json2csv": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.6.tgz", - "integrity": "sha512-0/4Lv6IenJV0qj2oBdgPIAmFiKKnh8qh7bmLFJ+/ZZHLjSeiL3fKKGX3UryvKPbxFbhV+JcYo9KUC19GJ/Z/4A==", - "dev": true, - "requires": { - "commander": "^6.1.0", - "jsonparse": "^1.3.1", - "lodash.get": "^4.4.2" - }, - "dependencies": { - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - } - } - }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -14047,16 +14053,39 @@ } }, "markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "dev": true, "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + } } }, "markdown-it-anchor": { @@ -14065,19 +14094,10 @@ "integrity": "sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==", "dev": true }, - "markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dev": true, - "requires": { - "repeat-string": "^1.0.0" - } - }, "marked": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.1.3.tgz", - "integrity": "sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", "dev": true }, "marked-terminal": { @@ -16329,110 +16349,6 @@ "error-ex": "^1.2.0" } }, - "parse-salesforce-object": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/parse-salesforce-object/-/parse-salesforce-object-0.1.1.tgz", - "integrity": "sha512-wf3Y+4hASBqE8DmCAxPR9KPAi/wd71ZsQnWbswqyZ1vHElLj9oNLIRsQgM48sgGuw5WEdH/2epizg1OIdJIa+g==", - "dev": true, - "requires": { - "@oclif/command": "^1", - "@oclif/config": "^1", - "@oclif/plugin-help": "^3", - "glob": "^7.1.6", - "json2csv": "^5.0.5", - "markdown-table": "^2.0.0", - "string-width": "^4.2.0", - "tslib": "^1", - "xml2js": "^0.4.23" - }, - "dependencies": { - "@oclif/plugin-help": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.3.1.tgz", - "integrity": "sha512-QuSiseNRJygaqAdABYFWn/H1CwIZCp9zp/PLid6yXvy6VcQV7OenEFF5XuYaCvSARe2Tg9r8Jqls5+fw1A9CbQ==", - "dev": true, - "requires": { - "@oclif/command": "^1.8.15", - "@oclif/config": "1.18.2", - "@oclif/errors": "1.3.5", - "@oclif/help": "^1.0.1", - "chalk": "^4.1.2", - "indent-string": "^4.0.0", - "lodash": "^4.17.21", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "widest-line": "^3.1.0", - "wrap-ansi": "^6.2.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -18664,9 +18580,9 @@ "dev": true }, "shelljs": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", - "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", diff --git a/package.json b/package.json index 2a51a2a2e..8ace6433c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nebula-logger", - "version": "4.6.16", + "version": "4.7.0", "description": "Designed for Salesforce admins, developers & architects. A robust logger for Apex, Flow, Process Builder & Integrations.", "author": "Jonathan Gillespie", "license": "MIT", @@ -71,6 +71,10 @@ "trim-newlines": "^4.0.2" }, "devDependencies": { + "follow-redirects": ">=1.14.7", + "marked": ">=4.0.10", + "markdown-it": ">=12.3.2", + "shelljs": ">=0.8.5", "@babel/core": "latest", "@babel/eslint-parser": "latest", "@cparra/apexdocs": "latest", @@ -88,7 +92,6 @@ "husky": "latest", "jsdoc-to-markdown": "latest", "lint-staged": "latest", - "parse-salesforce-object": "latest", "prettier": "latest", "prettier-plugin-apex": "latest", "pwsh": "latest", diff --git a/sfdx-project.json b/sfdx-project.json index c9057d4c9..0302e14c6 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -7,8 +7,8 @@ "package": "Nebula Logger - Core", "path": "./nebula-logger/core", "definitionFile": "./config/scratch-orgs/experience-cloud-scratch-def.json", - "versionNumber": "4.6.16.0", - "versionName": "UI Cleanup", + "versionNumber": "4.7.0.0", + "versionName": "Spring '22 Release", "versionDescription": "Replaced the old aura cmp logJSONViewer with a new lwc quickaction, cleaned up flexipages, fixed an issue with some standard buttons being excluded", "releaseNotesUrl": "https://github.com/jongpie/NebulaLogger/releases", "default": true From 4282f1681729c055c2c6193b6c642b77fc76cda0 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Wed, 19 Jan 2022 00:22:57 -0500 Subject: [PATCH 07/73] Updated some packages in package-lock.json --- package-lock.json | 4839 +++++++++++++++++++++------------------------ package.json | 4 - 2 files changed, 2286 insertions(+), 2557 deletions(-) diff --git a/package-lock.json b/package-lock.json index 433d78f91..7f4702eaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -515,9 +515,9 @@ "dev": true }, "@cparra/apexdocs": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/@cparra/apexdocs/-/apexdocs-1.13.7.tgz", - "integrity": "sha512-XqMQM6mEcJY7vRv50TrR1PRWGNMxNRCe7i1JKe8rN1B4itNuT0aspGbia9FlJQA4XgfLvOW6y4htErg3P1mGew==", + "version": "1.13.8", + "resolved": "https://registry.npmjs.org/@cparra/apexdocs/-/apexdocs-1.13.8.tgz", + "integrity": "sha512-EigF8WpmGDy5q6ArWVSQV0FtbAMqcuqV+rV72LK4AtYzatW1pQ3w1xVyxg3hs3KkhHk2dgZopkwhcnmOnpOTjA==", "dev": true, "requires": { "html-entities": "^2.3.2", @@ -555,9 +555,9 @@ "dev": true }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", "dev": true }, "espree": { @@ -603,12 +603,6 @@ } } }, - "@gar/promisify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", - "integrity": "sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==", - "dev": true - }, "@hapi/hoek": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", @@ -677,12 +671,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@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==", - "dev": true - }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1208,9 +1196,9 @@ } }, "@ljharb/eslint-config": { - "version": "20.1.0", - "resolved": "https://registry.npmjs.org/@ljharb/eslint-config/-/eslint-config-20.1.0.tgz", - "integrity": "sha512-Dsysgfm3k7u8Aek9q2GMUUQJjGG2n7MtnknR9lxYI3oOLmBA3BEklJbSxiwAyMRKF63gk2lvq/drvvwHAyLyCA==", + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@ljharb/eslint-config/-/eslint-config-20.2.0.tgz", + "integrity": "sha512-LtEcF33UwGdc+tty0Xv5iAGHtDpmUQR7H5f+WwwEUz+zBH+jqzB8d7mDvMtoUSz6/CDoZhPms8pgJWbgR7VD7Q==", "dev": true }, "@lwc/babel-plugin-component": { @@ -1434,272 +1422,6 @@ "fastq": "^1.6.0" } }, - "@npmcli/arborist": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.9.0.tgz", - "integrity": "sha512-21DTow2xC0GlkowlE4zOu99UY21nSymW14fHZmB0yeAqhagmttJPmCUZXU+ngJmJ/Dwe5YP9QJUTgEVRLqnwcg==", - "dev": true, - "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", - "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.0", - "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.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" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@npmcli/ci-detect": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz", - "integrity": "sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q==", - "dev": true - }, - "@npmcli/config": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-2.3.0.tgz", - "integrity": "sha512-yjiC1xv7KTmUTqfRwN2ZL7BHV160ctGF0fLXmKkkMXj40UOvBe45Apwvt5JsFRtXSoHkUYy1ouzscziuWNzklg==", - "dev": true, - "requires": { - "ini": "^2.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^5.0.0", - "semver": "^7.3.4", - "walk-up-path": "^1.0.0" - }, - "dependencies": { - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@npmcli/disparity-colors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/disparity-colors/-/disparity-colors-1.0.1.tgz", - "integrity": "sha512-kQ1aCTTU45mPXN+pdAaRxlxr3OunkyztjbbxDY/aIcPS5CnCUrx+1+NvA6pTcYR7wmLZe37+Mi5v3nfbwPxq3A==", - "dev": true, - "requires": { - "ansi-styles": "^4.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true - } - } - }, - "@npmcli/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@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==", - "dev": true, - "requires": { - "@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" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@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==", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@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==", - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" - } - }, - "@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==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@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==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@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==", - "dev": true - }, - "@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==", - "dev": true - }, - "@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==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.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==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@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==", - "dev": true, - "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" - } - }, "@oclif/color": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@oclif/color/-/color-0.1.2.tgz", @@ -1840,13 +1562,13 @@ } }, "@oclif/fixpack": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@oclif/fixpack/-/fixpack-2.3.0.tgz", - "integrity": "sha512-49WCnMIUO6MOj5h0kSsSh0JsrKVXa332nwMYafz1mvfrLhWHvA/7CW1yvWXbmVT7RUdE0+EfqVTHFdNlipAfpg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@oclif/fixpack/-/fixpack-2.3.1.tgz", + "integrity": "sha512-ynDtqYke7WBjyAK5KQiOoNm2XGm4wBfNDzjbpq3k4NEarA5wRW0PMjdP2FkTAJE2NI3tA6I7DXxxqBzwyt+fBg==", "dev": true, "requires": { "alce": "1.2.0", - "colors": "*", + "colors": "1.4.0", "extend-object": "^1.0.0", "rc": "^1.2.8" } @@ -3729,9 +3451,9 @@ } }, "@salesforce/plugin-config": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-config/-/plugin-config-1.3.2.tgz", - "integrity": "sha512-njDjLVfbhztATvwse9gDmiBdRFJ8VTXzoaQea7HFvGDS47t9KrQ62ndnpoaqEd0A8i+AcE/elJr+2Ae5PiqSuQ==", + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-config/-/plugin-config-1.3.14.tgz", + "integrity": "sha512-aWoedAQMm3hqSSAr0BRYLPFOfYsodXg/DOcvrnA+LIzQQZXUjyedMMBcsBhCe5aSP4XpYVDru6/4YiulmGkR7A==", "dev": true, "requires": { "@oclif/config": "^1.18.1", @@ -3775,9 +3497,9 @@ } }, "@salesforce/plugin-data": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-data/-/plugin-data-0.6.6.tgz", - "integrity": "sha512-y0gJ9ggv7D5pQP2Hxea4m6QCqBSW9cuklcxxGS6CjWZWLyB4XXmRaQzzDawUVf3Ly/9FKaOogaOCaWqZynrueg==", + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-data/-/plugin-data-0.6.8.tgz", + "integrity": "sha512-BdXM5/1hBVnAj1tnlXT5go8ji0KrB6+yonqH5vZ8LwjehzWTd0obMemwz9hjtX28UQuFSsJ+wPCM6j/HaJNRKw==", "dev": true, "requires": { "@oclif/config": "^1", @@ -3980,9 +3702,9 @@ } }, "@salesforce/plugin-info": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-info/-/plugin-info-1.1.4.tgz", - "integrity": "sha512-gWKMDg93IihIIyc5trp6TCmxTMfDXujrW4EOkNp7qoy3L8fYMVEr0KXBtwepC6DgKqznZkUnu2QrG4q/b3GQGQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-info/-/plugin-info-1.2.0.tgz", + "integrity": "sha512-QQQmpxPP7CAYUxILhR/7JEIW2OkVE+VQ0RlQqCnT4iaEwL2wzDyy4QS/Ce/Era/JEvc2wWzvVUXPN9mO7VmEOg==", "dev": true, "requires": { "@oclif/config": "^1", @@ -3993,7 +3715,6 @@ "marked": "^4.0.1", "marked-terminal": "^4.2.0", "semver": "^7.3.5", - "sinon-chai": "^3.7.0", "tslib": "^2" }, "dependencies": { @@ -4040,12 +3761,6 @@ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true }, - "marked": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.8.tgz", - "integrity": "sha512-dkpJMIlJpc833hbjjg8jraw1t51e/eKDoG8TFOgc5O0Z77zaYKigYekTDop5AplRoKFGIaoazhYEhGkMtU3IeA==", - "dev": true - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -4156,15 +3871,15 @@ } }, "@salesforce/plugin-source": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-source/-/plugin-source-1.6.2.tgz", - "integrity": "sha512-/Q4+sefKiMO8F62S0+lGbreNGlzcsuFlsFgerjO7AUlJHTA9v1Wyof33bRgzjsms8jrze7y+IzKHFs6LywdNgw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-source/-/plugin-source-1.7.0.tgz", + "integrity": "sha512-Y5Vl93hzGi+Wf/I7fRh42dWyNne2qwUNGOcpdZfcOM9qPY/Y2grQDIi7F0orCqUxrk/SwaxQSl7lV6tLlSW6SQ==", "dev": true, "requires": { "@oclif/config": "^1.18.1", "@salesforce/command": "^4.2.0", "@salesforce/core": "^2.31.0", - "@salesforce/source-deploy-retrieve": "^5.8.0", + "@salesforce/source-deploy-retrieve": "^5.9.1", "@salesforce/source-tracking": "^0.5.1", "chalk": "^4.1.2", "cli-ux": "^5.6.3", @@ -5157,9 +4872,9 @@ } }, "@salesforce/source-deploy-retrieve": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-5.8.2.tgz", - "integrity": "sha512-nzbgKkoz48KC4tBjbA5KsMiBmgu4qrNpmicvZdT6POOQ3F+G/eH84ICqucZ1CqD1bUhYVVbcL8EqZkNtf2jkzg==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-5.9.2.tgz", + "integrity": "sha512-Q1FamL7pQ5wj1ZlwqaqcJBHe+jZ1JNNMeyFct/uygohOypy0nJpS+AhKKpIerD9OPPW9KYa2fmqBf0QpmBEIbQ==", "dev": true, "requires": { "@salesforce/core": "2.31.0", @@ -5169,7 +4884,7 @@ "fast-xml-parser": "^3.17.4", "graceful-fs": "^4.2.8", "ignore": "^5.1.8", - "mime": "2.4.6", + "mime": "2.6.0", "unzipper": "0.10.11", "xmldom-sfdx-encoding": "^0.1.29" }, @@ -5219,22 +4934,22 @@ } }, "@salesforce/source-tracking": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@salesforce/source-tracking/-/source-tracking-0.5.1.tgz", - "integrity": "sha512-unbwKIwCg/ZwHC5cNjm65oxhkpQBT3Pc5XEwTtRNpgyGhHMuNS74zcZSmABjXrGbQDsYf4TbwC+NMKwvErY3Qg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@salesforce/source-tracking/-/source-tracking-0.5.2.tgz", + "integrity": "sha512-vWA8hJxCv7ov/6Rh0865/cOlnZ7GgQtu3+tUKGMhZBmtubCuYIKSIwSifh6tunbnmVeqUa4FntgVvGUT2nYIqw==", "dev": true, "requires": { - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.33.1", "@salesforce/kit": "^1.5.17", - "@salesforce/source-deploy-retrieve": "^5.8.0", + "@salesforce/source-deploy-retrieve": "^5.8.2", "isomorphic-git": "^1.9.2", "ts-retry-promise": "^0.6.0" } }, "@salesforce/telemetry": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@salesforce/telemetry/-/telemetry-3.1.0.tgz", - "integrity": "sha512-oYHf/0ixn99g8eTJ2Cq39N/3yzyYjKEEsNXbl87wgYK+dyZwqVq4+Vj6tGwJmCzX8iL6CQ3ofVaKar8SxtBiHQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@salesforce/telemetry/-/telemetry-3.2.0.tgz", + "integrity": "sha512-WMKnuWfZx/iOg/OErJCt4OS72Fp4lru+EFaxPHgZIuhrLxpNOHrqni31QkYmY62eYKr0tLSuJFOs8vkgAcGcrw==", "dev": true, "requires": { "@salesforce/core": "^2.31.0", @@ -5418,9 +5133,9 @@ "dev": true }, "@sindresorhus/is": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", - "integrity": "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz", + "integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==", "dev": true }, "@sinonjs/commons": { @@ -5786,12 +5501,6 @@ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", "dev": true }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, "acorn": { "version": "8.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", @@ -5843,17 +5552,6 @@ "debug": "4" } }, - "agentkeepalive": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.0.tgz", - "integrity": "sha512-0PhAp58jZNw13UJv7NVdTGb0ZcghHUb3DrZ046JiiJY/BOaTTpbwdHq2VObPCBV8M2GPh7sgrJ3AQ8Ey468LJw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - } - }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -5908,12 +5606,6 @@ } } }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, "ansi-escape-sequences": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", @@ -5961,12 +5653,6 @@ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", "dev": true }, - "ansistyles": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ansistyles/-/ansistyles-0.1.3.tgz", - "integrity": "sha1-XeYEFb2gcbs3EnhUyGT0GyMlRTk=", - "dev": true - }, "any-shell-escape": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", @@ -5995,12 +5681,6 @@ "diagnostic-channel-publishers": "0.4.4" } }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, "archiver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", @@ -6017,9 +5697,9 @@ }, "dependencies": { "async": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", - "integrity": "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, "readable-stream": { @@ -6053,22 +5733,6 @@ "readable-stream": "^2.0.0" } }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "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==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -6553,20 +6217,6 @@ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", "dev": true }, - "bin-links": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", - "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", - "dev": true, - "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" - } - }, "binary": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", @@ -6577,12 +6227,6 @@ "chainsaw": "~0.1.0" } }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, "binaryextensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", @@ -6706,118 +6350,36 @@ "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", "dev": true }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, "byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", "dev": true }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "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": { - "@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" + "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" }, "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "minipass": "^3.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - } - } - }, - "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" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -7027,15 +6589,6 @@ "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, - "cidr-regex": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-3.1.1.tgz", - "integrity": "sha512-RBqYd32aDwbCMFJRL6wHOlDNYJsPNTt8vC82ErHF5vKt8QQzxm1FrkW8s/R5pVrXMf17sba09Uoy91PKiddAsw==", - "dev": true, - "requires": { - "ip-regex": "^4.1.0" - } - }, "cjs-module-lexer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", @@ -7094,68 +6647,6 @@ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", "dev": true }, - "cli-columns": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cli-columns/-/cli-columns-3.1.2.tgz", - "integrity": "sha1-ZzLZcpee/CrkRKHwjgj6E5yWoY4=", - "dev": true, - "requires": { - "string-width": "^2.0.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - } - } - }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -7166,12 +6657,11 @@ } }, "cli-progress": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.9.1.tgz", - "integrity": "sha512-AXxiCe2a0Lm0VN+9L0jzmfQSkcZm5EYspfqXKaSIQKqIk+0hnkZ3/v1E9B39mkD6vYhKih3c/RPsJBSwq9O99Q==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.10.0.tgz", + "integrity": "sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==", "dev": true, "requires": { - "colors": "^1.1.2", "string-width": "^4.2.0" } }, @@ -7193,13 +6683,12 @@ } }, "cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz", + "integrity": "sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==", "dev": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", + "colors": "1.4.0", "string-width": "^4.2.0" } }, @@ -7248,13 +6737,13 @@ } }, "string-width": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", - "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz", + "integrity": "sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==", "dev": true, "requires": { + "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", - "is-fullwidth-code-point": "^4.0.0", "strip-ansi": "^7.0.1" } }, @@ -7452,15 +6941,6 @@ } } }, - "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==", - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -7535,12 +7015,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true - }, "colorette": { "version": "2.0.16", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", @@ -7553,33 +7027,6 @@ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true }, - "columnify": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", - "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", - "dev": true, - "requires": { - "strip-ansi": "^3.0.0", - "wcwidth": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -7668,12 +7115,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "dev": true - }, "common-sequence": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", @@ -7846,12 +7287,6 @@ "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", "dev": true }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -8291,23 +7726,6 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - } - } - }, "defer-to-connect": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", @@ -8376,18 +7794,6 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, "detect-conflict": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/detect-conflict/-/detect-conflict-1.0.1.tgz", @@ -8552,6 +7958,12 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -8614,28 +8026,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -8645,33 +8035,12 @@ "once": "^1.4.0" } }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, "entities": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", "dev": true }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, "errlop": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/errlop/-/errlop-2.2.0.tgz", @@ -8776,9 +8145,9 @@ } }, "eslint": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz", - "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", + "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", "dev": true, "requires": { "@eslint/eslintrc": "^1.0.5", @@ -8788,11 +8157,10 @@ "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.1.0", "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.1.0", + "eslint-visitor-keys": "^3.2.0", "espree": "^9.3.0", "esquery": "^1.4.0", "esutils": "^2.0.2", @@ -8801,7 +8169,7 @@ "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.6.0", - "ignore": "^4.0.6", + "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", @@ -8812,9 +8180,7 @@ "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "progress": "^2.0.0", "regexpp": "^3.2.0", - "semver": "^7.2.1", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0", @@ -8910,9 +8276,9 @@ } }, "eslint-visitor-keys": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz", - "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz", + "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==", "dev": true }, "espree": { @@ -8982,9 +8348,9 @@ "dev": true }, "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true }, "js-yaml": { @@ -9026,15 +8392,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10024,75 +9381,22 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "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" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "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": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -10364,12 +9668,6 @@ "has-symbols": "^1.0.2" } }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -10749,15 +10047,6 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, "husky": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/husky/-/husky-7.0.4.tgz", @@ -10791,15 +10080,6 @@ "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==", "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==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -10840,12 +10120,6 @@ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, - "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==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -10868,65 +10142,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "init-package-json": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-2.0.5.tgz", - "integrity": "sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA==", - "dev": true, - "requires": { - "npm-package-arg": "^8.1.5", - "promzard": "^0.3.0", - "read": "~1.0.1", - "read-package-json": "^4.1.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "read-package-json": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz", - "integrity": "sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, "inquirer": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", @@ -11026,18 +10241,6 @@ "p-is-promise": "^1.1.0" } }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -11095,15 +10298,6 @@ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, - "is-cidr": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-4.0.2.tgz", - "integrity": "sha512-z4a1ENUajDbEl/Q6/pVBpTR1nBjjEE1X7qb7bmWYanNnPoKAvUCPFKeXV6Fe4mgTkWKBqiHIcwsI3SndiO5FeA==", - "dev": true, - "requires": { - "cidr-regex": "^3.1.1" - } - }, "is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", @@ -11206,12 +10400,6 @@ "is-extglob": "^2.1.1" } }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -11249,6 +10437,7 @@ "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" } @@ -11259,11 +10448,6 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, - "is-primitive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", - "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==" - }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -11388,12 +10572,13 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true }, "isomorphic-git": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.3.tgz", - "integrity": "sha512-Q++mEoh8NBazBujZycflotlGTSkAhyYS6tE9XAVJ7RO+Bzu6WLQc2knyJD1Onh+4Io7NmfFHvv80COremCaV8w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.4.tgz", + "integrity": "sha512-0nvws2N2pWX04AZPpYUyvgPmupKbklP/qSerP/A8yuoe8t4flhpOwYl8INdV6u8j24ALm5X3QBciOTz96ugT2Q==", "dev": true, "requires": { "async-lock": "^1.1.0", @@ -13037,12 +12222,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "json-stringify-nice": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", - "dev": true - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -13067,12 +12246,6 @@ "graceful-fs": "^4.1.6" } }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, "jsonwebtoken": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz", @@ -13111,18 +12284,6 @@ "verror": "1.10.0" } }, - "just-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", - "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", - "dev": true - }, - "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==", - "dev": true - }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -13151,9 +12312,9 @@ "dev": true }, "keyv": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz", - "integrity": "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.5.tgz", + "integrity": "sha512-531pkGLqV3BMg0eDqqJFI0R1mkK1Nm5xIP2mM6keP5P8WfFtCkg2IOwplTUmlGoTgIg9yQYZ/kdihhz89XH3vA==", "dev": true, "requires": { "json-buffer": "3.0.1" @@ -13205,143 +12366,128 @@ "type-check": "~0.3.2" } }, - "libnpmaccess": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-4.0.3.tgz", - "integrity": "sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ==", + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, + "line-column": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", + "integrity": "sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=", "dev": true, "requires": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0" + "isarray": "^1.0.0", + "isobject": "^2.0.0" }, "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "yallist": "^4.0.0" + "isarray": "1.0.0" } } } }, - "libnpmdiff": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/libnpmdiff/-/libnpmdiff-2.0.4.tgz", - "integrity": "sha512-q3zWePOJLHwsLEUjZw3Kyu/MJMYfl4tWCg78Vl6QGSfm4aXBUSVzMzjJ6jGiyarsT4d+1NH4B1gxfs62/+y9iQ==", + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "linkify-it": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", + "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", "dev": true, "requires": { - "@npmcli/disparity-colors": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.0.0", - "minimatch": "^3.0.4", - "npm-package-arg": "^8.1.1", - "pacote": "^11.3.0", - "tar": "^6.1.0" + "uc.micro": "^1.0.1" + } + }, + "lint-staged": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.2.0.tgz", + "integrity": "sha512-TnNciMBhmEqzqM+RvzqqdvrG4TsI8wCDMX1Vg9+rj2Y9uY70Nq84Mb1WOIiwxW9l5tUlCOqtY5La71RM2fSgfA==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^3.13.5", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.11.1", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" }, "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, - "diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + } + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", + "dev": true + }, + "listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "requires": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "minipass": "^3.0.0" + "color-convert": "^2.0.1" } }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - } - } - }, - "libnpmexec": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/libnpmexec/-/libnpmexec-2.0.1.tgz", - "integrity": "sha512-4SqBB7eJvJWmUKNF42Q5qTOn20DRjEE4TgvEh2yneKlAiRlwlhuS9MNR45juWwmoURJlf2K43bozlVt7OZiIOw==", - "dev": true, - "requires": { - "@npmcli/arborist": "^2.3.0", - "@npmcli/ci-detect": "^1.3.0", - "@npmcli/run-script": "^1.8.4", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^8.1.2", - "pacote": "^11.3.1", - "proc-log": "^1.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "walk-up-path": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" } }, "color-convert": { @@ -13359,418 +12505,110 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "rxjs": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.2.tgz", + "integrity": "sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } }, - "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==", + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, "requires": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } } } }, - "libnpmfund": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/libnpmfund/-/libnpmfund-1.1.0.tgz", - "integrity": "sha512-Kfmh3pLS5/RGKG5WXEig8mjahPVOxkik6lsbH4iX0si1xxNi6eeUh/+nF1MD+2cgalsQif3O5qyr6mNz2ryJrQ==", - "dev": true, - "requires": { - "@npmcli/arborist": "^2.5.0" - } - }, - "libnpmhook": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/libnpmhook/-/libnpmhook-6.0.3.tgz", - "integrity": "sha512-3fmkZJibIybzmAvxJ65PeV3NzRc0m4xmYt6scui5msocThbEp4sKFT80FhgrCERYDjlUuFahU6zFNbJDHbQ++g==", + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" }, "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true } } }, - "libnpmorg": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/libnpmorg/-/libnpmorg-2.0.3.tgz", - "integrity": "sha512-JSGl3HFeiRFUZOUlGdiNcUZOsUqkSYrg6KMzvPZ1WVZ478i47OnKSS0vkPmX45Pai5mTKuwIqBMcGWG7O8HfdA==", + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - } + "p-locate": "^5.0.0" } }, - "libnpmpack": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/libnpmpack/-/libnpmpack-2.0.1.tgz", - "integrity": "sha512-He4/jxOwlaQ7YG7sIC1+yNeXeUDQt8RLBvpI68R3RzPMZPa4/VpxhlDo8GtBOBDYoU8eq6v1wKL38sq58u4ibQ==", - "dev": true, - "requires": { - "@npmcli/run-script": "^1.8.3", - "npm-package-arg": "^8.1.0", - "pacote": "^11.2.6" - } + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, - "libnpmpublish": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-4.0.2.tgz", - "integrity": "sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw==", - "dev": true, - "requires": { - "normalize-package-data": "^3.0.2", - "npm-package-arg": "^8.1.2", - "npm-registry-fetch": "^11.0.0", - "semver": "^7.1.3", - "ssri": "^8.0.1" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true }, - "libnpmsearch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/libnpmsearch/-/libnpmsearch-3.1.2.tgz", - "integrity": "sha512-BaQHBjMNnsPYk3Bl6AiOeVuFgp72jviShNBw5aHaHNKWqZxNi38iVNoXbo6bG/Ccc/m1To8s0GtMdtn6xZ1HAw==", - "dev": true, - "requires": { - "npm-registry-fetch": "^11.0.0" - } + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true }, - "libnpmteam": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/libnpmteam/-/libnpmteam-2.0.4.tgz", - "integrity": "sha512-FPrVJWv820FZFXaflAEVTLRWZrerCvfe7ZHSMzJ/62EBlho2KFlYKjyNEsPW3JiV7TLSXi3vo8u0gMwIkXSMTw==", - "dev": true, - "requires": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^11.0.0" - }, - "dependencies": { - "aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - } - } + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true }, - "libnpmversion": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/libnpmversion/-/libnpmversion-1.2.1.tgz", - "integrity": "sha512-AA7x5CFgBFN+L4/JWobnY5t4OAHjQuPbAwUYJ7/NtHuyLut5meb+ne/aj0n7PWNiTGCJcRw/W6Zd2LoLT7EZuQ==", - "dev": true, - "requires": { - "@npmcli/git": "^2.0.7", - "@npmcli/run-script": "^1.8.4", - "json-parse-even-better-errors": "^2.3.1", - "semver": "^7.3.5", - "stringify-package": "^1.0.1" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true }, - "lilconfig": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", "dev": true }, - "line-column": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", - "integrity": "sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=", - "dev": true, - "requires": { - "isarray": "^1.0.0", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", "dev": true }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "lint-staged": { - "version": "12.1.5", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.1.5.tgz", - "integrity": "sha512-WyKb+0sNKDTd1LwwAfTBPp0XmdaKkAOEbg4oHE4Kq2+oQVchg/VAcjVQtSqZih1izNsTURjc2EkhG/syRQUXdA==", - "dev": true, - "requires": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^8.3.0", - "debug": "^4.3.3", - "execa": "^5.1.1", - "lilconfig": "2.0.4", - "listr2": "^3.13.5", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "object-inspect": "^1.11.1", - "string-argv": "^0.3.1", - "supports-color": "^9.2.1", - "yaml": "^1.10.2" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "supports-color": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", - "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", - "dev": true - } - } - }, - "listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", - "dev": true - }, - "listr2": { - "version": "3.13.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.13.5.tgz", - "integrity": "sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.4.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "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==", - "dev": true, - "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==", - "dev": true - }, - "rxjs": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.1.tgz", - "integrity": "sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - } - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", - "dev": true + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", + "dev": true }, "lodash.isinteger": { "version": "4.0.4", @@ -13987,41 +12825,6 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "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==", - "dev": true, - "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", - "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" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, "makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -14556,9 +13359,9 @@ } }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true }, "mime-db": { @@ -14630,166 +13433,32 @@ } } }, - "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==", + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", "dev": true, "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } + "minipass": "^2.9.0" } }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "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": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "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": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - } - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dev": true, - "requires": { - "minipass": "^2.9.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" - }, - "dependencies": { - "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" + "is-plain-object": "^2.0.4" } } } @@ -14806,25 +13475,6 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "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==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - } - } - }, "mkdirp2": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz", @@ -14990,12 +13640,6 @@ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "dev": true }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -15144,440 +13788,1977 @@ "lodash": "^4.17.21" } }, - "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "node-stream-zip": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.13.2.tgz", + "integrity": "sha512-159NUO3quDIRVSVOQiQ/0VG8NFrGvVyUa+MUUleiOys3NLtrGtNkodqYYTRHU/kiXu/ygHZcNy/tZ4NUCcDUmQ==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "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" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "dependencies": { + "@gar/promisify": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "@npmcli/arborist": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "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", + "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.0", + "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.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" + } + }, + "@npmcli/ci-detect": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "@npmcli/config": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "requires": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/disparity-colors": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.3.0" + } + }, + "@npmcli/fs": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "@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" + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "bundled": true, + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/map-workspaces": { + "version": "1.0.4", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "@npmcli/package-json": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.6", + "bundled": true, + "dev": true, + "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" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.4", + "bundled": true, + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "bundled": true, + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true, + "dev": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.6", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true, + "dev": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true, + "dev": true + }, + "aws4": { + "version": "1.11.0", + "bundled": true, + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtins": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "cacache": { + "version": "15.3.0", + "bundled": true, + "dev": true, + "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", + "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" + } + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "chalk": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "cidr-regex": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "ip-regex": "^4.1.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "4.2.2", + "bundled": true, + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "cmd-shim": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true, + "dev": true + }, + "color-support": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "colors": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.2", + "bundled": true, + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "depd": { + "version": "1.1.2", + "bundled": true, + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true, + "dev": true + }, + "encoding": { + "version": "0.1.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "bundled": true, + "dev": true + }, + "err-code": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "extend": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "bundled": true, + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true + }, + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "bundled": true, + "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" + } + }, + "graceful-fs": { + "version": "4.2.8", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "bundled": true, + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "hosted-git-info": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "bundled": true, + "dev": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore-walk": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true + }, + "ini": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "init-package-json": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "ip": { + "version": "1.1.5", + "bundled": true, + "dev": true + }, + "ip-regex": { + "version": "4.3.0", + "bundled": true, + "dev": true + }, + "is-cidr": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "cidr-regex": "^3.1.1" + } + }, + "is-core-module": { + "version": "2.7.0", + "bundled": true, + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "bundled": true, + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true, + "dev": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "bundled": true, + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true, + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-diff": { + "version": "3.1.1", + "bundled": true, + "dev": true + }, + "just-diff-apply": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "libnpmaccess": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmdiff": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + } + }, + "libnpmexec": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + } + }, + "libnpmfund": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/arborist": "^2.5.0" + } + }, + "libnpmhook": { + "version": "6.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmorg": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmpack": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + } + }, + "libnpmpublish": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + } + }, + "libnpmsearch": { + "version": "3.1.2", + "bundled": true, + "dev": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmteam": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmversion": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "requires": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "bundled": true, + "dev": true, + "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", + "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" + } + }, + "mime-db": { + "version": "1.49.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.32", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.1.5", + "bundled": true, + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, + "ms": { + "version": "2.1.3", + "bundled": true, + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "bundled": true, + "dev": true + }, + "node-gyp": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "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" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "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" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "bundled": true, + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-audit-report": { + "version": "2.1.5", + "bundled": true, + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, "dev": true }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "npm-package-arg": { + "version": "8.1.5", + "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0" + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" } }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "npm-packlist": { + "version": "2.2.2", + "bundled": true, "dev": true, "requires": { - "yallist": "^4.0.0" + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" } }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "npm-pick-manifest": { + "version": "6.1.1", + "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-profile": { + "version": "5.0.4", + "bundled": true, + "dev": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "bundled": true, + "dev": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" } }, + "npm-user-validate": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, "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": "5.0.1", + "bundled": true, "dev": true, "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": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + } } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true, + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, "dev": true, "requires": { - "lru-cache": "^6.0.0" + "wrappy": "1" } }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "opener": { + "version": "1.5.2", + "bundled": true, + "dev": true + }, + "p-map": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pacote": { + "version": "11.3.5", + "bundled": true, "dev": true, "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.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.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" } - } - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", - "dev": true - }, - "node-stream-zip": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.13.2.tgz", - "integrity": "sha512-159NUO3quDIRVSVOQiQ/0VG8NFrGvVyUa+MUUleiOys3NLtrGtNkodqYYTRHU/kiXu/ygHZcNy/tZ4NUCcDUmQ==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + }, + "parse-conflict-json": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "npm": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", - "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^2.9.0", - "@npmcli/ci-detect": "^1.2.0", - "@npmcli/config": "^2.3.0", - "@npmcli/map-workspaces": "^1.0.4", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.6", - "abbrev": "~1.1.1", - "ansicolors": "~0.3.2", - "ansistyles": "~0.1.3", - "archy": "~1.0.0", - "cacache": "^15.3.0", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^3.1.2", - "cli-table3": "^0.6.0", - "columnify": "~1.5.4", - "fastest-levenshtein": "^1.0.12", - "glob": "^7.2.0", - "graceful-fs": "^4.2.8", - "hosted-git-info": "^4.0.2", - "ini": "^2.0.0", - "init-package-json": "^2.0.5", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^4.0.2", - "libnpmdiff": "^2.0.4", - "libnpmexec": "^2.0.1", - "libnpmfund": "^1.1.0", - "libnpmhook": "^6.0.2", - "libnpmorg": "^2.0.2", - "libnpmpack": "^2.0.1", - "libnpmpublish": "^4.0.1", - "libnpmsearch": "^3.1.1", - "libnpmteam": "^2.0.3", - "libnpmversion": "^1.2.1", - "make-fetch-happen": "^9.1.0", - "minipass": "^3.1.3", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^7.1.2", - "nopt": "^5.0.0", - "npm-audit-report": "^2.1.5", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.1", - "npm-profile": "^5.0.3", - "npm-registry-fetch": "^11.0.0", - "npm-user-validate": "^1.0.1", - "npmlog": "^5.0.1", - "opener": "^1.5.2", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^4.1.1", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^1.0.4", - "validate-npm-package-name": "~3.0.0", - "which": "^2.0.2", - "write-file-atomic": "^3.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + }, + "performance-now": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "proc-log": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-call-limit": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "bundled": true, "dev": true, "requires": { - "color-convert": "^2.0.1" + "err-code": "^2.0.2", + "retry": "^0.12.0" } }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=", + "promzard": { + "version": "0.3.0", + "bundled": true, + "dev": true, + "requires": { + "read": "1" + } + }, + "psl": { + "version": "1.8.0", + "bundled": true, "dev": true }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "punycode": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "qs": { + "version": "6.5.2", + "bundled": true, + "dev": true + }, + "read": { + "version": "1.0.7", + "bundled": true, "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "mute-stream": "~0.0.4" } }, - "chownr": { + "read-cmd-shim": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "bundled": true, "dev": true }, - "cli-table3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.0.tgz", - "integrity": "sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==", + "read-package-json": { + "version": "4.1.1", + "bundled": true, "dev": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^4.2.0" + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" } }, - "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==", + "read-package-json-fast": { + "version": "2.0.3", + "bundled": true, "dev": true, "requires": { - "color-name": "~1.1.4" + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" } }, - "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==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "readdir-scoped-modules": { + "version": "1.1.0", + "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0" + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" } }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "request": { + "version": "2.88.2", + "bundled": true, + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "retry": { + "version": "0.12.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "bundled": true, "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" + "glob": "^7.1.3" } }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "safe-buffer": { + "version": "5.2.1", + "bundled": true, "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "safer-buffer": { + "version": "2.1.2", + "bundled": true, "dev": true }, - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "semver": { + "version": "7.3.5", + "bundled": true, "dev": true, "requires": { "lru-cache": "^6.0.0" } }, - "ini": { + "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "bundled": true, "dev": true }, - "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==", + "signal-exit": { + "version": "3.0.3", + "bundled": true, "dev": true }, - "minipass": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", - "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", + "smart-buffer": { + "version": "4.2.0", + "bundled": true, + "dev": true + }, + "socks": { + "version": "2.6.1", + "bundled": true, "dev": true, "requires": { - "yallist": "^4.0.0" + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" } }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "socks-proxy-agent": { + "version": "6.1.0", + "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "spdx-correct": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "bundled": true, "dev": true }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "bundled": true, "dev": true }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "sshpk": { + "version": "1.16.1", + "bundled": true, "dev": true, "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, - "read-package-json": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-4.1.1.tgz", - "integrity": "sha512-P82sbZJ3ldDrWCOSKxJT0r/CXMWR0OR3KRh55SgKo3p91GSIEEC32v3lSHAvO/UcH3/IoL7uqhOFBduAnwdldw==", + "ssri": { + "version": "8.0.1", + "bundled": true, "dev": true, "requires": { - "glob": "^7.1.1", - "json-parse-even-better-errors": "^2.3.0", - "normalize-package-data": "^3.0.0", - "npm-normalize-package-bin": "^1.0.0" + "minipass": "^3.1.1" } }, - "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==", + "string-width": { + "version": "2.1.1", + "bundled": true, "dev": true, "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "string_decoder": { + "version": "1.3.0", + "bundled": true, "dev": true, "requires": { - "glob": "^7.1.3" + "safe-buffer": "~5.2.0" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "stringify-package": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, "dev": true, "requires": { - "lru-cache": "^6.0.0" + "ansi-regex": "^2.0.0" } }, "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==", + "bundled": true, "dev": true, "requires": { "has-flag": "^4.0.0" @@ -15585,8 +15766,7 @@ }, "tar": { "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "bundled": true, "dev": true, "requires": { "chownr": "^2.0.0", @@ -15599,238 +15779,159 @@ }, "text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "bundled": true, "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true, + "dev": true + }, + "treeverse": { + "version": "1.0.4", + "bundled": true, + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, "dev": true, "requires": { - "isexe": "^2.0.0" + "safe-buffer": "^5.0.1" } }, - "write-file-atomic": { - "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==", + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "bundled": true, "dev": true, "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "is-typedarray": "^1.0.0" } - } - } - }, - "npm-audit-report": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/npm-audit-report/-/npm-audit-report-2.1.5.tgz", - "integrity": "sha512-YB8qOoEmBhUH1UJgh1xFAv7Jg1d+xoNhsDYiFQlEFThEBui0W1vIz2ZK6FVg4WZjwEdl7uBQlm1jy3MUfyHeEw==", - "dev": true, - "requires": { - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, "dev": true, "requires": { - "color-convert": "^2.0.1" + "unique-slug": "^2.0.0" } }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "unique-slug": { + "version": "2.0.2", + "bundled": true, "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "imurmurhash": "^0.1.4" } }, - "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==", + "uri-js": { + "version": "4.4.1", + "bundled": true, "dev": true, "requires": { - "color-name": "~1.1.4" + "punycode": "^2.1.0" } }, - "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==", + "util-deprecate": { + "version": "1.0.2", + "bundled": true, "dev": true }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "uuid": { + "version": "3.4.0", + "bundled": true, "dev": true }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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==", - "dev": true, - "requires": { - "semver": "^7.1.1" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, "dev": true, "requires": { - "lru-cache": "^6.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } - } - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, "dev": true, "requires": { - "lru-cache": "^6.0.0" + "builtins": "^1.0.3" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "verror": { + "version": "1.10.0", + "bundled": true, "dev": true, "requires": { - "lru-cache": "^6.0.0" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } - } - } - }, - "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==", - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + }, + "walk-up-path": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, "dev": true, "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "npm-profile": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/npm-profile/-/npm-profile-5.0.4.tgz", - "integrity": "sha512-OKtU7yoAEBOnc8zJ+/uo5E4ugPp09sopo+6y1njPp+W99P8DvQon3BJYmpvyK2Bf1+3YV5LN1bvgXRoZ1LUJBA==", - "dev": true, - "requires": { - "npm-registry-fetch": "^11.0.0" - } - }, - "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==", - "dev": true, - "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "defaults": "^1.0.3" + } + }, + "which": { + "version": "2.0.2", + "bundled": true, "dev": true, "requires": { - "yallist": "^4.0.0" + "isexe": "^2.0.0" } }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "wide-align": { + "version": "1.1.3", + "bundled": true, "dev": true, "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } + }, + "yallist": { + "version": "4.0.0", + "bundled": true, + "dev": true } } }, + "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==", + "dev": true + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -15840,64 +15941,6 @@ "path-key": "^3.0.0" } }, - "npm-user-validate": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-user-validate/-/npm-user-validate-1.0.1.tgz", - "integrity": "sha512-uQwcd/tY+h1jnEaze6cdX/LrhWhoBxfSknxentoqmIuStxUExxjWd3ULMLFPiFUrZKbOVMowH6Jq2FRWfmhcEw==", - "dev": true - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "dev": true, - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - }, - "dependencies": { - "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", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "nps-utils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/nps-utils/-/nps-utils-1.7.0.tgz", @@ -16091,12 +16134,6 @@ "is-wsl": "^2.2.0" } }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true - }, "opn": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", @@ -16231,83 +16268,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "dev": true, - "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", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "dependencies": { - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - } - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - } - } - }, "pad-component": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/pad-component/-/pad-component-0.0.1.tgz", @@ -16329,17 +16289,6 @@ "callsites": "^3.0.0" } }, - "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==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" - } - }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -16684,12 +16633,6 @@ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", "dev": true }, - "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==", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -16711,34 +16654,6 @@ "asap": "~2.0.3" } }, - "promise-all-reject-late": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", - "dev": true - }, - "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==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, "prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -16749,15 +16664,6 @@ "sisteransi": "^1.0.5" } }, - "promzard": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", - "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", - "dev": true, - "requires": { - "read": "1" - } - }, "propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", @@ -16801,12 +16707,6 @@ "tar": "^4.1.1" } }, - "qrcode-terminal": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", - "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", - "dev": true - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -16862,15 +16762,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, "read-chunk": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", @@ -16889,12 +16780,6 @@ } } }, - "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==", - "dev": true - }, "read-installed": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz", @@ -16930,16 +16815,6 @@ "npm-normalize-package-bin": "^1.0.0" } }, - "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==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -17531,12 +17406,6 @@ } } }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -17625,9 +17494,9 @@ "dev": true }, "salesforce-alm": { - "version": "53.7.0", - "resolved": "https://registry.npmjs.org/salesforce-alm/-/salesforce-alm-53.7.0.tgz", - "integrity": "sha512-OdU6IHrs6Xm050mYs6XH8/CvS6OOWPl6LPnVVyEwhtTEQnBBDMg2Vd0TXBc1eEzB+myTWeqg+XXiTwIzGFgFsw==", + "version": "53.7.2", + "resolved": "https://registry.npmjs.org/salesforce-alm/-/salesforce-alm-53.7.2.tgz", + "integrity": "sha512-xUneVzR30iD8JhgzUvWZr/4QJLVltQZmVXgSbKsBTwue7NY2eLVxUOnrxM7Eon9AKpkuZo0M0MgupQDkwlRDIA==", "dev": true, "requires": { "@oclif/config": "^1.18.1", @@ -18372,15 +18241,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-value": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", - "integrity": "sha512-zTEg4HL0RwVrqcWs3ztF+x1vkxfm0lP+MQQFPiMJTKVceBwEV0A569Ou8l9IYQG8jOZdMVI1hGsc0tmeD2o/Lw==", - "requires": { - "is-plain-object": "^2.0.4", - "is-primitive": "^3.0.1" - } - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -18388,9 +18248,9 @@ "dev": true }, "sfdx-cli": { - "version": "7.132.0", - "resolved": "https://registry.npmjs.org/sfdx-cli/-/sfdx-cli-7.132.0.tgz", - "integrity": "sha512-aY97otXPhQHdheFXGLrTZSbOt8cj3fj3lRw29fkJ6g3AuZ56tLhF+gx9DSg8Mzt8ZvbmAgB/p5hwKgcN2eiMsw==", + "version": "7.133.0", + "resolved": "https://registry.npmjs.org/sfdx-cli/-/sfdx-cli-7.133.0.tgz", + "integrity": "sha512-Iv1O76kYLJKGvCRS6OUcSzPcCzlYtI8KQrx1oV8rGEItj79tHxC9/VXNAsh7YAI/FW4y0vv99uIi9P0cq6ucFA==", "dev": true, "requires": { "@oclif/command": "^1.8.0", @@ -18409,15 +18269,15 @@ "@salesforce/plugin-alias": "1.2.0", "@salesforce/plugin-apex": "0.7.0", "@salesforce/plugin-auth": "1.8.0", - "@salesforce/plugin-config": "1.3.2", + "@salesforce/plugin-config": "1.3.14", "@salesforce/plugin-custom-metadata": "1.0.12", - "@salesforce/plugin-data": "0.6.6", + "@salesforce/plugin-data": "0.6.8", "@salesforce/plugin-generator": "^1.1.7", - "@salesforce/plugin-info": "1.1.4", + "@salesforce/plugin-info": "1.2.0", "@salesforce/plugin-limits": "1.3.0", "@salesforce/plugin-org": "1.11.0", "@salesforce/plugin-schema": "1.1.0", - "@salesforce/plugin-source": "1.6.2", + "@salesforce/plugin-source": "1.7.0", "@salesforce/plugin-telemetry": "1.4.0", "@salesforce/plugin-templates": "52.7.0", "@salesforce/plugin-trust": "^1.0.8", @@ -18426,7 +18286,7 @@ "@salesforce/sfdx-plugin-lwc-test": "0.1.7", "@salesforce/ts-types": "^1.5.17", "debug": "^4.3.1", - "salesforce-alm": "53.7.0", + "salesforce-alm": "53.7.2", "salesforce-lightning-cli": "3.0.0", "shelljs": "^0.8.4", "tslib": "^2.1.0", @@ -18657,12 +18517,6 @@ } } }, - "sinon-chai": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", - "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", - "dev": true - }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -18700,12 +18554,6 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -18828,27 +18676,6 @@ } } }, - "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.1.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - } - }, "sort-array": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-4.1.4.tgz", @@ -19010,26 +18837,6 @@ "tweetnacl": "~0.14.0" } }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - }, - "dependencies": { - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, "stack-chain": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", @@ -19178,12 +18985,6 @@ "safe-buffer": "~5.1.0" } }, - "stringify-package": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz", - "integrity": "sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg==", - "dev": true - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -19591,12 +19392,6 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, - "tiny-relative-date": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz", - "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==", - "dev": true - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -19697,17 +19492,6 @@ "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true }, - "treeverse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", - "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", - "dev": true - }, - "trim-newlines": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.0.2.tgz", - "integrity": "sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==" - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -19928,24 +19712,6 @@ } } }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -20125,15 +19891,6 @@ "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": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -20217,12 +19974,6 @@ "integrity": "sha512-Uhxps5yZcVNbLEAnb+xaEEMdgTXl9qAQDzKYejG2AZ7qPwRQ81lozY9ECDbjLPNWm7YsO1IK5rsP1KoQzXAcGA==", "dev": true }, - "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==", - "dev": true - }, "walkdir": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.1.tgz", @@ -20238,15 +19989,6 @@ "makeerror": "1.0.12" } }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -20324,15 +20066,6 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, - "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==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", diff --git a/package.json b/package.json index 8ace6433c..f20bb1bef 100644 --- a/package.json +++ b/package.json @@ -66,10 +66,6 @@ "test:apex:suites": "sfdx force:apex:test:run --verbose --suitenames LoggerConfiguration,LoggerEngine,LoggerLogManagement,LoggerPluginFramework --wait 30 --resultformat human --codecoverage --detailedcoverage --outputdir ./tests/apex", "test:lwc": "sfdx-lwc-jest --coverage --skipApiVersionCheck --verbose" }, - "dependencies": { - "set-value": ">=4.0.1", - "trim-newlines": "^4.0.2" - }, "devDependencies": { "follow-redirects": ">=1.14.7", "marked": ">=4.0.10", From f77d26afb3809a3075c74fe32df1e21f7a818032 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 20 Jan 2022 08:53:39 -0500 Subject: [PATCH 08/73] Worked with @jamessimone to improve code cleanliness for dynamically retrieving fields (including namespace) by creating new file loggerSettingsSchema.js file and adding new _loadField function to consolidate field describe & field value getters. Also improved error handling a bit - not all errors have error.body.message, some use error.message --- .../lwc/loggerSettings/loggerSettings.html | 58 ++--- .../lwc/loggerSettings/loggerSettings.js | 201 +++++++++--------- .../loggerSettings/loggerSettingsSchema.js | 44 ++++ 3 files changed, 175 insertions(+), 128 deletions(-) create mode 100644 nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html index e20e24338..1bc8e7b2c 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html @@ -60,23 +60,23 @@

@@ -192,7 +192,7 @@

options={loggerSettingsPicklistOptions.loggingLevelOptions} read-only={isReadOnlyMode} required - value={currentRecord.LoggingLevel__c} + value={loggingLevelField.value} variant="label-stacked" > @@ -231,7 +231,7 @@

onchange={handleFieldChange} read-only={isReadOnlyMode} type="number" - value={currentRecord.DefaultNumberOfDaysToRetainLogs__c} + value={defaultNumberOfDaysToRetainLogsField.value} variant="label-stacked" > @@ -243,7 +243,7 @@

onchange={handleFieldChange} options={loggerSettingsPicklistOptions.shareAccessLevelOptions} read-only={isReadOnlyMode} - value={currentRecord.DefaultLogShareAccessLevel__c} + value={defaultLogShareAccessLevelField.value} variant="label-stacked" > @@ -265,13 +265,13 @@

options={loggerSettingsPicklistOptions.saveMethodOptions} read-only={isReadOnlyMode} required - value={currentRecord.DefaultSaveMethod__c} + value={defaultSaveMethodField.value} variant="label-stacked" > variant="label-stacked" > variant="label-stacked" >
- +
day="2-digit" hour="2-digit" minute="2-digit" - value={currentRecord.CreatedDate} + value={createdDateField.value} >
- +
day="2-digit" hour="2-digit" minute="2-digit" - value={currentRecord.LastModifiedDate} + value={lastModifiedDateField.value} >
@@ -437,7 +437,7 @@

Delete Logger Settings Recor
- Are you sure you want to delete the Logger Settings record for {currentRecord.setupOwnerName}? + Are you sure you want to delete the Logger Settings record for {setupOwnerNameField.value}?
diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js index 7b296644f..f1529c92f 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js @@ -8,19 +8,7 @@ import { LightningElement, wire } from 'lwc'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; // LoggerSettings__c metadata -import LOGGER_SETTINGS_OBJECT from '@salesforce/schema/LoggerSettings__c'; -import DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultLogShareAccessLevel__c'; -import DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultNumberOfDaysToRetainLogs__c'; -import DEFAULT_SAVE_METHOD_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultSaveMethod__c'; -import IS_ANONYMOUS_MODE_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsAnonymousModeEnabled__c'; -import IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsApexSystemDebugLoggingEnabled__c'; -import IS_DATA_MASKING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsDataMaskingEnabled__c'; -import IS_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsEnabled__c'; -import IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsJavaScriptConsoleLoggingEnabled__c'; -import LOGGING_LEVEL_FIELD from '@salesforce/schema/LoggerSettings__c.LoggingLevel__c'; -import STRIP_INACCESSIBLE_RECORD_FIELDS_FIELD from '@salesforce/schema/LoggerSettings__c.StripInaccessibleRecordFields__c'; - -// Additional metadata +import LOGGER_SETTINGS_SCHEMA from './loggerSettingsSchema'; import { getObjectInfo } from 'lightning/uiObjectInfoApi'; import canUserModifyLoggerSettings from '@salesforce/apex/LoggerSettingsController.canUserModifyLoggerSettings'; import getPicklistOptions from '@salesforce/apex/LoggerSettingsController.getPicklistOptions'; @@ -51,13 +39,13 @@ export default class LoggerSettings extends LightningElement { // LoggerSettings__c metadata canUserModifyLoggerSettings; - loggerSettingsFields; loggerSettingsPicklistOptions; + _loggerSettingsFields; // LoggerSettings__c data records; - currentRecord; selectedSetupOwner; + _currentRecord; connectedCallback() { document.title = this.title; @@ -74,10 +62,10 @@ export default class LoggerSettings extends LightningElement { this.showLoadingSpinner = false; } - @wire(getObjectInfo, { objectApiName: LOGGER_SETTINGS_OBJECT }) + @wire(getObjectInfo, { objectApiName: LOGGER_SETTINGS_SCHEMA.sobject }) getLoggerSettingsObjectInfo({ data }) { if (data) { - this.loggerSettingsFields = data.fields; + this._loggerSettingsFields = data.fields; canUserModifyLoggerSettings().then(result => { this.canUserModifyLoggerSettings = result; this._loadTableColumns(); @@ -94,7 +82,7 @@ export default class LoggerSettings extends LightningElement { settingsRecords[i] = record; } this.records = settingsRecords; - this.currentRecord = null; + this._currentRecord = null; this.setupOwnerSearchTerm = null; this.showSetupOwnerLookup = false; this.setupOwnerSearchResults = null; @@ -139,7 +127,7 @@ export default class LoggerSettings extends LightningElement { } else { value = event.target.value; } - this.currentRecord[event.target.dataset.id] = value; + this._currentRecord[event.target.dataset.id] = value; this._setIsNewOrganizationRecord(); this._setShowSetupOwnerLookup(); @@ -150,7 +138,7 @@ export default class LoggerSettings extends LightningElement { this.setupOwnerSearchTerm = event.detail.value; if (this.setupOwnerSearchTerm && this.setupOwnerSearchTerm.length >= 2) { searchForSetupOwner({ - setupOwnerType: this.currentRecord.setupOwnerType, + setupOwnerType: this._currentRecord.setupOwnerType, searchTerm: this.setupOwnerSearchTerm }) .then(results => { @@ -167,8 +155,8 @@ export default class LoggerSettings extends LightningElement { handleSearchResultSelection(event) { if (event.currentTarget.dataset.key) { - this.currentRecord.SetupOwnerId = event.currentTarget.dataset.key; - this.currentRecord.setupOwnerName = event.currentTarget.dataset.label; + this._currentRecord.SetupOwnerId = event.currentTarget.dataset.key; + this._currentRecord.setupOwnerName = event.currentTarget.dataset.label; let index = this.setupOwnerSearchResults.findIndex(x => x.recordId === event.currentTarget.dataset.key); if (index !== -1) { @@ -204,122 +192,98 @@ export default class LoggerSettings extends LightningElement { get isExistingRecord() { let isExistingRecord = false; - if (this.currentRecord.Id) { + if (this._currentRecord.Id) { isExistingRecord = true; } return isExistingRecord; } - // LoggerSettings__c data - field-describe & field-value getters - get isEnabledField() { - return this.loggerSettingsFields[IS_ENABLED_FIELD.fieldApiName]; - } - - get isEnabledFieldValue() { - return this.currentRecord[IS_ENABLED_FIELD.fieldApiName]; + // Getters for each LoggerSettings__c field describes & data - these handle dealing with using a namespace for the package + get createdByIdField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.CreatedById, 'createdByUsername'); } - get loggingLevelField() { - return this.loggerSettingsFields[LOGGING_LEVEL_FIELD.fieldApiName]; - } - - get loggingLevelFieldValue() { - return this.currentRecord[LOGGING_LEVEL_FIELD.fieldApiName]; - } - - get defaultNumberOfDaysToRetainLogsField() { - return this.loggerSettingsFields[DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD.fieldApiName]; - } - - get defaultNumberOfDaysToRetainLogsFieldValue() { - return this.currentRecord[DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD.fieldApiName]; + get createdDateField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.CreatedDate); } get defaultLogShareAccessLevelField() { - return this.loggerSettingsFields[DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD.fieldApiName]; + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.DefaultLogShareAccessLevel__c); } - get defaultLogShareAccessLevelFieldValue() { - return this.currentRecord[DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD.fieldApiName]; + get defaultNumberOfDaysToRetainLogsField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.DefaultNumberOfDaysToRetainLogs__c); } get defaultSaveMethodField() { - return this.loggerSettingsFields[DEFAULT_SAVE_METHOD_FIELD.fieldApiName]; + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.DefaultSaveMethod__c); } - get defaultSaveMethodFieldValue() { - return this.currentRecord[DEFAULT_SAVE_METHOD_FIELD.fieldApiName]; + get isAnonymousModeEnabledField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.IsAnonymousModeEnabled__c); } get isApexSystemDebugLoggingEnabledField() { - return this.loggerSettingsFields[IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD.fieldApiName]; + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.IsApexSystemDebugLoggingEnabled__c); } - get isApexSystemDebugLoggingEnabledFieldValue() { - return this.currentRecord[IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD.fieldApiName]; - } - - get isJavaScriptConsoleLoggingEnabledField() { - return this.loggerSettingsFields[IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD.fieldApiName]; - } - - get isJavaScriptConsoleLoggingEnabledFieldValue() { - return this.currentRecord[IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD.fieldApiName]; + get isDataMaskingEnabledField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.IsDataMaskingEnabled__c); } - get isDataMaskingEnabledField() { - return this.loggerSettingsFields[IS_DATA_MASKING_ENABLED_FIELD.fieldApiName]; + get isEnabledField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.IsEnabled__c); } - get isDataMaskingEnabledFieldValue() { - return this.currentRecord[IS_DATA_MASKING_ENABLED_FIELD.fieldApiName]; + get isJavaScriptConsoleLoggingEnabledField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.IsJavaScriptConsoleLoggingEnabled__c); } - get stripInaccessibleRecordFieldsField() { - return this.loggerSettingsFields[STRIP_INACCESSIBLE_RECORD_FIELDS_FIELD.fieldApiName]; + get lastModifiedByIdField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.LastModifiedById, 'lastModifiedByUsername'); } - get stripInaccessibleRecordFieldsFieldValue() { - return this.currentRecord[STRIP_INACCESSIBLE_RECORD_FIELDS_FIELD.fieldApiName]; + get lastModifiedDateField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.LastModifiedDate); } - get isAnonymousModeEnabledField() { - return this.loggerSettingsFields[IS_ANONYMOUS_MODE_ENABLED_FIELD.fieldApiName]; + get loggingLevelField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.LoggingLevel__c); } - get isAnonymousModeEnabledFieldValue() { - return this.currentRecord[IS_ANONYMOUS_MODE_ENABLED_FIELD.fieldApiName]; + get setupOwnerNameField() { + return this._loadField('setupOwnerName', 'setupOwnerName', 'Setup Owner'); } - _setIsNewOrganizationRecord() { - this.isNewOrganizationRecord = this.isExistingRecord === false && this.currentRecord?.setupOwnerType === 'Organization'; - if (this.isNewOrganizationRecord === true) { - this.currentRecord.SetupOwnerId = this.organization.Id; - this.currentRecord.setupOwnerName = this.organization.Name; - } + get setupOwnerTypeField() { + return this._loadField('setupOwnerType', 'setupOwnerType', 'Setup Location'); } - _setShowSetupOwnerLookup() { - this.showSetupOwnerLookup = this.isExistingRecord === false && this.currentRecord?.setupOwnerType !== 'Organization'; + get stripInaccessibleRecordFieldsField() { + return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.StripInaccessibleRecordFields__c); } createNewRecord() { createRecord() .then(result => { - this.currentRecord = result; + this._currentRecord = result; + this.selectedSetupOwner = null; + this.isNewOrganizationRecord = false; this.isReadOnlyMode = false; + this.showPill = false; this.showRecordModal = true; + this.showSetupOwnerLookup = false; }) .catch(this._handleError); } viewCurrentRecord(currentRow) { - this.currentRecord = currentRow; + this._currentRecord = currentRow; this.isReadOnlyMode = true; this.showRecordModal = true; } editCurrentRecord(currentRow) { - this.currentRecord = currentRow; + this._currentRecord = currentRow; this.isReadOnlyMode = false; this.showRecordModal = true; } @@ -336,10 +300,10 @@ export default class LoggerSettings extends LightningElement { this.showLoadingSpinner = true; - saveRecord({ settingsRecord: this.currentRecord }) + saveRecord({ settingsRecord: this._currentRecord }) .then(() => { this.loadSettingsRecords(); - const setupOwnerName = this.selectedSetupOwner ? this.selectedSetupOwner.label : this.currentRecord.setupOwnerName; + const setupOwnerName = this.selectedSetupOwner ? this.selectedSetupOwner.label : this._currentRecord.setupOwnerName; this.dispatchEvent( new ShowToastEvent({ title: this.title + ' record for ' + setupOwnerName + ' successfully saved', @@ -354,13 +318,13 @@ export default class LoggerSettings extends LightningElement { deleteCurrentRecord(currentRow) { this.showDeleteModal = true; - this.currentRecord = currentRow; + this._currentRecord = currentRow; } confirmDeleteCurrentRecord() { this.showLoadingSpinner = true; - const setupOwnerName = this.currentRecord.setupOwnerName; - deleteRecord({ settingsRecord: this.currentRecord }) + const setupOwnerName = this._currentRecord.setupOwnerName; + deleteRecord({ settingsRecord: this._currentRecord }) .then(() => { this.loadSettingsRecords(); this.dispatchEvent( @@ -374,26 +338,27 @@ export default class LoggerSettings extends LightningElement { .catch(this._handleError); } + // Private functions _loadTableColumns() { // The columns setupOwnerType and setupOwnerName are not true fields // They're flattened versions of SetupOwner.Type and SetupOwner.Name, so object API info isn't used here this.columns = [ { fieldName: 'setupOwnerType', label: 'Setup Location', type: 'text' }, - { fieldName: 'setupOwnerName', label: 'Setup Owner Name', type: 'text' } + { fieldName: 'setupOwnerName', label: 'Setup Owner', type: 'text' } ]; // For all other fields, use object API info to dynamically get field details // TODO - make this array configurable by storing in LoggerParameter__mdt const tableColumnNames = [ - IS_ENABLED_FIELD.fieldApiName, - LOGGING_LEVEL_FIELD.fieldApiName, - IS_DATA_MASKING_ENABLED_FIELD.fieldApiName, - DEFAULT_SAVE_METHOD_FIELD.fieldApiName, - DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD.fieldApiName, - DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD.fieldApiName + LOGGER_SETTINGS_SCHEMA.fields.IsEnabled__c, + LOGGER_SETTINGS_SCHEMA.fields.LoggingLevel__c, + LOGGER_SETTINGS_SCHEMA.fields.IsDataMaskingEnabled__c, + LOGGER_SETTINGS_SCHEMA.fields.DefaultSaveMethod__c, + LOGGER_SETTINGS_SCHEMA.fields.DefaultNumberOfDaysToRetainLogs__c, + LOGGER_SETTINGS_SCHEMA.fields.DefaultLogShareAccessLevel__c ]; for (let i = 0; i < tableColumnNames.length; i++) { - const field = this.loggerSettingsFields[tableColumnNames[i]]; + const field = this._loggerSettingsFields[tableColumnNames[i]]; const column = { fieldName: field.apiName, label: field.label, @@ -422,13 +387,51 @@ export default class LoggerSettings extends LightningElement { }); } + _loadField(fieldApiName, recordFieldApiName, recordFieldLabel) { + if (!recordFieldApiName) { + recordFieldApiName = fieldApiName; + } + + let fieldDescribe; + if (fieldApiName && this._loggerSettingsFields[fieldApiName]) { + fieldDescribe = { ...this._loggerSettingsFields[fieldApiName] }; + } else { + fieldDescribe = { apiName: fieldApiName }; + } + + if (this._currentRecord) { + fieldDescribe.value = this._currentRecord[recordFieldApiName]; + } + + if (recordFieldLabel) { + fieldDescribe.label = recordFieldLabel; + } + + return fieldDescribe; + } + + _setIsNewOrganizationRecord() { + console.warn('checking _setIsNewOrganizationRecord', this._currentRecord); + this.isNewOrganizationRecord = this.isExistingRecord === false && this._currentRecord?.setupOwnerType === 'Organization'; + if (this.isNewOrganizationRecord === true) { + this._currentRecord.SetupOwnerId = this.organization.Id; + this._currentRecord.setupOwnerName = this.organization.Name; + } + console.warn('checking _setIsNewOrganizationRecord again', this._currentRecord); + } + + _setShowSetupOwnerLookup() { + this.showSetupOwnerLookup = this.isExistingRecord === false && this._currentRecord?.setupOwnerType !== 'Organization'; + } + _handleError = error => { + const errorMessage = error.body ? error.body.message : error.message; /* eslint-disable-next-line no-console */ - console.error(error.body.message, error); + console.error(errorMessage, error); this.dispatchEvent( new ShowToastEvent({ mode: 'sticky', - title: error.body.message, + title: errorMessage, variant: 'error' }) ); diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js new file mode 100644 index 000000000..ae0c50046 --- /dev/null +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js @@ -0,0 +1,44 @@ +/************************************************************************************************* + * This file is part of the Nebula Logger project, released under the MIT License. * + * See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. * + ************************************************************************************************/ + +import LOGGER_SETTINGS_OBJECT from '@salesforce/schema/LoggerSettings__c'; +import CREATED_BY_ID_FIELD from '@salesforce/schema/LoggerSettings__c.CreatedById'; +import CREATED_DATE_FIELD from '@salesforce/schema/LoggerSettings__c.CreatedDate'; +import DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultLogShareAccessLevel__c'; +import DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultNumberOfDaysToRetainLogs__c'; +import DEFAULT_SAVE_METHOD_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultSaveMethod__c'; +import IS_ANONYMOUS_MODE_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsAnonymousModeEnabled__c'; +import IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsApexSystemDebugLoggingEnabled__c'; +import IS_DATA_MASKING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsDataMaskingEnabled__c'; +import IS_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsEnabled__c'; +import IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsJavaScriptConsoleLoggingEnabled__c'; +import LAST_MODIFIED_BY_ID_FIELD from '@salesforce/schema/LoggerSettings__c.LastModifiedById'; +import LAST_MODIFIED_DATE_FIELD from '@salesforce/schema/LoggerSettings__c.LastModifiedDate'; +import LOGGING_LEVEL_FIELD from '@salesforce/schema/LoggerSettings__c.LoggingLevel__c'; +import STRIP_INACCESSIBLE_RECORD_FIELDS_FIELD from '@salesforce/schema/LoggerSettings__c.StripInaccessibleRecordFields__c'; +import SETUP_OWNER_ID_FIELD from '@salesforce/schema/LoggerSettings__c.SetupOwnerId'; + +const LOGGER_SETTINGS_SCHEMA = { + sobject: LOGGER_SETTINGS_OBJECT, + fields: { + CreatedById: CREATED_BY_ID_FIELD.fieldApiName, + CreatedDate: CREATED_DATE_FIELD.fieldApiName, + DefaultLogShareAccessLevel__c: DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD.fieldApiName, + DefaultNumberOfDaysToRetainLogs__c: DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD.fieldApiName, + DefaultSaveMethod__c: DEFAULT_SAVE_METHOD_FIELD.fieldApiName, + IsAnonymousModeEnabled__c: IS_ANONYMOUS_MODE_ENABLED_FIELD.fieldApiName, + IsApexSystemDebugLoggingEnabled__c: IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD.fieldApiName, + IsDataMaskingEnabled__c: IS_DATA_MASKING_ENABLED_FIELD.fieldApiName, + IsEnabled__c: IS_ENABLED_FIELD.fieldApiName, + IsJavaScriptConsoleLoggingEnabled__c: IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD.fieldApiName, + LastModifiedById: LAST_MODIFIED_BY_ID_FIELD.fieldApiName, + LastModifiedDate: LAST_MODIFIED_DATE_FIELD.fieldApiName, + LoggingLevel__c: LOGGING_LEVEL_FIELD.fieldApiName, + SetupOwnerId: SETUP_OWNER_ID_FIELD.fieldApiName, + StripInaccessibleRecordFields__c: STRIP_INACCESSIBLE_RECORD_FIELDS_FIELD.fieldApiName + } +}; + +export default LOGGER_SETTINGS_SCHEMA; From 00622c12150af1b037efd3ad2a06235e1c2fe8b0 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 20 Jan 2022 08:56:34 -0500 Subject: [PATCH 09/73] Removed new Logger methods getVersionNumber() and getNamespacePrefix() - I'm not 100% sure that I want to use them, though I may re-add them later --- docs/apex/logger-engine/Logger.md | 28 ------------------- .../main/logger-engine/classes/Logger.cls | 19 ------------- 2 files changed, 47 deletions(-) diff --git a/docs/apex/logger-engine/Logger.md b/docs/apex/logger-engine/Logger.md index 5ac3a5304..65f61e5fc 100644 --- a/docs/apex/logger-engine/Logger.md +++ b/docs/apex/logger-engine/Logger.md @@ -3216,20 +3216,6 @@ LoggingLevel The matching instance of LoggingLevel (or a default value if a match is not found) -#### `getNamespacePrefix()` → `String` - -Returns the current namespace of Nebula Logger - -##### Return - -**Type** - -String - -**Description** - -The current namespace prefix, or an empty string when no namespace is being used - #### `getParentLogTransactionId()` → `String` Returns the transaction ID value that will be used to relate the current transaction's log to a parent log @@ -3334,20 +3320,6 @@ String A string containing the UUID value. -#### `getVersionNumber()` → `String` - -Returns the current version number of Nebula Logger - -##### Return - -**Type** - -String - -**Description** - -The current version number, in the format `v0.0.0` - #### `info(LogMessage logMessage, Database.DeleteResult deleteResult)` → `LogEntryEventBuilder` Creates a new log entry with logging level == `LoggingLevel.INFO` diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls b/nebula-logger/core/main/logger-engine/classes/Logger.cls index 5c73f5159..881ad1026 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls @@ -65,25 +65,6 @@ global with sharing class Logger { SYNCHRONOUS_DML } - // System info methods - - /** - * @description Returns the current version number of Nebula Logger - * @return The current version number, in the format `v0.0.0` - */ - public static String getVersionNumber() { - return CURRENT_VERSION_NUMBER; - } - - /** - * @description Returns the current namespace of Nebula Logger - * @return The current namespace prefix, or an empty string when no namespace is being used - */ - public static String getNamespacePrefix() { - String className = Logger.class.getName(); - return className.contains('.') ? className.substringBefore('.') : ''; - } - // Settings management methods /** From 2e635db67a8a0f3d90a5c484e58ade91dcc5d679 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 20 Jan 2022 09:26:38 -0500 Subject: [PATCH 10/73] Fixed #272 by explicitly delcaring the list as List instead of just List I typically include the Schema namespace anyway, not sure why I didn't previously do so in this particular example --- nebula-logger/core/main/log-management/classes/LogHandler.cls | 2 +- .../main/log-management/lwc/loggerSettings/loggerSettings.js | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/nebula-logger/core/main/log-management/classes/LogHandler.cls b/nebula-logger/core/main/log-management/classes/LogHandler.cls index ba03e5606..af8a66b03 100644 --- a/nebula-logger/core/main/log-management/classes/LogHandler.cls +++ b/nebula-logger/core/main/log-management/classes/LogHandler.cls @@ -109,7 +109,7 @@ public without sharing class LogHandler extends LoggerSObjectHandler { } private void setPriority() { - List picklistEntries = Schema.Log__c.Priority__c.getDescribe().getPicklistValues(); + List picklistEntries = Schema.Log__c.Priority__c.getDescribe().getPicklistValues(); // 3 assumptions // 1. Assume that that there will always be 3+ picklist values for the Priority__c field (out of the box, the values are: High, Medium, Low) diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js index f1529c92f..01fbe99a3 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js @@ -411,13 +411,11 @@ export default class LoggerSettings extends LightningElement { } _setIsNewOrganizationRecord() { - console.warn('checking _setIsNewOrganizationRecord', this._currentRecord); this.isNewOrganizationRecord = this.isExistingRecord === false && this._currentRecord?.setupOwnerType === 'Organization'; if (this.isNewOrganizationRecord === true) { this._currentRecord.SetupOwnerId = this.organization.Id; this._currentRecord.setupOwnerName = this.organization.Name; } - console.warn('checking _setIsNewOrganizationRecord again', this._currentRecord); } _setShowSetupOwnerLookup() { From 41d2e2e44895aa5b6605501f670dcc5861792755 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 20 Jan 2022 10:20:02 -0500 Subject: [PATCH 11/73] Regenerated package-lock.json --- docs/lightning-components/LogEntryBuilder.md | 24 ++--- docs/lightning-components/Logger.md | 36 ++++---- package-lock.json | 93 ++++++++------------ 3 files changed, 65 insertions(+), 88 deletions(-) diff --git a/docs/lightning-components/LogEntryBuilder.md b/docs/lightning-components/LogEntryBuilder.md index 206eaef0d..f38ac660a 100644 --- a/docs/lightning-components/LogEntryBuilder.md +++ b/docs/lightning-components/LogEntryBuilder.md @@ -6,12 +6,12 @@ - [LogEntryBuilder](#LogEntryBuilder) - [new LogEntryBuilder(loggingLevel, shouldSave, isConsoleLoggingEnabled)](#new_LogEntryBuilder_new) - - [.setMessage(message)](#LogEntryBuilder+setMessage) [LogEntryBuilder](#LogEntryBuilder) - - [.setRecordId(recordId)](#LogEntryBuilder+setRecordId) [LogEntryBuilder](#LogEntryBuilder) - - [.setRecord(record)](#LogEntryBuilder+setRecord) [LogEntryBuilder](#LogEntryBuilder) - - [.setError(error)](#LogEntryBuilder+setError) [LogEntryBuilder](#LogEntryBuilder) - - [.addTag(tag)](#LogEntryBuilder+addTag) [LogEntryBuilder](#LogEntryBuilder) - - [.addTags(tags)](#LogEntryBuilder+addTags) [LogEntryBuilder](#LogEntryBuilder) + - [.setMessage(message)](#LogEntryBuilder+setMessage) ⇒ [LogEntryBuilder](#LogEntryBuilder) + - [.setRecordId(recordId)](#LogEntryBuilder+setRecordId) ⇒ [LogEntryBuilder](#LogEntryBuilder) + - [.setRecord(record)](#LogEntryBuilder+setRecord) ⇒ [LogEntryBuilder](#LogEntryBuilder) + - [.setError(error)](#LogEntryBuilder+setError) ⇒ [LogEntryBuilder](#LogEntryBuilder) + - [.addTag(tag)](#LogEntryBuilder+addTag) ⇒ [LogEntryBuilder](#LogEntryBuilder) + - [.addTags(tags)](#LogEntryBuilder+addTags) ⇒ [LogEntryBuilder](#LogEntryBuilder) @@ -28,7 +28,7 @@ This class is the JavaScript-equivalent of the Apex class `LogEntryBuilder` -### logEntryBuilder.setMessage(message) [LogEntryBuilder](#LogEntryBuilder) +### logEntryBuilder.setMessage(message) ⇒ [LogEntryBuilder](#LogEntryBuilder) Sets the log entry event's message field @@ -41,7 +41,7 @@ Sets the log entry event's message field -### logEntryBuilder.setRecordId(recordId) [LogEntryBuilder](#LogEntryBuilder) +### logEntryBuilder.setRecordId(recordId) ⇒ [LogEntryBuilder](#LogEntryBuilder) Sets the log entry event's record fields @@ -54,7 +54,7 @@ Sets the log entry event's record fields -### logEntryBuilder.setRecord(record) [LogEntryBuilder](#LogEntryBuilder) +### logEntryBuilder.setRecord(record) ⇒ [LogEntryBuilder](#LogEntryBuilder) Sets the log entry event's record fields @@ -67,7 +67,7 @@ Sets the log entry event's record fields -### logEntryBuilder.setError(error) [LogEntryBuilder](#LogEntryBuilder) +### logEntryBuilder.setError(error) ⇒ [LogEntryBuilder](#LogEntryBuilder) Sets the log entry event's exception fields @@ -80,7 +80,7 @@ Sets the log entry event's exception fields -### logEntryBuilder.addTag(tag) [LogEntryBuilder](#LogEntryBuilder) +### logEntryBuilder.addTag(tag) ⇒ [LogEntryBuilder](#LogEntryBuilder) Appends the tag to the existing list of tags @@ -93,7 +93,7 @@ Appends the tag to the existing list of tags -### logEntryBuilder.addTags(tags) [LogEntryBuilder](#LogEntryBuilder) +### logEntryBuilder.addTags(tags) ⇒ [LogEntryBuilder](#LogEntryBuilder) Appends the tag to the existing list of tags diff --git a/docs/lightning-components/Logger.md b/docs/lightning-components/Logger.md index 6817a0baf..4bba523b9 100644 --- a/docs/lightning-components/Logger.md +++ b/docs/lightning-components/Logger.md @@ -1,35 +1,35 @@ ## Functions
-
getUserSettings() ComponentLogger.ComponentLoggerSettings
+
getUserSettings()ComponentLogger.ComponentLoggerSettings

Returns information about the current user's settings, stored in LoggerSettings__c

setScenario(scenario)

Sets the scenario name for the current transaction - this is stored in LogEntryEvent__e.Scenario__c and Log__c.Scenario__c, and can be used to filter & group logs

-
error(message) LogEntryBuilder
+
error(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.ERROR

-
warn(message) LogEntryBuilder
+
warn(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.WARN

-
info(message) LogEntryBuilder
+
info(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.INFO

-
debug(message) LogEntryBuilder
+
debug(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.DEBUG

-
fine(message) LogEntryBuilder
+
fine(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.FINE

-
finer(message) LogEntryBuilder
+
finer(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.FINER

-
finest(message) LogEntryBuilder
+
finest(message)LogEntryBuilder

Creates a new log entry with logging level == LoggingLevel.FINEST

-
getBufferSize() Integer
+
getBufferSize()Integer

Returns the number of entries that have been generated but not yet saved

flushBuffer()
@@ -43,7 +43,7 @@ -## getUserSettings() ComponentLogger.ComponentLoggerSettings +## getUserSettings() ⇒ ComponentLogger.ComponentLoggerSettings Returns information about the current user's settings, stored in `LoggerSettings__c` @@ -64,7 +64,7 @@ and `Log__c.Scenario__c`, and can be used to filter & group logs -## error(message) LogEntryBuilder +## error(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.ERROR` @@ -77,7 +77,7 @@ Creates a new log entry with logging level == `LoggingLevel.ERROR` -## warn(message) LogEntryBuilder +## warn(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.WARN` @@ -90,7 +90,7 @@ Creates a new log entry with logging level == `LoggingLevel.WARN` -## info(message) LogEntryBuilder +## info(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.INFO` @@ -103,7 +103,7 @@ Creates a new log entry with logging level == `LoggingLevel.INFO` -## debug(message) LogEntryBuilder +## debug(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.DEBUG` @@ -116,7 +116,7 @@ Creates a new log entry with logging level == `LoggingLevel.DEBUG` -## fine(message) LogEntryBuilder +## fine(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.FINE` @@ -129,7 +129,7 @@ Creates a new log entry with logging level == `LoggingLevel.FINE` -## finer(message) LogEntryBuilder +## finer(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.FINER` @@ -142,7 +142,7 @@ Creates a new log entry with logging level == `LoggingLevel.FINER` -## finest(message) LogEntryBuilder +## finest(message) ⇒ LogEntryBuilder Creates a new log entry with logging level == `LoggingLevel.FINEST` @@ -155,7 +155,7 @@ Creates a new log entry with logging level == `LoggingLevel.FINEST` -## getBufferSize() Integer +## getBufferSize() ⇒ Integer Returns the number of entries that have been generated but not yet saved diff --git a/package-lock.json b/package-lock.json index 7f4702eaa..b325037a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -515,9 +515,9 @@ "dev": true }, "@cparra/apexdocs": { - "version": "1.13.8", - "resolved": "https://registry.npmjs.org/@cparra/apexdocs/-/apexdocs-1.13.8.tgz", - "integrity": "sha512-EigF8WpmGDy5q6ArWVSQV0FtbAMqcuqV+rV72LK4AtYzatW1pQ3w1xVyxg3hs3KkhHk2dgZopkwhcnmOnpOTjA==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@cparra/apexdocs/-/apexdocs-1.14.0.tgz", + "integrity": "sha512-2EruYNdNado6MkgGGxrjD9cve+c6GN/3g/+wNtEuMys6K6snOUIWym8hhkDiosmEGZUMizd9rWg49KfgzYIjXw==", "dev": true, "requires": { "html-entities": "^2.3.2", @@ -6371,29 +6371,6 @@ "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - } - } } }, "cache-point": { @@ -12409,9 +12386,9 @@ } }, "lint-staged": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.2.0.tgz", - "integrity": "sha512-TnNciMBhmEqzqM+RvzqqdvrG4TsI8wCDMX1Vg9+rj2Y9uY70Nq84Mb1WOIiwxW9l5tUlCOqtY5La71RM2fSgfA==", + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.2.1.tgz", + "integrity": "sha512-VCVcA9C2Vt5HHxSR4EZVZFJcQRJH984CGBeY+cJ/xed4mBd+JidbM/xbKcCq5ASaygAV0iITtdsCTnID7h/1OQ==", "dev": true, "requires": { "cli-truncate": "^3.1.0", @@ -13327,12 +13304,6 @@ "requires": { "is-utf8": "^0.2.0" } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true } } }, @@ -18241,6 +18212,29 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "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, + "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": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -19492,6 +19486,12 @@ "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -19687,29 +19687,6 @@ "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^2.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "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, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - } - } } }, "universalify": { From 81c25fedc54a76f7a6db54e7f66a65f506da41ad Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 20 Jan 2022 10:40:20 -0500 Subject: [PATCH 12/73] Temporarily disabling pipeline check for updated docs due to an error in apexdocs package --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4218604c3..c5b58edfe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -77,8 +77,9 @@ jobs: - name: 'Verify Apex with SFDX Scanner' run: npm run lint:verify:apex - - name: 'Verify docs are updated' - run: npm run docs:verify + # TODO - uncomment - temporarily commented-out due to an issue with apexdocs in the pipeline + # - name: 'Verify docs are updated' + # run: npm run docs:verify - name: 'Verify formatting with Prettier' run: npm run prettier:verify From 1a9772fca935467b9789f22d14815c57301c9815 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Mon, 24 Jan 2022 11:04:44 -0500 Subject: [PATCH 13/73] Fixed #258 by adding 2 new fields to LoggerSettings__c (IsSavingEnabled__c and IsPlatformEventStorageEnabled__c), and further enhanced the refactor that @jamessimone helped with for loggerSettings - I've added another JS file, loggerSettingsPageLayout, to make it easier to manage/update the faux page layout via updating a JSON object (instead of updating/duplicating HTML) Also cleaned up help text in several fields --- ...NumberOfDaysToRetainLogs__c.field-meta.xml | 2 +- ...faultLogShareAccessLevel__c.field-meta.xml | 13 +- .../DefaultSaveMethod__c.field-meta.xml | 18 +- .../IsAnonymousModeEnabled__c.field-meta.xml | 5 +- ...tformEventStorageEnabled__c.field-meta.xml | 12 + .../fields/IsSavingEnabled__c.field-meta.xml | 10 + .../fields/LoggingLevel__c.field-meta.xml | 8 - .../classes/LogEntryEventHandler.cls | 13 + .../classes/LoggerSettingsController.cls | 30 +-- .../__tests__/data/getObjectInfo.json | 126 +++++++--- .../lwc/loggerSettings/loggerSettings.html | 227 ++++-------------- .../lwc/loggerSettings/loggerSettings.js | 64 ++--- .../loggerSettingsPageLayout.js | 144 +++++++++++ .../loggerSettings/loggerSettingsSchema.js | 6 +- .../main/logger-engine/classes/Logger.cls | 2 +- .../classes/LogEntryEventHandler_Tests.cls | 34 +++ .../LoggerSettingsController_Tests.cls | 4 +- .../logger-engine/classes/Logger_Tests.cls | 30 +++ 18 files changed, 430 insertions(+), 318 deletions(-) create mode 100644 nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsPlatformEventStorageEnabled__c.field-meta.xml create mode 100644 nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsSavingEnabled__c.field-meta.xml create mode 100644 nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js diff --git a/nebula-logger/core/main/configuration/objects/LogScenarioRule__mdt/fields/NumberOfDaysToRetainLogs__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LogScenarioRule__mdt/fields/NumberOfDaysToRetainLogs__c.field-meta.xml index 8ace31da7..85793dcec 100644 --- a/nebula-logger/core/main/configuration/objects/LogScenarioRule__mdt/fields/NumberOfDaysToRetainLogs__c.field-meta.xml +++ b/nebula-logger/core/main/configuration/objects/LogScenarioRule__mdt/fields/NumberOfDaysToRetainLogs__c.field-meta.xml @@ -4,7 +4,7 @@ false SubscriberControlled This value is used to set the field Log__c.LogRetentionDate__c, which is then used by LogBatchPurger to delete old logs. To keep logs indefinitely, set this field to blank (null). + >This value is used to set the field Log__c.LogRetentionDate__c, which is then used by LogBatchPurger to delete old logs. To keep logs indefinitely, set this field to a blank value (null). 4 false diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogShareAccessLevel__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogShareAccessLevel__c.field-meta.xml index 94efb19a4..1e0232424 100644 --- a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogShareAccessLevel__c.field-meta.xml +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogShareAccessLevel__c.field-meta.xml @@ -4,19 +4,10 @@ 'Read' Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles. - -Possible Values: -(blank) -Read -Edit + false Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles. - -Possible Values: -(blank) -Read -Edit + >Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles. 255 false diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultSaveMethod__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultSaveMethod__c.field-meta.xml index b61108bf7..e6e97b71f 100644 --- a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultSaveMethod__c.field-meta.xml +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultSaveMethod__c.field-meta.xml @@ -2,21 +2,11 @@ DefaultSaveMethod__c 'EVENT_BUS' - Defaults to 'EVENT_BUS'. This controls the default save method used by Logger when calling saveLog(). - -Possible values: -EVENT_BUS -QUEUEABLE -REST -SYNCHRONOUS_DML + Defaults to EVENT_BUS. This controls the default save method used by Logger when calling saveLog(). In most situations, EVENT_BUS should be used. false - Defaults to 'EVENT_BUS'. This controls the default save method used by Logger when calling saveLog(). - -Possible values: -EVENT_BUS -QUEUEABLE -REST -SYNCHRONOUS_DML + Defaults to EVENT_BUS. This controls the default save method used by Logger when calling saveLog(). In most situations, EVENT_BUS should be used. 255 true diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsAnonymousModeEnabled__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsAnonymousModeEnabled__c.field-meta.xml index cd340c178..b547ba2aa 100644 --- a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsAnonymousModeEnabled__c.field-meta.xml +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsAnonymousModeEnabled__c.field-meta.xml @@ -3,9 +3,8 @@ IsAnonymousModeEnabled__c false false - When enabled, any logs generated will not have any user-specific details set - any fields related to the User, Profile, etc. will be null. - -Note: this feature only works properly when using the save method EVENT_BUS. + When enabled, any logs generated will not have any user-specific details set - any fields related to the User, Profile, etc. will be null. Note: this feature only works properly when using the save method EVENT_BUS. false Checkbox diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsPlatformEventStorageEnabled__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsPlatformEventStorageEnabled__c.field-meta.xml new file mode 100644 index 000000000..ab0b46b87 --- /dev/null +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsPlatformEventStorageEnabled__c.field-meta.xml @@ -0,0 +1,12 @@ + + + IsPlatformEventStorageEnabled__c + true + Controls if LogEntryEvent__e platform events are transformed & stored in the custom objects Log__c and LogEntry__c (when IsSavingEnabled__c == true). + false + Controls if LogEntryEvent__e platform events are transformed & stored in the custom objects Log__c and LogEntry__c (when IsSavingEnabled__c == true). + + Checkbox + diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsSavingEnabled__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsSavingEnabled__c.field-meta.xml new file mode 100644 index 000000000..4541d296d --- /dev/null +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/IsSavingEnabled__c.field-meta.xml @@ -0,0 +1,10 @@ + + + IsSavingEnabled__c + true + Controls if saving is enabled - when disabled, any calls to saveLog() are ignored. + false + Controls if saving is enabled - when disabled, any calls to saveLog() are ignored. + + Checkbox + diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/LoggingLevel__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/LoggingLevel__c.field-meta.xml index 89a4a83e4..ef9103a68 100644 --- a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/LoggingLevel__c.field-meta.xml +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/LoggingLevel__c.field-meta.xml @@ -3,14 +3,6 @@ LoggingLevel__c 'DEBUG' false - Possible values: -ERROR -WARN -INFO -DEBUG -FINE -FINER -FINEST 255 true diff --git a/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls b/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls index 3f76d2ef6..2a7448e2f 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls +++ b/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls @@ -56,6 +56,13 @@ public without sharing class LogEntryEventHandler extends LoggerSObjectHandler { Log__c recentLogWithApiReleaseDetails = getRecentLogWithApiReleaseDetails(); for (LogEntryEvent__e logEntryEvent : this.logEntryEvents) { + // Load the logging user's settings + User loggingUser = new User(Id = logEntryEvent.LoggedById__c, ProfileId = logEntryEvent.ProfileId__c); + LoggerSettings__c loggingUserSettings = Logger.getUserSettings(loggingUser); + if (loggingUserSettings.IsPlatformEventStorageEnabled__c == false) { + continue; + } + // The LogEntryEvent__e object stores a denormalized version of Log__c & LogEntry__c data // In case the list contains entries tied to multiple transactions, use the TRANSACTION_ID_TO_LOG map to create 1 Log__c per transaction ID if (TRANSACTION_ID_TO_LOG.containsKey(logEntryEvent.TransactionId__c) == true) { @@ -141,6 +148,12 @@ public without sharing class LogEntryEventHandler extends LoggerSObjectHandler { private void insertLogEntries() { for (LogEntryEvent__e logEntryEvent : this.logEntryEvents) { + User loggingUser = new User(Id = logEntryEvent.LoggedById__c, ProfileId = logEntryEvent.ProfileId__c); + LoggerSettings__c loggingUserSettings = Logger.getUserSettings(loggingUser); + if (loggingUserSettings.IsPlatformEventStorageEnabled__c == false) { + continue; + } + // Workaround field for platform issue w/ accurate datetimes Datetime timestamp = String.isNotBlank(logEntryEvent.TimestampString__c) ? Datetime.valueOf(Long.valueOf(logEntryEvent.TimestampString__c)) diff --git a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls index 2e55b9229..7c7fc8abf 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls +++ b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls @@ -256,30 +256,12 @@ public without sharing class LoggerSettingsController { } private static List queryLoggerSettings() { - return [ - SELECT - CreatedBy.Username, - CreatedById, - CreatedDate, - DefaultLogShareAccessLevel__c, - DefaultNumberOfDaysToRetainLogs__c, - DefaultSaveMethod__c, - Id, - IsAnonymousModeEnabled__c, - IsApexSystemDebugLoggingEnabled__c, - IsJavaScriptConsoleLoggingEnabled__c, - IsDataMaskingEnabled__c, - IsEnabled__c, - LastModifiedBy.Username, - LastModifiedById, - LastModifiedDate, - LoggingLevel__c, - SetupOwner.Name, - SetupOwner.Type, - SetupOwnerId, - StripInaccessibleRecordFields__c - FROM LoggerSettings__c - ]; + List fieldNames = new List(Schema.LoggerSettings__c.SObjectType.getDescribe().fields.getMap().keySet()); + fieldNames.add('CreatedBy.Username'); + fieldNames.add('LastModifiedBy.Username'); + fieldNames.add('SetupOwner.Name'); + fieldNames.add('SetupOwner.Type'); + return (List) Database.query('SELECT ' + String.join(fieldNames, ', ') + ' FROM ' + Schema.LoggerSettings__c.SObjectType); } private static Map querySetupOwnerNames(List setupOwnerIds) { diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json index 864becc9d..2d89fd027 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json @@ -52,20 +52,6 @@ "junctionReferenceTo": [], "relationshipName": "FeedSubscriptionsForEntity" }, - { - "childObjectApiName": "NetworkActivityAudit", - "fieldName": "ParentEntityId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "ParentEntities" - }, - { - "childObjectApiName": "NetworkUserHistoryRecent", - "fieldName": "RecordId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "NetworkUserHistoryRecentToRecord" - }, { "childObjectApiName": "ProcessException", "fieldName": "AttachedToId", @@ -236,7 +222,7 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles.\n\nPossible Values:\n(blank)\nRead\nEdit", + "inlineHelpText": "Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles.", "label": "Log Access Level", "length": 255, "nameField": false, @@ -302,7 +288,7 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "Defaults to 'EVENT_BUS'. This controls the default save method used by Logger when calling saveLog().\n\nPossible values:\nEVENT_BUS\nQUEUEABLE\nREST\nSYNCHRONOUS_DML", + "inlineHelpText": "Defaults to EVENT_BUS. This controls the default save method used by Logger when calling saveLog(). In most situations, EVENT_BUS should be used.", "label": "Save Method", "length": 255, "nameField": false, @@ -368,7 +354,7 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "When enabled, any logs generated will not have any user-specific details set - any fields related to the User, Profile, etc. will be null.\n\nNote: this feature only works properly when using the save method EVENT_BUS.", + "inlineHelpText": "When enabled, any logs generated will not have any user-specific details set - any fields related to the User, Profile, etc. will be null. Note: this feature only works properly when using the save method EVENT_BUS.", "label": "Enable Anonymous Mode", "length": 0, "nameField": false, @@ -418,8 +404,8 @@ "unique": false, "updateable": true }, - "IsJavaScriptConsoleLoggingEnabled__c": { - "apiName": "IsJavaScriptConsoleLoggingEnabled__c", + "IsDataMaskingEnabled__c": { + "apiName": "IsDataMaskingEnabled__c", "calculated": false, "compound": false, "compoundComponentName": null, @@ -434,8 +420,8 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "When enabled, Logger will automatically call the browser's console.log() function when logging via lightning components. To help with performance, this option should be disabled in production unless you are actively troubleshooting an issue.", - "label": "Enable JavaScript console.log()", + "inlineHelpText": "When enabled, any data-mask rules (configured in LogEntryDataMaskRule__mdt) will be automatically applied to log entry messages.", + "label": "Enable Data Masking", "length": 0, "nameField": false, "polymorphicForeignKey": false, @@ -451,8 +437,41 @@ "unique": false, "updateable": true }, - "IsDataMaskingEnabled__c": { - "apiName": "IsDataMaskingEnabled__c", + "IsDeleted": { + "apiName": "IsDeleted", + "calculated": false, + "compound": false, + "compoundComponentName": null, + "compoundFieldName": null, + "controllerName": null, + "controllingFields": [], + "createable": false, + "custom": false, + "dataType": "Boolean", + "extraTypeInfo": null, + "filterable": true, + "filteredLookupInfo": null, + "highScaleNumber": false, + "htmlFormatted": false, + "inlineHelpText": null, + "label": "Deleted", + "length": 0, + "nameField": false, + "polymorphicForeignKey": false, + "precision": 0, + "reference": false, + "referenceTargetField": null, + "referenceToInfos": [], + "relationshipName": null, + "required": true, + "scale": 0, + "searchPrefilterable": false, + "sortable": true, + "unique": false, + "updateable": false + }, + "IsEnabled__c": { + "apiName": "IsEnabled__c", "calculated": false, "compound": false, "compoundComponentName": null, @@ -467,8 +486,8 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "When enabled, any data-mask rules (configured in LogEntryDataMaskRule__mdt) will be automatically applied to log entry messages.", - "label": "Enable Data Masking", + "inlineHelpText": "Controls if Logger is enabled for the specified level (organization, profile, or user)", + "label": "Enabled", "length": 0, "nameField": false, "polymorphicForeignKey": false, @@ -484,24 +503,24 @@ "unique": false, "updateable": true }, - "IsDeleted": { - "apiName": "IsDeleted", + "IsJavaScriptConsoleLoggingEnabled__c": { + "apiName": "IsJavaScriptConsoleLoggingEnabled__c", "calculated": false, "compound": false, "compoundComponentName": null, "compoundFieldName": null, "controllerName": null, "controllingFields": [], - "createable": false, - "custom": false, + "createable": true, + "custom": true, "dataType": "Boolean", "extraTypeInfo": null, "filterable": true, "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": null, - "label": "Deleted", + "inlineHelpText": "When enabled, Logger will automatically call the browser's console.log() function when logging via lightning components. To help with performance, this option should be disabled in production unless you are actively troubleshooting an issue.", + "label": "Enable JavaScript console.log()", "length": 0, "nameField": false, "polymorphicForeignKey": false, @@ -515,10 +534,10 @@ "searchPrefilterable": false, "sortable": true, "unique": false, - "updateable": false + "updateable": true }, - "IsEnabled__c": { - "apiName": "IsEnabled__c", + "IsPlatformEventStorageEnabled__c": { + "apiName": "IsPlatformEventStorageEnabled__c", "calculated": false, "compound": false, "compoundComponentName": null, @@ -533,8 +552,41 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "Controls if Logger is enabled for the specified level (organization, profile, or user)", - "label": "Enabled", + "inlineHelpText": "Controls if LogEntryEvent__e platform events are transformed & stored in the custom objects Log__c and LogEntry__c (when IsSavingEnabled__c == true).", + "label": "Store Platform Events", + "length": 0, + "nameField": false, + "polymorphicForeignKey": false, + "precision": 0, + "reference": false, + "referenceTargetField": null, + "referenceToInfos": [], + "relationshipName": null, + "required": true, + "scale": 0, + "searchPrefilterable": false, + "sortable": true, + "unique": false, + "updateable": true + }, + "IsSavingEnabled__c": { + "apiName": "IsSavingEnabled__c", + "calculated": false, + "compound": false, + "compoundComponentName": null, + "compoundFieldName": null, + "controllerName": null, + "controllingFields": [], + "createable": true, + "custom": true, + "dataType": "Boolean", + "extraTypeInfo": null, + "filterable": true, + "filteredLookupInfo": null, + "highScaleNumber": false, + "htmlFormatted": false, + "inlineHelpText": "Controls if saving is enabled - when disabled, any calls to saveLog() are ignored.", + "label": "Is Saving Enabled", "length": 0, "nameField": false, "polymorphicForeignKey": false, @@ -637,7 +689,7 @@ "filteredLookupInfo": null, "highScaleNumber": false, "htmlFormatted": false, - "inlineHelpText": "Possible values:\nERROR\nWARN\nINFO\nDEBUG\nFINE\nFINER\nFINEST", + "inlineHelpText": null, "label": "Logging Level", "length": 255, "nameField": false, diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html index 1bc8e7b2c..edd2d2d8f 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html @@ -53,6 +53,7 @@

Logger Settings Details

+

General Settings @@ -217,183 +218,61 @@

- -
-

- Log Management Settings -

- - - - - - - - -
- - -
-

- Developer Settings -

- - - - - - - - - -
- - -
-

- Security Settings -

- - - - - - - - - -
- - - + + +
diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js index cb59198c7..7144f80a8 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js @@ -52,16 +52,6 @@ const PAGE_LAYOUT_CONFIG = { { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.DefaultNumberOfDaysToRetainLogs__c], size: 6 }, { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.DefaultLogOwner__c, LOGGER_SETTINGS_SCHEMA.fields.DefaultLogShareAccessLevel__c], size: 6 } ] - }, - { - key: 'systemInformation', - label: 'System Information', - showInReadOnlyMode: true, - showInEditMode: false, - columns: [ - { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.CreatedById, LOGGER_SETTINGS_SCHEMA.fields.CreatedDate], size: 6 }, - { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.LastModifiedById, LOGGER_SETTINGS_SCHEMA.fields.LastModifiedDate], size: 6 } - ] } ] }; From 99439fc5836f4521df61ecc260e19a9582275cea Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Wed, 26 Jan 2022 11:14:12 -0500 Subject: [PATCH 21/73] Fixed #276 - Added a check in LoggerEmailUtils to check if email deliverability is enabled before sending an email [skip ci] --- .../classes/LoggerEmailUtils.cls | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls b/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls index f65849d3c..7770cab70 100644 --- a/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls +++ b/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls @@ -20,6 +20,24 @@ public without sharing class LoggerEmailUtils { set; } + private static Boolean IS_EMAIL_DELIVERABILITY_ENABLED { + get { + if (IS_EMAIL_DELIVERABILITY_ENABLED == null) { + try { + Messaging.reserveSingleEmailCapacity(1); + Messaging.reserveMassEmailCapacity(1); + IS_EMAIL_DELIVERABILITY_ENABLED = true; + return IS_EMAIL_DELIVERABILITY_ENABLED; + } catch (System.NoAccessException e) { + IS_EMAIL_DELIVERABILITY_ENABLED = false; + return IS_EMAIL_DELIVERABILITY_ENABLED; + } + } + return IS_EMAIL_DELIVERABILITY_ENABLED; + } + set; + } + @TestVisible private static final List SENT_EMAILS { get { @@ -107,13 +125,15 @@ public without sharing class LoggerEmailUtils { @SuppressWarnings('PMD.AvoidDebugStatements') private static void sendEmail(Messaging.SingleEmailMessage message) { - List messages = new List{ message }; - List emailResults = Messaging.sendEmail(messages); - SENT_EMAILS.add(message); - if (emailResults[0].success == true) { - System.debug(LoggingLevel.INFO, 'Logger - The email was sent successfully'); - } else { - System.debug(LoggingLevel.INFO, 'Logger - The email failed to send: ' + emailResults[0].errors[0].message); + if (IS_EMAIL_DELIVERABILITY_ENABLED == true) { + List messages = new List{ message }; + List emailResults = Messaging.sendEmail(messages); + SENT_EMAILS.add(message); + if (emailResults[0].success == true) { + System.debug(LoggingLevel.INFO, 'Logger - The email was sent successfully'); + } else { + System.debug(LoggingLevel.INFO, 'Logger - The email failed to send: ' + emailResults[0].errors[0].message); + } } } From 8783e314f8e4ad0edf1ad254bf8228e30e3617e1 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 09:53:26 -0500 Subject: [PATCH 22/73] Switched to using JWT bearer flow in pipeline for dev hub auth --- .github/workflows/build.yml | 75 ++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c5b58edfe..81e25d3ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,15 +61,21 @@ jobs: if: steps.cache-npm.outputs.cache-hit != 'true' run: npm ci - - name: 'Verify package version number is updated' + - name: 'Authorize Dev Hub' if: ${{ github.event_name == 'pull_request' }} + shell: bash run: | - echo ${{ env.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt - npx sfdx auth:sfdxurl:store --sfdxurlfile ./DEVHUB_SFDX_URL.txt --setalias nebula-logger-packaging --setdefaultdevhubusername - rm ./DEVHUB_SFDX_URL.txt - npm run package:version:number:verify + echo "${{ env.DEV_HUB_JWT_SERVER_KEY }}" > ./jwt-server.key + npx sfdx force:auth:jwt:grant --instanceurl ${{ env.DEV_HUB_AUTH_URL }} --clientid ${{ env.DEV_HUB_CONSUMER_KEY }} --username ${{ env.DEV_HUB_BOT_USERNAME }} --jwtkeyfile ./jwt-server.key --setdefaultdevhubusername env: - DEVHUB_SFDX_URL: ${{ secrets.DEVHUB_SFDX_URL }} + DEV_HUB_AUTH_URL: ${{ secrets.DEV_HUB_AUTH_URL }} + DEV_HUB_BOT_USERNAME: ${{ secrets.DEV_HUB_BOT_USERNAME }} + DEV_HUB_CONSUMER_KEY: ${{ secrets.DEV_HUB_CONSUMER_KEY }} + DEV_HUB_JWT_SERVER_KEY: ${{ secrets.DEV_HUB_JWT_SERVER_KEY }} + + - name: 'Verify package version number is updated' + if: ${{ github.event_name == 'pull_request' }} + run: npm run package:version:number:verify - name: 'Verify LWC with ESLint' run: npm run lint:verify:lwc @@ -141,13 +147,16 @@ jobs: - name: 'Authorize Dev Hub' shell: bash run: | - echo ${{ env.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt - npx sfdx auth:sfdxurl:store --sfdxurlfile ./DEVHUB_SFDX_URL.txt --setalias nebula-logger-packaging --setdefaultdevhubusername + echo "${{ env.DEV_HUB_JWT_SERVER_KEY }}" > ./jwt-server.key + npx sfdx force:auth:jwt:grant --instanceurl ${{ env.DEV_HUB_AUTH_URL }} --clientid ${{ env.DEV_HUB_CONSUMER_KEY }} --username ${{ env.DEV_HUB_BOT_USERNAME }} --jwtkeyfile ./jwt-server.key --setdefaultdevhubusername env: - DEVHUB_SFDX_URL: ${{ secrets.DEVHUB_SFDX_URL }} + DEV_HUB_AUTH_URL: ${{ secrets.DEV_HUB_AUTH_URL }} + DEV_HUB_BOT_USERNAME: ${{ secrets.DEV_HUB_BOT_USERNAME }} + DEV_HUB_CONSUMER_KEY: ${{ secrets.DEV_HUB_CONSUMER_KEY }} + DEV_HUB_JWT_SERVER_KEY: ${{ secrets.DEV_HUB_JWT_SERVER_KEY }} - name: 'Create Base Scratch Org' - run: npm run org:create:base -- -durationdays 1 -devhubs nebula-logger-packaging + run: npx sfdx force:org:create --durationdays 1 --definitionfile ./config/scratch-orgs/base-scratch-def.json --wait 20 --setdefaultusername --json - name: 'Push Source to Scratch Org' run: npm run source:push @@ -188,13 +197,16 @@ jobs: - name: 'Authorize Dev Hub' shell: bash run: | - echo ${{ env.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt - npx sfdx auth:sfdxurl:store --sfdxurlfile ./DEVHUB_SFDX_URL.txt --setalias nebula-logger-packaging --setdefaultdevhubusername + echo "${{ env.DEV_HUB_JWT_SERVER_KEY }}" > ./jwt-server.key + npx sfdx force:auth:jwt:grant --instanceurl ${{ env.DEV_HUB_AUTH_URL }} --clientid ${{ env.DEV_HUB_CONSUMER_KEY }} --username ${{ env.DEV_HUB_BOT_USERNAME }} --jwtkeyfile ./jwt-server.key --setdefaultdevhubusername env: - DEVHUB_SFDX_URL: ${{ secrets.DEVHUB_SFDX_URL }} + DEV_HUB_AUTH_URL: ${{ secrets.DEV_HUB_AUTH_URL }} + DEV_HUB_BOT_USERNAME: ${{ secrets.DEV_HUB_BOT_USERNAME }} + DEV_HUB_CONSUMER_KEY: ${{ secrets.DEV_HUB_CONSUMER_KEY }} + DEV_HUB_JWT_SERVER_KEY: ${{ secrets.DEV_HUB_JWT_SERVER_KEY }} - - name: 'Create Scratch Org with Experience Sites Enabled' - run: npm run org:create:experience-cloud -- -durationdays 1 -devhubs nebula-logger-packaging + - name: 'Create Experience Cloud Scratch Org' + run: npx sfdx force:org:create --durationdays 1 --definitionfile ./config/scratch-orgs/experience-cloud-scratch-def.json --wait 20 --setdefaultusername --json - name: 'Create Test Experience Site' run: npm run experience:create @@ -252,13 +264,16 @@ jobs: if: steps.cache-npm.outputs.cache-hit != 'true' run: npm ci - - name: 'Authorize Packaging Org' + - name: 'Authorize Dev Hub' shell: bash run: | - echo ${{ env.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt - npx sfdx auth:sfdxurl:store --sfdxurlfile ./DEVHUB_SFDX_URL.txt --setalias nebula-logger-packaging --setdefaultdevhubusername + echo "${{ env.DEV_HUB_JWT_SERVER_KEY }}" > ./jwt-server.key + npx sfdx force:auth:jwt:grant --instanceurl ${{ env.DEV_HUB_AUTH_URL }} --clientid ${{ env.DEV_HUB_CONSUMER_KEY }} --username ${{ env.DEV_HUB_BOT_USERNAME }} --jwtkeyfile ./jwt-server.key --setdefaultdevhubusername env: - DEVHUB_SFDX_URL: ${{ secrets.DEVHUB_SFDX_URL }} + DEV_HUB_AUTH_URL: ${{ secrets.DEV_HUB_AUTH_URL }} + DEV_HUB_BOT_USERNAME: ${{ secrets.DEV_HUB_BOT_USERNAME }} + DEV_HUB_CONSUMER_KEY: ${{ secrets.DEV_HUB_CONSUMER_KEY }} + DEV_HUB_JWT_SERVER_KEY: ${{ secrets.DEV_HUB_JWT_SERVER_KEY }} - name: 'Authorize Demo Org' shell: bash @@ -306,13 +321,16 @@ jobs: if: steps.cache-npm.outputs.cache-hit != 'true' run: npm ci - - name: 'Authorize Packaging Org' + - name: 'Authorize Dev Hub' shell: bash run: | - echo ${{ env.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt - npx sfdx auth:sfdxurl:store --sfdxurlfile ./DEVHUB_SFDX_URL.txt --setalias nebula-logger-packaging --setdefaultdevhubusername + echo "${{ env.DEV_HUB_JWT_SERVER_KEY }}" > ./jwt-server.key + npx sfdx force:auth:jwt:grant --instanceurl ${{ env.DEV_HUB_AUTH_URL }} --clientid ${{ env.DEV_HUB_CONSUMER_KEY }} --username ${{ env.DEV_HUB_BOT_USERNAME }} --jwtkeyfile ./jwt-server.key --setdefaultdevhubusername env: - DEVHUB_SFDX_URL: ${{ secrets.DEVHUB_SFDX_URL }} + DEV_HUB_AUTH_URL: ${{ secrets.DEV_HUB_AUTH_URL }} + DEV_HUB_BOT_USERNAME: ${{ secrets.DEV_HUB_BOT_USERNAME }} + DEV_HUB_CONSUMER_KEY: ${{ secrets.DEV_HUB_CONSUMER_KEY }} + DEV_HUB_JWT_SERVER_KEY: ${{ secrets.DEV_HUB_JWT_SERVER_KEY }} - name: 'Create Beta Managed Package Version' run: npm run package:version:create:managed @@ -340,13 +358,16 @@ jobs: if: steps.cache-npm.outputs.cache-hit != 'true' run: npm ci - - name: 'Authorize Packaging Org' + - name: 'Authorize Dev Hub' shell: bash run: | - echo ${{ env.DEVHUB_SFDX_URL }} > ./DEVHUB_SFDX_URL.txt - npx sfdx auth:sfdxurl:store --sfdxurlfile ./DEVHUB_SFDX_URL.txt --setalias nebula-logger-packaging --setdefaultdevhubusername + echo "${{ env.DEV_HUB_JWT_SERVER_KEY }}" > ./jwt-server.key + npx sfdx force:auth:jwt:grant --instanceurl ${{ env.DEV_HUB_AUTH_URL }} --clientid ${{ env.DEV_HUB_CONSUMER_KEY }} --username ${{ env.DEV_HUB_BOT_USERNAME }} --jwtkeyfile ./jwt-server.key --setdefaultdevhubusername env: - DEVHUB_SFDX_URL: ${{ secrets.DEVHUB_SFDX_URL }} + DEV_HUB_AUTH_URL: ${{ secrets.DEV_HUB_AUTH_URL }} + DEV_HUB_BOT_USERNAME: ${{ secrets.DEV_HUB_BOT_USERNAME }} + DEV_HUB_CONSUMER_KEY: ${{ secrets.DEV_HUB_CONSUMER_KEY }} + DEV_HUB_JWT_SERVER_KEY: ${{ secrets.DEV_HUB_JWT_SERVER_KEY }} - name: 'Promote package versions' run: npx pwsh ./config/scripts/build/promote-readme-packages.ps1 From 8a8f9662c447647638cddc6700cd3e24d1ab8d8e Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 10:22:06 -0500 Subject: [PATCH 23/73] Refactored some code in LogHandler, removed exclusion of PMD rule 'AvoidGlobalModifier' --- config/linters/pmd-ruleset.xml | 1 - .../log-management/classes/LogHandler.cls | 62 +++++++++---------- .../classes/LoggerInstallHandler.cls | 1 + 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/config/linters/pmd-ruleset.xml b/config/linters/pmd-ruleset.xml index b8cd220c1..8bfc2e311 100644 --- a/config/linters/pmd-ruleset.xml +++ b/config/linters/pmd-ruleset.xml @@ -10,7 +10,6 @@ - diff --git a/nebula-logger/core/main/log-management/classes/LogHandler.cls b/nebula-logger/core/main/log-management/classes/LogHandler.cls index 18e36f46c..704d2919b 100644 --- a/nebula-logger/core/main/log-management/classes/LogHandler.cls +++ b/nebula-logger/core/main/log-management/classes/LogHandler.cls @@ -7,7 +7,7 @@ * @group Log Management * @description Manages setting fields on `Log__c` before insert & before update */ -@SuppressWarnings('PMD.ApexCrudViolation') +@SuppressWarnings('PMD.ApexCrudViolation, PMD.CognitiveComplexity, PMD.CyclomaticComplexity') public without sharing class LogHandler extends LoggerSObjectHandler { @TestVisible private static final Map LOG_STATUS_NAME_TO_STATUS = loadActiveLogStatuses(); @@ -74,50 +74,34 @@ public without sharing class LogHandler extends LoggerSObjectHandler { private void setOwnerId() { // Loop through the logs and figure out what value has been configured as the default owner (if any) - // TODO refactor this into smaller helper methods - Map ownerUsernamesByLoggingUserId = new Map(); - List logsOwnedByUsernames = new List(); - Map ownerQueueNamesByLoggingUserId = new Map(); - List logsOwnedByQueues = new List(); + Map ownerNamesByLoggingUserId = new Map(); + List logsToUpdate = new List(); for (Log__c log : this.logs) { String loggingUserDefaultLogOwner = Logger.getUserSettings(new User(Id = log.LoggedBy__c)).DefaultLogOwner__c; if (String.isBlank(loggingUserDefaultLogOwner) == true) { continue; } else if (loggingUserDefaultLogOwner instanceof Id) { - // We already have an ID here, so just set it & move on - no additional querying needed log.OwnerId = Id.valueOf(loggingUserDefaultLogOwner); - } else if (loggingUserDefaultLogOwner.contains('@')) { - ownerUsernamesByLoggingUserId.put(log.LoggedBy__c, loggingUserDefaultLogOwner); - logsOwnedByUsernames.add(log); } else { - ownerQueueNamesByLoggingUserId.put(log.LoggedBy__c, loggingUserDefaultLogOwner); - logsOwnedByQueues.add(log); + ownerNamesByLoggingUserId.put(log.LoggedBy__c, loggingUserDefaultLogOwner); + logsToUpdate.add(log); } } - // Populate OwnerId based on configured usernames - Map usersByUsername = new Map(); - for (User user : [SELECT Id, Username FROM User WHERE Username IN :ownerUsernamesByLoggingUserId.values()]) { - usersByUsername.put(user.Username, user); - } - for (Log__c log : logsOwnedByUsernames) { - String loggingUserDefaultLogOwner = Logger.getUserSettings(new User(Id = log.LoggedBy__c)).DefaultLogOwner__c; - if (usersByUsername.containsKey(loggingUserDefaultLogOwner)) { - log.OwnerId = usersByUsername.get(loggingUserDefaultLogOwner).Id; - } + if (logsToUpdate.isEmpty()) { + return; } - // Populate OwnerId based on configured queue developer names - Map queuesByDeveloperName = new Map(); - for (Group queue : [SELECT Id, DeveloperName FROM Group WHERE Type = 'Queue' AND DeveloperName IN :ownerQueueNamesByLoggingUserId.values()]) { - queuesByDeveloperName.put(queue.DeveloperName, queue); - } - for (Log__c log : logsOwnedByQueues) { - String loggingUserDefaultLogOwner = Logger.getUserSettings(new User(Id = log.LoggedBy__c)).DefaultLogOwner__c; + // Populate OwnerId based on configured usernames + Map ownerIdByOwnerName = new Map(); + ownerIdByOwnerName.putAll(queryQueues(ownerNamesByLoggingUserId.values())); + ownerIdByOwnerName.putAll(queryUsers(ownerNamesByLoggingUserId.values())); - if (queuesByDeveloperName.containsKey(loggingUserDefaultLogOwner)) { - log.OwnerId = queuesByDeveloperName.get(loggingUserDefaultLogOwner).Id; + for (Log__c log : logsToUpdate) { + String loggingUserDefaultLogOwner = Logger.getUserSettings(new User(Id = log.LoggedBy__c)).DefaultLogOwner__c; + if (ownerIdByOwnerName.containsKey(loggingUserDefaultLogOwner)) { + log.OwnerId = ownerIdByOwnerName.get(loggingUserDefaultLogOwner); } } } @@ -200,6 +184,22 @@ public without sharing class LogHandler extends LoggerSObjectHandler { Database.insert(logShares, false); } + private static Map queryQueues(List possibleQueueNames) { + Map queuesByDeveloperName = new Map(); + for (Group queue : [SELECT Id, DeveloperName FROM Group WHERE Type = 'Queue' AND DeveloperName IN :possibleQueueNames]) { + queuesByDeveloperName.put(queue.DeveloperName, queue.Id); + } + return queuesByDeveloperName; + } + + private static Map queryUsers(List possibleUsernames) { + Map usersByUsername = new Map(); + for (User user : [SELECT Id, Username FROM User WHERE Username IN :possibleUsernames]) { + usersByUsername.put(user.Username, user.Id); + } + return usersByUsername; + } + private static Map queryScenarioRules(List logs) { List scenarios = new List(); for (Log__c log : logs) { diff --git a/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls b/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls index e419e07d0..56382dc45 100644 --- a/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls +++ b/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls @@ -7,6 +7,7 @@ * @group packaging * @description Automatically enables org default settings when installing the managed package */ +@SuppressWarnings('PMD.AvoidGlobalModifier') global without sharing class LoggerInstallHandler implements InstallHandler { @TestVisible private List settingsWithouDefaultSaveMethod = [ From a65b596ee2638498aff9332618c6a419903acc05 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 10:35:31 -0500 Subject: [PATCH 24/73] Updatd mock getObjectInfo.json for loggerSettings lwc --- .../__tests__/data/getObjectInfo.json | 68 ++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json index b5958bb38..14332fb02 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json @@ -206,6 +206,39 @@ "unique": false, "updateable": false }, + "DefaultLogOwner__c": { + "apiName": "DefaultLogOwner__c", + "calculated": false, + "compound": false, + "compoundComponentName": null, + "compoundFieldName": null, + "controllerName": null, + "controllingFields": [], + "createable": true, + "custom": true, + "dataType": "String", + "extraTypeInfo": null, + "filterable": true, + "filteredLookupInfo": null, + "highScaleNumber": false, + "htmlFormatted": false, + "inlineHelpText": "Specifies the default owner for new Log__c records. This can be a user ID, a username, a queue ID, or a queue's developer name.", + "label": "Log Owner", + "length": 255, + "nameField": false, + "polymorphicForeignKey": false, + "precision": 0, + "reference": false, + "referenceTargetField": null, + "referenceToInfos": [], + "relationshipName": null, + "required": false, + "scale": 0, + "searchPrefilterable": false, + "sortable": true, + "unique": false, + "updateable": true + }, "DefaultLogShareAccessLevel__c": { "apiName": "DefaultLogShareAccessLevel__c", "calculated": false, @@ -619,7 +652,7 @@ "highScaleNumber": false, "htmlFormatted": false, "inlineHelpText": "Controls if saving is enabled - when disabled, any calls to saveLog() are ignored.", - "label": "Is Saving Enabled", + "label": "Enable Saving", "length": 0, "nameField": false, "polymorphicForeignKey": false, @@ -818,6 +851,39 @@ "unique": false, "updateable": true }, + "StripInaccessibleRecordFields__c": { + "apiName": "StripInaccessibleRecordFields__c", + "calculated": false, + "compound": false, + "compoundComponentName": null, + "compoundFieldName": null, + "controllerName": null, + "controllingFields": [], + "createable": true, + "custom": true, + "dataType": "Boolean", + "extraTypeInfo": null, + "filterable": true, + "filteredLookupInfo": null, + "highScaleNumber": false, + "htmlFormatted": false, + "inlineHelpText": "When enabled, any time an SObject record is logged, only fields that the current user can access will be included in the record's JSON.", + "label": "Strip Inaccessible Record Fields", + "length": 0, + "nameField": false, + "polymorphicForeignKey": false, + "precision": 0, + "reference": false, + "referenceTargetField": null, + "referenceToInfos": [], + "relationshipName": null, + "required": true, + "scale": 0, + "searchPrefilterable": false, + "sortable": true, + "unique": false, + "updateable": true + }, "SystemModstamp": { "apiName": "SystemModstamp", "calculated": false, From 5ef2a58d00d25f0c81eff7555d6e3bf56622a735 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 13:09:39 -0500 Subject: [PATCH 25/73] Updated a test method to create a test user, instead of updating the current user - previously a row lock exception would sometimes occur --- .../tests/logger-engine/classes/Logger_Tests.cls | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls index fa8cf1521..4ff1929aa 100644 --- a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls @@ -634,24 +634,23 @@ private class Logger_Tests { @IsTest static void it_should_save_accurate_timestamp_when_logging_user_has_different_time_zone() { User automatedProcessUser = [SELECT Id, TimeZoneSidKey FROM User WHERE Name = 'Automated Process' AND Profile.Name = NULL]; - User currentUser = new User(Id = UserInfo.getUserId(), TimeZoneSidKey = UserInfo.getTimeZone().getId()); + User testStandardUser = LoggerTestUtils.createStandardUser(); - // Make sure that the current user has a different time zone from the automated process user - if (automatedProcessUser.TimeZoneSidKey == currentUser.TimeZoneSidKey) { + // Make sure that the test user has a different time zone from the automated process user + if (automatedProcessUser.TimeZoneSidKey == testStandardUser.TimeZoneSidKey) { switch on automatedProcessUser.TimeZoneSidKey { when 'America/Los_Angeles' { - currentUser.TimeZoneSidKey = 'America/New_York'; + testStandardUser.TimeZoneSidKey = 'America/New_York'; } when else { - currentUser.TimeZoneSidKey = 'America/Los_Angeles'; + testStandardUser.TimeZoneSidKey = 'America/Los_Angeles'; } } - System.assertNotEquals(automatedProcessUser.TimeZoneSidKey, currentUser.TimeZoneSidKey); - update currentUser; + System.assertNotEquals(automatedProcessUser.TimeZoneSidKey, testStandardUser.TimeZoneSidKey); } Datetime originalTimestamp; - System.runAs(currentUser) { + System.runAs(testStandardUser) { Logger.getUserSettings().IsEnabled__c = true; Logger.getUserSettings().LoggingLevel__c = LoggingLevel.INFO.name(); From 7202cdc627e25dbb0179c4826b5b4c09afc59db4 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 14:02:19 -0500 Subject: [PATCH 26/73] Added calls to Test.getEventBus().deliver() in Flow classes to try to resolve some inconsistent test failures in the pipeline --- .../classes/FlowCollectionLogEntry_Tests.cls | 8 ++++++++ .../tests/logger-engine/classes/FlowLogEntry_Tests.cls | 8 ++++++++ .../core/tests/logger-engine/classes/FlowLogger_Tests.cls | 3 +++ .../logger-engine/classes/FlowRecordLogEntry_Tests.cls | 8 ++++++++ 4 files changed, 27 insertions(+) diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls index 4ad69cc66..f2b4edcf7 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls @@ -40,6 +40,7 @@ private class FlowCollectionLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -82,6 +83,7 @@ private class FlowCollectionLogEntry_Tests { flowCollectionEntry.records = new List{ currentUser }; flowCollectionEntry.saveLog = true; FlowCollectionLogEntry.addFlowCollectionEntries(new List{ flowCollectionEntry }); + Test.getEventBus().deliver(); Test.stopTest(); @@ -126,6 +128,7 @@ private class FlowCollectionLogEntry_Tests { flowCollectionEntry.saveLog = true; flowCollectionEntry.saveMethodName = Logger.SaveMethod.QUEUEABLE.name(); FlowCollectionLogEntry.addFlowCollectionEntries(new List{ flowCollectionEntry }); + Test.getEventBus().deliver(); System.assertEquals(1, Limits.getQueueableJobs(), 'Log entries should have been saved using the QUEUEABLE save method'); Test.stopTest(); @@ -168,6 +171,7 @@ private class FlowCollectionLogEntry_Tests { flowCollectionEntry.loggingLevelName = flowCollectionEntryLoggingLevel.name(); flowCollectionEntry.records = new List{ currentUser }; FlowCollectionLogEntry.addFlowCollectionEntries(new List{ flowCollectionEntry }); + Test.getEventBus().deliver(); System.assertEquals(0, Logger.getBufferSize()); @@ -191,6 +195,7 @@ private class FlowCollectionLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -234,6 +239,7 @@ private class FlowCollectionLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -274,6 +280,7 @@ private class FlowCollectionLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); String transactionId = Logger.getTransactionId(); Test.stopTest(); @@ -301,6 +308,7 @@ private class FlowCollectionLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls index 8c6141725..ea0d642b7 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls @@ -32,6 +32,7 @@ private class FlowLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -55,6 +56,7 @@ private class FlowLogEntry_Tests { flowEntry.loggingLevelName = flowEntryLoggingLevel.name(); flowEntry.saveLog = true; FlowLogEntry.addFlowEntries(new List{ flowEntry }); + Test.getEventBus().deliver(); Test.stopTest(); @@ -85,6 +87,7 @@ private class FlowLogEntry_Tests { flowEntry.saveLog = true; flowEntry.saveMethodName = Logger.SaveMethod.QUEUEABLE.name(); FlowLogEntry.addFlowEntries(new List{ flowEntry }); + Test.getEventBus().deliver(); System.assertEquals(1, Limits.getQueueableJobs(), 'Log entries should have been saved using the QUEUEABLE save method'); Test.stopTest(); @@ -113,6 +116,7 @@ private class FlowLogEntry_Tests { FlowLogEntry flowEntry = createFlowLogEntry(); flowEntry.loggingLevelName = flowEntryLoggingLevel.name(); FlowLogEntry.addFlowEntries(new List{ flowEntry }); + Test.getEventBus().deliver(); System.assertEquals(0, Logger.getBufferSize()); @@ -136,6 +140,7 @@ private class FlowLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -169,6 +174,7 @@ private class FlowLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -199,6 +205,7 @@ private class FlowLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); String transactionId = Logger.getTransactionId(); Test.stopTest(); @@ -226,6 +233,7 @@ private class FlowLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls index 673fc8147..467a4a7e9 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls @@ -28,6 +28,7 @@ private class FlowLogger_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -53,6 +54,7 @@ private class FlowLogger_Tests { System.assertEquals(0, [SELECT COUNT() FROM LogEntry__c]); FlowLogger.addEntries(new List{ logEntry }); + Test.getEventBus().deliver(); System.assertEquals(0, Logger.getBufferSize()); Test.stopTest(); @@ -81,6 +83,7 @@ private class FlowLogger_Tests { System.assertEquals(0, [SELECT COUNT() FROM LogEntry__c]); FlowLogger.addEntries(new List{ logEntry }); + Test.getEventBus().deliver(); System.assertEquals(0, Logger.getBufferSize()); System.assertEquals(1, Limits.getQueueableJobs(), 'Log entries should have been saved using the QUEUEABLE save method'); diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls index 1005b2b6e..b19667cf4 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls @@ -40,6 +40,7 @@ private class FlowRecordLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -82,6 +83,7 @@ private class FlowRecordLogEntry_Tests { flowRecordEntry.saveLog = true; flowRecordEntry.saveMethodName = Logger.SaveMethod.QUEUEABLE.name(); FlowRecordLogEntry.addFlowRecordEntries(new List{ flowRecordEntry }); + Test.getEventBus().deliver(); System.assertEquals(1, Limits.getQueueableJobs(), 'Log entries should have been saved using the QUEUEABLE save method'); Test.stopTest(); @@ -123,6 +125,7 @@ private class FlowRecordLogEntry_Tests { flowRecordEntry.record = currentUser; flowRecordEntry.saveLog = true; FlowRecordLogEntry.addFlowRecordEntries(new List{ flowRecordEntry }); + Test.getEventBus().deliver(); Test.stopTest(); @@ -162,6 +165,7 @@ private class FlowRecordLogEntry_Tests { flowRecordEntry.loggingLevelName = flowRecordEntryLoggingLevel.name(); flowRecordEntry.record = currentUser; FlowRecordLogEntry.addFlowRecordEntries(new List{ flowRecordEntry }); + Test.getEventBus().deliver(); System.assertEquals(0, Logger.getBufferSize()); @@ -185,6 +189,7 @@ private class FlowRecordLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -218,6 +223,7 @@ private class FlowRecordLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); @@ -248,6 +254,7 @@ private class FlowRecordLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); String transactionId = Logger.getTransactionId(); Test.stopTest(); @@ -275,6 +282,7 @@ private class FlowRecordLogEntry_Tests { System.assertEquals(1, Logger.getBufferSize()); Logger.saveLog(); + Test.getEventBus().deliver(); Test.stopTest(); From fa0f12b55265623c9e5325f4ef31233f49c968de Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 17:56:40 -0500 Subject: [PATCH 27/73] Changed approach for querying the Standard User profile in LoggerTestUtils to resolve an issue with the packaging process having more languages available. Also updated experience-cloud-scratch-def.json to use ES/es for language locale as another way of testing things in the pipeline --- .../experience-cloud-scratch-def.json | 4 +- .../tests/common/classes/LoggerTestUtils.cls | 68 +++++++++---------- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/config/scratch-orgs/experience-cloud-scratch-def.json b/config/scratch-orgs/experience-cloud-scratch-def.json index ab81741f9..9ba98b20d 100644 --- a/config/scratch-orgs/experience-cloud-scratch-def.json +++ b/config/scratch-orgs/experience-cloud-scratch-def.json @@ -2,8 +2,8 @@ "orgName": "Nebula Logger - Experience Cloud Scratch Org", "edition": "Enterprise", "hasSampleData": true, - "country": "US", - "language": "en_US", + "country": "ES", + "language": "es", "features": ["Communities"], "settings": { "chatterSettings": { diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index b5edc2362..8d87fc204 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -259,31 +259,22 @@ public class LoggerTestUtils { } private static Profile queryStandardUserProfile() { - // The Profile object does not have a DeveloperName field, and tandard profile names are (annoyingly) translated - // to the current user's language - to ensure that this query works for all languages, the translated names - // have been as part of the query's filter. - // And no, this doesn't have to be a map (only .values() is used below), but it makes maintenance & readability easier - Map profileNamesByLanguageLocaleKey = new Map{ - 'da' => 'Standardbruger', - 'de' => 'Standardbenutzer', - 'en_US' => 'Standard User', - 'es_MX' => 'Usuario estándar', - 'es' => 'Usuario estándar', - 'fi' => 'Vakiokäyttäjä', - 'fr' => 'Utilisateur standard', - 'it' => 'Utente standard', - 'ja' => '標準ユーザ', - 'ko' => '표준 사용자', - 'nl_NL' => 'Standaardgebruiker', - 'no' => 'Standardbruker', - 'pt_BR' => 'Usuário Padrão', - 'ru' => 'Стандартный пользователь', - 'sv' => 'Standardanvändare', - 'th' => 'ผู้ใช้มาตรฐาน', - 'zh_CN' => '标准用户', - 'zh_TW' => '標準使用者' - }; - return [SELECT Id, Name FROM Profile WHERE Name IN :profileNamesByLanguageLocaleKey.values() LIMIT 1]; + User currentUser = new User(Id = UserInfo.getUserId(), LanguageLocaleKey = UserInfo.getLanguage()); + if (currentUser.LanguageLocaleKey != 'en_US') { + currentUser.LanguageLocaleKey = 'en_US'; + update currentUser; + } + List results; + System.runAs(currentUser) { + results = [SELECT Id, Name FROM Profile WHERE Name = 'Standard User' LIMIT 1]; + } + if (results.isEmpty() == true) { + Exception ex = new NoDataFoundException(); + ex.setMessage('Could not find the profile "Standard User" for language locale: ' + UserInfo.getLanguage()); + throw ex; + } + + return results.get(0); } // Actual test methods for LoggerTestUtils - the goal of this class is to be a utility class for other test classes @@ -294,23 +285,30 @@ public class LoggerTestUtils { @SuppressWarnings('PMD.OperationWithLimitsInLoop') @IsTest static void it_should_return_standard_user_profile_in_all_languages() { - User testUser = createStandardUser(); - testUser.LanguageLocaleKey = 'en_US'; - insert testUser; + Map testUsersByLanguageLocale = new Map(); + for (PicklistEntry picklistEntry : Schema.User.LanguageLocaleKey.getDescribe().getPickListValues()) { + User testUser = createStandardUser(); + testUser.LanguageLocaleKey = picklistEntry.getValue(); + testUser.Username = picklistEntry.getValue() + testUser.Username; + testUsersByLanguageLocale.put(testUser.LanguageLocaleKey, testUser); + } + insert testUsersByLanguageLocale.values(); Profile expectedProfile; // Using 'en_US', get the expected profile using the name 'Standard Profile' - System.runAs(testUser) { - testUser = [SELECT Id, LanguageLocaleKey FROM User WHERE Id = :testUser.Id]; - System.assertEquals('en_US', testUser.LanguageLocaleKey); + System.runAs(testUsersByLanguageLocale.get('en_US')) { expectedProfile = [SELECT Id, Name FROM Profile WHERE Name = 'Standard User']; } - // Test that each value of LanguageLocaleKey returns a value for STANDARD_USER_PROFILE for (PicklistEntry picklistEntry : Schema.User.LanguageLocaleKey.getDescribe().getPickListValues()) { - testUser.LanguageLocaleKey = picklistEntry.getValue(); - update testUser; + // During package version creation, there are several additional languages included in the org that aren't included in the "normal" scratch orgs + // If we get to the DML limit, it's probably safe to assume that the functionality is working, so break out of the loop & assume/hope things are working in all languages + // The custom getter for STANDARD_USER_PROFILE uses 1 DML statement when the current user's language is not 'en-US', so sutract 1 from Limits.getLimitDmlStatements() + if (Limits.getDmlStatements() == (Limits.getLimitDmlStatements() - 1)) { + break; + } + + User testUser = testUsersByLanguageLocale.get(picklistEntry.getValue()); System.runAs(testUser) { cacheQueries = false; - testUser = [SELECT Id, LanguageLocaleKey FROM User WHERE Id = :testUser.Id]; System.assertEquals(picklistEntry.getValue(), testUser.LanguageLocaleKey); System.assertEquals(expectedProfile.Id, STANDARD_USER_PROFILE.Id); } From 5968231e22285f7f5e980161e8e5a59a1dce8a0a Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 22:28:08 -0500 Subject: [PATCH 28/73] Switched from trying (and failing) to use the Standard User profile in test methods, to instead using the current user's profile for unit tests I talked with @jamessimone and @nojanv about several possible options for dealing with profile names being translated in other languages, but in the end, Profiles are the worst when dealing with multilingual orgs - and for unit tests, the user's profile isn't important. Integration tests in the extra-tests folder will continue using the Standard User profile (since those test classes are not included in the packages) to test the behavior of the Standard User profile in a clean scratch org. --- .../tests/common/classes/LoggerTestUtils.cls | 75 ++----------------- .../classes/LogBatchPurger_Tests.cls | 20 ----- .../classes/LogHandler_Tests.cls | 4 +- .../classes/LogMassDeleteExtension_Tests.cls | 33 -------- .../classes/LogEntryEventBuilder_Tests.cls | 4 +- .../logger-engine/classes/Logger_Tests.cls | 2 +- .../LogBatchPurger_Tests_Integration.cls | 61 +++++++++++++++ ...BatchPurger_Tests_Integration.cls-meta.xml | 5 ++ ...LogEntryEventBuilder_Tests_Integration.cls | 6 +- ...gMassDeleteExtension_Tests_Integration.cls | 53 +++++++++++++ ...teExtension_Tests_Integration.cls-meta.xml | 5 ++ ...oggerSettingsController_Tests_Security.cls | 45 +++++------ 12 files changed, 162 insertions(+), 151 deletions(-) create mode 100644 nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls create mode 100644 nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml create mode 100644 nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls create mode 100644 nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index 8d87fc204..03a63dfb2 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -61,16 +61,6 @@ public class LoggerTestUtils { private set; } - private static final Profile STANDARD_USER_PROFILE { - get { - if (STANDARD_USER_PROFILE == null || cacheQueries == false) { - STANDARD_USER_PROFILE = queryStandardUserProfile(); - } - return STANDARD_USER_PROFILE; - } - private set; - } - /** * @description Assigns the permission set `LoggerAdmin` to the specified user ID * @param userId The ID of the user that should be assigned the permission set @@ -151,7 +141,11 @@ public class LoggerTestUtils { * @description Creates a `User` record for testing purposes, using the 'Standard User' profile * @return The generated `User` record - it is not automatically inserted into the database. */ - public static User createStandardUser() { + public static User createUser() { + return createUser(UserInfo.getProfileId()); + } + + public static User createUser(Id profileId) { return new User( Alias = 'log_xyz', Email = 'logger_xyz@test.com.net.org', @@ -159,7 +153,7 @@ public class LoggerTestUtils { LanguageLocaleKey = 'en_US', LastName = 'Logger test user', LocaleSidKey = 'en_US', - ProfileId = STANDARD_USER_PROFILE.Id, + ProfileId = profileId, TimeZoneSidKey = 'America/Los_Angeles', Username = 'logger_xyz@test.com.net.org' ); @@ -257,61 +251,4 @@ public class LoggerTestUtils { } return results; } - - private static Profile queryStandardUserProfile() { - User currentUser = new User(Id = UserInfo.getUserId(), LanguageLocaleKey = UserInfo.getLanguage()); - if (currentUser.LanguageLocaleKey != 'en_US') { - currentUser.LanguageLocaleKey = 'en_US'; - update currentUser; - } - List results; - System.runAs(currentUser) { - results = [SELECT Id, Name FROM Profile WHERE Name = 'Standard User' LIMIT 1]; - } - if (results.isEmpty() == true) { - Exception ex = new NoDataFoundException(); - ex.setMessage('Could not find the profile "Standard User" for language locale: ' + UserInfo.getLanguage()); - throw ex; - } - - return results.get(0); - } - - // Actual test methods for LoggerTestUtils - the goal of this class is to be a utility class for other test classes - // (instead of actually containing tests), but this verifies that this utility class is working as expected. - // Yes, this does DML in a for-loop, which is HORRIBLE to do, but in this case, it's within the governor limits, - // it's only in a test class, and it ensures that the current user's language has been updated - // so that the profile's name is using the expected language - @SuppressWarnings('PMD.OperationWithLimitsInLoop') - @IsTest - static void it_should_return_standard_user_profile_in_all_languages() { - Map testUsersByLanguageLocale = new Map(); - for (PicklistEntry picklistEntry : Schema.User.LanguageLocaleKey.getDescribe().getPickListValues()) { - User testUser = createStandardUser(); - testUser.LanguageLocaleKey = picklistEntry.getValue(); - testUser.Username = picklistEntry.getValue() + testUser.Username; - testUsersByLanguageLocale.put(testUser.LanguageLocaleKey, testUser); - } - insert testUsersByLanguageLocale.values(); - Profile expectedProfile; - // Using 'en_US', get the expected profile using the name 'Standard Profile' - System.runAs(testUsersByLanguageLocale.get('en_US')) { - expectedProfile = [SELECT Id, Name FROM Profile WHERE Name = 'Standard User']; - } - for (PicklistEntry picklistEntry : Schema.User.LanguageLocaleKey.getDescribe().getPickListValues()) { - // During package version creation, there are several additional languages included in the org that aren't included in the "normal" scratch orgs - // If we get to the DML limit, it's probably safe to assume that the functionality is working, so break out of the loop & assume/hope things are working in all languages - // The custom getter for STANDARD_USER_PROFILE uses 1 DML statement when the current user's language is not 'en-US', so sutract 1 from Limits.getLimitDmlStatements() - if (Limits.getDmlStatements() == (Limits.getLimitDmlStatements() - 1)) { - break; - } - - User testUser = testUsersByLanguageLocale.get(picklistEntry.getValue()); - System.runAs(testUser) { - cacheQueries = false; - System.assertEquals(picklistEntry.getValue(), testUser.LanguageLocaleKey); - System.assertEquals(expectedProfile.Id, STANDARD_USER_PROFILE.Id); - } - } - } } diff --git a/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls b/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls index 9e6e7193f..d707c4dae 100644 --- a/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls +++ b/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls @@ -38,26 +38,6 @@ private class LogBatchPurger_Tests { insert logEntryTags; } - @IsTest - static void it_should_throw_exception_when_user_does_not_have_delete_access() { - Integer originalCountOfLogEntries = [SELECT COUNT() FROM LogEntry__c]; - - User standardUser = LoggerTestUtils.createStandardUser(); - System.runAs(standardUser) { - System.assertEquals(false, Schema.Log__c.SObjectType.getDescribe().isDeletable()); - - try { - Test.startTest(); - Database.executeBatch(new LogBatchPurger()); - Test.stopTest(); - } catch (NoAccessException ex) { - System.assertEquals(LogBatchPurger.NO_DELETE_ACCESS_EXCEPTION_MESSAGE, ex.getMessage()); - } - } - Integer updatedCountOfLogEntries = [SELECT COUNT() FROM LogEntry__c]; - System.assertEquals(originalCountOfLogEntries, updatedCountOfLogEntries); - } - @IsTest static void it_should_delete_a_log_after_scheduled_deletion_date_when_system_messages_enabled() { LoggerSettings__c settings = Logger.getUserSettings(); diff --git a/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls b/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls index b09b48b30..1a8994bc8 100644 --- a/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls +++ b/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls @@ -96,7 +96,7 @@ private class LogHandler_Tests { @IsTest static void it_should_set_owner_when_default_configured_with_user_id() { User currentUser = new User(Id = UserInfo.getUserId(), ProfileId = UserInfo.getProfileId()); - User expectedLogOwnerUser = LoggerTestUtils.createStandardUser(); + User expectedLogOwnerUser = LoggerTestUtils.createUser(); insert expectedLogOwnerUser; LoggerSettings__c currentUserSettings = Logger.getUserSettings(currentUser); currentUserSettings.DefaultLogOwner__c = expectedLogOwnerUser.Id; @@ -112,7 +112,7 @@ private class LogHandler_Tests { @IsTest static void it_should_set_owner_when_default_configured_with_username() { User currentUser = new User(Id = UserInfo.getUserId(), ProfileId = UserInfo.getProfileId()); - User expectedLogOwnerUser = LoggerTestUtils.createStandardUser(); + User expectedLogOwnerUser = LoggerTestUtils.createUser(); insert expectedLogOwnerUser; LoggerSettings__c currentUserSettings = Logger.getUserSettings(currentUser); currentUserSettings.DefaultLogOwner__c = expectedLogOwnerUser.Username; diff --git a/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls b/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls index 676e972fb..3a6856854 100644 --- a/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls +++ b/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls @@ -87,37 +87,4 @@ private class LogMassDeleteExtension_Tests { System.assertEquals(false, log.IsDeleted, log); } } - - @IsTest - static void it_should_add_error_to_page_when_user_does_not_have_delete_access() { - List logs = [SELECT Id, Name FROM Log__c]; - List logsToDelete = new List(); - List logsToKeep = new List(); - Integer numberToKeep = 3; - for (Integer i = 0; i < logs.size(); i++) { - if (i < numberToKeep) { - logsToDelete.add(logs.get(i)); - } else { - logsToKeep.add(logs.get(i)); - } - } - - ApexPages.StandardSetController controller = new ApexPages.StandardSetController(logs); - controller.setSelected(logsToDelete); - - PageReference pageReference = Page.LogMassDelete; - Test.setCurrentPage(pageReference); - - User standardUser = LoggerTestUtils.createStandardUser(); - System.runAs(standardUser) { - System.assertEquals(false, Schema.Log__c.SObjectType.getDescribe().isDeletable()); - - String deleteAccessError = 'You do not have access to delete logs records'; - - new LogMassDeleteExtension(controller); - - System.assertEquals(true, ApexPages.hasMessages(ApexPages.SEVERITY.ERROR)); - System.assertEquals(deleteAccessError, ApexPages.getMessages().get(0).getSummary()); - } - } } diff --git a/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls index c69e220fa..5c6f0e412 100644 --- a/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls @@ -833,7 +833,7 @@ private class LogEntryEventBuilder_Tests { @IsTest static void it_should_skip_stripping_inaccessible_fields_for_aggregate_result() { - User standardUser = LoggerTestUtils.createStandardUser(); + User standardUser = LoggerTestUtils.createUser(); AggregateResult mockAggregateResult = LoggerTestUtils.createMockAggregateResult(); LogEntryEventBuilder builder; @@ -847,7 +847,7 @@ private class LogEntryEventBuilder_Tests { @IsTest static void it_should_skip_stripping_inaccessible_fields_for_aggregate_results() { - User standardUser = LoggerTestUtils.createStandardUser(); + User standardUser = LoggerTestUtils.createUser(); List mockAggregateResults = new List{ LoggerTestUtils.createMockAggregateResult() }; LogEntryEventBuilder builder; diff --git a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls index 4ff1929aa..05f5d1647 100644 --- a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls @@ -634,7 +634,7 @@ private class Logger_Tests { @IsTest static void it_should_save_accurate_timestamp_when_logging_user_has_different_time_zone() { User automatedProcessUser = [SELECT Id, TimeZoneSidKey FROM User WHERE Name = 'Automated Process' AND Profile.Name = NULL]; - User testStandardUser = LoggerTestUtils.createStandardUser(); + User testStandardUser = LoggerTestUtils.createUser(); // Make sure that the test user has a different time zone from the automated process user if (automatedProcessUser.TimeZoneSidKey == testStandardUser.TimeZoneSidKey) { diff --git a/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls new file mode 100644 index 000000000..a914272d4 --- /dev/null +++ b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------------------------// +// This file is part of the Nebula Logger project, released under the MIT License. // +// See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. // +//------------------------------------------------------------------------------------------------// + +@SuppressWarnings('PMD.ApexDoc, PMD.CyclomaticComplexity, PMD.ExcessiveParameterList, PMD.MethodNamingConventions, PMD.NcssMethodCount') +@IsTest +private class LogBatchPurger_Tests_Integration { + private static final Integer NUMBER_OF_LOG_ENTRIES = 10; + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + + @TestSetup + static void setupData() { + LoggerSettings__c settings = Logger.getUserSettings(); + settings.IsEnabled__c = false; + settings.LoggingLevel__c = LoggingLevel.FINEST.name(); + insert settings; + + Date scheduledDeletionDate = System.today().addDays(-7); + Log__c log = new Log__c(LogRetentionDate__c = scheduledDeletionDate, TransactionId__c = '1234'); + insert log; + + List logEntries = new List(); + for (Integer i = 0; i < NUMBER_OF_LOG_ENTRIES; i++) { + LogEntry__c logEntry = new LogEntry__c(Log__c = log.Id, LoggingLevel__c = LoggingLevel.INFO.name()); + + logEntries.add(logEntry); + } + insert logEntries; + + LoggerTag__c tag = new LoggerTag__c(Name = 'My important tag'); + insert tag; + + List logEntryTags = new List(); + for (LogEntry__c logEntry : logEntries) { + LogEntryTag__c logEntryTag = new LogEntryTag__c(LogEntry__c = logEntry.Id, Tag__c = tag.Id); + logEntryTags.add(logEntryTag); + } + insert logEntryTags; + } + + @IsTest + static void it_should_throw_exception_when_user_does_not_have_delete_access() { + Integer originalCountOfLogEntries = [SELECT COUNT() FROM LogEntry__c]; + + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + System.runAs(standardUser) { + System.assertEquals(false, Schema.Log__c.SObjectType.getDescribe().isDeletable()); + + try { + Test.startTest(); + Database.executeBatch(new LogBatchPurger()); + Test.stopTest(); + } catch (NoAccessException ex) { + System.assertEquals(LogBatchPurger.NO_DELETE_ACCESS_EXCEPTION_MESSAGE, ex.getMessage()); + } + } + Integer updatedCountOfLogEntries = [SELECT COUNT() FROM LogEntry__c]; + System.assertEquals(originalCountOfLogEntries, updatedCountOfLogEntries); + } +} diff --git a/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml new file mode 100644 index 000000000..871a8cfea --- /dev/null +++ b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml @@ -0,0 +1,5 @@ + + + 53.0 + Active + diff --git a/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls b/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls index 930af8d4d..583c60199 100644 --- a/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls +++ b/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls @@ -6,9 +6,11 @@ @SuppressWarnings('PMD.ApexDoc, PMD.CyclomaticComplexity, PMD.ExcessiveParameterList, PMD.MethodNamingConventions, PMD.NcssMethodCount') @IsTest private class LogEntryEventBuilder_Tests_Integration { + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + @IsTest static void stripInaccessibleFieldsForRecordWhenEnabled() { - User standardUser = LoggerTestUtils.createStandardUser(); + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); AccountBrand mockAccountBrand = new AccountBrand( Id = LoggerTestUtils.createMockId(Schema.AccountBrand.SObjectType), CompanyName = 'Some Company, Inc.', @@ -42,7 +44,7 @@ private class LogEntryEventBuilder_Tests_Integration { @IsTest static void stripInaccessibleFieldsForRecordsWhenEnabled() { - User standardUser = LoggerTestUtils.createStandardUser(); + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); List mockAccountBrands = new List(); List strippedAccountBrands = new List(); for (Integer i = 0; i < 5; i++) { diff --git a/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls new file mode 100644 index 000000000..3cf40705d --- /dev/null +++ b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls @@ -0,0 +1,53 @@ +//------------------------------------------------------------------------------------------------// +// This file is part of the Nebula Logger project, released under the MIT License. // +// See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. // +//------------------------------------------------------------------------------------------------// + +@SuppressWarnings('PMD.ApexDoc, PMD.CyclomaticComplexity, PMD.ExcessiveParameterList, PMD.MethodNamingConventions, PMD.NcssMethodCount') +@IsTest +private class LogMassDeleteExtension_Tests_Integration { + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + + @TestSetup + static void setupData() { + List logs = new List(); + for (Integer i = 0; i < 10; i++) { + Log__c log = new Log__c(TransactionId__c = 'TXN-' + i); + logs.add(log); + } + insert logs; + } + + @IsTest + static void it_should_add_error_to_page_when_user_does_not_have_delete_access() { + List logs = [SELECT Id, Name FROM Log__c]; + List logsToDelete = new List(); + List logsToKeep = new List(); + Integer numberToKeep = 3; + for (Integer i = 0; i < logs.size(); i++) { + if (i < numberToKeep) { + logsToDelete.add(logs.get(i)); + } else { + logsToKeep.add(logs.get(i)); + } + } + + ApexPages.StandardSetController controller = new ApexPages.StandardSetController(logs); + controller.setSelected(logsToDelete); + + PageReference pageReference = Page.LogMassDelete; + Test.setCurrentPage(pageReference); + + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + System.runAs(standardUser) { + System.assertEquals(false, Schema.Log__c.SObjectType.getDescribe().isDeletable()); + + String deleteAccessError = 'You do not have access to delete logs records'; + + new LogMassDeleteExtension(controller); + + System.assertEquals(true, ApexPages.hasMessages(ApexPages.SEVERITY.ERROR)); + System.assertEquals(deleteAccessError, ApexPages.getMessages().get(0).getSummary()); + } + } +} diff --git a/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml new file mode 100644 index 000000000..871a8cfea --- /dev/null +++ b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml @@ -0,0 +1,5 @@ + + + 53.0 + Active + diff --git a/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls b/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls index 854ce6a6f..8b1c521b9 100644 --- a/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls +++ b/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls @@ -13,11 +13,12 @@ @IsTest private class LoggerSettingsController_Tests_Security { private static final String CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME = 'CanModifyLoggerSettings'; + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; @IsTest static void it_should_permit_user_to_modify_logger_settings_when_custom_permission_is_assigned() { - User testUser = LoggerTestUtils.createStandardUser(); - insert testUser; + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + insert standardUser; PermissionSet permissionSet = new PermissionSet(Name = 'CustomPermissionEnabled', Label = 'Custom Permisison Enabled'); insert permissionSet; SetupEntityAccess setupEntityAccess = new SetupEntityAccess( @@ -25,10 +26,10 @@ private class LoggerSettingsController_Tests_Security { SetupEntityId = [SELECT Id FROM CustomPermission WHERE DeveloperName = :CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME] .Id ); - PermissionSetAssignment permissionSetAssignment = new PermissionSetAssignment(AssigneeId = testUser.Id, PermissionSetId = permissionSet.Id); + PermissionSetAssignment permissionSetAssignment = new PermissionSetAssignment(AssigneeId = standardUser.Id, PermissionSetId = permissionSet.Id); insert new List{ setupEntityAccess, permissionSetAssignment }; - System.runAs(testUser) { + System.runAs(standardUser) { System.assertEquals(true, FeatureManagement.checkPermission(CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME), permissionSetAssignment); System.assertEquals(true, LoggerSettingsController.canUserModifyLoggerSettings()); } @@ -36,11 +37,11 @@ private class LoggerSettingsController_Tests_Security { @IsTest static void it_should_permit_user_to_modify_logger_settings_when_loggerAdmin_permission_set_is_assigned() { - User testUser = LoggerTestUtils.createStandardUser(); - insert testUser; - LoggerTestUtils.assignAdminPermissionSet(testUser.Id); + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + insert standardUser; + LoggerTestUtils.assignAdminPermissionSet(standardUser.Id); - System.runAs(testUser) { + System.runAs(standardUser) { System.assertEquals(true, FeatureManagement.checkPermission(CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME)); System.assertEquals(true, LoggerSettingsController.canUserModifyLoggerSettings()); } @@ -48,11 +49,11 @@ private class LoggerSettingsController_Tests_Security { @IsTest static void it_should_not_permit_user_to_modify_logger_settings_when_loggerLogViewer_permission_set_is_assigned() { - User testUser = LoggerTestUtils.createStandardUser(); - insert testUser; - LoggerTestUtils.assignLogViewerPermissionSet(testUser.Id); + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + insert standardUser; + LoggerTestUtils.assignLogViewerPermissionSet(standardUser.Id); - System.runAs(testUser) { + System.runAs(standardUser) { System.assertEquals(false, FeatureManagement.checkPermission(CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME)); System.assertEquals(false, LoggerSettingsController.canUserModifyLoggerSettings()); } @@ -60,11 +61,11 @@ private class LoggerSettingsController_Tests_Security { @IsTest static void it_should_not_permit_user_to_modify_logger_settings_when_loggerEndUser_permission_set_is_assigned() { - User testUser = LoggerTestUtils.createStandardUser(); - insert testUser; - LoggerTestUtils.assignEndUserPermissionSet(testUser.Id); + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + insert standardUser; + LoggerTestUtils.assignEndUserPermissionSet(standardUser.Id); - System.runAs(testUser) { + System.runAs(standardUser) { System.assertEquals(false, FeatureManagement.checkPermission(CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME)); System.assertEquals(false, LoggerSettingsController.canUserModifyLoggerSettings()); } @@ -72,11 +73,11 @@ private class LoggerSettingsController_Tests_Security { @IsTest static void it_should_not_permit_user_to_modify_logger_settings_when_loggerLogCreator_permission_set_is_assigned() { - User testUser = LoggerTestUtils.createStandardUser(); - insert testUser; - LoggerTestUtils.assignLogCreatorPermissionSet(testUser.Id); + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + insert standardUser; + LoggerTestUtils.assignLogCreatorPermissionSet(standardUser.Id); - System.runAs(testUser) { + System.runAs(standardUser) { System.assertEquals(false, FeatureManagement.checkPermission(CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME)); System.assertEquals(false, LoggerSettingsController.canUserModifyLoggerSettings()); } @@ -84,8 +85,8 @@ private class LoggerSettingsController_Tests_Security { @IsTest static void it_should_not_permit_user_to_modify_logger_settings_when_custom_permission_is_not_assigned() { - User testUser = LoggerTestUtils.createStandardUser(); - System.runAs(testUser) { + User standardUser = LoggerTestUtils.createUser(STANDARD_USER_PROFILE.Id); + System.runAs(standardUser) { System.assertEquals(false, LoggerSettingsController.canUserModifyLoggerSettings()); } } From 97eae0b66f5e34d92b1788d36b0ef2efada159ca Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 22:29:31 -0500 Subject: [PATCH 29/73] Added specific version of nanoid in package.json devDependencies due to dependabot security alert --- package-lock.json | 961 ++++++++++++++++++++++++++++++++++------------ package.json | 1 + 2 files changed, 726 insertions(+), 236 deletions(-) diff --git a/package-lock.json b/package-lock.json index b325037a3..9879b4855 100644 --- a/package-lock.json +++ b/package-lock.json @@ -655,9 +655,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz", - "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz", + "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -3162,9 +3162,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3172,13 +3172,39 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" }, "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -3237,11 +3263,29 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -3367,9 +3411,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3377,13 +3421,39 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" }, "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -3442,18 +3512,36 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, "@salesforce/plugin-config": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-config/-/plugin-config-1.3.14.tgz", - "integrity": "sha512-aWoedAQMm3hqSSAr0BRYLPFOfYsodXg/DOcvrnA+LIzQQZXUjyedMMBcsBhCe5aSP4XpYVDru6/4YiulmGkR7A==", + "version": "1.3.15", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-config/-/plugin-config-1.3.15.tgz", + "integrity": "sha512-M0rdwNZMSLV328rcKcXQKRidGOsYUaFQ2OB9kAP8B7Gr3/GryYz7qvqoEUNer/7/9Y3h6UWy5NJSXWGDq9AVGw==", "dev": true, "requires": { "@oclif/config": "^1.18.1", @@ -3463,9 +3551,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3473,11 +3561,57 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } @@ -3512,9 +3646,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3522,13 +3656,39 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" }, "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -3587,11 +3747,29 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } } } }, @@ -3719,9 +3897,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3729,11 +3907,48 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" } }, "got": { @@ -3785,9 +4000,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3795,11 +4010,57 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } @@ -3819,9 +4080,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3829,11 +4090,57 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } @@ -3851,9 +4158,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3861,26 +4168,72 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } }, "@salesforce/plugin-source": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-source/-/plugin-source-1.7.0.tgz", - "integrity": "sha512-Y5Vl93hzGi+Wf/I7fRh42dWyNne2qwUNGOcpdZfcOM9qPY/Y2grQDIi7F0orCqUxrk/SwaxQSl7lV6tLlSW6SQ==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-source/-/plugin-source-1.8.4.tgz", + "integrity": "sha512-OI3U+KeUv/Giv4gBC+qUszhvHIxVQFoPC+Q5Q9cq97qEiHTfGn/Wxb8m1D/T+fhdG71zIdcAXbjedfWG7sFiPw==", "dev": true, "requires": { "@oclif/config": "^1.18.1", "@salesforce/command": "^4.2.0", "@salesforce/core": "^2.31.0", - "@salesforce/source-deploy-retrieve": "^5.9.1", - "@salesforce/source-tracking": "^0.5.1", + "@salesforce/source-deploy-retrieve": "^5.9.3", + "@salesforce/source-tracking": "^1.0.0", "chalk": "^4.1.2", "cli-ux": "^5.6.3", "open": "^8.2.1", @@ -3888,9 +4241,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -3898,13 +4251,39 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" }, "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -3943,6 +4322,14 @@ "supports-hyperlinks": "^1.0.1", "treeify": "^1.1.0", "tslib": "^1.9.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "tslib": { @@ -4118,15 +4505,6 @@ "is-docker": "^2.0.0" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4183,6 +4561,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "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" + } + }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -4213,10 +4600,13 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "strip-ansi": { "version": "5.2.0", @@ -4253,9 +4643,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -4263,19 +4653,65 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } }, "@salesforce/plugin-templates": { - "version": "52.7.0", - "resolved": "https://registry.npmjs.org/@salesforce/plugin-templates/-/plugin-templates-52.7.0.tgz", - "integrity": "sha512-Kbfe4qQPko+T9kD9/dv6yOSWRX8cSDJdhuLFIgTSmmT91u3emUkl0ofyF3+GMume+6LsOcRHrtawwn6FE26SbQ==", + "version": "53.1.0", + "resolved": "https://registry.npmjs.org/@salesforce/plugin-templates/-/plugin-templates-53.1.0.tgz", + "integrity": "sha512-SI4gSFnCRYq4hV/216OpiN8FmNmpynf3U0RJWUxOkcW0JhVO7LX03LaLyC1siA9ZLZrg2hZTps4gXAU12r21gA==", "dev": true, "requires": { "@oclif/command": "^1", @@ -4283,7 +4719,7 @@ "@oclif/errors": "^1", "@salesforce/command": "^2.2.0", "@salesforce/core": "2.32.0", - "@salesforce/templates": "52.7.0", + "@salesforce/templates": "53.1.0", "tslib": "^1", "yeoman-environment": "2.4.0", "yeoman-generator": "4.0.1" @@ -4373,9 +4809,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -4383,11 +4819,57 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } @@ -4406,9 +4888,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -4416,11 +4898,57 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" + }, + "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + } + } + }, + "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" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" } } } @@ -4872,12 +5400,12 @@ } }, "@salesforce/source-deploy-retrieve": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-5.9.2.tgz", - "integrity": "sha512-Q1FamL7pQ5wj1ZlwqaqcJBHe+jZ1JNNMeyFct/uygohOypy0nJpS+AhKKpIerD9OPPW9KYa2fmqBf0QpmBEIbQ==", + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-5.9.4.tgz", + "integrity": "sha512-YuRiusKMbs34onmCd4eV219wLEhNdEbpkjkdZ1CXSEDRAZAROydPK8Xh5r3RjJiJaVX+b+HIKANN2XH4HqwhjA==", "dev": true, "requires": { - "@salesforce/core": "2.31.0", + "@salesforce/core": "2.33.1", "@salesforce/kit": "^1.5.0", "@salesforce/ts-types": "^1.4.2", "archiver": "^5.3.0", @@ -4887,61 +5415,17 @@ "mime": "2.6.0", "unzipper": "0.10.11", "xmldom-sfdx-encoding": "^0.1.29" - }, - "dependencies": { - "@salesforce/core": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.31.0.tgz", - "integrity": "sha512-ROEjX/M0ZHpGlmRfNUoDKsE4ppOZUU5Hcl3XHr2pCO7F505imAmhKg8I+XfGSxXyj4bL/kftkNTK5xFffJ+6mw==", - "dev": true, - "requires": { - "@salesforce/bunyan": "^2.0.0", - "@salesforce/kit": "^1.5.0", - "@salesforce/schemas": "^1.0.1", - "@salesforce/ts-types": "^1.5.13", - "@types/graceful-fs": "^4.1.5", - "@types/jsforce": "^1.9.35", - "@types/mkdirp": "^1.0.1", - "debug": "^3.1.0", - "graceful-fs": "^4.2.4", - "jsen": "0.6.6", - "jsforce": "^1.11.0", - "jsonwebtoken": "8.5.0", - "mkdirp": "1.0.4", - "semver": "^7.3.5", - "sfdx-faye": "^1.0.9", - "ts-retry-promise": "^0.6.0" - } - }, - "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" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@salesforce/source-tracking": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@salesforce/source-tracking/-/source-tracking-0.5.2.tgz", - "integrity": "sha512-vWA8hJxCv7ov/6Rh0865/cOlnZ7GgQtu3+tUKGMhZBmtubCuYIKSIwSifh6tunbnmVeqUa4FntgVvGUT2nYIqw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@salesforce/source-tracking/-/source-tracking-1.0.2.tgz", + "integrity": "sha512-056b2Ia9JAJGv+W2ByOHLrkCP0zEjzpvT43IqE6HUYbSDqm1T1InFeCtLWy8S4uzlMtiUx34mKshkDoj8lIQQA==", "dev": true, "requires": { "@salesforce/core": "^2.33.1", "@salesforce/kit": "^1.5.17", - "@salesforce/source-deploy-retrieve": "^5.8.2", + "@salesforce/source-deploy-retrieve": "^5.9.4", "isomorphic-git": "^1.9.2", "ts-retry-promise": "^0.6.0" } @@ -4959,9 +5443,9 @@ } }, "@salesforce/templates": { - "version": "52.7.0", - "resolved": "https://registry.npmjs.org/@salesforce/templates/-/templates-52.7.0.tgz", - "integrity": "sha512-bUVlEifUM8XhbZ8DvQNX/lfM+N+GB81UQd2LLzQ2qQR+igzHPU0TAwDbZWO68bQJ7O+fwJvAcYjJoOhd/7e9Ng==", + "version": "53.1.0", + "resolved": "https://registry.npmjs.org/@salesforce/templates/-/templates-53.1.0.tgz", + "integrity": "sha512-1in0x6f56Z5JudB/7HqFLPjg99me1shOwcZ7e86fWhxq3IzqQcUbb5PVSuw+/x3s2G8KGawOkp3HDsrsHARIxw==", "dev": true, "requires": { "@salesforce/core": "2.32.0", @@ -5133,9 +5617,9 @@ "dev": true }, "@sindresorhus/is": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.3.0.tgz", - "integrity": "sha512-wwOvh0eO3PiTEivGJWiZ+b946SlMSb4pe+y+Ur/4S87cwo09pYi+FWHHnbrM3W9W7cBYKDqQXcrFYjYUCOJUEQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.4.0.tgz", + "integrity": "sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ==", "dev": true }, "@sinonjs/commons": { @@ -5696,12 +6180,6 @@ "zip-stream": "^4.1.0" }, "dependencies": { - "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", - "dev": true - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -5881,13 +6359,10 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "dev": true }, "async-hook-jl": { "version": "1.7.6", @@ -7402,13 +7877,13 @@ } }, "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", + "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", "dev": true, "requires": { "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" + "printj": "~1.3.1" } }, "crc32-stream": { @@ -8295,9 +8770,9 @@ } }, "flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, "glob-parent": { @@ -10553,9 +11028,9 @@ "dev": true }, "isomorphic-git": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.10.4.tgz", - "integrity": "sha512-0nvws2N2pWX04AZPpYUyvgPmupKbklP/qSerP/A8yuoe8t4flhpOwYl8INdV6u8j24ALm5X3QBciOTz96ugT2Q==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.11.0.tgz", + "integrity": "sha512-zTz3P85TZWDvCE3zX7Yija9jgEvYlLCiX3SDlFLnczFx2jVJqUrhTBeEiigkX/xdFCKJNLcDbwfploXt6SlPMw==", "dev": true, "requires": { "async-lock": "^1.1.0", @@ -13569,9 +14044,9 @@ "optional": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "nanomatch": { @@ -16599,9 +17074,9 @@ } }, "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", + "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", "dev": true }, "process-nextick-args": { @@ -17465,9 +17940,9 @@ "dev": true }, "salesforce-alm": { - "version": "53.7.2", - "resolved": "https://registry.npmjs.org/salesforce-alm/-/salesforce-alm-53.7.2.tgz", - "integrity": "sha512-xUneVzR30iD8JhgzUvWZr/4QJLVltQZmVXgSbKsBTwue7NY2eLVxUOnrxM7Eon9AKpkuZo0M0MgupQDkwlRDIA==", + "version": "53.7.5", + "resolved": "https://registry.npmjs.org/salesforce-alm/-/salesforce-alm-53.7.5.tgz", + "integrity": "sha512-K6ToxlHjkbHDpQsLJOy/7QD/gvIVwqVjNmOUt1SSY4/cuRl/SilxuCM/caFTy0TLu/3AatQpOdm14Le1jrhKyg==", "dev": true, "requires": { "@oclif/config": "^1.18.1", @@ -17510,9 +17985,9 @@ }, "dependencies": { "@salesforce/command": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.1.tgz", - "integrity": "sha512-hanDjR8yLdeKlrlUXjh18pmbSuF+46jtIfjpG0aA1Q089qol9+nqGt64ToeN7df7BM0Vk0X0+765YNKV/zvxlA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@salesforce/command/-/command-4.2.2.tgz", + "integrity": "sha512-2QEtPIMaeRyUEnLmPHJ1PhfKDJBupfQS5T4nG8rXpK2yOznBu48aPWaWCYErrxyC0bPa5eoFACeyPWz1k9QMog==", "dev": true, "requires": { "@oclif/command": "^1.8.1", @@ -17520,13 +17995,39 @@ "@oclif/parser": "3.8.6", "@oclif/plugin-help": "^2.2.0", "@oclif/test": "^1.2.4", - "@salesforce/core": "^2.31.0", + "@salesforce/core": "^2.35.0", "@salesforce/kit": "^1.5.17", "@salesforce/ts-types": "^1.5.20", "chalk": "^2.4.2", "cli-ux": "^4.9.3" }, "dependencies": { + "@salesforce/core": { + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@salesforce/core/-/core-2.35.0.tgz", + "integrity": "sha512-eqBZtaHn3s3FsASjsrZ8T9e/TE+aHuB2DkuKDEierDYW5cSVqJyZ0ccMi9QKI7oQuPO1UHhcUyWmyezkdEjYzg==", + "dev": true, + "requires": { + "@salesforce/bunyan": "^2.0.0", + "@salesforce/kit": "^1.5.17", + "@salesforce/schemas": "^1.0.1", + "@salesforce/ts-types": "^1.5.20", + "@types/graceful-fs": "^4.1.5", + "@types/jsforce": "^1.9.38", + "@types/mkdirp": "^1.0.1", + "archiver": "^5.3.0", + "debug": "^3.1.0", + "faye": "^1.4.0", + "graceful-fs": "^4.2.4", + "js2xmlparser": "^4.0.1", + "jsen": "0.6.6", + "jsforce": "^1.11.0", + "jsonwebtoken": "8.5.0", + "mkdirp": "1.0.4", + "semver": "^7.3.5", + "ts-retry-promise": "^0.6.0" + } + }, "cli-ux": { "version": "4.9.3", "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-4.9.3.tgz", @@ -17554,6 +18055,14 @@ "supports-hyperlinks": "^1.0.1", "treeify": "^1.1.0", "tslib": "^1.9.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "fs-extra": { @@ -17566,6 +18075,21 @@ "jsonfile": "^4.0.0", "universalify": "^0.1.0" } + }, + "js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "requires": { + "xmlcreate": "^2.0.4" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true } } }, @@ -17738,15 +18262,6 @@ "is-docker": "^2.0.0" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -17860,6 +18375,14 @@ "dev": true, "requires": { "xmlcreate": "^1.0.1" + }, + "dependencies": { + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", + "dev": true + } } }, "klaw": { @@ -17887,10 +18410,13 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "strip-ansi": { "version": "5.2.0", @@ -17932,12 +18458,6 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "dev": true - }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", - "dev": true } } }, @@ -18242,9 +18762,9 @@ "dev": true }, "sfdx-cli": { - "version": "7.133.0", - "resolved": "https://registry.npmjs.org/sfdx-cli/-/sfdx-cli-7.133.0.tgz", - "integrity": "sha512-Iv1O76kYLJKGvCRS6OUcSzPcCzlYtI8KQrx1oV8rGEItj79tHxC9/VXNAsh7YAI/FW4y0vv99uIi9P0cq6ucFA==", + "version": "7.135.0", + "resolved": "https://registry.npmjs.org/sfdx-cli/-/sfdx-cli-7.135.0.tgz", + "integrity": "sha512-Xswg4XazpKnuSkfcpzh/+UGBVYnHUn+kKOb3YoGkHPHWQywpnMfKcJji+t1SxYa3GQxVz59t50W+SL4OcGHe+A==", "dev": true, "requires": { "@oclif/command": "^1.8.0", @@ -18263,7 +18783,7 @@ "@salesforce/plugin-alias": "1.2.0", "@salesforce/plugin-apex": "0.7.0", "@salesforce/plugin-auth": "1.8.0", - "@salesforce/plugin-config": "1.3.14", + "@salesforce/plugin-config": "1.3.15", "@salesforce/plugin-custom-metadata": "1.0.12", "@salesforce/plugin-data": "0.6.8", "@salesforce/plugin-generator": "^1.1.7", @@ -18271,16 +18791,16 @@ "@salesforce/plugin-limits": "1.3.0", "@salesforce/plugin-org": "1.11.0", "@salesforce/plugin-schema": "1.1.0", - "@salesforce/plugin-source": "1.7.0", + "@salesforce/plugin-source": "1.8.4", "@salesforce/plugin-telemetry": "1.4.0", - "@salesforce/plugin-templates": "52.7.0", + "@salesforce/plugin-templates": "53.1.0", "@salesforce/plugin-trust": "^1.0.8", "@salesforce/plugin-user": "1.7.0", "@salesforce/require-analytics": "^0.9.16", "@salesforce/sfdx-plugin-lwc-test": "0.1.7", "@salesforce/ts-types": "^1.5.17", "debug": "^4.3.1", - "salesforce-alm": "53.7.2", + "salesforce-alm": "53.7.5", "salesforce-lightning-cli": "3.0.0", "shelljs": "^0.8.4", "tslib": "^2.1.0", @@ -18368,46 +18888,6 @@ } } }, - "sfdx-faye": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sfdx-faye/-/sfdx-faye-1.0.9.tgz", - "integrity": "sha512-/p0Ifvhh9rVYj6YmYOBU+psQsP+9RrNrUU4lr1p+HhZhTgnviMIabcgKZUN12S69zUpl0YagpFdMhmxKGkf+5g==", - "dev": true, - "requires": { - "asap": "~2.0.6", - "csprng": "~0.1.2", - "faye-websocket": "~0.9.1", - "tough-cookie": "~2.4.3", - "tunnel-agent": "~0.6.0" - }, - "dependencies": { - "faye-websocket": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.4.tgz", - "integrity": "sha1-iFk0x57/sECVSeDAo4Ae0XpAza0=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", @@ -20737,6 +21217,15 @@ "yeoman-environment": "^2.3.4" }, "dependencies": { + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", diff --git a/package.json b/package.json index f20bb1bef..ad0cf3ea1 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "follow-redirects": ">=1.14.7", "marked": ">=4.0.10", "markdown-it": ">=12.3.2", + "nanoid": ">=3.1.31", "shelljs": ">=0.8.5", "@babel/core": "latest", "@babel/eslint-parser": "latest", From 76c26b5b4d2f025ced62e21d1e65d7c13b838397 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 22:40:00 -0500 Subject: [PATCH 30/73] Fixed PMD issues --- .../log-management/classes/LoggerSettingsController.cls | 3 ++- .../core/tests/common/classes/LoggerTestUtils.cls | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls index 7c7fc8abf..7f79d316b 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls +++ b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls @@ -261,7 +261,8 @@ public without sharing class LoggerSettingsController { fieldNames.add('LastModifiedBy.Username'); fieldNames.add('SetupOwner.Name'); fieldNames.add('SetupOwner.Type'); - return (List) Database.query('SELECT ' + String.join(fieldNames, ', ') + ' FROM ' + Schema.LoggerSettings__c.SObjectType); + String query = String.escapeSingleQuotes('SELECT ' + String.join(fieldNames, ', ') + ' FROM ' + Schema.LoggerSettings__c.SObjectType); + return (List) Database.query(query); } private static Map querySetupOwnerNames(List setupOwnerIds) { diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index 03a63dfb2..c4548378d 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -138,13 +138,18 @@ public class LoggerTestUtils { } /** - * @description Creates a `User` record for testing purposes, using the 'Standard User' profile + * @description Creates a `User` record for testing purposes, using the current user's profile * @return The generated `User` record - it is not automatically inserted into the database. */ public static User createUser() { return createUser(UserInfo.getProfileId()); } + /** + * @description Creates a `User` record for testing purposes, using the specified profile ID + * @param profileId The `Profile` ID to use for the created `User` + * @return The generated `User` record - it is not automatically inserted into the database. + */ public static User createUser(Id profileId) { return new User( Alias = 'log_xyz', From 393933bc25212c70bf2acc05635b8f8b3722798e Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 22:56:32 -0500 Subject: [PATCH 31/73] Standardized calls to Database.query() to also use String.escapeSingleQuotes() --- .../main/log-management/classes/LogEntryEventHandler.cls | 3 +-- .../core/main/log-management/classes/LogEntryHandler.cls | 2 +- .../main/log-management/classes/LoggerSettingsController.cls | 4 ++-- .../log-management/classes/RelatedLogEntriesController.cls | 4 ++-- .../core/main/logger-engine/classes/LogEntryEventBuilder.cls | 4 ++-- nebula-logger/core/main/logger-engine/classes/Logger.cls | 2 +- nebula-logger/core/tests/common/classes/LoggerTestUtils.cls | 5 ++--- 7 files changed, 11 insertions(+), 13 deletions(-) diff --git a/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls b/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls index 2a7448e2f..2cbe0ace9 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls +++ b/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls @@ -300,12 +300,11 @@ public without sharing class LogEntryEventHandler extends LoggerSObjectHandler { LoggerEmailUtils.sendErrorEmail(tagAssignmentSObjectType, saveResults); } - @SuppressWarnings('PMD.ApexSOQLInjection') private Map getTagNameToId(Schema.SObjectType tagSObjectType) { Map tagNameToId = new Map(); String tagQuery = 'SELECT Id, Name FROM ' + tagSObjectType + ' WHERE Name IN :tagNames'; - for (SObject tag : Database.query(tagQuery)) { + for (SObject tag : Database.query(String.escapeSingleQuotes(tagQuery))) { tagNameToId.put((String) tag.get('Name'), (Id) tag.get('Id')); } tagNameToId.putAll(this.insertMissingTags(tagSObjectType, tagNameToId)); diff --git a/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls b/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls index 1ca15e25f..57e9d992c 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls +++ b/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls @@ -251,7 +251,7 @@ public without sharing class LogEntryHandler extends LoggerSObjectHandler { new List{ sobjectDisplayFieldName, sobjectType, sobjectTypeRecordIds } ); - List results = Database.query(query); + List results = Database.query(String.escapeSingleQuotes(query)); recordIdToRecord.putAll(results); } diff --git a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls index 7f79d316b..2641f16d9 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls +++ b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls @@ -261,8 +261,8 @@ public without sharing class LoggerSettingsController { fieldNames.add('LastModifiedBy.Username'); fieldNames.add('SetupOwner.Name'); fieldNames.add('SetupOwner.Type'); - String query = String.escapeSingleQuotes('SELECT ' + String.join(fieldNames, ', ') + ' FROM ' + Schema.LoggerSettings__c.SObjectType); - return (List) Database.query(query); + String query = 'SELECT ' + String.join(fieldNames, ', ') + ' FROM ' + Schema.LoggerSettings__c.SObjectType; + return (List) Database.query(String.escapeSingleQuotes(query)); } private static Map querySetupOwnerNames(List setupOwnerIds) { diff --git a/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls b/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls index c6f0bd886..e48f92a66 100644 --- a/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls +++ b/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls @@ -78,7 +78,7 @@ public with sharing class RelatedLogEntriesController { return (List) Search.query(logEntrySearch).get(0); } - @SuppressWarnings('PMD.ExcessiveParameterList, PMD.AvoidDebugStatements') + @SuppressWarnings('PMD.ExcessiveParameterList') private static List query(Id recordId, String fieldsClause, String orderByClause, Integer rowLimit) { List queryTextReplacements = new List{ fieldsClause, @@ -90,7 +90,7 @@ public with sharing class RelatedLogEntriesController { String logEntryQuery = 'SELECT {0} FROM {1} WHERE {2} = :recordId ORDER BY {3} LIMIT {4}'; logEntryQuery = String.format(logEntryQuery, queryTextReplacements); - return (List) Database.query(logEntryQuery); + return (List) Database.query(String.escapeSingleQuotes(logEntryQuery)); } private static String getFieldsClause(List fields) { diff --git a/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls b/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls index f2aa7b61d..f48038f7d 100644 --- a/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls +++ b/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls @@ -942,8 +942,8 @@ global with sharing class LogEntryEventBuilder { // Networks (aka experience sites aka community sites aka portal sites ò_ô) // may not be enabled in the org (no Network object), so run everything dynamically - String queryString = 'SELECT Id, Name, UrlPathPrefix FROM Network WHERE Id = :networkId'; - return Database.query(queryString); + String query = 'SELECT Id, Name, UrlPathPrefix FROM Network WHERE Id = :networkId'; + return Database.query(String.escapeSingleQuotes(query)); } private static Organization queryOrganization() { diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls b/nebula-logger/core/main/logger-engine/classes/Logger.cls index 32cb65394..5bcbfa834 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls @@ -2643,7 +2643,7 @@ global with sharing class Logger { textReplacements ); - SObjectAccessDecision securityDecision = Security.stripInaccessible(AccessType.READABLE, Database.query(query)); + SObjectAccessDecision securityDecision = Security.stripInaccessible(AccessType.READABLE, Database.query(String.escapeSingleQuotes(query))); return securityDecision.getRecords().isEmpty() ? null : (Log__c) securityDecision.getRecords().get(0); } diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index c4548378d..d83d199fc 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -207,9 +207,8 @@ public class LoggerTestUtils { return null; } - String queryString = 'SELECT Id, Name, UrlPathPrefix FROM Network WHERE Id = :Network.getNetworkId()'; - - return Database.query(queryString); + String query = 'SELECT Id, Name, UrlPathPrefix FROM Network WHERE Id = :Network.getNetworkId()'; + return Database.query(String.escapeSingleQuotes(query)); } /** From 7a6073e0c3a4db48c496219d97f8432f7118dbf3 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 27 Jan 2022 23:02:44 -0500 Subject: [PATCH 32/73] Updated extra tests to include Spanish translation of 'Standard User' in profile query, since the Experience Cloud scratch org is now using Spanish by default --- .../extra-tests/tests/LogBatchPurger_Tests_Integration.cls | 2 +- .../tests/LogEntryEventBuilder_Tests_Integration.cls | 2 +- .../tests/LogMassDeleteExtension_Tests_Integration.cls | 2 +- .../tests/LoggerSettingsController_Tests_Security.cls | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls index a914272d4..459cfa80e 100644 --- a/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls +++ b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls @@ -7,7 +7,7 @@ @IsTest private class LogBatchPurger_Tests_Integration { private static final Integer NUMBER_OF_LOG_ENTRIES = 10; - private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name IN ('Standard User', 'Usuario estándar')]; @TestSetup static void setupData() { diff --git a/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls b/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls index 583c60199..a01cf8ed1 100644 --- a/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls +++ b/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls @@ -6,7 +6,7 @@ @SuppressWarnings('PMD.ApexDoc, PMD.CyclomaticComplexity, PMD.ExcessiveParameterList, PMD.MethodNamingConventions, PMD.NcssMethodCount') @IsTest private class LogEntryEventBuilder_Tests_Integration { - private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name IN ('Standard User', 'Usuario estándar')]; @IsTest static void stripInaccessibleFieldsForRecordWhenEnabled() { diff --git a/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls index 3cf40705d..ddc5fb085 100644 --- a/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls +++ b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls @@ -6,7 +6,7 @@ @SuppressWarnings('PMD.ApexDoc, PMD.CyclomaticComplexity, PMD.ExcessiveParameterList, PMD.MethodNamingConventions, PMD.NcssMethodCount') @IsTest private class LogMassDeleteExtension_Tests_Integration { - private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name IN ('Standard User', 'Usuario estándar')]; @TestSetup static void setupData() { diff --git a/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls b/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls index 8b1c521b9..78b904890 100644 --- a/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls +++ b/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls @@ -13,7 +13,7 @@ @IsTest private class LoggerSettingsController_Tests_Security { private static final String CAN_MODIFY_LOGGER_SETTINGS_PERMISSION_NAME = 'CanModifyLoggerSettings'; - private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name = 'Standard User']; + private static final Profile STANDARD_USER_PROFILE = [SELECT Id FROM Profile WHERE Name IN ('Standard User', 'Usuario estándar')]; @IsTest static void it_should_permit_user_to_modify_logger_settings_when_custom_permission_is_assigned() { From 928100ab34f563ee7f8a8d54a30a91a36deee08f Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Fri, 28 Jan 2022 10:16:37 -0500 Subject: [PATCH 33/73] Switched from using sfdx force:community:create + a delay in the pipeline, to instead deploying metadata for a skeleton Experience Cloud site The pipeline has been having inconsistent failures because it previously had a 2 minute delay added to wait for force:community:create, but sometimes it took Salesforce longer to finish creating the site asynchronously. Using a deploy will make it a synchronous operation, so it should prevent the inconsisten failures tl;dr - Experience Cloud metadata is the worst --- .github/workflows/build.yml | 9 +- config/scratch-orgs/base-scratch-def.json | 3 + .../experience-cloud-scratch-def.json | 3 + .../Logger_Test_Site1.site-meta.xml | 6 + .../brandingSets/buildYourOwnLWR.json | 174 ++++++++++++++++++ .../Logger_Test_Site1/config/languages.json | 6 + .../config/loggerTestSite.json | 10 + .../Logger_Test_Site1/config/mainAppPage.json | 11 ++ .../routes/checkPassword.json | 10 + .../Logger_Test_Site1/routes/error.json | 10 + .../routes/forgotPassword.json | 10 + .../Logger_Test_Site1/routes/home.json | 10 + .../Logger_Test_Site1/routes/login.json | 10 + .../Logger_Test_Site1/routes/register.json | 10 + .../routes/serviceNotAvailable.json | 10 + .../themes/buildYourOwnLWR.json | 98 ++++++++++ .../views/checkPassword.json | 82 +++++++++ .../Logger_Test_Site1/views/error.json | 72 ++++++++ .../views/forgotPassword.json | 85 +++++++++ .../Logger_Test_Site1/views/home.json | 72 ++++++++ .../Logger_Test_Site1/views/login.json | 108 +++++++++++ .../Logger_Test_Site1/views/register.json | 88 +++++++++ .../views/serviceNotAvailable.json | 52 ++++++ .../Logger Test Site.network-meta.xml | 51 +++++ .../pages/BandwidthExceeded.page | 1 + .../pages/BandwidthExceeded.page-meta.xml | 8 + .../pages/ChangePassword.page | 1 + .../pages/ChangePassword.page-meta.xml | 8 + .../pages/CommunitiesLanding.page | 1 + .../pages/CommunitiesLanding.page-meta.xml | 8 + .../pages/CommunitiesLogin.page | 1 + .../pages/CommunitiesLogin.page-meta.xml | 8 + .../pages/CommunitiesSelfReg.page | 1 + .../pages/CommunitiesSelfReg.page-meta.xml | 8 + .../pages/CommunitiesSelfRegConfirm.page | 1 + .../CommunitiesSelfRegConfirm.page-meta.xml | 8 + .../experience-cloud/pages/Exception.page | 1 + .../pages/Exception.page-meta.xml | 8 + .../experience-cloud/pages/FileNotFound.page | 1 + .../pages/FileNotFound.page-meta.xml | 8 + .../pages/ForgotPasswordConfirm.page | 1 + .../pages/ForgotPasswordConfirm.page-meta.xml | 8 + .../experience-cloud/pages/InMaintenance.page | 1 + .../pages/InMaintenance.page-meta.xml | 8 + .../pages/SiteRegisterConfirm.page | 1 + .../pages/SiteRegisterConfirm.page-meta.xml | 8 + .../Logger Test Site Profile.profile-meta.xml | 4 + .../sites/Logger_Test_Site.site-meta.xml | 30 +++ package.json | 1 + 49 files changed, 1127 insertions(+), 7 deletions(-) create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1.site-meta.xml create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/brandingSets/buildYourOwnLWR.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/languages.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/loggerTestSite.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/mainAppPage.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/checkPassword.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/error.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/forgotPassword.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/home.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/login.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/register.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/serviceNotAvailable.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/themes/buildYourOwnLWR.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/checkPassword.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/error.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/forgotPassword.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/home.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/login.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/register.json create mode 100644 nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/serviceNotAvailable.json create mode 100644 nebula-logger/experience-cloud/networks/Logger Test Site.network-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/BandwidthExceeded.page create mode 100644 nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/ChangePassword.page create mode 100644 nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesLanding.page create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesLogin.page create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page create mode 100644 nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/Exception.page create mode 100644 nebula-logger/experience-cloud/pages/Exception.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/FileNotFound.page create mode 100644 nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page create mode 100644 nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/InMaintenance.page create mode 100644 nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml create mode 100644 nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page create mode 100644 nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml create mode 100644 nebula-logger/experience-cloud/profiles/Logger Test Site Profile.profile-meta.xml create mode 100644 nebula-logger/experience-cloud/sites/Logger_Test_Site.site-meta.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 81e25d3ff..e949502b3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -208,13 +208,8 @@ jobs: - name: 'Create Experience Cloud Scratch Org' run: npx sfdx force:org:create --durationdays 1 --definitionfile ./config/scratch-orgs/experience-cloud-scratch-def.json --wait 20 --setdefaultusername --json - - name: 'Create Test Experience Site' - run: npm run experience:create - - - name: 'Wait for Experience Site creation' - uses: maddox/actions/sleep@master - with: - args: '120' + - name: 'Deploy Test Experience Site Metadata' + run: npm run experience:deploy - name: 'Push Source to Scratch Org' run: npm run source:push diff --git a/config/scratch-orgs/base-scratch-def.json b/config/scratch-orgs/base-scratch-def.json index ce7b50fd4..ff201b403 100644 --- a/config/scratch-orgs/base-scratch-def.json +++ b/config/scratch-orgs/base-scratch-def.json @@ -12,6 +12,9 @@ "communitiesSettings": { "enableNetworksEnabled": false }, + "experienceBundleSettings": { + "enableExperienceBundleMetadata": false + }, "userManagementSettings": { "enableEnhancedPermsetMgmt": true, "enableEnhancedProfileMgmt": true, diff --git a/config/scratch-orgs/experience-cloud-scratch-def.json b/config/scratch-orgs/experience-cloud-scratch-def.json index 9ba98b20d..86f826db1 100644 --- a/config/scratch-orgs/experience-cloud-scratch-def.json +++ b/config/scratch-orgs/experience-cloud-scratch-def.json @@ -12,6 +12,9 @@ "communitiesSettings": { "enableNetworksEnabled": true }, + "experienceBundleSettings": { + "enableExperienceBundleMetadata": true + }, "userManagementSettings": { "enableEnhancedPermsetMgmt": true, "enableEnhancedProfileMgmt": true, diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1.site-meta.xml b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1.site-meta.xml new file mode 100644 index 000000000..a46da4d64 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1.site-meta.xml @@ -0,0 +1,6 @@ + + + + ChatterNetworkPicasso + logger/s + diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/brandingSets/buildYourOwnLWR.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/brandingSets/buildYourOwnLWR.json new file mode 100644 index 000000000..83c9344ef --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/brandingSets/buildYourOwnLWR.json @@ -0,0 +1,174 @@ +{ + "brandingSetType": "APP", + "definitionName": "talon-template-byo:branding", + "id": "5b850efc-9bc3-4e8d-9e08-57aededdf47f", + "label": "Build Your Own (LWR)", + "type": "brandingSet", + "values": { + "BackgroundColor": "#ffffff", + "BaseFontSize": "16px", + "BodyFont": "Salesforce Sans", + "BodyFontSize": "1rem", + "BodyFontStyle": "normal", + "BodyFontWeight": "400", + "BodyLetterSpacing": "0em", + "BodyLineHeight": "1.5", + "BodySmallFont": "Salesforce Sans", + "BodySmallFontSize": "0.75rem", + "BodySmallFontStyle": "normal", + "BodySmallFontWeight": "400", + "BodySmallLetterSpacing": "0em", + "BodySmallLineHeight": "1.25", + "BodySmallTextColor": "var(--dxp-g-root-contrast)", + "BodySmallTextDecoration": "none", + "BodySmallTextTransform": "none", + "BodyTextColor": "var(--dxp-g-root-contrast)", + "BodyTextDecoration": "none", + "BodyTextTransform": "none", + "ButtonActiveColor": "var(--dxp-s-button-color-1)", + "ButtonBorderRadius": "4px", + "ButtonColor": "var(--dxp-g-brand)", + "ButtonFocusColor": "var(--dxp-s-button-color-1)", + "ButtonFont": "Salesforce Sans", + "ButtonFontSize": "1rem", + "ButtonFontStyle": "normal", + "ButtonFontWeight": "400", + "ButtonHoverColor": "var(--dxp-s-button-color-1)", + "ButtonLargeBorderRadius": "4px", + "ButtonLargeFontSize": "1.25rem", + "ButtonLargePadding": "1.25rem", + "ButtonLetterSpacing": "0em", + "ButtonLineHeight": "2", + "ButtonPadding": "1rem", + "ButtonSmallBorderRadius": "4px", + "ButtonSmallFontSize": "0.75rem", + "ButtonSmallPadding": "0.75rem", + "ButtonTextTransform": "none", + "ColumnSpacerSizeDesktop": "1rem", + "ColumnSpacerSizeMobile": "0.75rem", + "ComponentSpacerSizeDesktop": "1.5rem", + "ComponentSpacerSizeMobile": "1.5rem", + "FormElementBackgroundColor": "var(--dxp-g-root)", + "FormElementBorderColor": "var(--dxp-g-neutral-1)", + "FormElementBorderRadius": "4px", + "FormElementBorderWidth": "1px", + "FormElementLabelColor": "var(--dxp-g-root-contrast)", + "FormElementTextColor": "var(--dxp-g-root-contrast)", + "HeadingExtraLargeColor": "var(--dxp-g-root-contrast)", + "HeadingExtraLargeFont": "Salesforce Sans", + "HeadingExtraLargeFontSize": "2.5rem", + "HeadingExtraLargeFontStyle": "normal", + "HeadingExtraLargeFontWeight": "300", + "HeadingExtraLargeLetterSpacing": "0em", + "HeadingExtraLargeLineHeight": "1.25", + "HeadingExtraLargeTextDecoration": "none", + "HeadingExtraLargeTextTransform": "none", + "HeadingLargeColor": "var(--dxp-g-root-contrast)", + "HeadingLargeFont": "Salesforce Sans", + "HeadingLargeFontSize": "1.75rem", + "HeadingLargeFontStyle": "normal", + "HeadingLargeFontWeight": "300", + "HeadingLargeLetterSpacing": "0em", + "HeadingLargeLineHeight": "1.25", + "HeadingLargeTextDecoration": "none", + "HeadingLargeTextTransform": "none", + "HeadingMediumColor": "var(--dxp-g-root-contrast)", + "HeadingMediumFont": "Salesforce Sans", + "HeadingMediumFontSize": "1.25rem", + "HeadingMediumFontStyle": "normal", + "HeadingMediumFontWeight": "300", + "HeadingMediumLetterSpacing": "0em", + "HeadingMediumLineHeight": "1.25", + "HeadingMediumTextDecoration": "none", + "HeadingMediumTextTransform": "none", + "HeadingSmallColor": "var(--dxp-g-root-contrast)", + "HeadingSmallFont": "Salesforce Sans", + "HeadingSmallFontSize": "1.125rem", + "HeadingSmallFontStyle": "normal", + "HeadingSmallFontWeight": "300", + "HeadingSmallLetterSpacing": "0em", + "HeadingSmallLineHeight": "1.25", + "HeadingSmallTextDecoration": "none", + "HeadingSmallTextTransform": "none", + "LinkColor": "var(--dxp-g-brand)", + "LinkHoverColor": "var(--dxp-s-link-text-color-1)", + "LinkTextDecoration": "none", + "LinkTextDecorationFocus": "underline", + "LinkTextDecorationHover": "underline", + "MaxContentWidthDesktop": "1800px", + "MaxContentWidthMobile": "none", + "PrimaryAccentColor": "#005fb2", + "PrimaryAccentForegroundColor": "#ffffff", + "SiteLogo": "", + "TextColor": "#1a1b1e", + "VerticalRowPaddingDesktop": "1rem", + "VerticalRowPaddingMobile": "0.75rem", + "_BackgroundColor1": "#ebebeb", + "_BackgroundColor2": "#c2c2c2", + "_BackgroundColor3": "#858585", + "_ButtonActiveColorContrast": "var(--dxp-g-brand-contrast-1)", + "_ButtonColor1": "var(--dxp-g-brand-1)", + "_ButtonColorContrast": "var(--dxp-g-brand-contrast)", + "_ButtonFocusColorContrast": "var(--dxp-g-brand-contrast-1)", + "_ButtonHoverColorContrast": "var(--dxp-g-brand-contrast-1)", + "_DestructiveColor": "#c23934", + "_DestructiveColor1": "#a2302b", + "_DestructiveColor2": "#611d1a", + "_DestructiveColor3": "#010000", + "_DestructiveForegroundColor": "#ffffff", + "_DestructiveForegroundColor1": "#ffffff", + "_DestructiveForegroundColor2": "#ffffff", + "_DestructiveForegroundColor3": "#ffffff", + "_InfoColor": "#16325c", + "_InfoColor1": "#0e203b", + "_InfoColor2": "#000000", + "_InfoColor3": "#000000", + "_InfoForegroundColor": "#ffffff", + "_InfoForegroundColor1": "#ffffff", + "_InfoForegroundColor2": "#ffffff", + "_InfoForegroundColor3": "#ffffff", + "_LinkColor1": "var(--dxp-g-brand-1)", + "_NeutralColor": "#ecebea", + "_NeutralColor1": "#d9d7d5", + "_NeutralColor2": "#b2aeaa", + "_NeutralColor3": "#76716b", + "_NeutralForegroundColor": "#000000", + "_NeutralForegroundColor1": "#000000", + "_NeutralForegroundColor2": "#000000", + "_NeutralForegroundColor3": "#ffffff", + "_OfflineColor": "#444444", + "_OfflineColor1": "#303030", + "_OfflineColor2": "#070707", + "_OfflineColor3": "#000000", + "_OfflineForegroundColor": "#ffffff", + "_OfflineForegroundColor1": "#ffffff", + "_OfflineForegroundColor2": "#ffffff", + "_OfflineForegroundColor3": "#ffffff", + "_PrimaryAccentColor1": "#004989", + "_PrimaryAccentColor2": "#001e38", + "_PrimaryAccentColor3": "#000000", + "_PrimaryAccentForegroundColor1": "#ffffff", + "_PrimaryAccentForegroundColor2": "#ffffff", + "_PrimaryAccentForegroundColor3": "#ffffff", + "_SiteLogoUrl": "", + "_SuccessColor": "#4bca81", + "_SuccessColor1": "#36b66c", + "_SuccessColor2": "#237747", + "_SuccessColor3": "#07190f", + "_SuccessForegroundColor": "#000000", + "_SuccessForegroundColor1": "#000000", + "_SuccessForegroundColor2": "#ffffff", + "_SuccessForegroundColor3": "#ffffff", + "_TextColor1": "#000000", + "_TextColor2": "#000000", + "_TextColor3": "#000000", + "_WarningColor": "#ffb75d", + "_WarningColor1": "#ffa534", + "_WarningColor2": "#e27d00", + "_WarningColor3": "#673900", + "_WarningForegroundColor": "#000000", + "_WarningForegroundColor1": "#000000", + "_WarningForegroundColor2": "#000000", + "_WarningForegroundColor3": "#ffffff" + } +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/languages.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/languages.json new file mode 100644 index 000000000..5b95fe1e5 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/languages.json @@ -0,0 +1,6 @@ +{ + "defaultCode": "en_US", + "defaultLabel": "English (US)", + "id": "b9b2ea8e-4171-4694-841e-4efdcb21f755", + "type": "languageContainer" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/loggerTestSite.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/loggerTestSite.json new file mode 100644 index 000000000..23b959c95 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/loggerTestSite.json @@ -0,0 +1,10 @@ +{ + "authenticationType": "AUTHENTICATED", + "forgotPasswordRouteId": null, + "isFilteredComponentsView": false, + "isProgressiveRenderingEnabled": false, + "mainAppPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "preferredDomain": "none", + "selfRegistrationRouteId": null, + "type": "site" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/mainAppPage.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/mainAppPage.json new file mode 100644 index 000000000..cdebc1240 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/config/mainAppPage.json @@ -0,0 +1,11 @@ +{ + "cmsSettings": {}, + "currentThemeId": "b244e73e-0e09-41f0-8ae1-4d1a72ed1076", + "favIconAssetRef": null, + "headMarkup": "\n\nWelcome to LWC Communities!\n\n\n\n\n\n\n\n\n\n\n", + "id": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "isRelaxedCSPLevel": false, + "label": "main", + "templateName": "talon-template-byo", + "type": "appPage" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/checkPassword.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/checkPassword.json new file mode 100644 index 000000000..25d0959c6 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/checkPassword.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "f281d51b-bc39-4b61-8be6-0b478d869e3d", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": [], + "id": "98010257-b200-46d3-9a3c-e592ac24d7da", + "label": "Check Password", + "routeType": "check-password", + "type": "route", + "urlPrefix": "CheckPasswordResetEmail" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/error.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/error.json new file mode 100644 index 000000000..818eea140 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/error.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "59882b8e-4f18-4dc9-8f11-42079a12ef11", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": [], + "id": "8dd9d285-009f-4e02-8f46-9b65ed1a0e41", + "label": "Error", + "routeType": "error", + "type": "route", + "urlPrefix": "error" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/forgotPassword.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/forgotPassword.json new file mode 100644 index 000000000..e11badff9 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/forgotPassword.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "545ddf2b-4003-4eba-993d-6e203d57033c", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": [], + "id": "59f386a8-5b42-4a73-90db-0fae2e72f7bb", + "label": "Forgot Password", + "routeType": "forgot-password", + "type": "route", + "urlPrefix": "ForgotPassword" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/home.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/home.json new file mode 100644 index 000000000..c08cd92b6 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/home.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "25be93bd-543f-4638-8ab4-5a555b0563a1", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": [], + "id": "56a32d97-0203-4e3b-ae7c-0b966013a838", + "label": "Home", + "routeType": "home", + "type": "route", + "urlPrefix": "" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/login.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/login.json new file mode 100644 index 000000000..e62c8d3cd --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/login.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "6b247a75-7907-4a77-b8eb-0e4f04617d25", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": [], + "id": "dce2bd33-ae33-4e52-ab11-1e6a387afbe6", + "label": "Login", + "routeType": "login-main", + "type": "route", + "urlPrefix": "login" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/register.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/register.json new file mode 100644 index 000000000..71461d644 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/register.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "fe5efaca-5500-441e-95f0-87320aa95a0a", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": [], + "id": "c19d87db-807f-45e4-a6fe-be6dff96824e", + "label": "Register", + "routeType": "self-register", + "type": "route", + "urlPrefix": "SelfRegister" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/serviceNotAvailable.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/serviceNotAvailable.json new file mode 100644 index 000000000..b894ceaa2 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/routes/serviceNotAvailable.json @@ -0,0 +1,10 @@ +{ + "activeViewId": "59f97560-6ead-4050-b3ba-2fcdf0e281e9", + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "configurationTags": ["allow-in-static-site"], + "id": "b16c0479-dfd6-4f85-bf8e-903d7a0e6204", + "label": "Service Not Available", + "routeType": "service-not-available", + "type": "route", + "urlPrefix": "service-not-available" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/themes/buildYourOwnLWR.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/themes/buildYourOwnLWR.json new file mode 100644 index 000000000..6a67827bf --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/themes/buildYourOwnLWR.json @@ -0,0 +1,98 @@ +{ + "activeBrandingSetId": "5b850efc-9bc3-4e8d-9e08-57aededdf47f", + "customCSS": "", + "developerName": "byo", + "id": "b244e73e-0e09-41f0-8ae1-4d1a72ed1076", + "label": "Build Your Own (LWR)", + "layouts": { + "Inner": "bd3c63ca-8aac-4233-887a-481260d092d6", + "ServiceNotAvailable": "364fb40d-e79f-4774-90b7-aaab6e98ffe4" + }, + "type": "theme", + "views": [ + { + "componentAttributes": {}, + "componentName": "community_byo:scopedHeaderAndFooter", + "id": "bd3c63ca-8aac-4233-887a-481260d092d6", + "label": "Scoped Header and Footer", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"48989435-98a4-4e37-b95a-88a36e89e6c3\",\"columns\":[{\"UUID\":\"44fd31fe-9d48-4b67-b431-b530a6b1ab4c\",\"columnName\":\"Column 1\",\"columnKey\":\"headerSection\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "48989435-98a4-4e37-b95a-88a36e89e6c3", + "regions": [ + { + "id": "44fd31fe-9d48-4b67-b431-b530a6b1ab4c", + "regionLabel": "Theme Header", + "regionName": "headerSection", + "renditionMap": {}, + "type": "region" + } + ], + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "2934e712-5747-4fe9-92c8-f880a4cdd4d9", + "regionName": "header", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"c4b89e62-65ed-4fdf-9aab-53c90b7d5caf\",\"columns\":[{\"UUID\":\"d3462719-ea2b-4b8e-91e5-89281758bd48\",\"columnName\":\"Column 1\",\"columnKey\":\"footerSection\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "c4b89e62-65ed-4fdf-9aab-53c90b7d5caf", + "regions": [ + { + "id": "d3462719-ea2b-4b8e-91e5-89281758bd48", + "regionLabel": "Theme Footer", + "regionName": "footerSection", + "renditionMap": {}, + "type": "region" + } + ], + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "32461df2-a1f9-4fd3-a471-fc2d4eb482df", + "regionName": "footer", + "type": "region" + } + ], + "type": "view" + }, + { + "componentAttributes": {}, + "componentName": "community_layout:simpleThemeLayout", + "id": "364fb40d-e79f-4774-90b7-aaab6e98ffe4", + "label": "Service Not Available Theme Layout", + "regions": [ + { + "id": "bb689d46-75c7-4261-92d7-5d82e079855c", + "regionName": "header", + "type": "region" + }, + { + "id": "62ff69f9-b9f2-45a8-b07a-a255c86d8a57", + "regionName": "footer", + "type": "region" + } + ], + "type": "view" + } + ] +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/checkPassword.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/checkPassword.json new file mode 100644 index 000000000..8e34fb9ef --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/checkPassword.json @@ -0,0 +1,82 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "f281d51b-bc39-4b61-8be6-0b478d869e3d", + "label": "Check Password", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"22fdbe37-d229-41e6-a531-e24ebaa08b82\",\"columns\":[{\"UUID\":\"0416f68e-e8a2-48aa-b6ee-eb10acb52fbc\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "22fdbe37-d229-41e6-a531-e24ebaa08b82", + "regions": [ + { + "components": [ + { + "componentAttributes": {}, + "componentName": "community_login:communityLogo", + "id": "2cc99e5a-3475-4c12-8dbb-4a9209622ba0", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + }, + { + "componentAttributes": { + "checkEmailMessage": "Check the email account associated with your username for the link to reset your password. If you didn't get an email, check your Spam folder. Or contact your administrator.", + "returnButtonLabel": "Back to login", + "titleLabel": "Now check your email" + }, + "componentName": "community_login:checkEmail", + "id": "a158f2f1-e148-40f2-a016-4ee1e28ab227", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "0416f68e-e8a2-48aa-b6ee-eb10acb52fbc", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "3f07c7ae-36fa-4b7f-b15e-7b10a7ae4d61", + "regionName": "content", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "customHeadTags": "", + "description": "", + "pageTitle": "Check Password", + "recordId": "{!recordId}" + }, + "componentName": "community_builder:seoAssistant", + "id": "cd7e6e70-4c4d-42d4-a85e-d5d9256ce406", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "3fb2831c-857d-46b3-9be1-f314af80b235", + "regionName": "sfdcHiddenRegion", + "type": "region" + } + ], + "themeLayoutType": "Inner", + "type": "view", + "viewType": "check-password" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/error.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/error.json new file mode 100644 index 000000000..0cfca3b43 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/error.json @@ -0,0 +1,72 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "59882b8e-4f18-4dc9-8f11-42079a12ef11", + "label": "Error", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"c46109b8-b652-44f6-974c-226b24e74474\",\"columns\":[{\"UUID\":\"7652a620-58a5-4813-8a5d-ac9574ce0306\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "c46109b8-b652-44f6-974c-226b24e74474", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "richTextValue": "

Invalid Page

" + }, + "componentName": "community_builder:richTextEditor", + "id": "d101ef03-b7c2-4258-9927-7c8051852a3b", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "7652a620-58a5-4813-8a5d-ac9574ce0306", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "3fbc1205-a2f4-40ab-989a-ac83c5ca7d5d", + "regionName": "content", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "customHeadTags": "", + "description": "", + "pageTitle": "Error", + "recordId": "{!recordId}" + }, + "componentName": "community_builder:seoAssistant", + "id": "19f56cd5-46e8-4106-8155-d153c1d0a18c", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "4e7b8b40-2c0a-420d-9ac9-5873cf64b856", + "regionName": "sfdcHiddenRegion", + "type": "region" + } + ], + "themeLayoutType": "Inner", + "type": "view", + "viewType": "error" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/forgotPassword.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/forgotPassword.json new file mode 100644 index 000000000..0ac2e8adf --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/forgotPassword.json @@ -0,0 +1,85 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "545ddf2b-4003-4eba-993d-6e203d57033c", + "label": "Forgot Password", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"d3da5859-0e72-4753-aee4-569c3bf4ed64\",\"columns\":[{\"UUID\":\"d2900a7a-d5b2-429e-994f-23a8cb724c27\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "d3da5859-0e72-4753-aee4-569c3bf4ed64", + "regions": [ + { + "components": [ + { + "componentAttributes": {}, + "componentName": "community_login:communityLogo", + "id": "c3d5086d-4690-4dec-af3c-df301c9015ff", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + }, + { + "componentAttributes": { + "cancelButtonLabel": "Cancel", + "checkEmailUrl": "./CheckPasswordResetEmail", + "instructionsLabel": "To reset your password, enter your username. We'll send a reset-password link to the email address associated with your account.", + "submitButtonLabel": "Reset", + "titleLabel": "Forget your password?", + "usernameLabel": "Username" + }, + "componentName": "community_login:forgotPassword", + "id": "a6cfeb4e-ab10-4037-abbe-f2320ef93316", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "d2900a7a-d5b2-429e-994f-23a8cb724c27", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "989867e6-5a95-4ffa-ac08-e5f43fe3b67c", + "regionName": "content", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "customHeadTags": "", + "description": "", + "pageTitle": "Forgot Password", + "recordId": "{!recordId}" + }, + "componentName": "community_builder:seoAssistant", + "id": "4ab3dfd6-24b4-428a-b9b5-422209699bf1", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "79a640ef-f3ea-41f5-8885-fe3438d55894", + "regionName": "sfdcHiddenRegion", + "type": "region" + } + ], + "themeLayoutType": "Inner", + "type": "view", + "viewType": "forgot-password" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/home.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/home.json new file mode 100644 index 000000000..d9ac62350 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/home.json @@ -0,0 +1,72 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "25be93bd-543f-4638-8ab4-5a555b0563a1", + "label": "Home", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"0a8a4fb7-05e4-4a9c-9287-886811fa6626\",\"columns\":[{\"UUID\":\"81358368-a438-4c3a-9684-32bd6d5604e1\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "0a8a4fb7-05e4-4a9c-9287-886811fa6626", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "richTextValue": "

Start Building Your Page

Drag and drop a component into the content slots.
" + }, + "componentName": "community_builder:htmlEditor", + "id": "9a6f836f-8088-4bba-a1c4-4343022ca39e", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "81358368-a438-4c3a-9684-32bd6d5604e1", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "c9f03750-3b5b-4a2a-b1ac-ad5c3b9f61cc", + "regionName": "content", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "customHeadTags": "", + "description": "", + "pageTitle": "Home", + "recordId": "{!recordId}" + }, + "componentName": "community_builder:seoAssistant", + "id": "2d1b0155-7674-4b62-b513-541f475c5f5c", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "deacd095-4684-44ed-bbc2-39ece9705191", + "regionName": "sfdcHiddenRegion", + "type": "region" + } + ], + "themeLayoutType": "Inner", + "type": "view", + "viewType": "home" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/login.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/login.json new file mode 100644 index 000000000..950d3545d --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/login.json @@ -0,0 +1,108 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "6b247a75-7907-4a77-b8eb-0e4f04617d25", + "label": "Login", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"dc0cbb71-12ae-46fa-8788-a5545f880281\",\"columns\":[{\"UUID\":\"9f3ea746-bcf9-4cfc-b764-ad5fffbb2b4b\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "dc0cbb71-12ae-46fa-8788-a5545f880281", + "regions": [ + { + "components": [ + { + "componentAttributes": {}, + "componentName": "community_login:communityLogo", + "id": "6ef93b03-5d21-4ae0-8dc0-116211631113", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + }, + { + "componentAttributes": { + "forgotPasswordLabel": "Forgot your password?", + "forgotPasswordUrl": "/ForgotPassword", + "loginButtonLabel": "Log In", + "passwordLabel": "Password", + "selfRegisterLabel": "Not a member?", + "selfRegisterUrl": "/SelfRegister", + "startUrl": "", + "usernameLabel": "Username" + }, + "componentName": "community_login:loginForm", + "id": "ab842425-d5ae-4539-b08b-ccdb18428070", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + }, + { + "componentAttributes": { + "showHeader": false, + "socialLoginHeader": "Or log in using:" + }, + "componentName": "community_login:socialLogin", + "id": "842f35fd-454f-43fa-add4-c66893e11a48", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + }, + { + "componentAttributes": { + "employeeLoginLinkLabel": "Are you an employee? Log in" + }, + "componentName": "community_login:employeeLoginLink", + "id": "80d1dab2-898e-4fb5-a54c-556da511ff22", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "9f3ea746-bcf9-4cfc-b764-ad5fffbb2b4b", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "c9b8e14f-02a8-4804-8799-d2579ae854e3", + "regionName": "content", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "customHeadTags": "", + "description": "", + "pageTitle": "Login", + "recordId": "{!recordId}" + }, + "componentName": "community_builder:seoAssistant", + "id": "5b59c2b2-9e03-4855-98c7-98451af1d24f", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "10f4cec2-0b71-43f8-aba2-ce7be236c418", + "regionName": "sfdcHiddenRegion", + "type": "region" + } + ], + "themeLayoutType": "Inner", + "type": "view", + "viewType": "login-main" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/register.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/register.json new file mode 100644 index 000000000..837074508 --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/register.json @@ -0,0 +1,88 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "fe5efaca-5500-441e-95f0-87320aa95a0a", + "label": "Register", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"ed85c382-8613-42f0-8761-b93dd389d4c1\",\"columns\":[{\"UUID\":\"9b28a510-eec4-47be-8cbd-a2082dc1ba7c\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "ed85c382-8613-42f0-8761-b93dd389d4c1", + "regions": [ + { + "components": [ + { + "componentAttributes": {}, + "componentName": "community_login:communityLogo", + "id": "8bec5e5f-e76b-4652-9b6c-5ff38fba4d3b", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + }, + { + "componentAttributes": { + "cancelLinkLabel": "Already have an account?", + "confirmPasswordLabel": "Confirm Password", + "emailLabel": "Email", + "firstnameLabel": "First Name", + "includePasswordField": true, + "lastnameLabel": "Last Name", + "passwordLabel": "Create Password", + "regConfirmUrl": "./CheckPasswordResetEmail", + "submitButtonLabel": "Sign Up" + }, + "componentName": "community_login:selfRegister", + "id": "bcdb1bea-36e7-4bea-a28c-139d49871410", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "9b28a510-eec4-47be-8cbd-a2082dc1ba7c", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "23a88f6a-1d76-47ac-8384-e8a2fc1bb1df", + "regionName": "content", + "type": "region" + }, + { + "components": [ + { + "componentAttributes": { + "customHeadTags": "", + "description": "", + "pageTitle": "Register", + "recordId": "{!recordId}" + }, + "componentName": "community_builder:seoAssistant", + "id": "6162815a-4860-4c40-a934-55647b02e6a0", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "0d46837c-8029-4d79-8a34-0850b00ab882", + "regionName": "sfdcHiddenRegion", + "type": "region" + } + ], + "themeLayoutType": "Inner", + "type": "view", + "viewType": "self-register" +} diff --git a/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/serviceNotAvailable.json b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/serviceNotAvailable.json new file mode 100644 index 000000000..19384206f --- /dev/null +++ b/nebula-logger/experience-cloud/experiences/Logger_Test_Site1/views/serviceNotAvailable.json @@ -0,0 +1,52 @@ +{ + "appPageId": "3772c2ec-1566-4ffa-9231-d5db8d42b47d", + "componentName": "community_layout:sldsFlexibleLayout", + "id": "59f97560-6ead-4050-b3ba-2fcdf0e281e9", + "label": "Service Not Available", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "backgroundImageConfig": "", + "backgroundImageOverlay": "rgba(0,0,0,0)", + "sectionConfig": "{\"UUID\":\"fe92686a-e482-4e69-b861-8fae405cd14d\",\"columns\":[{\"UUID\":\"0ab20d00-1245-4edc-b8cb-738be0b64813\",\"columnName\":\"Column 1\",\"columnKey\":\"col1\",\"columnWidth\":\"12\",\"seedComponents\":null}]}" + }, + "componentName": "community_layout:section", + "id": "fe92686a-e482-4e69-b861-8fae405cd14d", + "regions": [ + { + "components": [ + { + "componentAttributes": { + "richTextValue": "
\n\t
\n
\n
\n\t

Looks like the site is temporarily unavailable

\n\t
\n\t

Please try again in a bit.

\n
" + }, + "componentName": "community_builder:htmlEditor", + "id": "6233cb2b-d745-4354-84ed-425c9f4d9043", + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "type": "component" + } + ], + "id": "0ab20d00-1245-4edc-b8cb-738be0b64813", + "regionLabel": "Column 1", + "regionName": "col1", + "renditionMap": {}, + "type": "region" + } + ], + "renderPriority": "NEUTRAL", + "renditionMap": {}, + "scopedBrandingSetId": null, + "type": "component" + } + ], + "id": "b89e3407-c18a-4acf-9be2-c76ea7c4b1cc", + "regionName": "content", + "type": "region" + } + ], + "themeLayoutType": "ServiceNotAvailable", + "type": "view", + "viewType": "service-not-available" +} diff --git a/nebula-logger/experience-cloud/networks/Logger Test Site.network-meta.xml b/nebula-logger/experience-cloud/networks/Logger Test Site.network-meta.xml new file mode 100644 index 000000000..9b76bf199 --- /dev/null +++ b/nebula-logger/experience-cloud/networks/Logger Test Site.network-meta.xml @@ -0,0 +1,51 @@ + + + false + false + unfiled$public/CommunityChangePasswordEmailTemplate + + true + sf.nebula.logger.package@jongpie.com + Logger Test Site + false + true + true + false + false + false + false + false + false + true + false + false + false + true + true + true + false + false + unfiled$public/CommunityForgotPasswordEmailTemplate + false + + admin + + + Standard + Designer + Designer + Designer + Designer + + Logger_Test_Site1 + false + true + Logger_Test_Site + UnderConstruction + + home + Chatter + + logger + unfiled$public/CommunityWelcomeEmailTemplate + diff --git a/nebula-logger/experience-cloud/pages/BandwidthExceeded.page b/nebula-logger/experience-cloud/pages/BandwidthExceeded.page new file mode 100644 index 000000000..3d391d2d1 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/BandwidthExceeded.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml b/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml new file mode 100644 index 000000000..a4cbfcf8f --- /dev/null +++ b/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página predeterminada de límite superado de Plataforma Lightning + + diff --git a/nebula-logger/experience-cloud/pages/ChangePassword.page b/nebula-logger/experience-cloud/pages/ChangePassword.page new file mode 100644 index 000000000..040a882ff --- /dev/null +++ b/nebula-logger/experience-cloud/pages/ChangePassword.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml b/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml new file mode 100644 index 000000000..c655a8bc3 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página de cambio de contraseña predeterminada de Sitios de Salesforce + + diff --git a/nebula-logger/experience-cloud/pages/CommunitiesLanding.page b/nebula-logger/experience-cloud/pages/CommunitiesLanding.page new file mode 100644 index 000000000..fe5702e66 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesLanding.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml new file mode 100644 index 000000000..bcfbfc4ab --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página de inicio de experiencias predeterminadas + + diff --git a/nebula-logger/experience-cloud/pages/CommunitiesLogin.page b/nebula-logger/experience-cloud/pages/CommunitiesLogin.page new file mode 100644 index 000000000..38906a6ff --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesLogin.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml new file mode 100644 index 000000000..7eac32e66 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página de inicio de sesión para experiencias predeterminadas + + diff --git a/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page b/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page new file mode 100644 index 000000000..b4cc2a61e --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml new file mode 100644 index 000000000..3fdd0977a --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página de inscripción automática de experiencias predeterminadas + + diff --git a/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page b/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page new file mode 100644 index 000000000..e2ab4514e --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml new file mode 100644 index 000000000..155b04e93 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página de confirmación de registro de experiencias predeterminadas + + diff --git a/nebula-logger/experience-cloud/pages/Exception.page b/nebula-logger/experience-cloud/pages/Exception.page new file mode 100644 index 000000000..437e96b31 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/Exception.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/Exception.page-meta.xml b/nebula-logger/experience-cloud/pages/Exception.page-meta.xml new file mode 100644 index 000000000..66ac4d4c8 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/Exception.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página predeterminada de Plataforma Lightning para errores post-autenticación + + diff --git a/nebula-logger/experience-cloud/pages/FileNotFound.page b/nebula-logger/experience-cloud/pages/FileNotFound.page new file mode 100644 index 000000000..005705d08 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/FileNotFound.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml b/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml new file mode 100644 index 000000000..ad57dbf8f --- /dev/null +++ b/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página predeterminada de página/datos no encontrados de Plataforma Lightning + + diff --git a/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page b/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page new file mode 100644 index 000000000..abb92889c --- /dev/null +++ b/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml b/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml new file mode 100644 index 000000000..049a76bc9 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página Contraseña olvidada predeterminada de Sitios de Salesforce + + diff --git a/nebula-logger/experience-cloud/pages/InMaintenance.page b/nebula-logger/experience-cloud/pages/InMaintenance.page new file mode 100644 index 000000000..29f2eae83 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/InMaintenance.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml b/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml new file mode 100644 index 000000000..aae19f986 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página predeterminada de Plataforma Lightning en mantenimiento + + diff --git a/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page b/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page new file mode 100644 index 000000000..49d04b974 --- /dev/null +++ b/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page @@ -0,0 +1 @@ +Placeholder - test site diff --git a/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml b/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml new file mode 100644 index 000000000..c43976b8e --- /dev/null +++ b/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml @@ -0,0 +1,8 @@ + + + 53.0 + false + false + Página Confirmación de registro de usuario predeterminada de Sitios de Salesforce + + diff --git a/nebula-logger/experience-cloud/profiles/Logger Test Site Profile.profile-meta.xml b/nebula-logger/experience-cloud/profiles/Logger Test Site Profile.profile-meta.xml new file mode 100644 index 000000000..4824a31cc --- /dev/null +++ b/nebula-logger/experience-cloud/profiles/Logger Test Site Profile.profile-meta.xml @@ -0,0 +1,4 @@ + + + Guest User License + diff --git a/nebula-logger/experience-cloud/sites/Logger_Test_Site.site-meta.xml b/nebula-logger/experience-cloud/sites/Logger_Test_Site.site-meta.xml new file mode 100644 index 000000000..de4995ea4 --- /dev/null +++ b/nebula-logger/experience-cloud/sites/Logger_Test_Site.site-meta.xml @@ -0,0 +1,30 @@ + + + true + false + false + false + false + true + false + CommunitiesLogin + BandwidthExceeded + true + true + SameOriginOnly + true + true + FileNotFound + Exception + InMaintenance + CommunitiesLanding + Logger Test Site + false + true + CommunitiesSelfReg + test-fd2x1e6fmccz@example.com + test-fd2x1e6fmccz@example.com + ChatterNetwork + orion-process-5557-17ea0f6ee31 + logger + diff --git a/package.json b/package.json index ad0cf3ea1..df1513c01 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "docs:fix:lwc": "pwsh ./config/scripts/build/generate-lwc-docs.ps1 && git add ./docs/lightning-components", "docs:verify": "pwsh ./config/scripts/build/verify-docs-up-to-date.ps1", "experience:create": "sfdx force:community:create --name \"Logger Test Site\" --templatename \"Customer Service\" --urlpathprefix logger --description \"Logger Test Site\"", + "experience:deploy": "sfdx force:source:deploy --sourcepath ./nebula-logger/experience-cloud", "husky:pre-commit": "lint-staged --config ./config/linters/lint-staged.config.js", "lint:fix:lwc": "eslint --config ./config/linters/.eslintrc.json **/lwc/** --fix && eslint --config ./config/linters/.eslintrc.json **/aura/** --fix", "lint:verify": "npm run lint:verify:apex && npm run lint:verify:lwc", From 51241f73dd7124b369b0dc1e2e0566be6885324d Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Fri, 28 Jan 2022 10:25:52 -0500 Subject: [PATCH 34/73] Reverted a change in base-scratch-def.json that caused an error when creating the scratch org, added --wait parameter to npm run experience:deploy --- config/scratch-orgs/base-scratch-def.json | 3 --- package.json | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/config/scratch-orgs/base-scratch-def.json b/config/scratch-orgs/base-scratch-def.json index ff201b403..ce7b50fd4 100644 --- a/config/scratch-orgs/base-scratch-def.json +++ b/config/scratch-orgs/base-scratch-def.json @@ -12,9 +12,6 @@ "communitiesSettings": { "enableNetworksEnabled": false }, - "experienceBundleSettings": { - "enableExperienceBundleMetadata": false - }, "userManagementSettings": { "enableEnhancedPermsetMgmt": true, "enableEnhancedProfileMgmt": true, diff --git a/package.json b/package.json index df1513c01..1a26f424d 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "docs:fix:lwc": "pwsh ./config/scripts/build/generate-lwc-docs.ps1 && git add ./docs/lightning-components", "docs:verify": "pwsh ./config/scripts/build/verify-docs-up-to-date.ps1", "experience:create": "sfdx force:community:create --name \"Logger Test Site\" --templatename \"Customer Service\" --urlpathprefix logger --description \"Logger Test Site\"", - "experience:deploy": "sfdx force:source:deploy --sourcepath ./nebula-logger/experience-cloud", + "experience:deploy": "sfdx force:source:deploy --sourcepath ./nebula-logger/experience-cloud --wait 30", "husky:pre-commit": "lint-staged --config ./config/linters/lint-staged.config.js", "lint:fix:lwc": "eslint --config ./config/linters/.eslintrc.json **/lwc/** --fix && eslint --config ./config/linters/.eslintrc.json **/aura/** --fix", "lint:verify": "npm run lint:verify:apex && npm run lint:verify:lwc", From a5ac2c5b110d1f84967e5375eabd7a777b0d1344 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Mon, 31 Jan 2022 10:41:49 -0500 Subject: [PATCH 35/73] Fixed error handling of package creation & installation in pwsh scripts --- config/scripts/build/create-and-install-package-version.ps1 | 4 ++-- config/scripts/build/create-managed-package-beta-version.ps1 | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config/scripts/build/create-and-install-package-version.ps1 b/config/scripts/build/create-and-install-package-version.ps1 index 5c2a5fced..f27b548c8 100644 --- a/config/scripts/build/create-and-install-package-version.ps1 +++ b/config/scripts/build/create-and-install-package-version.ps1 @@ -125,8 +125,8 @@ function Install-Package-Version { ) $packageVersionId = "$packageVersionId".Trim() - $installationResult = npx sfdx force:package:install --noprompt --targetusername $targetusername --wait 20 --package $packageVersionId - if ($installationResult -like "*ERROR*") { + npx sfdx force:package:install --noprompt --targetusername $targetusername --wait 20 --package $packageVersionId + if ($LASTEXITCODE -ne 0) { throw "Error installing package version ID: $packageVersionId" } else { diff --git a/config/scripts/build/create-managed-package-beta-version.ps1 b/config/scripts/build/create-managed-package-beta-version.ps1 index 6d7cf32fc..6281c3b44 100644 --- a/config/scripts/build/create-managed-package-beta-version.ps1 +++ b/config/scripts/build/create-managed-package-beta-version.ps1 @@ -17,12 +17,16 @@ cp -R ./nebula-logger/core/ ./nebula-logger/managed-package/ $gitBranch = (git branch --show-current) $gitCommit = (git rev-parse HEAD) npx sfdx force:package:version:create --json --package "Nebula Logger - Managed Package" --skipvalidation --installationkeybypass --wait 30 --branch $gitBranch --tag $gitCommit +if ($LASTEXITCODE -ne 0) { + throw "Error creating package version for managed package" +} git clean -df -- nebula-logger/managed-package/core # Restore the sfdx-project.json files to their original locations Write-Output "Restoring unlocked package's version of sfdx-project.json" Write-Output "Copying $rootProject to $managedProject" Copy-Item -Path $rootProject -Destination $managedProject -Force +npx prettier --write $managedProject Write-Output "Overwriting $rootProject with $unlockedProject" Copy-Item -Path $unlockedProject -Destination $rootProject -Force Remove-Item -Path $unlockedProject From 1a8571b9dca46ed18450b904441171b3f7858f2e Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Mon, 31 Jan 2022 22:00:31 -0500 Subject: [PATCH 36/73] Switched to using new class LoggerSObjectMetadata as a replacement for import statements & uiObjectInfoApi LWC does not officially support platform events, custom settings, or custom metadata types, so LoggerSObjectMetadata will be used instead Also removed some duplicate metadata + updated package.json/package-lock.json --- docs/apex/index.md | 4 + .../log-management/LoggerSObjectMetadata.md | 85 ++++ .../classes/LoggerSObjectMetadata.cls | 97 ++++ .../LoggerSObjectMetadata.cls-meta.xml} | 0 .../logEntryEventSchema.js | 30 -- .../logEntryEventStream.js | 58 ++- .../lwc/loggerSettings/loggerSettings.js | 77 ++- .../loggerSettingsPageLayout.js | 46 +- .../loggerSettings/loggerSettingsSchema.js | 50 -- .../classes/LoggerSObjectMetadata_Tests.cls | 41 ++ .../LoggerSObjectMetadata_Tests.cls-meta.xml | 5 + .../LoggerLogManagement.testSuite-meta.xml | 1 + .../classes/ExampleInboundEmailHandler.cls | 32 -- ...andler_Screen_Tests_for_Flow.flow-meta.xml | 168 ------- .../LogEntryHandler_Tests_Flow.flow-meta.xml | 110 ----- ...Handler_Tests_Scheduled_Flow.flow-meta.xml | 91 ---- .../flows/LogHandler_Tests_Flow.flow-meta.xml | 213 -------- package-lock.json | 454 ++++-------------- package.json | 1 + 19 files changed, 427 insertions(+), 1136 deletions(-) create mode 100644 docs/apex/log-management/LoggerSObjectMetadata.md create mode 100644 nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls rename nebula-logger/{recipes/classes/ExampleInboundEmailHandler.cls-meta.xml => core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml} (100%) delete mode 100644 nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventSchema.js delete mode 100644 nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js create mode 100644 nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls create mode 100644 nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml delete mode 100644 nebula-logger/recipes/classes/ExampleInboundEmailHandler.cls delete mode 100644 nebula-logger/recipes/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml delete mode 100644 nebula-logger/recipes/flows/LogEntryHandler_Tests_Flow.flow-meta.xml delete mode 100644 nebula-logger/recipes/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml delete mode 100644 nebula-logger/recipes/flows/LogHandler_Tests_Flow.flow-meta.xml diff --git a/docs/apex/index.md b/docs/apex/index.md index 4cd178744..702b14b3f 100644 --- a/docs/apex/index.md +++ b/docs/apex/index.md @@ -76,6 +76,10 @@ Manages mass deleting `Log__c` records that have been selected by a user on a `L Abstract class used by trigger handlers for shared logic +### [LoggerSObjectMetadata](log-management/LoggerSObjectMetadata) + +Provides details to LWCs about Logger's `SObjects`, using `@AuraEnabled` properties + ### [LoggerSettingsController](log-management/LoggerSettingsController) Controller class for lwc `loggerSettings`, used to manage records in `LoggerSettings__c` diff --git a/docs/apex/log-management/LoggerSObjectMetadata.md b/docs/apex/log-management/LoggerSObjectMetadata.md new file mode 100644 index 000000000..6fe5469e7 --- /dev/null +++ b/docs/apex/log-management/LoggerSObjectMetadata.md @@ -0,0 +1,85 @@ +--- +layout: default +--- + +## LoggerSObjectMetadata class + +Provides details to LWCs about Logger's `SObjects`, using `@AuraEnabled` properties + +--- + +### Methods + +#### `getLogEntryEventSchema()` → `SObjectSchema` + +Provides schema details about the the platform event object `LogEntryEvent__e` + +##### Return + +**Type** + +SObjectSchema + +**Description** + +An instance of `LoggerSObjectMetadata.SObjectSchema` for the platform event `LogEntryEvent__e` + +#### `getLoggerSettingsSchema()` → `SObjectSchema` + +Provides schema details about the the custom settings object `LoggerSettings__c` + +##### Return + +**Type** + +SObjectSchema + +**Description** + +An instance of `LoggerSObjectMetadata.SObjectSchema` for the platform event `LoggerSettings__c` + +--- + +### Inner Classes + +#### LoggerSObjectMetadata.FieldSchema class + +Inner class for `SObjectField` details to LWCs, using `@AuraEnabled` properties + +--- + +##### Properties + +###### `apiName` → `String` + +###### `inlineHelpText` → `String` + +###### `label` → `String` + +###### `localApiName` → `String` + +###### `type` → `String` + +--- + +#### LoggerSObjectMetadata.SObjectSchema class + +Inner class for `SObject` details to LWCs, using `@AuraEnabled` properties + +--- + +##### Properties + +###### `apiName` → `String` + +###### `fields` → `Map` + +###### `label` → `String` + +###### `labelPlural` → `String` + +###### `localApiName` → `String` + +###### `namespacePrefix` → `String` + +--- diff --git a/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls b/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls new file mode 100644 index 000000000..7a58142ab --- /dev/null +++ b/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------------------------// +// This file is part of the Nebula Logger project, released under the MIT License. // +// See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. // +//------------------------------------------------------------------------------------------------// + +/** + * @group Log Management + * @description Provides details to LWCs about Logger's `SObjects`, using `@AuraEnabled` properties + */ +public without sharing class LoggerSObjectMetadata { + /** + * @description Provides schema details about the the platform event object `LogEntryEvent__e` + * @return An instance of `LoggerSObjectMetadata.SObjectSchema` for the platform event `LogEntryEvent__e` + */ + @AuraEnabled(cacheable=true) + public static SObjectSchema getLogEntryEventSchema() { + return buildSObjectSchema(Schema.LogEntryEvent__e.SObjectType.getDescribe()); + } + + /** + * @description Provides schema details about the the custom settings object `LoggerSettings__c` + * @return An instance of `LoggerSObjectMetadata.SObjectSchema` for the platform event `LoggerSettings__c` + */ + @AuraEnabled(cacheable=true) + public static SObjectSchema getLoggerSettingsSchema() { + return buildSObjectSchema(Schema.LoggerSettings__c.SObjectType.getDescribe()); + } + + private static SObjectSchema buildSObjectSchema(Schema.DescribeSObjectResult describe) { + SObjectSchema schema = new SObjectSchema(); + schema.apiName = describe.getName(); + schema.localApiName = describe.getLocalName(); + schema.label = describe.getLabel(); + schema.labelPlural = describe.getLabelPlural(); + + schema.fields = new Map(); + for (Schema.SObjectField field : describe.fields.getMap().values()) { + Schema.DescribeFieldResult fieldDescribe = field.getDescribe(); + schema.fields.put(fieldDescribe.getLocalName(), buildFieldSchema(fieldDescribe)); + } + return schema; + } + + private static FieldSchema buildFieldSchema(Schema.DescribeFieldResult fieldDescribe) { + FieldSchema schema = new FieldSchema(); + schema.apiName = fieldDescribe.getName(); + schema.localApiName = fieldDescribe.getLocalName(); + schema.inlineHelpText = fieldDescribe.getInlineHelpText(); + schema.label = fieldDescribe.getLabel(); + schema.type = fieldDescribe.getType().name().toLowerCase(); + + return schema; + } + + /** + * @description Inner class for `SObject` details to LWCs, using `@AuraEnabled` properties + */ + public class SObjectSchema { + @AuraEnabled + public String apiName; + + @AuraEnabled + public String localApiName; + + @AuraEnabled + public String namespacePrefix; + + @AuraEnabled + public String label; + + @AuraEnabled + public String labelPlural; + + @AuraEnabled + public Map fields; + } + + /** + * @description Inner class for `SObjectField` details to LWCs, using `@AuraEnabled` properties + */ + public class FieldSchema { + @AuraEnabled + public String apiName; + + @AuraEnabled + public String localApiName; + + @AuraEnabled + public String inlineHelpText; + + @AuraEnabled + public String label; + + @AuraEnabled + public String type; + } +} diff --git a/nebula-logger/recipes/classes/ExampleInboundEmailHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml similarity index 100% rename from nebula-logger/recipes/classes/ExampleInboundEmailHandler.cls-meta.xml rename to nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml diff --git a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventSchema.js b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventSchema.js deleted file mode 100644 index 825b33c1f..000000000 --- a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventSchema.js +++ /dev/null @@ -1,30 +0,0 @@ -/************************************************************************************************* - * This file is part of the Nebula Logger project, released under the MIT License. * - * See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. * - ************************************************************************************************/ - -import LOG_ENTRY_EVENT_OBJECT from '@salesforce/schema/LogEntryEvent__e'; -import LOGGED_BY_USERNAME_FIELD from '@salesforce/schema/LogEntryEvent__e.LoggedByUsername__c'; -import LOGGING_LEVEL_ORDINAL_FIELD from '@salesforce/schema/LogEntryEvent__e.LoggingLevelOrdinal__c'; -import MESSAGE_FIELD from '@salesforce/schema/LogEntryEvent__e.Message__c'; -import ORIGIN_LOCATION_FIELD from '@salesforce/schema/LogEntryEvent__e.OriginLocation__c'; -import ORIGIN_TYPE_FIELD from '@salesforce/schema/LogEntryEvent__e.OriginType__c'; -import SCENARIO_FIELD from '@salesforce/schema/LogEntryEvent__e.Scenario__c'; -import TRANSACTION_ENTRY_NUMBER_FIELD from '@salesforce/schema/LogEntryEvent__e.TransactionEntryNumber__c'; -import TRANSACTION_ID_FIELD from '@salesforce/schema/LogEntryEvent__e.TransactionId__c'; - -const LOG_ENTRY_EVENT_SCHEMA = { - apiName: LOG_ENTRY_EVENT_OBJECT.objectApiName.replace('__c', '__e'), - fields: { - LoggedByUsername__c: LOGGED_BY_USERNAME_FIELD.fieldApiName, - LoggingLevelOrdinal__c: LOGGING_LEVEL_ORDINAL_FIELD.fieldApiName, - Message__c: MESSAGE_FIELD.fieldApiName, - OriginLocation__c: ORIGIN_LOCATION_FIELD.fieldApiName, - OriginType__c: ORIGIN_TYPE_FIELD.fieldApiName, - Scenario__c: SCENARIO_FIELD.fieldApiName, - TransactionEntryNumber__c: TRANSACTION_ENTRY_NUMBER_FIELD.fieldApiName, - TransactionId__c: TRANSACTION_ID_FIELD.fieldApiName - } -}; - -export default LOG_ENTRY_EVENT_SCHEMA; diff --git a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js index 1fdd9e6ac..4c8b45c32 100644 --- a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js +++ b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js @@ -5,7 +5,7 @@ import { LightningElement } from 'lwc'; import { isEmpEnabled, subscribe, unsubscribe } from 'lightning/empApi'; -import LOGGER_ENTRY_EVENT_SCHEMA from './logEntryEventSchema'; +import getLogEntryEventSchema from '@salesforce/apex/LoggerSObjectMetadata.getLogEntryEventSchema'; export default class LogEntryEventStream extends LightningElement { unfilteredEvents = []; @@ -22,9 +22,32 @@ export default class LogEntryEventStream extends LightningElement { scenarioFilter; maxEvents = 50; + _logEntryEventSchema; _channel; _subscription = {}; + async connectedCallback() { + document.title = 'Log Entry Event Stream'; + + getLogEntryEventSchema().then(result => { + this._logEntryEventSchema = result; + console.log('this._logEntryEventSchema', this._logEntryEventSchema); + + // For reasons unknown, the platform returns `LogEntryEvent__c` instead of `LogEntryEvent__e` + const objectApiName = this._logEntryEventSchema.apiName; + console.info('objectApiName', objectApiName); + this._channel = '/event/' + objectApiName; + + if (isEmpEnabled() === true) { + this.createSubscription(); + } + }); + } + + disconnectedCallback() { + this.cancelSubscription(); + } + get title() { let logEntryString = ' Log Entry Events'; let startingTitle = this.logEntryEvents.length + logEntryString; @@ -60,31 +83,16 @@ export default class LogEntryEventStream extends LightningElement { ]; } - async connectedCallback() { - document.title = 'Log Entry Event Stream'; - - // For reasons unknown, the platform returns `LogEntryEvent__c` instead of `LogEntryEvent__e` - const objectApiName = LOGGER_ENTRY_EVENT_SCHEMA.apiName; - this._channel = '/event/' + objectApiName; - - if (isEmpEnabled()) { - this.createSubscription(); - } - } - - disconnectedCallback() { - this.cancelSubscription(); - } - async createSubscription() { this._subscription = await subscribe(this._channel, -2, event => { const logEntryEvent = event.data.payload; + console.log('logEntryEvent', logEntryEvent); // As of API v52.0 (Summer '21), platform events have a unique field, EventUUID // but it doesn't seem to be populated via empApi, so use a synthetic key instead logEntryEvent.key = - logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.TransactionId__c] + + logEntryEvent[this._logEntryEventSchema.fields.TransactionId__c] + '__' + - logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.TransactionEntryNumber__c]; + logEntryEvent[this._logEntryEventSchema.fields.TransactionEntryNumber__c]; this.unfilteredEvents.unshift(logEntryEvent); this._filterEvents(); }); @@ -138,31 +146,31 @@ export default class LogEntryEventStream extends LightningElement { } _meetsLoggedByFilter(logEntryEvent) { - return this._matchesTextFilter(this.loggedByFilter, logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.LoggedByUsername__c]); + return this._matchesTextFilter(this.loggedByFilter, logEntryEvent[this._logEntryEventSchema.fields.LoggedByUsername__c]); } _meetsLoggingLevelFilter(logEntryEvent) { let matches = false; - if (!this.loggingLevelFilter || Number(logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.LoggingLevelOrdinal__c]) >= Number(this.loggingLevelFilter)) { + if (!this.loggingLevelFilter || Number(logEntryEvent[this._logEntryEventSchema.fields.LoggingLevelOrdinal__c]) >= Number(this.loggingLevelFilter)) { matches = true; } return matches; } _meetsMessageFilter(logEntryEvent) { - return this._matchesTextFilter(this.messageFilter, logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.Message__c]); + return this._matchesTextFilter(this.messageFilter, logEntryEvent[this._logEntryEventSchema.fields.Message__c]); } _meetsOriginLocationFilter(logEntryEvent) { - return this._matchesTextFilter(this.originLocationFilter, logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.OriginLocation__c]); + return this._matchesTextFilter(this.originLocationFilter, logEntryEvent[this._logEntryEventSchema.fields.OriginLocation__c]); } _meetsOriginTypeFilter(logEntryEvent) { - return this._matchesTextFilter(this.originTypeFilter, logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.OriginType__c]); + return this._matchesTextFilter(this.originTypeFilter, logEntryEvent[this._logEntryEventSchema.fields.OriginType__c]); } _meetsScenarioFilter(logEntryEvent) { - return this._matchesTextFilter(this.scenarioFilter, logEntryEvent[LOGGER_ENTRY_EVENT_SCHEMA.fields.Scenario__c]); + return this._matchesTextFilter(this.scenarioFilter, logEntryEvent[this._logEntryEventSchema.fields.Scenario__c]); } _matchesTextFilter(filterCriteria = '', text = '') { diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js index 0a4848f7c..79d2a80e0 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js @@ -8,9 +8,8 @@ import { LightningElement, wire } from 'lwc'; import { ShowToastEvent } from 'lightning/platformShowToastEvent'; // LoggerSettings__c metadata -import LOGGER_SETTINGS_SCHEMA from './loggerSettingsSchema'; import { generatePageLayout } from './loggerSettingsPageLayout'; -import { getObjectInfo } from 'lightning/uiObjectInfoApi'; +import getLoggerSettingsSchema from '@salesforce/apex/LoggerSObjectMetadata.getLoggerSettingsSchema'; import canUserModifyLoggerSettings from '@salesforce/apex/LoggerSettingsController.canUserModifyLoggerSettings'; import getPicklistOptions from '@salesforce/apex/LoggerSettingsController.getPicklistOptions'; import getOrganization from '@salesforce/apex/LoggerSettingsController.getOrganization'; @@ -41,7 +40,7 @@ export default class LoggerSettings extends LightningElement { // LoggerSettings__c metadata canUserModifyLoggerSettings; loggerSettingsPicklistOptions; - _sobjectDescribe; + _loggerSettingsSchema; // LoggerSettings__c data records; @@ -49,28 +48,23 @@ export default class LoggerSettings extends LightningElement { _currentRecord; connectedCallback() { + console.info('running connecteedCallback!'); document.title = this.title; this.showLoadingSpinner = true; - - Promise.all([getOrganization(), getPicklistOptions()]) - .then(([organizationRecord, apexPicklistOptions]) => { + Promise.all([getOrganization(), getLoggerSettingsSchema(), getPicklistOptions(), canUserModifyLoggerSettings()]) + .then(([organizationRecord, loggerSettingsSchema, apexPicklistOptions, canUserModifyLoggerSettings]) => { + console.info('running then!'); this.organization = organizationRecord; + this._loggerSettingsSchema = loggerSettingsSchema; + console.info('this._loggerSettingsSchema', this._loggerSettingsSchema); this.loggerSettingsPicklistOptions = apexPicklistOptions; - }) - .catch(this._handleError); - this.loadSettingsRecords(); - this.showLoadingSpinner = false; - } + this.canUserModifyLoggerSettings = canUserModifyLoggerSettings; - @wire(getObjectInfo, { objectApiName: LOGGER_SETTINGS_SCHEMA.apiName }) - getLoggerSettingsObjectInfo({ data }) { - if (data) { - this._sobjectDescribe = data; - canUserModifyLoggerSettings().then(result => { - this.canUserModifyLoggerSettings = result; this._loadTableColumns(); - }); - } + this.loadSettingsRecords(); + this.showLoadingSpinner = false; + }) + .catch(this._handleError); } loadSettingsRecords() { @@ -126,13 +120,13 @@ export default class LoggerSettings extends LightningElement { ? event.target.checked : event.target.value; this._currentRecord[event.target.dataset.id] = value; - if (value && event.target.dataset.id === LOGGER_SETTINGS_SCHEMA.fields.IsSavingEnabled__c) { - const checkbox = this.template.querySelector(`[data-id="${LOGGER_SETTINGS_SCHEMA.fields.IsPlatformEventStorageEnabled__c}"]`); + if (value && event.target.dataset.id === this._loggerSettingsSchema.fields.IsSavingEnabled__c) { + const checkbox = this.template.querySelector(`[data-id="${this._loggerSettingsSchema.fields.IsPlatformEventStorageEnabled__c}"]`); if (checkbox) { checkbox.checked = true; } this.handleFieldChange({ - target: { type: 'checkbox', checked: true, dataset: { id: LOGGER_SETTINGS_SCHEMA.fields.IsPlatformEventStorageEnabled__c } } + target: { type: 'checkbox', checked: true, dataset: { id: this._loggerSettingsSchema.fields.IsPlatformEventStorageEnabled__c } } }); } @@ -209,31 +203,33 @@ export default class LoggerSettings extends LightningElement { // TODO - this is a legacy approach where separate getters were used for each field - the audit fields & "general info" fields still use this approach // but should be updated to leverage the new approach, loggerSettingsPageLayout.js get layoutData() { - return generatePageLayout(this._sobjectDescribe, this.loggerSettingsPicklistOptions, this.isReadOnlyMode, this._currentRecord); + return generatePageLayout(this._loggerSettingsSchema, this.loggerSettingsPicklistOptions, this.isReadOnlyMode, this._currentRecord); } get createdByIdField() { - return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.CreatedById, 'createdByUsername'); + return this._loadField(this._loggerSettingsSchema.fields.CreatedById.apiName, 'createdByUsername'); } get createdDateField() { - return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.CreatedDate); + const field = this._loadField(this._loggerSettingsSchema.fields.CreatedDate.apiName); + console.info('createdDateField', field); + return field; } get isEnabledField() { - return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.IsEnabled__c); + return this._loadField(this._loggerSettingsSchema.fields.IsEnabled__c.apiName); } get lastModifiedByIdField() { - return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.LastModifiedById, 'lastModifiedByUsername'); + return this._loadField(this._loggerSettingsSchema.fields.LastModifiedById.apiName, 'lastModifiedByUsername'); } get lastModifiedDateField() { - return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.LastModifiedDate); + return this._loadField(this._loggerSettingsSchema.fields.LastModifiedDate.apiName); } get loggingLevelField() { - return this._loadField(LOGGER_SETTINGS_SCHEMA.fields.LoggingLevel__c); + return this._loadField(this._loggerSettingsSchema.fields.LoggingLevel__c.apiName); } get setupOwnerNameField() { @@ -331,17 +327,19 @@ export default class LoggerSettings extends LightningElement { // For all other fields, use object API info to dynamically get field details // TODO - make this array configurable by storing in LoggerParameter__mdt + console.log('this._loggerSettingsSchema', this._loggerSettingsSchema); const tableColumnNames = [ - LOGGER_SETTINGS_SCHEMA.fields.IsEnabled__c, - LOGGER_SETTINGS_SCHEMA.fields.LoggingLevel__c, - LOGGER_SETTINGS_SCHEMA.fields.IsSavingEnabled__c, - LOGGER_SETTINGS_SCHEMA.fields.DefaultSaveMethod__c, - LOGGER_SETTINGS_SCHEMA.fields.IsPlatformEventStorageEnabled__c, - LOGGER_SETTINGS_SCHEMA.fields.DefaultNumberOfDaysToRetainLogs__c, - LOGGER_SETTINGS_SCHEMA.fields.DefaultLogOwner__c + 'IsEnabled__c', + 'LoggingLevel__c', + 'IsSavingEnabled__c', + 'DefaultSaveMethod__c', + 'IsPlatformEventStorageEnabled__c', + 'DefaultNumberOfDaysToRetainLogs__c', + 'DefaultLogOwner__c' ]; + console.log('tableColumnNames', tableColumnNames); for (let i = 0; i < tableColumnNames.length; i++) { - const field = this._sobjectDescribe.fields[tableColumnNames[i]]; + const field = this._loggerSettingsSchema.fields[tableColumnNames[i]]; const column = { fieldName: field.apiName, label: field.label, @@ -377,13 +375,14 @@ export default class LoggerSettings extends LightningElement { } let fieldDescribe; - if (fieldApiName && this._sobjectDescribe.fields[fieldApiName]) { - fieldDescribe = { ...this._sobjectDescribe.fields[fieldApiName] }; + if (fieldApiName && this._loggerSettingsSchema.fields[fieldApiName]) { + fieldDescribe = { ...this._loggerSettingsSchema.fields[fieldApiName] }; } else { fieldDescribe = { apiName: fieldApiName }; } if (this._currentRecord) { + console.info('getting field value on current record for ' + fieldApiName, JSON.parse(JSON.stringify(this._currentRecord))); fieldDescribe.value = this._currentRecord[recordFieldApiName]; } diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js index 7144f80a8..03e1de77a 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js @@ -3,8 +3,7 @@ * See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. * ************************************************************************************************/ -import LOGGER_SETTINGS_SCHEMA from './loggerSettingsSchema'; - +// All field API names below use the local name - that is, the name without a namespace (even if the code is running in a namespaced package) const PAGE_LAYOUT_CONFIG = { sections: [ { @@ -14,18 +13,11 @@ const PAGE_LAYOUT_CONFIG = { showInEditMode: true, columns: [ { - fieldApiNames: [ - LOGGER_SETTINGS_SCHEMA.fields.IsSavingEnabled__c, - LOGGER_SETTINGS_SCHEMA.fields.DefaultSaveMethod__c, - LOGGER_SETTINGS_SCHEMA.fields.IsPlatformEventStorageEnabled__c - ], + fieldApiNames: ['IsSavingEnabled__c', 'DefaultSaveMethod__c', 'IsPlatformEventStorageEnabled__c'], size: 6 }, { - fieldApiNames: [ - LOGGER_SETTINGS_SCHEMA.fields.IsApexSystemDebugLoggingEnabled__c, - LOGGER_SETTINGS_SCHEMA.fields.IsJavaScriptConsoleLoggingEnabled__c - ], + fieldApiNames: ['IsApexSystemDebugLoggingEnabled__c', 'IsJavaScriptConsoleLoggingEnabled__c'], size: 6 } ] @@ -36,9 +28,9 @@ const PAGE_LAYOUT_CONFIG = { showInReadOnlyMode: true, showInEditMode: true, columns: [ - { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.IsDataMaskingEnabled__c], size: 6 }, + { fieldApiNames: ['IsDataMaskingEnabled__c'], size: 6 }, { - fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.IsRecordFieldStrippingEnabled__c, LOGGER_SETTINGS_SCHEMA.fields.IsAnonymousModeEnabled__c], + fieldApiNames: ['IsRecordFieldStrippingEnabled__c', 'IsAnonymousModeEnabled__c'], size: 6 } ] @@ -49,32 +41,32 @@ const PAGE_LAYOUT_CONFIG = { showInReadOnlyMode: true, showInEditMode: true, columns: [ - { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.DefaultNumberOfDaysToRetainLogs__c], size: 6 }, - { fieldApiNames: [LOGGER_SETTINGS_SCHEMA.fields.DefaultLogOwner__c, LOGGER_SETTINGS_SCHEMA.fields.DefaultLogShareAccessLevel__c], size: 6 } + { fieldApiNames: ['DefaultNumberOfDaysToRetainLogs__c'], size: 6 }, + { fieldApiNames: ['DefaultLogShareAccessLevel__c', 'DefaultLogOwner__c'], size: 6 } ] } ] }; const LoggerSettingsPageLayout = class { - constructor(sobjectDescribe, apexPicklistOptions, isReadOnlyMode, record) { + constructor(sobjectSchema, apexPicklistOptions, isReadOnlyMode, record) { const picklistOptions = this._parsePicklistOptions(apexPicklistOptions); - this._buildPageLayoutSectionFields(sobjectDescribe, picklistOptions, isReadOnlyMode, record); + this._buildPageLayoutSectionFields(sobjectSchema, picklistOptions, isReadOnlyMode, record); } _parsePicklistOptions(apexPicklistOptions) { // TODO - long term, this feels like the wrong place for this mapping to live, but it'll live here for now const picklistOptions = { - [LOGGER_SETTINGS_SCHEMA.fields.LoggingLevel__c]: apexPicklistOptions.loggingLevelOptions, - [LOGGER_SETTINGS_SCHEMA.fields.DefaultSaveMethod__c]: apexPicklistOptions.saveMethodOptions, - [LOGGER_SETTINGS_SCHEMA.fields.DefaultLogShareAccessLevel__c]: apexPicklistOptions.shareAccessLevelOptions + LoggingLevel__c: apexPicklistOptions.loggingLevelOptions, + DefaultSaveMethod__c: apexPicklistOptions.saveMethodOptions, + DefaultLogShareAccessLevel__c: apexPicklistOptions.shareAccessLevelOptions }; return picklistOptions; } - _buildPageLayoutSectionFields(sobjectDescribe, picklistOptions, isReadOnlyMode, record) { + _buildPageLayoutSectionFields(sobjectSchema, picklistOptions, isReadOnlyMode, record) { this.sections = []; let layoutConfigSections = [...PAGE_LAYOUT_CONFIG.sections]; @@ -91,7 +83,7 @@ const LoggerSettingsPageLayout = class { column.fields = []; let fieldCounter = 0; column.fieldApiNames.forEach(fieldApiName => { - let field = { ...sobjectDescribe.fields[fieldApiName] }; + let field = { ...sobjectSchema.fields[fieldApiName] }; field.key = column.key + 'field' + fieldCounter++; field.value = record[fieldApiName]; this._setFieldTypeDetails(field, picklistOptions); @@ -115,11 +107,11 @@ const LoggerSettingsPageLayout = class { } field.useCombobox = false; - switch (field.dataType) { - case 'Boolean': + switch (field.type) { + case 'boolean': field.type = 'checkbox'; break; - case 'Double': + case 'double': field.type = 'number'; break; default: @@ -129,6 +121,6 @@ const LoggerSettingsPageLayout = class { } }; -export function generatePageLayout(sobjectDescribe, apexPicklistOptions, isReadOnlyMode, record) { - return new LoggerSettingsPageLayout(sobjectDescribe, apexPicklistOptions, isReadOnlyMode, record); +export function generatePageLayout(sobjectSchema, apexPicklistOptions, isReadOnlyMode, record) { + return new LoggerSettingsPageLayout(sobjectSchema, apexPicklistOptions, isReadOnlyMode, record); } diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js deleted file mode 100644 index cbed08eec..000000000 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsSchema.js +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************************************************************* - * This file is part of the Nebula Logger project, released under the MIT License. * - * See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. * - ************************************************************************************************/ - -import LOGGER_SETTINGS_OBJECT from '@salesforce/schema/LoggerSettings__c'; -import CREATED_BY_ID_FIELD from '@salesforce/schema/LoggerSettings__c.CreatedById'; -import CREATED_DATE_FIELD from '@salesforce/schema/LoggerSettings__c.CreatedDate'; -import DEFAULT_LOG_OWNER_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultLogOwner__c'; -import DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultLogShareAccessLevel__c'; -import DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultNumberOfDaysToRetainLogs__c'; -import DEFAULT_SAVE_METHOD_FIELD from '@salesforce/schema/LoggerSettings__c.DefaultSaveMethod__c'; -import IS_ANONYMOUS_MODE_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsAnonymousModeEnabled__c'; -import IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsApexSystemDebugLoggingEnabled__c'; -import IS_DATA_MASKING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsDataMaskingEnabled__c'; -import IS_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsEnabled__c'; -import IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsJavaScriptConsoleLoggingEnabled__c'; -import IS_SAVING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsSavingEnabled__c'; -import IS_PLATFORM_EVENT_STORAGE_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsPlatformEventStorageEnabled__c'; -import IS_RECORD_FIELD_STRIPPING_ENABLED_FIELD from '@salesforce/schema/LoggerSettings__c.IsRecordFieldStrippingEnabled__c'; -import LAST_MODIFIED_BY_ID_FIELD from '@salesforce/schema/LoggerSettings__c.LastModifiedById'; -import LAST_MODIFIED_DATE_FIELD from '@salesforce/schema/LoggerSettings__c.LastModifiedDate'; -import LOGGING_LEVEL_FIELD from '@salesforce/schema/LoggerSettings__c.LoggingLevel__c'; -import SETUP_OWNER_ID_FIELD from '@salesforce/schema/LoggerSettings__c.SetupOwnerId'; - -const LOGGER_SETTINGS_SCHEMA = { - apiName: LOGGER_SETTINGS_OBJECT.objectApiName, - fields: { - CreatedById: CREATED_BY_ID_FIELD.fieldApiName, - CreatedDate: CREATED_DATE_FIELD.fieldApiName, - DefaultLogShareAccessLevel__c: DEFAULT_LOG_SHARE_ACCESS_LEVEL_FIELD.fieldApiName, - DefaultLogOwner__c: DEFAULT_LOG_OWNER_FIELD.fieldApiName, - DefaultNumberOfDaysToRetainLogs__c: DEFAULT_NUMBER_OF_DAYS_TO_RETAIN_LOGS_FIELD.fieldApiName, - DefaultSaveMethod__c: DEFAULT_SAVE_METHOD_FIELD.fieldApiName, - IsAnonymousModeEnabled__c: IS_ANONYMOUS_MODE_ENABLED_FIELD.fieldApiName, - IsApexSystemDebugLoggingEnabled__c: IS_APEX_SYSTEM_DEBUG_LOGGING_ENABLED_FIELD.fieldApiName, - IsDataMaskingEnabled__c: IS_DATA_MASKING_ENABLED_FIELD.fieldApiName, - IsEnabled__c: IS_ENABLED_FIELD.fieldApiName, - IsJavaScriptConsoleLoggingEnabled__c: IS_JAVA_SCRIPT_CONSOLE_LOGGING_ENABLED_FIELD.fieldApiName, - IsPlatformEventStorageEnabled__c: IS_PLATFORM_EVENT_STORAGE_ENABLED_FIELD.fieldApiName, - IsRecordFieldStrippingEnabled__c: IS_RECORD_FIELD_STRIPPING_ENABLED_FIELD.fieldApiName, - IsSavingEnabled__c: IS_SAVING_ENABLED_FIELD.fieldApiName, - LastModifiedById: LAST_MODIFIED_BY_ID_FIELD.fieldApiName, - LastModifiedDate: LAST_MODIFIED_DATE_FIELD.fieldApiName, - LoggingLevel__c: LOGGING_LEVEL_FIELD.fieldApiName, - SetupOwnerId: SETUP_OWNER_ID_FIELD.fieldApiName - } -}; - -export default LOGGER_SETTINGS_SCHEMA; diff --git a/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls b/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls new file mode 100644 index 000000000..50fc37c60 --- /dev/null +++ b/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls @@ -0,0 +1,41 @@ +//------------------------------------------------------------------------------------------------// +// This file is part of the Nebula Logger project, released under the MIT License. // +// See LICENSE file or go to https://github.com/jongpie/NebulaLogger for full license details. // +//------------------------------------------------------------------------------------------------// + +@SuppressWarnings('PMD.ApexDoc, PMD.ApexUnitTestClassShouldHaveAsserts, PMD.MethodNamingConventions') +@IsTest +private class LoggerSObjectMetadata_Tests { + @IsTest + static void it_should_return_schema_for_logEntryEvent() { + LoggerSObjectMetadata.SObjectSchema sobjectSchema = LoggerSObjectMetadata.getLogEntryEventSchema(); + validateSObjectDetails(Schema.LogEntryEvent__e.SObjectType, sobjectSchema); + } + + @IsTest + static void it_should_return_schema_for_loggerSettings() { + LoggerSObjectMetadata.SObjectSchema sobjectSchema = LoggerSObjectMetadata.getLoggerSettingsSchema(); + validateSObjectDetails(Schema.LoggerSettings__c.SObjectType, sobjectSchema); + } + + private static void validateSObjectDetails(SObjectType sobjectType, LoggerSObjectMetadata.SObjectSchema sobjectSchema) { + // SObject details + System.assertEquals(sobjectType.getDescribe().getLabel(), sobjectSchema.label); + System.assertEquals(sobjectType.getDescribe().getLabelPlural(), sobjectSchema.labelPlural); + System.assertEquals(sobjectType.getDescribe().getLocalName(), sobjectSchema.localApiName); + System.assertEquals(sobjectType.getDescribe().getName(), sobjectSchema.apiName); + System.assertEquals(sobjectType.getDescribe().fields.getMap().size(), sobjectSchema.fields.size()); + + // Field details + for (Schema.SObjectField field : sobjectType.getDescribe().fields.getMap().values()) { + System.assert(sobjectSchema.fields.containsKey(field.getDescribe().getLocalName())); + } + for (LoggerSObjectMetadata.FieldSchema fieldSchema : sobjectSchema.fields.values()) { + Schema.SObjectField matchingField = sobjectType.getDescribe().fields.getMap().get(fieldSchema.apiName); + System.assertEquals(matchingField.getDescribe().getLocalName(), fieldSchema.localApiName); + System.assertEquals(matchingField.getDescribe().getInlineHelpText(), fieldSchema.inlineHelpText); + System.assertEquals(matchingField.getDescribe().getLabel(), fieldSchema.label); + System.assertEquals(matchingField.getDescribe().getType().name().toLowerCase(), fieldSchema.type); + } + } +} diff --git a/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml new file mode 100644 index 000000000..871a8cfea --- /dev/null +++ b/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml @@ -0,0 +1,5 @@ + + + 53.0 + Active + diff --git a/nebula-logger/core/tests/log-management/testSuites/LoggerLogManagement.testSuite-meta.xml b/nebula-logger/core/tests/log-management/testSuites/LoggerLogManagement.testSuite-meta.xml index 4a7d7225e..515914a5a 100644 --- a/nebula-logger/core/tests/log-management/testSuites/LoggerLogManagement.testSuite-meta.xml +++ b/nebula-logger/core/tests/log-management/testSuites/LoggerLogManagement.testSuite-meta.xml @@ -7,6 +7,7 @@ LogEntryHandler_Tests LogEntryTagHandler_Tests LoggerSettingsController_Tests + LoggerSObjectMetadata_Tests LoggerTagHandler_Tests LogHandler_Tests LogMassDeleteExtension_Tests diff --git a/nebula-logger/recipes/classes/ExampleInboundEmailHandler.cls b/nebula-logger/recipes/classes/ExampleInboundEmailHandler.cls deleted file mode 100644 index cbb695790..000000000 --- a/nebula-logger/recipes/classes/ExampleInboundEmailHandler.cls +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @description Example inbound email handler. - */ -@SuppressWarnings('PMD.AvoidGlobalModifier') -global with sharing class ExampleInboundEmailHandler implements Messaging.InboundEmailHandler { - @TestVisible - private static String logEntryMessage = 'Testing logging from InboundEmailHandler'; - - /** - * @description Contains example logging logic for handling an incoming email. - * @param email The incoming email. - * @param env The incoming email envelope. - * @return The inbound email result. - */ - @SuppressWarnings('PMD.AvoidDebugStatements') - global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope env) { - Messaging.InboundEmailResult result = new Messaging.InboundEmailResult(); - try { - String nullString = null; - nullString.length(); - } catch (Exception apexException) { - Logger.error(logEntryMessage, apexException); - } finally { - result.success = true; - System.debug(LoggingLevel.DEBUG, 'Logger buffer size before save: ' + Logger.getBufferSize()); - Logger.saveLog(); - System.debug(LoggingLevel.DEBUG, 'Logger buffer size after save: ' + Logger.getBufferSize()); - } - - return result; - } -} diff --git a/nebula-logger/recipes/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml b/nebula-logger/recipes/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml deleted file mode 100644 index 034acd1d0..000000000 --- a/nebula-logger/recipes/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml +++ /dev/null @@ -1,168 +0,0 @@ - - - - Log_after_screen - - 176 - 518 - FlowLogEntry - apex - Automatic - - loggingLevelName - - INFO - - - - saveLog - - true - - - - tagsString - - screen-flow - - - - flowName - - LogEntryHandler_Screen_Tests_for_Flow - - - - message - - finished screen, end of flow - - - true - - - Log_before_screen - - 176 - 278 - FlowRecordLogEntry - apex - - Example_Flow_Screen - - - T__record - User - - Automatic - - loggingLevelName - - INFO - - - - tagsString - - screen-flow - - - - flowName - - LogEntryHandler_Screen_Tests_for_Flow - - - - message - - loaded current user's record, screen is next - - - - record - - Get_Current_User - - - true - - 53.0 - A screen Flow used to help test the Apex class LogEntryHandler - LogEntryHandler Screen Tests for Flow {!$Flow.CurrentDateTime} - - - BuilderType - - LightningFlowBuilder - - - - CanvasMode - - AUTO_LAYOUT_CANVAS - - - - OriginBuilderType - - LightningFlowBuilder - - - Flow - - Get_Current_User - - 176 - 158 - false - - Log_before_screen - - and - - Id - EqualTo - - $User.Id - - - true - User - true - - SystemModeWithSharing - - Example_Flow_Screen - - 176 - 398 - true - true - true - - Log_after_screen - - - ObjectProvided - false - Get_Current_User.Department - - - ObjectProvided - false - Get_Current_User.AboutMe - - <p>Are you sure you want to pause this Flow?!</p> - true - true - - - 50 - 0 - - Get_Current_User - - - Active - diff --git a/nebula-logger/recipes/flows/LogEntryHandler_Tests_Flow.flow-meta.xml b/nebula-logger/recipes/flows/LogEntryHandler_Tests_Flow.flow-meta.xml deleted file mode 100644 index dcfa7aa71..000000000 --- a/nebula-logger/recipes/flows/LogEntryHandler_Tests_Flow.flow-meta.xml +++ /dev/null @@ -1,110 +0,0 @@ - - - - Log_Current_User - - 176 - 278 - FlowRecordLogEntry - apex - - T__record - User - - CurrentTransaction - - loggingLevelName - - INFO - - - - saveLog - - true - - - - tagsString - - example flow, some other tag - - - - flowName - - LogEntryHandler_Tests_Flow - - - - message - - Example of logging a User record - - - - record - - Get_Current_User - - - true - - 53.0 - An auto-launched Flow used to help test the Apex class LogEntryHandler - LogEntryHandler_Tests_Flow {!$Flow.CurrentDateTime} - - - BuilderType - - LightningFlowBuilder - - - - CanvasMode - - AUTO_LAYOUT_CANVAS - - - - OriginBuilderType - - LightningFlowBuilder - - - AutoLaunchedFlow - - Get_Current_User - - 176 - 158 - false - - Log_Current_User - - and - - Id - EqualTo - - $User.Id - - - true - User - Id - Username - Email - LanguageLocaleKey - true - - DefaultMode - - 50 - 0 - - Get_Current_User - - - Active - diff --git a/nebula-logger/recipes/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml b/nebula-logger/recipes/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml deleted file mode 100644 index 1145e9244..000000000 --- a/nebula-logger/recipes/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - Log_Organization_Record - - 176 - 276 - FlowRecordLogEntry - apex - - T__record - Organization - - CurrentTransaction - - loggingLevelName - - INFO - - - - saveLog - - true - - - - tagsString - - scheduled flow - - - - flowName - - LogEntryHandler_Tests_Scheduled_Flow - - - - message - - logging something from within a scheduled flow - - - - record - - $Record - - - true - - 53.0 - A scheduled Flow used in tests to verify that LogEntryHandler automatically logs details about the Flow (metadata data) - LogEntryHandler_Tests_Scheduled_Flow {!$Flow.CurrentDateTime} - - - BuilderType - - LightningFlowBuilder - - - - CanvasMode - - AUTO_LAYOUT_CANVAS - - - - OriginBuilderType - - LightningFlowBuilder - - - AutoLaunchedFlow - - 50 - 0 - - Log_Organization_Record - - Organization - - Daily - 2021-08-01 - 00:00:00.000Z - - Scheduled - - Draft - diff --git a/nebula-logger/recipes/flows/LogHandler_Tests_Flow.flow-meta.xml b/nebula-logger/recipes/flows/LogHandler_Tests_Flow.flow-meta.xml deleted file mode 100644 index 5bc99449f..000000000 --- a/nebula-logger/recipes/flows/LogHandler_Tests_Flow.flow-meta.xml +++ /dev/null @@ -1,213 +0,0 @@ - - - - Log_user_after_updating - - 176 - 638 - FlowRecordLogEntry - apex - - T__record - User - - CurrentTransaction - - loggingLevelName - - INFO - - - - saveLog - - true - - - - tagsString - - flow tag - - - - flowName - - LogHandler_Tests_Flow - - - - message - - Logging user after updating - - - - record - - Get_current_user - - - true - - - Log_user_before_updating - - 176 - 278 - FlowRecordLogEntry - apex - - Update_user_s_first_name - - - T__record - User - - CurrentTransaction - - loggingLevelName - - INFO - - - - tagsString - - flow tag - - - - flowName - - LogHandler_Tests_Flow - - - - message - - Logging user before updating - - - - record - - Get_current_user - - - true - - 53.0 - - Update_user_s_first_name - - 176 - 398 - - Get_current_user.FirstName - Assign - - Logger-Flow-Test - - - - Save_current_user - - - An additional Flow used test dynamically running Flow plugins from LoggerSObjectHandler - LogHandler_Tests_Flow {!$Flow.CurrentDateTime} - - - BuilderType - - LightningFlowBuilder - - - - CanvasMode - - AUTO_LAYOUT_CANVAS - - - - OriginBuilderType - - LightningFlowBuilder - - - AutoLaunchedFlow - - Get_current_user - - 176 - 158 - false - - Log_user_before_updating - - and - - Id - EqualTo - - $User.Id - - - true - User - true - - - Save_current_user - - 176 - 518 - - Log_user_after_updating - - Get_current_user - - DefaultMode - - 50 - 0 - - Get_current_user - - - Active - - Used by test class to verify that the Flow ran successfully - ranSuccessfully - Boolean - false - false - true - - false - - - - records - SObject - true - true - false - Log__c - - - triggerOld - SObject - true - true - false - Log__c - - - triggerOperationType - String - false - true - false - - diff --git a/package-lock.json b/package-lock.json index 9879b4855..4e5ff1e99 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8597,9 +8597,9 @@ } }, "eslint": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.7.0.tgz", - "integrity": "sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", + "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.0.5", @@ -11046,6 +11046,21 @@ "simple-get": "^3.0.2" }, "dependencies": { + "decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "dev": true, + "requires": { + "mimic-response": "^2.0.0" + } + }, + "mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -11062,6 +11077,17 @@ "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } + }, + "simple-get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", + "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "dev": true, + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } } } }, @@ -14290,91 +14316,88 @@ "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", "dev": true, "requires": { - "@isaacs/string-locale-compare": "*", - "@npmcli/arborist": "*", - "@npmcli/ci-detect": "*", - "@npmcli/config": "*", - "@npmcli/map-workspaces": "*", - "@npmcli/package-json": "*", - "@npmcli/run-script": "*", - "abbrev": "*", - "ansicolors": "*", - "ansistyles": "*", - "archy": "*", - "cacache": "*", - "chalk": "*", - "chownr": "*", - "cli-columns": "*", - "cli-table3": "*", - "columnify": "*", - "fastest-levenshtein": "*", - "glob": "*", - "graceful-fs": "*", - "hosted-git-info": "*", - "ini": "*", - "init-package-json": "*", - "is-cidr": "*", - "json-parse-even-better-errors": "*", - "libnpmaccess": "*", - "libnpmdiff": "*", - "libnpmexec": "*", - "libnpmfund": "*", - "libnpmhook": "*", - "libnpmorg": "*", - "libnpmpack": "*", - "libnpmpublish": "*", - "libnpmsearch": "*", - "libnpmteam": "*", - "libnpmversion": "*", - "make-fetch-happen": "*", - "minipass": "*", - "minipass-pipeline": "*", - "mkdirp": "*", - "mkdirp-infer-owner": "*", - "ms": "*", - "node-gyp": "*", - "nopt": "*", - "npm-audit-report": "*", - "npm-install-checks": "*", - "npm-package-arg": "*", - "npm-pick-manifest": "*", - "npm-profile": "*", - "npm-registry-fetch": "*", - "npm-user-validate": "*", - "npmlog": "*", - "opener": "*", - "pacote": "*", - "parse-conflict-json": "*", - "qrcode-terminal": "*", - "read": "*", - "read-package-json": "*", - "read-package-json-fast": "*", - "readdir-scoped-modules": "*", - "rimraf": "*", - "semver": "*", - "ssri": "*", - "tar": "*", - "text-table": "*", - "tiny-relative-date": "*", - "treeverse": "*", - "validate-npm-package-name": "*", - "which": "*", - "write-file-atomic": "*" + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^2.9.0", + "@npmcli/ci-detect": "^1.2.0", + "@npmcli/config": "^2.3.0", + "@npmcli/map-workspaces": "^1.0.4", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.6", + "abbrev": "~1.1.1", + "ansicolors": "~0.3.2", + "ansistyles": "~0.1.3", + "archy": "~1.0.0", + "cacache": "^15.3.0", + "chalk": "^4.1.2", + "chownr": "^2.0.0", + "cli-columns": "^3.1.2", + "cli-table3": "^0.6.0", + "columnify": "~1.5.4", + "fastest-levenshtein": "^1.0.12", + "glob": "^7.2.0", + "graceful-fs": "^4.2.8", + "hosted-git-info": "^4.0.2", + "ini": "^2.0.0", + "init-package-json": "^2.0.5", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^2.3.1", + "libnpmaccess": "^4.0.2", + "libnpmdiff": "^2.0.4", + "libnpmexec": "^2.0.1", + "libnpmfund": "^1.1.0", + "libnpmhook": "^6.0.2", + "libnpmorg": "^2.0.2", + "libnpmpack": "^2.0.1", + "libnpmpublish": "^4.0.1", + "libnpmsearch": "^3.1.1", + "libnpmteam": "^2.0.3", + "libnpmversion": "^1.2.1", + "make-fetch-happen": "^9.1.0", + "minipass": "^3.1.3", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "ms": "^2.1.2", + "node-gyp": "^7.1.2", + "nopt": "^5.0.0", + "npm-audit-report": "^2.1.5", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.1", + "npm-profile": "^5.0.3", + "npm-registry-fetch": "^11.0.0", + "npm-user-validate": "^1.0.1", + "npmlog": "^5.0.1", + "opener": "^1.5.2", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "qrcode-terminal": "^0.12.0", + "read": "~1.0.7", + "read-package-json": "^4.1.1", + "read-package-json-fast": "^2.0.3", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "tar": "^6.1.11", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^1.0.4", + "validate-npm-package-name": "~3.0.0", + "which": "^2.0.2", + "write-file-atomic": "^3.0.3" }, "dependencies": { "@gar/promisify": { "version": "1.1.2", - "bundled": true, "dev": true }, "@isaacs/string-locale-compare": { "version": "1.1.0", - "bundled": true, "dev": true }, "@npmcli/arborist": { "version": "2.9.0", - "bundled": true, "dev": true, "requires": { "@isaacs/string-locale-compare": "^1.0.1", @@ -14413,12 +14436,10 @@ }, "@npmcli/ci-detect": { "version": "1.3.0", - "bundled": true, "dev": true }, "@npmcli/config": { "version": "2.3.0", - "bundled": true, "dev": true, "requires": { "ini": "^2.0.0", @@ -14430,7 +14451,6 @@ }, "@npmcli/disparity-colors": { "version": "1.0.1", - "bundled": true, "dev": true, "requires": { "ansi-styles": "^4.3.0" @@ -14438,7 +14458,6 @@ }, "@npmcli/fs": { "version": "1.0.0", - "bundled": true, "dev": true, "requires": { "@gar/promisify": "^1.0.1", @@ -14447,7 +14466,6 @@ }, "@npmcli/git": { "version": "2.1.0", - "bundled": true, "dev": true, "requires": { "@npmcli/promise-spawn": "^1.3.2", @@ -14462,7 +14480,6 @@ }, "@npmcli/installed-package-contents": { "version": "1.0.7", - "bundled": true, "dev": true, "requires": { "npm-bundled": "^1.1.1", @@ -14471,7 +14488,6 @@ }, "@npmcli/map-workspaces": { "version": "1.0.4", - "bundled": true, "dev": true, "requires": { "@npmcli/name-from-folder": "^1.0.1", @@ -14482,7 +14498,6 @@ }, "@npmcli/metavuln-calculator": { "version": "1.1.1", - "bundled": true, "dev": true, "requires": { "cacache": "^15.0.5", @@ -14492,7 +14507,6 @@ }, "@npmcli/move-file": { "version": "1.1.2", - "bundled": true, "dev": true, "requires": { "mkdirp": "^1.0.4", @@ -14501,17 +14515,14 @@ }, "@npmcli/name-from-folder": { "version": "1.0.1", - "bundled": true, "dev": true }, "@npmcli/node-gyp": { "version": "1.0.2", - "bundled": true, "dev": true }, "@npmcli/package-json": { "version": "1.0.1", - "bundled": true, "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.1" @@ -14519,7 +14530,6 @@ }, "@npmcli/promise-spawn": { "version": "1.3.2", - "bundled": true, "dev": true, "requires": { "infer-owner": "^1.0.4" @@ -14527,7 +14537,6 @@ }, "@npmcli/run-script": { "version": "1.8.6", - "bundled": true, "dev": true, "requires": { "@npmcli/node-gyp": "^1.0.2", @@ -14538,17 +14547,14 @@ }, "@tootallnate/once": { "version": "1.1.2", - "bundled": true, "dev": true }, "abbrev": { "version": "1.1.1", - "bundled": true, "dev": true }, "agent-base": { "version": "6.0.2", - "bundled": true, "dev": true, "requires": { "debug": "4" @@ -14556,7 +14562,6 @@ }, "agentkeepalive": { "version": "4.1.4", - "bundled": true, "dev": true, "requires": { "debug": "^4.1.0", @@ -14566,7 +14571,6 @@ }, "aggregate-error": { "version": "3.1.0", - "bundled": true, "dev": true, "requires": { "clean-stack": "^2.0.0", @@ -14575,7 +14579,6 @@ }, "ajv": { "version": "6.12.6", - "bundled": true, "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -14586,12 +14589,10 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, "dev": true }, "ansi-styles": { "version": "4.3.0", - "bundled": true, "dev": true, "requires": { "color-convert": "^2.0.1" @@ -14599,27 +14600,22 @@ }, "ansicolors": { "version": "0.3.2", - "bundled": true, "dev": true }, "ansistyles": { "version": "0.1.3", - "bundled": true, "dev": true }, "aproba": { "version": "2.0.0", - "bundled": true, "dev": true }, "archy": { "version": "1.0.0", - "bundled": true, "dev": true }, "are-we-there-yet": { "version": "1.1.6", - "bundled": true, "dev": true, "requires": { "delegates": "^1.0.0", @@ -14628,12 +14624,10 @@ }, "asap": { "version": "2.0.6", - "bundled": true, "dev": true }, "asn1": { "version": "0.2.4", - "bundled": true, "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -14641,32 +14635,26 @@ }, "assert-plus": { "version": "1.0.0", - "bundled": true, "dev": true }, "asynckit": { "version": "0.4.0", - "bundled": true, "dev": true }, "aws-sign2": { "version": "0.7.0", - "bundled": true, "dev": true }, "aws4": { "version": "1.11.0", - "bundled": true, "dev": true }, "balanced-match": { "version": "1.0.2", - "bundled": true, "dev": true }, "bcrypt-pbkdf": { "version": "1.0.2", - "bundled": true, "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -14674,7 +14662,6 @@ }, "bin-links": { "version": "2.2.1", - "bundled": true, "dev": true, "requires": { "cmd-shim": "^4.0.1", @@ -14687,12 +14674,10 @@ }, "binary-extensions": { "version": "2.2.0", - "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", - "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -14701,12 +14686,10 @@ }, "builtins": { "version": "1.0.3", - "bundled": true, "dev": true }, "cacache": { "version": "15.3.0", - "bundled": true, "dev": true, "requires": { "@npmcli/fs": "^1.0.0", @@ -14731,12 +14714,10 @@ }, "caseless": { "version": "0.12.0", - "bundled": true, "dev": true }, "chalk": { "version": "4.1.2", - "bundled": true, "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -14745,12 +14726,10 @@ }, "chownr": { "version": "2.0.0", - "bundled": true, "dev": true }, "cidr-regex": { "version": "3.1.1", - "bundled": true, "dev": true, "requires": { "ip-regex": "^4.1.0" @@ -14758,12 +14737,10 @@ }, "clean-stack": { "version": "2.2.0", - "bundled": true, "dev": true }, "cli-columns": { "version": "3.1.2", - "bundled": true, "dev": true, "requires": { "string-width": "^2.0.0", @@ -14772,7 +14749,6 @@ }, "cli-table3": { "version": "0.6.0", - "bundled": true, "dev": true, "requires": { "colors": "^1.1.2", @@ -14782,17 +14758,14 @@ "dependencies": { "ansi-regex": { "version": "5.0.0", - "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", - "bundled": true, "dev": true }, "string-width": { "version": "4.2.2", - "bundled": true, "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -14802,7 +14775,6 @@ }, "strip-ansi": { "version": "6.0.0", - "bundled": true, "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -14812,12 +14784,10 @@ }, "clone": { "version": "1.0.4", - "bundled": true, "dev": true }, "cmd-shim": { "version": "4.1.0", - "bundled": true, "dev": true, "requires": { "mkdirp-infer-owner": "^2.0.0" @@ -14825,12 +14795,10 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, "dev": true }, "color-convert": { "version": "2.0.1", - "bundled": true, "dev": true, "requires": { "color-name": "~1.1.4" @@ -14838,23 +14806,19 @@ }, "color-name": { "version": "1.1.4", - "bundled": true, "dev": true }, "color-support": { "version": "1.1.3", - "bundled": true, "dev": true }, "colors": { "version": "1.4.0", - "bundled": true, "dev": true, "optional": true }, "columnify": { "version": "1.5.4", - "bundled": true, "dev": true, "requires": { "strip-ansi": "^3.0.0", @@ -14863,7 +14827,6 @@ }, "combined-stream": { "version": "1.0.8", - "bundled": true, "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -14871,27 +14834,22 @@ }, "common-ancestor-path": { "version": "1.0.1", - "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "bundled": true, "dev": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, "dev": true }, "core-util-is": { "version": "1.0.2", - "bundled": true, "dev": true }, "dashdash": { "version": "1.14.1", - "bundled": true, "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -14899,7 +14857,6 @@ }, "debug": { "version": "4.3.2", - "bundled": true, "dev": true, "requires": { "ms": "2.1.2" @@ -14907,19 +14864,16 @@ "dependencies": { "ms": { "version": "2.1.2", - "bundled": true, "dev": true } } }, "debuglog": { "version": "1.0.1", - "bundled": true, "dev": true }, "defaults": { "version": "1.0.3", - "bundled": true, "dev": true, "requires": { "clone": "^1.0.2" @@ -14927,22 +14881,18 @@ }, "delayed-stream": { "version": "1.0.0", - "bundled": true, "dev": true }, "delegates": { "version": "1.0.0", - "bundled": true, "dev": true }, "depd": { "version": "1.1.2", - "bundled": true, "dev": true }, "dezalgo": { "version": "1.0.3", - "bundled": true, "dev": true, "requires": { "asap": "^2.0.0", @@ -14951,12 +14901,10 @@ }, "diff": { "version": "5.0.0", - "bundled": true, "dev": true }, "ecc-jsbn": { "version": "0.1.2", - "bundled": true, "dev": true, "requires": { "jsbn": "~0.1.0", @@ -14965,12 +14913,10 @@ }, "emoji-regex": { "version": "8.0.0", - "bundled": true, "dev": true }, "encoding": { "version": "0.1.13", - "bundled": true, "dev": true, "optional": true, "requires": { @@ -14979,47 +14925,38 @@ }, "env-paths": { "version": "2.2.1", - "bundled": true, "dev": true }, "err-code": { "version": "2.0.3", - "bundled": true, "dev": true }, "extend": { "version": "3.0.2", - "bundled": true, "dev": true }, "extsprintf": { "version": "1.3.0", - "bundled": true, "dev": true }, "fast-deep-equal": { "version": "3.1.3", - "bundled": true, "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", - "bundled": true, "dev": true }, "fastest-levenshtein": { "version": "1.0.12", - "bundled": true, "dev": true }, "forever-agent": { "version": "0.6.1", - "bundled": true, "dev": true }, "fs-minipass": { "version": "2.1.0", - "bundled": true, "dev": true, "requires": { "minipass": "^3.0.0" @@ -15027,17 +14964,14 @@ }, "fs.realpath": { "version": "1.0.0", - "bundled": true, "dev": true }, "function-bind": { "version": "1.1.1", - "bundled": true, "dev": true }, "gauge": { "version": "3.0.1", - "bundled": true, "dev": true, "requires": { "aproba": "^1.0.3 || ^2.0.0", @@ -15053,7 +14987,6 @@ }, "getpass": { "version": "0.1.7", - "bundled": true, "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -15061,7 +14994,6 @@ }, "glob": { "version": "7.2.0", - "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -15074,17 +15006,14 @@ }, "graceful-fs": { "version": "4.2.8", - "bundled": true, "dev": true }, "har-schema": { "version": "2.0.0", - "bundled": true, "dev": true }, "har-validator": { "version": "5.1.5", - "bundled": true, "dev": true, "requires": { "ajv": "^6.12.3", @@ -15093,7 +15022,6 @@ }, "has": { "version": "1.0.3", - "bundled": true, "dev": true, "requires": { "function-bind": "^1.1.1" @@ -15101,17 +15029,14 @@ }, "has-flag": { "version": "4.0.0", - "bundled": true, "dev": true }, "has-unicode": { "version": "2.0.1", - "bundled": true, "dev": true }, "hosted-git-info": { "version": "4.0.2", - "bundled": true, "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -15119,12 +15044,10 @@ }, "http-cache-semantics": { "version": "4.1.0", - "bundled": true, "dev": true }, "http-proxy-agent": { "version": "4.0.1", - "bundled": true, "dev": true, "requires": { "@tootallnate/once": "1", @@ -15134,7 +15057,6 @@ }, "http-signature": { "version": "1.2.0", - "bundled": true, "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -15144,7 +15066,6 @@ }, "https-proxy-agent": { "version": "5.0.0", - "bundled": true, "dev": true, "requires": { "agent-base": "6", @@ -15153,7 +15074,6 @@ }, "humanize-ms": { "version": "1.2.1", - "bundled": true, "dev": true, "requires": { "ms": "^2.0.0" @@ -15161,7 +15081,6 @@ }, "iconv-lite": { "version": "0.6.3", - "bundled": true, "dev": true, "optional": true, "requires": { @@ -15170,7 +15089,6 @@ }, "ignore-walk": { "version": "3.0.4", - "bundled": true, "dev": true, "requires": { "minimatch": "^3.0.4" @@ -15178,22 +15096,18 @@ }, "imurmurhash": { "version": "0.1.4", - "bundled": true, "dev": true }, "indent-string": { "version": "4.0.0", - "bundled": true, "dev": true }, "infer-owner": { "version": "1.0.4", - "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -15202,17 +15116,14 @@ }, "inherits": { "version": "2.0.4", - "bundled": true, "dev": true }, "ini": { "version": "2.0.0", - "bundled": true, "dev": true }, "init-package-json": { "version": "2.0.5", - "bundled": true, "dev": true, "requires": { "npm-package-arg": "^8.1.5", @@ -15226,17 +15137,14 @@ }, "ip": { "version": "1.1.5", - "bundled": true, "dev": true }, "ip-regex": { "version": "4.3.0", - "bundled": true, "dev": true }, "is-cidr": { "version": "4.0.2", - "bundled": true, "dev": true, "requires": { "cidr-regex": "^3.1.1" @@ -15244,7 +15152,6 @@ }, "is-core-module": { "version": "2.7.0", - "bundled": true, "dev": true, "requires": { "has": "^1.0.3" @@ -15252,67 +15159,54 @@ }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, "dev": true }, "is-lambda": { "version": "1.0.1", - "bundled": true, "dev": true }, "is-typedarray": { "version": "1.0.0", - "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "bundled": true, "dev": true }, "isstream": { "version": "0.1.2", - "bundled": true, "dev": true }, "jsbn": { "version": "0.1.1", - "bundled": true, "dev": true }, "json-parse-even-better-errors": { "version": "2.3.1", - "bundled": true, "dev": true }, "json-schema": { "version": "0.2.3", - "bundled": true, "dev": true }, "json-schema-traverse": { "version": "0.4.1", - "bundled": true, "dev": true }, "json-stringify-nice": { "version": "1.1.4", - "bundled": true, "dev": true }, "json-stringify-safe": { "version": "5.0.1", - "bundled": true, "dev": true }, "jsonparse": { "version": "1.3.1", - "bundled": true, "dev": true }, "jsprim": { "version": "1.4.1", - "bundled": true, "dev": true, "requires": { "assert-plus": "1.0.0", @@ -15323,17 +15217,14 @@ }, "just-diff": { "version": "3.1.1", - "bundled": true, "dev": true }, "just-diff-apply": { "version": "3.0.0", - "bundled": true, "dev": true }, "libnpmaccess": { "version": "4.0.3", - "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", @@ -15344,7 +15235,6 @@ }, "libnpmdiff": { "version": "2.0.4", - "bundled": true, "dev": true, "requires": { "@npmcli/disparity-colors": "^1.0.1", @@ -15359,7 +15249,6 @@ }, "libnpmexec": { "version": "2.0.1", - "bundled": true, "dev": true, "requires": { "@npmcli/arborist": "^2.3.0", @@ -15377,7 +15266,6 @@ }, "libnpmfund": { "version": "1.1.0", - "bundled": true, "dev": true, "requires": { "@npmcli/arborist": "^2.5.0" @@ -15385,7 +15273,6 @@ }, "libnpmhook": { "version": "6.0.3", - "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", @@ -15394,7 +15281,6 @@ }, "libnpmorg": { "version": "2.0.3", - "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", @@ -15403,7 +15289,6 @@ }, "libnpmpack": { "version": "2.0.1", - "bundled": true, "dev": true, "requires": { "@npmcli/run-script": "^1.8.3", @@ -15413,7 +15298,6 @@ }, "libnpmpublish": { "version": "4.0.2", - "bundled": true, "dev": true, "requires": { "normalize-package-data": "^3.0.2", @@ -15425,7 +15309,6 @@ }, "libnpmsearch": { "version": "3.1.2", - "bundled": true, "dev": true, "requires": { "npm-registry-fetch": "^11.0.0" @@ -15433,7 +15316,6 @@ }, "libnpmteam": { "version": "2.0.4", - "bundled": true, "dev": true, "requires": { "aproba": "^2.0.0", @@ -15442,7 +15324,6 @@ }, "libnpmversion": { "version": "1.2.1", - "bundled": true, "dev": true, "requires": { "@npmcli/git": "^2.0.7", @@ -15454,7 +15335,6 @@ }, "lru-cache": { "version": "6.0.0", - "bundled": true, "dev": true, "requires": { "yallist": "^4.0.0" @@ -15462,7 +15342,6 @@ }, "make-fetch-happen": { "version": "9.1.0", - "bundled": true, "dev": true, "requires": { "agentkeepalive": "^4.1.3", @@ -15485,12 +15364,10 @@ }, "mime-db": { "version": "1.49.0", - "bundled": true, "dev": true }, "mime-types": { "version": "2.1.32", - "bundled": true, "dev": true, "requires": { "mime-db": "1.49.0" @@ -15498,7 +15375,6 @@ }, "minimatch": { "version": "3.0.4", - "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -15506,7 +15382,6 @@ }, "minipass": { "version": "3.1.5", - "bundled": true, "dev": true, "requires": { "yallist": "^4.0.0" @@ -15514,7 +15389,6 @@ }, "minipass-collect": { "version": "1.0.2", - "bundled": true, "dev": true, "requires": { "minipass": "^3.0.0" @@ -15522,7 +15396,6 @@ }, "minipass-fetch": { "version": "1.4.1", - "bundled": true, "dev": true, "requires": { "encoding": "^0.1.12", @@ -15533,7 +15406,6 @@ }, "minipass-flush": { "version": "1.0.5", - "bundled": true, "dev": true, "requires": { "minipass": "^3.0.0" @@ -15541,7 +15413,6 @@ }, "minipass-json-stream": { "version": "1.0.1", - "bundled": true, "dev": true, "requires": { "jsonparse": "^1.3.1", @@ -15550,7 +15421,6 @@ }, "minipass-pipeline": { "version": "1.2.4", - "bundled": true, "dev": true, "requires": { "minipass": "^3.0.0" @@ -15558,7 +15428,6 @@ }, "minipass-sized": { "version": "1.0.3", - "bundled": true, "dev": true, "requires": { "minipass": "^3.0.0" @@ -15566,7 +15435,6 @@ }, "minizlib": { "version": "2.1.2", - "bundled": true, "dev": true, "requires": { "minipass": "^3.0.0", @@ -15575,12 +15443,10 @@ }, "mkdirp": { "version": "1.0.4", - "bundled": true, "dev": true }, "mkdirp-infer-owner": { "version": "2.0.0", - "bundled": true, "dev": true, "requires": { "chownr": "^2.0.0", @@ -15590,22 +15456,18 @@ }, "ms": { "version": "2.1.3", - "bundled": true, "dev": true }, "mute-stream": { "version": "0.0.8", - "bundled": true, "dev": true }, "negotiator": { "version": "0.6.2", - "bundled": true, "dev": true }, "node-gyp": { "version": "7.1.2", - "bundled": true, "dev": true, "requires": { "env-paths": "^2.2.0", @@ -15622,12 +15484,10 @@ "dependencies": { "aproba": { "version": "1.2.0", - "bundled": true, "dev": true }, "gauge": { "version": "2.7.4", - "bundled": true, "dev": true, "requires": { "aproba": "^1.0.3", @@ -15642,7 +15502,6 @@ }, "is-fullwidth-code-point": { "version": "1.0.0", - "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -15650,7 +15509,6 @@ }, "npmlog": { "version": "4.1.2", - "bundled": true, "dev": true, "requires": { "are-we-there-yet": "~1.1.2", @@ -15661,7 +15519,6 @@ }, "string-width": { "version": "1.0.2", - "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -15673,7 +15530,6 @@ }, "nopt": { "version": "5.0.0", - "bundled": true, "dev": true, "requires": { "abbrev": "1" @@ -15681,7 +15537,6 @@ }, "normalize-package-data": { "version": "3.0.3", - "bundled": true, "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -15692,7 +15547,6 @@ }, "npm-audit-report": { "version": "2.1.5", - "bundled": true, "dev": true, "requires": { "chalk": "^4.0.0" @@ -15700,7 +15554,6 @@ }, "npm-bundled": { "version": "1.1.2", - "bundled": true, "dev": true, "requires": { "npm-normalize-package-bin": "^1.0.1" @@ -15708,7 +15561,6 @@ }, "npm-install-checks": { "version": "4.0.0", - "bundled": true, "dev": true, "requires": { "semver": "^7.1.1" @@ -15716,12 +15568,10 @@ }, "npm-normalize-package-bin": { "version": "1.0.1", - "bundled": true, "dev": true }, "npm-package-arg": { "version": "8.1.5", - "bundled": true, "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -15731,7 +15581,6 @@ }, "npm-packlist": { "version": "2.2.2", - "bundled": true, "dev": true, "requires": { "glob": "^7.1.6", @@ -15742,7 +15591,6 @@ }, "npm-pick-manifest": { "version": "6.1.1", - "bundled": true, "dev": true, "requires": { "npm-install-checks": "^4.0.0", @@ -15753,7 +15601,6 @@ }, "npm-profile": { "version": "5.0.4", - "bundled": true, "dev": true, "requires": { "npm-registry-fetch": "^11.0.0" @@ -15761,7 +15608,6 @@ }, "npm-registry-fetch": { "version": "11.0.0", - "bundled": true, "dev": true, "requires": { "make-fetch-happen": "^9.0.1", @@ -15774,12 +15620,10 @@ }, "npm-user-validate": { "version": "1.0.1", - "bundled": true, "dev": true }, "npmlog": { "version": "5.0.1", - "bundled": true, "dev": true, "requires": { "are-we-there-yet": "^2.0.0", @@ -15790,7 +15634,6 @@ "dependencies": { "are-we-there-yet": { "version": "2.0.0", - "bundled": true, "dev": true, "requires": { "delegates": "^1.0.0", @@ -15801,22 +15644,18 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, "dev": true }, "oauth-sign": { "version": "0.9.0", - "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", - "bundled": true, "dev": true }, "once": { "version": "1.4.0", - "bundled": true, "dev": true, "requires": { "wrappy": "1" @@ -15824,12 +15663,10 @@ }, "opener": { "version": "1.5.2", - "bundled": true, "dev": true }, "p-map": { "version": "4.0.0", - "bundled": true, "dev": true, "requires": { "aggregate-error": "^3.0.0" @@ -15837,7 +15674,6 @@ }, "pacote": { "version": "11.3.5", - "bundled": true, "dev": true, "requires": { "@npmcli/git": "^2.1.0", @@ -15863,7 +15699,6 @@ }, "parse-conflict-json": { "version": "1.1.1", - "bundled": true, "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.0", @@ -15873,37 +15708,30 @@ }, "path-is-absolute": { "version": "1.0.1", - "bundled": true, "dev": true }, "performance-now": { "version": "2.1.0", - "bundled": true, "dev": true }, "proc-log": { "version": "1.0.0", - "bundled": true, "dev": true }, "promise-all-reject-late": { "version": "1.0.1", - "bundled": true, "dev": true }, "promise-call-limit": { "version": "1.0.1", - "bundled": true, "dev": true }, "promise-inflight": { "version": "1.0.1", - "bundled": true, "dev": true }, "promise-retry": { "version": "2.0.1", - "bundled": true, "dev": true, "requires": { "err-code": "^2.0.2", @@ -15912,7 +15740,6 @@ }, "promzard": { "version": "0.3.0", - "bundled": true, "dev": true, "requires": { "read": "1" @@ -15920,27 +15747,22 @@ }, "psl": { "version": "1.8.0", - "bundled": true, "dev": true }, "punycode": { "version": "2.1.1", - "bundled": true, "dev": true }, "qrcode-terminal": { "version": "0.12.0", - "bundled": true, "dev": true }, "qs": { "version": "6.5.2", - "bundled": true, "dev": true }, "read": { "version": "1.0.7", - "bundled": true, "dev": true, "requires": { "mute-stream": "~0.0.4" @@ -15948,12 +15770,10 @@ }, "read-cmd-shim": { "version": "2.0.0", - "bundled": true, "dev": true }, "read-package-json": { "version": "4.1.1", - "bundled": true, "dev": true, "requires": { "glob": "^7.1.1", @@ -15964,7 +15784,6 @@ }, "read-package-json-fast": { "version": "2.0.3", - "bundled": true, "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.0", @@ -15973,7 +15792,6 @@ }, "readable-stream": { "version": "3.6.0", - "bundled": true, "dev": true, "requires": { "inherits": "^2.0.3", @@ -15983,7 +15801,6 @@ }, "readdir-scoped-modules": { "version": "1.1.0", - "bundled": true, "dev": true, "requires": { "debuglog": "^1.0.1", @@ -15994,7 +15811,6 @@ }, "request": { "version": "2.88.2", - "bundled": true, "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -16021,7 +15837,6 @@ "dependencies": { "form-data": { "version": "2.3.3", - "bundled": true, "dev": true, "requires": { "asynckit": "^0.4.0", @@ -16031,7 +15846,6 @@ }, "tough-cookie": { "version": "2.5.0", - "bundled": true, "dev": true, "requires": { "psl": "^1.1.28", @@ -16042,12 +15856,10 @@ }, "retry": { "version": "0.12.0", - "bundled": true, "dev": true }, "rimraf": { "version": "3.0.2", - "bundled": true, "dev": true, "requires": { "glob": "^7.1.3" @@ -16055,17 +15867,14 @@ }, "safe-buffer": { "version": "5.2.1", - "bundled": true, "dev": true }, "safer-buffer": { "version": "2.1.2", - "bundled": true, "dev": true }, "semver": { "version": "7.3.5", - "bundled": true, "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -16073,22 +15882,18 @@ }, "set-blocking": { "version": "2.0.0", - "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.3", - "bundled": true, "dev": true }, "smart-buffer": { "version": "4.2.0", - "bundled": true, "dev": true }, "socks": { "version": "2.6.1", - "bundled": true, "dev": true, "requires": { "ip": "^1.1.5", @@ -16097,7 +15902,6 @@ }, "socks-proxy-agent": { "version": "6.1.0", - "bundled": true, "dev": true, "requires": { "agent-base": "^6.0.2", @@ -16107,7 +15911,6 @@ }, "spdx-correct": { "version": "3.1.1", - "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -16116,12 +15919,10 @@ }, "spdx-exceptions": { "version": "2.3.0", - "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.1", - "bundled": true, "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -16130,12 +15931,10 @@ }, "spdx-license-ids": { "version": "3.0.10", - "bundled": true, "dev": true }, "sshpk": { "version": "1.16.1", - "bundled": true, "dev": true, "requires": { "asn1": "~0.2.3", @@ -16151,7 +15950,6 @@ }, "ssri": { "version": "8.0.1", - "bundled": true, "dev": true, "requires": { "minipass": "^3.1.1" @@ -16159,7 +15957,6 @@ }, "string-width": { "version": "2.1.1", - "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -16168,12 +15965,10 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "bundled": true, "dev": true }, "strip-ansi": { "version": "4.0.0", - "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -16183,7 +15978,6 @@ }, "string_decoder": { "version": "1.3.0", - "bundled": true, "dev": true, "requires": { "safe-buffer": "~5.2.0" @@ -16191,12 +15985,10 @@ }, "stringify-package": { "version": "1.0.1", - "bundled": true, "dev": true }, "strip-ansi": { "version": "3.0.1", - "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -16204,7 +15996,6 @@ }, "supports-color": { "version": "7.2.0", - "bundled": true, "dev": true, "requires": { "has-flag": "^4.0.0" @@ -16212,7 +16003,6 @@ }, "tar": { "version": "6.1.11", - "bundled": true, "dev": true, "requires": { "chownr": "^2.0.0", @@ -16225,22 +16015,18 @@ }, "text-table": { "version": "0.2.0", - "bundled": true, "dev": true }, "tiny-relative-date": { "version": "1.3.0", - "bundled": true, "dev": true }, "treeverse": { "version": "1.0.4", - "bundled": true, "dev": true }, "tunnel-agent": { "version": "0.6.0", - "bundled": true, "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -16248,12 +16034,10 @@ }, "tweetnacl": { "version": "0.14.5", - "bundled": true, "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", - "bundled": true, "dev": true, "requires": { "is-typedarray": "^1.0.0" @@ -16261,7 +16045,6 @@ }, "unique-filename": { "version": "1.1.1", - "bundled": true, "dev": true, "requires": { "unique-slug": "^2.0.0" @@ -16269,7 +16052,6 @@ }, "unique-slug": { "version": "2.0.2", - "bundled": true, "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -16277,7 +16059,6 @@ }, "uri-js": { "version": "4.4.1", - "bundled": true, "dev": true, "requires": { "punycode": "^2.1.0" @@ -16285,17 +16066,14 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true, "dev": true }, "uuid": { "version": "3.4.0", - "bundled": true, "dev": true }, "validate-npm-package-license": { "version": "3.0.4", - "bundled": true, "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -16304,7 +16082,6 @@ }, "validate-npm-package-name": { "version": "3.0.0", - "bundled": true, "dev": true, "requires": { "builtins": "^1.0.3" @@ -16312,7 +16089,6 @@ }, "verror": { "version": "1.10.0", - "bundled": true, "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -16322,12 +16098,10 @@ }, "walk-up-path": { "version": "1.0.0", - "bundled": true, "dev": true }, "wcwidth": { "version": "1.0.1", - "bundled": true, "dev": true, "requires": { "defaults": "^1.0.3" @@ -16335,7 +16109,6 @@ }, "which": { "version": "2.0.2", - "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -16343,7 +16116,6 @@ }, "wide-align": { "version": "1.1.3", - "bundled": true, "dev": true, "requires": { "string-width": "^1.0.2 || 2" @@ -16351,12 +16123,10 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, "dev": true }, "write-file-atomic": { "version": "3.0.3", - "bundled": true, "dev": true, "requires": { "imurmurhash": "^0.1.4", @@ -16367,7 +16137,6 @@ }, "yallist": { "version": "4.0.0", - "bundled": true, "dev": true } } @@ -18964,31 +18733,14 @@ "dev": true }, "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "dev": true, "requires": { - "decompress-response": "^4.2.0", + "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" - }, - "dependencies": { - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "requires": { - "mimic-response": "^2.0.0" - } - }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true - } } }, "sisteransi": { diff --git a/package.json b/package.json index 1a26f424d..453c910a5 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "markdown-it": ">=12.3.2", "nanoid": ">=3.1.31", "shelljs": ">=0.8.5", + "simple-get": ">=4.0.1", "@babel/core": "latest", "@babel/eslint-parser": "latest", "@cparra/apexdocs": "latest", From 4f41ad5ef3b3bbe7e09af04b588436cab55505a7 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Thu, 10 Feb 2022 22:12:04 -0500 Subject: [PATCH 37/73] Fixed #279 by adding a new settings field DefaultLogScenario__c and new method Logger.getScenario() --- .../DefaultLogScenario__c.field-meta.xml | 13 +++++++++++ .../log-management/classes/LogHandler.cls | 20 ++++++++--------- .../classes/LoggerSettingsController.cls | 4 ++-- .../loggerSettingsPageLayout.js | 6 +++-- .../main/logger-engine/classes/Logger.cls | 11 +++++++++- .../tests/common/classes/LoggerTestUtils.cls | 2 -- .../logger-engine/classes/Logger_Tests.cls | 22 +++++++++++++++++++ 7 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogScenario__c.field-meta.xml diff --git a/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogScenario__c.field-meta.xml b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogScenario__c.field-meta.xml new file mode 100644 index 000000000..299d2a5b7 --- /dev/null +++ b/nebula-logger/core/main/configuration/objects/LoggerSettings__c/fields/DefaultLogScenario__c.field-meta.xml @@ -0,0 +1,13 @@ + + + DefaultLogScenario__c + Sets a default scenario for the transaction + false + Sets a default scenario for the transaction + + 255 + false + false + Text + false + diff --git a/nebula-logger/core/main/log-management/classes/LogHandler.cls b/nebula-logger/core/main/log-management/classes/LogHandler.cls index 704d2919b..b1bcd6cc4 100644 --- a/nebula-logger/core/main/log-management/classes/LogHandler.cls +++ b/nebula-logger/core/main/log-management/classes/LogHandler.cls @@ -184,6 +184,16 @@ public without sharing class LogHandler extends LoggerSObjectHandler { Database.insert(logShares, false); } + private static Map loadActiveLogStatuses() { + Map logStatusNameToStatus = new Map(); + for (LogStatus__mdt logStatus : LogStatus__mdt.getAll().values()) { + if (logStatus.IsActive__c == true) { + logStatusNameToStatus.put(logStatus.MasterLabel, logStatus); + } + } + return logStatusNameToStatus; + } + private static Map queryQueues(List possibleQueueNames) { Map queuesByDeveloperName = new Map(); for (Group queue : [SELECT Id, DeveloperName FROM Group WHERE Type = 'Queue' AND DeveloperName IN :possibleQueueNames]) { @@ -223,14 +233,4 @@ public without sharing class LogHandler extends LoggerSObjectHandler { private static void setMockScenarioRule(LogScenarioRule__mdt scenarioRule) { SCENARIO_TO_MOCK_SCENARIO_RULE.put(scenarioRule.Scenario__c, scenarioRule); } - - private static Map loadActiveLogStatuses() { - Map logStatusNameToStatus = new Map(); - for (LogStatus__mdt logStatus : LogStatus__mdt.getAll().values()) { - if (logStatus.IsActive__c == true) { - logStatusNameToStatus.put(logStatus.MasterLabel, logStatus); - } - } - return logStatusNameToStatus; - } } diff --git a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls index 2641f16d9..24ada1915 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls +++ b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls @@ -70,7 +70,7 @@ public without sharing class LoggerSettingsController { * @description Creates a new, unsaved `LoggerSettings__c` record * @return A new `LoggerSettings__c` record, with all fields populated with default values */ - @AuraEnabled + @AuraEnabled(cacheable=true) public static LoggerSettings__c createRecord() { return (LoggerSettings__c) Schema.LoggerSettings__c.SObjectType.newSObject(null, true); } @@ -110,7 +110,7 @@ public without sharing class LoggerSettingsController { * @description Returns the `Organization` record for the current environment * @return The current environment's `Organization` record */ - @AuraEnabled + @AuraEnabled(cacheable=true) public static Organization getOrganization() { return [SELECT Id, Name FROM Organization]; } diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js index 03e1de77a..b99721237 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettingsPageLayout.js @@ -41,7 +41,7 @@ const PAGE_LAYOUT_CONFIG = { showInReadOnlyMode: true, showInEditMode: true, columns: [ - { fieldApiNames: ['DefaultNumberOfDaysToRetainLogs__c'], size: 6 }, + { fieldApiNames: ['DefaultNumberOfDaysToRetainLogs__c', 'DefaultLogScenario__c'], size: 6 }, { fieldApiNames: ['DefaultLogShareAccessLevel__c', 'DefaultLogOwner__c'], size: 6 } ] } @@ -122,5 +122,7 @@ const LoggerSettingsPageLayout = class { }; export function generatePageLayout(sobjectSchema, apexPicklistOptions, isReadOnlyMode, record) { - return new LoggerSettingsPageLayout(sobjectSchema, apexPicklistOptions, isReadOnlyMode, record); + const layout = new LoggerSettingsPageLayout(sobjectSchema, apexPicklistOptions, isReadOnlyMode, record); + console.info('finished generating layout', layout); + return layout; } diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls b/nebula-logger/core/main/logger-engine/classes/Logger.cls index 5bcbfa834..8914bd751 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls @@ -25,7 +25,7 @@ global with sharing class Logger { private static Integer currentTransactionEntryNumber = 1; private static String parentLogTransactionId; - private static String transactionScenario; + private static String transactionScenario = getUserSettings().DefaultLogScenario__c; private static Boolean suspendSaving = false; private static LoggerSettings__c userSettings; @@ -2450,6 +2450,15 @@ global with sharing class Logger { } // Save control methods + /** + * @description Returns the scenario name for the current transaction - this is stored in `LogEntryEvent__e.Scenario__c` + * and `Log__c.Scenario__c`, and can be used to filter & group logs + * @return The value currently set as the current transaction's scenario + */ + global static String getScenario() { + return transactionScenario; + } + /** * @description Sets the scenario name for the current transaction - this is stored in `LogEntryEvent__e.Scenario__c` * and `Log__c.Scenario__c`, and can be used to filter & group logs diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls index d83d199fc..75ff3cd5c 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls @@ -8,8 +8,6 @@ public class LoggerTestUtils { private static final Map SOBJECT_TYPE_TO_MOCK_ID_COUNT = new Map(); - private static Boolean cacheQueries = true; - // Lazy-load & cache permission sets & profiles private static final Map PERMISSION_SETS_BY_NAME { get { diff --git a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls index 05f5d1647..3b8487d71 100644 --- a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls +++ b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls @@ -324,6 +324,25 @@ private class Logger_Tests { } } + @IsTest + static void it_should_default_scenario_when_configured() { + String transactionScenarioName = 'some test scenario for this transaction'; + LoggerSettings__c userSettings = LoggerSettings__c.getInstance(); + userSettings.DefaultLogScenario__c = transactionScenarioName; + upsert userSettings; + + String transactionId = Logger.getTransactionId(); + for (Integer i = 0; i < 5; i++) { + Logger.info('my log entry'); + } + Logger.saveLog(); + System.assertEquals(transactionScenarioName, Logger.getScenario()); + Test.getEventBus().deliver(); + + Log__c log = [SELECT Id, Scenario__c FROM Log__c WHERE TransactionId__c = :transactionId]; + System.assertEquals(transactionScenarioName, log.Scenario__c, 'Scenario__c was not properly set on the Log__c record'); + } + @IsTest static void it_should_set_scenario() { String transactionId = Logger.getTransactionId(); @@ -334,6 +353,7 @@ private class Logger_Tests { Logger.info('my log entry'); } Logger.saveLog(); + System.assertEquals(transactionScenarioName, Logger.getScenario()); Test.getEventBus().deliver(); Log__c log = [SELECT Id, Scenario__c FROM Log__c WHERE TransactionId__c = :transactionId]; @@ -354,6 +374,7 @@ private class Logger_Tests { Logger.finer('my log entry'); } Logger.saveLog(); + System.assertEquals(transactionScenarioName, Logger.getScenario()); Test.getEventBus().deliver(); Log__c log = [SELECT Id, Scenario__c FROM Log__c WHERE TransactionId__c = :transactionId]; @@ -376,6 +397,7 @@ private class Logger_Tests { } Logger.setScenario(lastTransactionScenarioName); Logger.saveLog(); + System.assertEquals(lastTransactionScenarioName, Logger.getScenario()); Test.getEventBus().deliver(); Log__c log = [SELECT Id, Scenario__c FROM Log__c WHERE TransactionId__c = :transactionId]; From 692f38a3e1e3a35502b7dbc1dc6a79380d980038 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Mon, 14 Feb 2022 10:26:45 -0500 Subject: [PATCH 38/73] Added missing test in LogEntryTagHandler_Tests for updating records --- .../classes/LogEntryTagHandler_Tests.cls | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls b/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls index 2be6cd3d1..646b1ab3f 100644 --- a/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls +++ b/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls @@ -28,7 +28,7 @@ private class LogEntryTagHandler_Tests { } @IsTest - static void it_should_set_unique_id() { + static void it_should_set_unique_id_on_insert() { LogEntry__c logEntry = [SELECT Id FROM LogEntry__c LIMIT 1]; LoggerTag__c tag = [SELECT Id FROM LoggerTag__c LIMIT 1]; @@ -39,6 +39,20 @@ private class LogEntryTagHandler_Tests { System.assertEquals(logEntry.Id + '' + tag.Id, logEntryTag.UniqueId__c); } + @IsTest + static void it_should_set_unique_id_on_update() { + LogEntry__c logEntry = [SELECT Id FROM LogEntry__c LIMIT 1]; + LoggerTag__c tag = [SELECT Id FROM LoggerTag__c LIMIT 1]; + + LogEntryTag__c logEntryTag = new LogEntryTag__c(LogEntry__c = logEntry.Id, Tag__c = tag.Id); + insert logEntryTag; + logEntryTag.UniqueId__c = 'something else'; + update logEntryTag; + + logEntryTag = [SELECT Id, LogEntry__c, Tag__c, UniqueId__c FROM LogEntryTag__c WHERE Id = :logEntryTag.Id]; + System.assertEquals(logEntry.Id + '' + tag.Id, logEntryTag.UniqueId__c); + } + @IsTest static void it_should_not_insert_duplicate_tag() { LogEntry__c logEntry = [SELECT Id FROM LogEntry__c LIMIT 1]; From 3b85176133b752cd1abaf7c517476d7236404db5 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Mon, 14 Feb 2022 10:29:42 -0500 Subject: [PATCH 39/73] Bumped all metadata to v54.0 (Summer '22 release), closed #263 by adding new keyword "ancestorVersion": "HIGHEST" in both sfdx-project.json files --- .../main/configuration/classes/LoggerEmailUtils.cls-meta.xml | 2 +- .../main/configuration/classes/LoggerParameter.cls-meta.xml | 2 +- .../log-management/classes/LogBatchPurgeScheduler.cls-meta.xml | 2 +- .../main/log-management/classes/LogBatchPurger.cls-meta.xml | 2 +- .../log-management/classes/LogEntryEventHandler.cls-meta.xml | 2 +- .../classes/LogEntryFieldSetPicklist.cls-meta.xml | 2 +- .../main/log-management/classes/LogEntryHandler.cls-meta.xml | 2 +- .../log-management/classes/LogEntryTagHandler.cls-meta.xml | 2 +- .../core/main/log-management/classes/LogHandler.cls-meta.xml | 2 +- .../log-management/classes/LogMassDeleteExtension.cls-meta.xml | 2 +- .../log-management/classes/LoggerSObjectHandler.cls-meta.xml | 2 +- .../log-management/classes/LoggerSObjectMetadata.cls-meta.xml | 2 +- .../classes/LoggerSettingsController.cls-meta.xml | 2 +- .../main/log-management/classes/LoggerTagHandler.cls-meta.xml | 2 +- .../classes/RelatedLogEntriesController.cls-meta.xml | 2 +- .../lwc/logEntryEventStream/logEntryEventStream.js-meta.xml | 2 +- .../core/main/log-management/lwc/logJSON/logJSON.js-meta.xml | 2 +- .../lwc/loggerSettings/loggerSettings.js-meta.xml | 2 +- .../lwc/relatedLogEntries/relatedLogEntries.js-meta.xml | 2 +- .../core/main/log-management/pages/LogMassDelete.page-meta.xml | 2 +- .../core/main/log-management/triggers/Log.trigger-meta.xml | 2 +- .../main/log-management/triggers/LogEntry.trigger-meta.xml | 2 +- .../log-management/triggers/LogEntryEvent.trigger-meta.xml | 2 +- .../main/log-management/triggers/LogEntryTag.trigger-meta.xml | 2 +- .../main/log-management/triggers/LoggerTag.trigger-meta.xml | 2 +- .../main/logger-engine/classes/ComponentLogger.cls-meta.xml | 2 +- .../logger-engine/classes/FlowCollectionLogEntry.cls-meta.xml | 2 +- .../core/main/logger-engine/classes/FlowLogEntry.cls-meta.xml | 2 +- .../core/main/logger-engine/classes/FlowLogger.cls-meta.xml | 2 +- .../main/logger-engine/classes/FlowRecordLogEntry.cls-meta.xml | 2 +- .../logger-engine/classes/LogEntryEventBuilder.cls-meta.xml | 2 +- .../core/main/logger-engine/classes/LogMessage.cls-meta.xml | 2 +- .../core/main/logger-engine/classes/Logger.cls-meta.xml | 2 +- .../core/main/logger-engine/lwc/logger/logger.js-meta.xml | 2 +- .../classes/LoggerSObjectHandlerPlugin.cls-meta.xml | 2 +- .../core/tests/common/classes/LoggerTestUtils.cls-meta.xml | 2 +- .../configuration/classes/LoggerEmailUtils_Tests.cls-meta.xml | 2 +- .../configuration/classes/LoggerParameter_Tests.cls-meta.xml | 2 +- .../classes/LogBatchPurgeScheduler_Tests.cls-meta.xml | 2 +- .../log-management/classes/LogBatchPurger_Tests.cls-meta.xml | 2 +- .../classes/LogEntryEventHandler_Tests.cls-meta.xml | 2 +- .../classes/LogEntryFieldSetPicklist_Tests.cls-meta.xml | 2 +- .../log-management/classes/LogEntryHandler_Tests.cls-meta.xml | 2 +- .../classes/LogEntryTagHandler_Tests.cls-meta.xml | 2 +- .../tests/log-management/classes/LogHandler_Tests.cls-meta.xml | 2 +- .../classes/LogMassDeleteExtension_Tests.cls-meta.xml | 2 +- .../classes/LoggerSObjectMetadata_Tests.cls-meta.xml | 2 +- .../classes/LoggerSettingsController_Tests.cls-meta.xml | 2 +- .../log-management/classes/LoggerTagHandler_Tests.cls-meta.xml | 2 +- .../classes/RelatedLogEntriesController_Tests.cls-meta.xml | 2 +- .../logger-engine/classes/ComponentLogger_Tests.cls-meta.xml | 2 +- .../classes/FlowCollectionLogEntry_Tests.cls-meta.xml | 2 +- .../logger-engine/classes/FlowLogEntry_Tests.cls-meta.xml | 2 +- .../tests/logger-engine/classes/FlowLogger_Tests.cls-meta.xml | 2 +- .../classes/FlowRecordLogEntry_Tests.cls-meta.xml | 2 +- .../classes/LogEntryEventBuilder_Tests.cls-meta.xml | 2 +- .../tests/logger-engine/classes/LogMessage_Tests.cls-meta.xml | 2 +- .../core/tests/logger-engine/classes/Logger_Tests.cls-meta.xml | 2 +- .../classes/LoggerSObjectHandlerPlugin_Tests.cls-meta.xml | 2 +- .../experience-cloud/pages/BandwidthExceeded.page-meta.xml | 2 +- .../experience-cloud/pages/ChangePassword.page-meta.xml | 2 +- .../experience-cloud/pages/CommunitiesLanding.page-meta.xml | 2 +- .../experience-cloud/pages/CommunitiesLogin.page-meta.xml | 2 +- .../experience-cloud/pages/CommunitiesSelfReg.page-meta.xml | 2 +- .../pages/CommunitiesSelfRegConfirm.page-meta.xml | 2 +- nebula-logger/experience-cloud/pages/Exception.page-meta.xml | 2 +- .../experience-cloud/pages/FileNotFound.page-meta.xml | 2 +- .../experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml | 2 +- .../experience-cloud/pages/InMaintenance.page-meta.xml | 2 +- .../experience-cloud/pages/SiteRegisterConfirm.page-meta.xml | 2 +- .../classes/ExampleInboundEmailHandler.cls-meta.xml | 2 +- .../flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml | 2 +- .../extra-tests/flows/LogEntryHandler_Tests_Flow.flow-meta.xml | 2 +- .../flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml | 2 +- .../extra-tests/flows/LogHandler_Tests_Flow.flow-meta.xml | 2 +- .../tests/LogBatchPurger_Tests_Integration.cls-meta.xml | 2 +- .../tests/LogEntryEventBuilder_Tests_Integration.cls-meta.xml | 2 +- .../extra-tests/tests/LogEntryHandler_Tests_Flow.cls-meta.xml | 2 +- .../extra-tests/tests/LogHandler_Tests_Flow.cls-meta.xml | 2 +- .../LogMassDeleteExtension_Tests_Integration.cls-meta.xml | 2 +- .../tests/LoggerSettingsController_Tests_Security.cls-meta.xml | 2 +- .../extra-tests/tests/Logger_Tests_ExperienceSite.cls-meta.xml | 2 +- .../tests/Logger_Tests_InboundEmailHandler.cls-meta.xml | 2 +- .../extra-tests/tests/Logger_Tests_MergeResult.cls-meta.xml | 2 +- .../configuration/classes/LoggerInstallHandler.cls-meta.xml | 2 +- .../classes/LoggerInstallHandler_Tests.cls-meta.xml | 2 +- nebula-logger/managed-package/sfdx-project.json | 2 +- .../Slack/plugin/slack/classes/SlackLoggerPlugin.cls-meta.xml | 2 +- .../plugin/slack/classes/SlackLoggerPlugin_Tests.cls-meta.xml | 2 +- .../recipes/aura/loggerAuraDemo/loggerAuraDemo.cmp-meta.xml | 2 +- .../recipes/classes/Account_Batch_Logger_Example.cls-meta.xml | 2 +- .../classes/Account_Queueable_Logger_Example.cls-meta.xml | 2 +- .../recipes/classes/ExampleClassWithLogging.cls-meta.xml | 2 +- .../recipes/flows/Account_Flow_Logger_Example.flow-meta.xml | 2 +- .../recipes/flows/Account_Process_Logger_Example.flow-meta.xml | 2 +- .../recipes/lwc/loggerLWCDemo/loggerLWCDemo.js-meta.xml | 2 +- .../triggers/Account_Trigger_Logger_Example.trigger-meta.xml | 2 +- sfdx-project.json | 3 ++- 98 files changed, 99 insertions(+), 98 deletions(-) diff --git a/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls-meta.xml b/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls-meta.xml +++ b/nebula-logger/core/main/configuration/classes/LoggerEmailUtils.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/configuration/classes/LoggerParameter.cls-meta.xml b/nebula-logger/core/main/configuration/classes/LoggerParameter.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/configuration/classes/LoggerParameter.cls-meta.xml +++ b/nebula-logger/core/main/configuration/classes/LoggerParameter.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogBatchPurgeScheduler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogBatchPurgeScheduler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogBatchPurgeScheduler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogBatchPurgeScheduler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogBatchPurger.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogBatchPurger.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogBatchPurger.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogBatchPurger.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogEntryEventHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogEntryFieldSetPicklist.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogEntryFieldSetPicklist.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryFieldSetPicklist.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogEntryFieldSetPicklist.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogEntryHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogEntryTagHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogEntryTagHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogEntryTagHandler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogEntryTagHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogHandler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LogMassDeleteExtension.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LogMassDeleteExtension.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LogMassDeleteExtension.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LogMassDeleteExtension.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LoggerSObjectHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LoggerSObjectHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSObjectHandler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LoggerSObjectHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LoggerSObjectMetadata.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LoggerSettingsController.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/LoggerTagHandler.cls-meta.xml b/nebula-logger/core/main/log-management/classes/LoggerTagHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/LoggerTagHandler.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/LoggerTagHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls-meta.xml b/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls-meta.xml +++ b/nebula-logger/core/main/log-management/classes/RelatedLogEntriesController.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js-meta.xml b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js-meta.xml index cec768d25..e7dbaf178 100644 --- a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js-meta.xml +++ b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false Log Entry Event Stream diff --git a/nebula-logger/core/main/log-management/lwc/logJSON/logJSON.js-meta.xml b/nebula-logger/core/main/log-management/lwc/logJSON/logJSON.js-meta.xml index 11bf4bd15..28d152906 100644 --- a/nebula-logger/core/main/log-management/lwc/logJSON/logJSON.js-meta.xml +++ b/nebula-logger/core/main/log-management/lwc/logJSON/logJSON.js-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 true lightning__RecordAction diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js-meta.xml b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js-meta.xml index dd1948a85..8f6ba6b80 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js-meta.xml +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false lightning__Tab diff --git a/nebula-logger/core/main/log-management/lwc/relatedLogEntries/relatedLogEntries.js-meta.xml b/nebula-logger/core/main/log-management/lwc/relatedLogEntries/relatedLogEntries.js-meta.xml index 7a734fded..a95ec2b18 100644 --- a/nebula-logger/core/main/log-management/lwc/relatedLogEntries/relatedLogEntries.js-meta.xml +++ b/nebula-logger/core/main/log-management/lwc/relatedLogEntries/relatedLogEntries.js-meta.xml @@ -2,7 +2,7 @@ Related Log Entries Displays a related list of log entries for the current record. - 53.0 + 54.0 true lightning__RecordPage diff --git a/nebula-logger/core/main/log-management/pages/LogMassDelete.page-meta.xml b/nebula-logger/core/main/log-management/pages/LogMassDelete.page-meta.xml index 54d894dd5..b18339ae8 100644 --- a/nebula-logger/core/main/log-management/pages/LogMassDelete.page-meta.xml +++ b/nebula-logger/core/main/log-management/pages/LogMassDelete.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false diff --git a/nebula-logger/core/main/log-management/triggers/Log.trigger-meta.xml b/nebula-logger/core/main/log-management/triggers/Log.trigger-meta.xml index 53f9ab459..5e573d796 100644 --- a/nebula-logger/core/main/log-management/triggers/Log.trigger-meta.xml +++ b/nebula-logger/core/main/log-management/triggers/Log.trigger-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/triggers/LogEntry.trigger-meta.xml b/nebula-logger/core/main/log-management/triggers/LogEntry.trigger-meta.xml index 53f9ab459..5e573d796 100644 --- a/nebula-logger/core/main/log-management/triggers/LogEntry.trigger-meta.xml +++ b/nebula-logger/core/main/log-management/triggers/LogEntry.trigger-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/triggers/LogEntryEvent.trigger-meta.xml b/nebula-logger/core/main/log-management/triggers/LogEntryEvent.trigger-meta.xml index 53f9ab459..5e573d796 100644 --- a/nebula-logger/core/main/log-management/triggers/LogEntryEvent.trigger-meta.xml +++ b/nebula-logger/core/main/log-management/triggers/LogEntryEvent.trigger-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/triggers/LogEntryTag.trigger-meta.xml b/nebula-logger/core/main/log-management/triggers/LogEntryTag.trigger-meta.xml index 53f9ab459..5e573d796 100644 --- a/nebula-logger/core/main/log-management/triggers/LogEntryTag.trigger-meta.xml +++ b/nebula-logger/core/main/log-management/triggers/LogEntryTag.trigger-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/log-management/triggers/LoggerTag.trigger-meta.xml b/nebula-logger/core/main/log-management/triggers/LoggerTag.trigger-meta.xml index 53f9ab459..5e573d796 100644 --- a/nebula-logger/core/main/log-management/triggers/LoggerTag.trigger-meta.xml +++ b/nebula-logger/core/main/log-management/triggers/LoggerTag.trigger-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/ComponentLogger.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/ComponentLogger.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/ComponentLogger.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/ComponentLogger.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/FlowCollectionLogEntry.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/FlowCollectionLogEntry.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/FlowCollectionLogEntry.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/FlowCollectionLogEntry.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/FlowLogEntry.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/FlowLogEntry.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/FlowLogEntry.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/FlowLogEntry.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/FlowLogger.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/FlowLogger.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/FlowLogger.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/FlowLogger.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/FlowRecordLogEntry.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/FlowRecordLogEntry.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/FlowRecordLogEntry.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/FlowRecordLogEntry.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/LogEntryEventBuilder.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/LogMessage.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/LogMessage.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/LogMessage.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/LogMessage.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/classes/Logger.cls-meta.xml b/nebula-logger/core/main/logger-engine/classes/Logger.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/logger-engine/classes/Logger.cls-meta.xml +++ b/nebula-logger/core/main/logger-engine/classes/Logger.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/main/logger-engine/lwc/logger/logger.js-meta.xml b/nebula-logger/core/main/logger-engine/lwc/logger/logger.js-meta.xml index cbcb7f707..7174faa4f 100644 --- a/nebula-logger/core/main/logger-engine/lwc/logger/logger.js-meta.xml +++ b/nebula-logger/core/main/logger-engine/lwc/logger/logger.js-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 false diff --git a/nebula-logger/core/main/plugin-framework/classes/LoggerSObjectHandlerPlugin.cls-meta.xml b/nebula-logger/core/main/plugin-framework/classes/LoggerSObjectHandlerPlugin.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/main/plugin-framework/classes/LoggerSObjectHandlerPlugin.cls-meta.xml +++ b/nebula-logger/core/main/plugin-framework/classes/LoggerSObjectHandlerPlugin.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls-meta.xml b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls-meta.xml +++ b/nebula-logger/core/tests/common/classes/LoggerTestUtils.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/configuration/classes/LoggerEmailUtils_Tests.cls-meta.xml b/nebula-logger/core/tests/configuration/classes/LoggerEmailUtils_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/configuration/classes/LoggerEmailUtils_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/configuration/classes/LoggerEmailUtils_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/configuration/classes/LoggerParameter_Tests.cls-meta.xml b/nebula-logger/core/tests/configuration/classes/LoggerParameter_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/configuration/classes/LoggerParameter_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/configuration/classes/LoggerParameter_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogBatchPurgeScheduler_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogBatchPurgeScheduler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogBatchPurgeScheduler_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogBatchPurgeScheduler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogBatchPurger_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogEntryEventHandler_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogEntryEventHandler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogEntryEventHandler_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogEntryEventHandler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogEntryFieldSetPicklist_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogEntryFieldSetPicklist_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogEntryFieldSetPicklist_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogEntryFieldSetPicklist_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogEntryHandler_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogEntryHandler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogEntryHandler_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogEntryHandler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogEntryTagHandler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogHandler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LogMassDeleteExtension_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LoggerSObjectMetadata_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LoggerSettingsController_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LoggerSettingsController_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LoggerSettingsController_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LoggerSettingsController_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/LoggerTagHandler_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/LoggerTagHandler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/LoggerTagHandler_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/LoggerTagHandler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/log-management/classes/RelatedLogEntriesController_Tests.cls-meta.xml b/nebula-logger/core/tests/log-management/classes/RelatedLogEntriesController_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/log-management/classes/RelatedLogEntriesController_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/log-management/classes/RelatedLogEntriesController_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/ComponentLogger_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/ComponentLogger_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/ComponentLogger_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/ComponentLogger_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/FlowCollectionLogEntry_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/FlowLogEntry_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/FlowLogger_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/FlowRecordLogEntry_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/LogEntryEventBuilder_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/LogMessage_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/LogMessage_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/LogMessage_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/LogMessage_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls-meta.xml b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/logger-engine/classes/Logger_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/core/tests/plugin-framework/classes/LoggerSObjectHandlerPlugin_Tests.cls-meta.xml b/nebula-logger/core/tests/plugin-framework/classes/LoggerSObjectHandlerPlugin_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/core/tests/plugin-framework/classes/LoggerSObjectHandlerPlugin_Tests.cls-meta.xml +++ b/nebula-logger/core/tests/plugin-framework/classes/LoggerSObjectHandlerPlugin_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml b/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml index a4cbfcf8f..892f32f3c 100644 --- a/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/BandwidthExceeded.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página predeterminada de límite superado de Plataforma Lightning diff --git a/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml b/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml index c655a8bc3..ceec3b87d 100644 --- a/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/ChangePassword.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página de cambio de contraseña predeterminada de Sitios de Salesforce diff --git a/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml index bcfbfc4ab..c455c844f 100644 --- a/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/CommunitiesLanding.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página de inicio de experiencias predeterminadas diff --git a/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml index 7eac32e66..a4951e6b2 100644 --- a/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/CommunitiesLogin.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página de inicio de sesión para experiencias predeterminadas diff --git a/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml index 3fdd0977a..6c997d20a 100644 --- a/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/CommunitiesSelfReg.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página de inscripción automática de experiencias predeterminadas diff --git a/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml b/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml index 155b04e93..6fd7d3a84 100644 --- a/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/CommunitiesSelfRegConfirm.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página de confirmación de registro de experiencias predeterminadas diff --git a/nebula-logger/experience-cloud/pages/Exception.page-meta.xml b/nebula-logger/experience-cloud/pages/Exception.page-meta.xml index 66ac4d4c8..9445921d4 100644 --- a/nebula-logger/experience-cloud/pages/Exception.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/Exception.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página predeterminada de Plataforma Lightning para errores post-autenticación diff --git a/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml b/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml index ad57dbf8f..780ca6899 100644 --- a/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/FileNotFound.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página predeterminada de página/datos no encontrados de Plataforma Lightning diff --git a/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml b/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml index 049a76bc9..4786574f7 100644 --- a/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/ForgotPasswordConfirm.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página Contraseña olvidada predeterminada de Sitios de Salesforce diff --git a/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml b/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml index aae19f986..d533b77f5 100644 --- a/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/InMaintenance.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página predeterminada de Plataforma Lightning en mantenimiento diff --git a/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml b/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml index c43976b8e..51ef255a7 100644 --- a/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml +++ b/nebula-logger/experience-cloud/pages/SiteRegisterConfirm.page-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 false false Página Confirmación de registro de usuario predeterminada de Sitios de Salesforce diff --git a/nebula-logger/extra-tests/classes/ExampleInboundEmailHandler.cls-meta.xml b/nebula-logger/extra-tests/classes/ExampleInboundEmailHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/classes/ExampleInboundEmailHandler.cls-meta.xml +++ b/nebula-logger/extra-tests/classes/ExampleInboundEmailHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml b/nebula-logger/extra-tests/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml index 034acd1d0..5e7083ac9 100644 --- a/nebula-logger/extra-tests/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml +++ b/nebula-logger/extra-tests/flows/LogEntryHandler_Screen_Tests_for_Flow.flow-meta.xml @@ -87,7 +87,7 @@ true - 53.0 + 54.0 A screen Flow used to help test the Apex class LogEntryHandler LogEntryHandler Screen Tests for Flow {!$Flow.CurrentDateTime} diff --git a/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Flow.flow-meta.xml b/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Flow.flow-meta.xml index dcfa7aa71..7adfe8aa1 100644 --- a/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Flow.flow-meta.xml +++ b/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Flow.flow-meta.xml @@ -50,7 +50,7 @@ true - 53.0 + 54.0 An auto-launched Flow used to help test the Apex class LogEntryHandler LogEntryHandler_Tests_Flow {!$Flow.CurrentDateTime} diff --git a/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml b/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml index 1145e9244..ab9f4dd90 100644 --- a/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml +++ b/nebula-logger/extra-tests/flows/LogEntryHandler_Tests_Scheduled_Flow.flow-meta.xml @@ -50,7 +50,7 @@ true - 53.0 + 54.0 A scheduled Flow used in tests to verify that LogEntryHandler automatically logs details about the Flow (metadata data) LogEntryHandler_Tests_Scheduled_Flow {!$Flow.CurrentDateTime} diff --git a/nebula-logger/extra-tests/flows/LogHandler_Tests_Flow.flow-meta.xml b/nebula-logger/extra-tests/flows/LogHandler_Tests_Flow.flow-meta.xml index 5bc99449f..8ea80e029 100644 --- a/nebula-logger/extra-tests/flows/LogHandler_Tests_Flow.flow-meta.xml +++ b/nebula-logger/extra-tests/flows/LogHandler_Tests_Flow.flow-meta.xml @@ -97,7 +97,7 @@ true - 53.0 + 54.0 Update_user_s_first_name diff --git a/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/LogBatchPurger_Tests_Integration.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls-meta.xml b/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/LogEntryEventBuilder_Tests_Integration.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/LogEntryHandler_Tests_Flow.cls-meta.xml b/nebula-logger/extra-tests/tests/LogEntryHandler_Tests_Flow.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/LogEntryHandler_Tests_Flow.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/LogEntryHandler_Tests_Flow.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/LogHandler_Tests_Flow.cls-meta.xml b/nebula-logger/extra-tests/tests/LogHandler_Tests_Flow.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/LogHandler_Tests_Flow.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/LogHandler_Tests_Flow.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/LogMassDeleteExtension_Tests_Integration.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls-meta.xml b/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/LoggerSettingsController_Tests_Security.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/Logger_Tests_ExperienceSite.cls-meta.xml b/nebula-logger/extra-tests/tests/Logger_Tests_ExperienceSite.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/Logger_Tests_ExperienceSite.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/Logger_Tests_ExperienceSite.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/Logger_Tests_InboundEmailHandler.cls-meta.xml b/nebula-logger/extra-tests/tests/Logger_Tests_InboundEmailHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/Logger_Tests_InboundEmailHandler.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/Logger_Tests_InboundEmailHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/extra-tests/tests/Logger_Tests_MergeResult.cls-meta.xml b/nebula-logger/extra-tests/tests/Logger_Tests_MergeResult.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/extra-tests/tests/Logger_Tests_MergeResult.cls-meta.xml +++ b/nebula-logger/extra-tests/tests/Logger_Tests_MergeResult.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls-meta.xml b/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls-meta.xml +++ b/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler_Tests.cls-meta.xml b/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler_Tests.cls-meta.xml +++ b/nebula-logger/managed-package/core/main/configuration/classes/LoggerInstallHandler_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/managed-package/sfdx-project.json b/nebula-logger/managed-package/sfdx-project.json index 239409f8b..00675c6e7 100644 --- a/nebula-logger/managed-package/sfdx-project.json +++ b/nebula-logger/managed-package/sfdx-project.json @@ -9,7 +9,7 @@ "default": true, "definitionFile": "./config/scratch-orgs/experience-cloud-scratch-def.json", "postInstallScript": "LoggerInstallHandler", - "ancestorVersion": "4.6.0.0", + "ancestorVersion": "HIGHEST", "versionNumber": "4.7.0.0", "versionName": "Spring '22 Release", "versionDescription": "TODO", diff --git a/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin.cls-meta.xml b/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin.cls-meta.xml +++ b/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin_Tests.cls-meta.xml b/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin_Tests.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin_Tests.cls-meta.xml +++ b/nebula-logger/plugins/Slack/plugin/slack/classes/SlackLoggerPlugin_Tests.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/recipes/aura/loggerAuraDemo/loggerAuraDemo.cmp-meta.xml b/nebula-logger/recipes/aura/loggerAuraDemo/loggerAuraDemo.cmp-meta.xml index 205a523da..2c30e5a80 100644 --- a/nebula-logger/recipes/aura/loggerAuraDemo/loggerAuraDemo.cmp-meta.xml +++ b/nebula-logger/recipes/aura/loggerAuraDemo/loggerAuraDemo.cmp-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 A Lightning Component Bundle diff --git a/nebula-logger/recipes/classes/Account_Batch_Logger_Example.cls-meta.xml b/nebula-logger/recipes/classes/Account_Batch_Logger_Example.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/recipes/classes/Account_Batch_Logger_Example.cls-meta.xml +++ b/nebula-logger/recipes/classes/Account_Batch_Logger_Example.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/recipes/classes/Account_Queueable_Logger_Example.cls-meta.xml b/nebula-logger/recipes/classes/Account_Queueable_Logger_Example.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/recipes/classes/Account_Queueable_Logger_Example.cls-meta.xml +++ b/nebula-logger/recipes/classes/Account_Queueable_Logger_Example.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/recipes/classes/ExampleClassWithLogging.cls-meta.xml b/nebula-logger/recipes/classes/ExampleClassWithLogging.cls-meta.xml index 871a8cfea..891916bb0 100644 --- a/nebula-logger/recipes/classes/ExampleClassWithLogging.cls-meta.xml +++ b/nebula-logger/recipes/classes/ExampleClassWithLogging.cls-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/nebula-logger/recipes/flows/Account_Flow_Logger_Example.flow-meta.xml b/nebula-logger/recipes/flows/Account_Flow_Logger_Example.flow-meta.xml index cd4815f54..97d3df2eb 100644 --- a/nebula-logger/recipes/flows/Account_Flow_Logger_Example.flow-meta.xml +++ b/nebula-logger/recipes/flows/Account_Flow_Logger_Example.flow-meta.xml @@ -81,7 +81,7 @@ true - 53.0 + 54.0 An example field update Update_Account diff --git a/nebula-logger/recipes/flows/Account_Process_Logger_Example.flow-meta.xml b/nebula-logger/recipes/flows/Account_Process_Logger_Example.flow-meta.xml index 7acf21f36..5e9560965 100644 --- a/nebula-logger/recipes/flows/Account_Process_Logger_Example.flow-meta.xml +++ b/nebula-logger/recipes/flows/Account_Process_Logger_Example.flow-meta.xml @@ -354,7 +354,7 @@ - 53.0 + 54.0 index diff --git a/nebula-logger/recipes/lwc/loggerLWCDemo/loggerLWCDemo.js-meta.xml b/nebula-logger/recipes/lwc/loggerLWCDemo/loggerLWCDemo.js-meta.xml index dfbcea192..ad07727c5 100644 --- a/nebula-logger/recipes/lwc/loggerLWCDemo/loggerLWCDemo.js-meta.xml +++ b/nebula-logger/recipes/lwc/loggerLWCDemo/loggerLWCDemo.js-meta.xml @@ -1,6 +1,6 @@ - 53.0 + 54.0 true lightning__Tab diff --git a/nebula-logger/recipes/triggers/Account_Trigger_Logger_Example.trigger-meta.xml b/nebula-logger/recipes/triggers/Account_Trigger_Logger_Example.trigger-meta.xml index 53f9ab459..5e573d796 100644 --- a/nebula-logger/recipes/triggers/Account_Trigger_Logger_Example.trigger-meta.xml +++ b/nebula-logger/recipes/triggers/Account_Trigger_Logger_Example.trigger-meta.xml @@ -1,5 +1,5 @@ - 53.0 + 54.0 Active diff --git a/sfdx-project.json b/sfdx-project.json index 0302e14c6..449808f28 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -1,12 +1,13 @@ { "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", - "sourceApiVersion": "53.0", + "sourceApiVersion": "54.0", "packageDirectories": [ { "package": "Nebula Logger - Core", "path": "./nebula-logger/core", "definitionFile": "./config/scratch-orgs/experience-cloud-scratch-def.json", + "ancestorVersion": "HIGHEST", "versionNumber": "4.7.0.0", "versionName": "Spring '22 Release", "versionDescription": "Replaced the old aura cmp logJSONViewer with a new lwc quickaction, cleaned up flexipages, fixed an issue with some standard buttons being excluded", From ab2d3a1a30384adc077906f4736b4d68b7194a63 Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Tue, 15 Feb 2022 10:31:56 -0500 Subject: [PATCH 40/73] Fixed several jest tests for loggerSettings lwc --- .../data/getLoggerSettingsSchema.json | 159 +++ .../__tests__/data/getObjectInfo.json | 940 ------------------ .../__tests__/loggerSettings.test.js | 21 +- .../lwc/loggerSettings/loggerSettings.js | 24 +- 4 files changed, 185 insertions(+), 959 deletions(-) create mode 100644 nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getLoggerSettingsSchema.json delete mode 100644 nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getLoggerSettingsSchema.json b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getLoggerSettingsSchema.json new file mode 100644 index 000000000..b6512d296 --- /dev/null +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getLoggerSettingsSchema.json @@ -0,0 +1,159 @@ +{ + "apiName": "LoggerSettings__c", + "fields": { + "Id": { + "apiName": "Id", + "label": "Record ID", + "localApiName": "Id", + "type": "Id" + }, + "IsDeleted": { + "apiName": "IsDeleted", + "label": "Deleted", + "localApiName": "IsDeleted", + "type": "Boolean" + }, + "Name": { + "apiName": "Name", + "label": "Name", + "localApiName": "Name", + "type": "String" + }, + "SetupOwnerId": { + "apiName": "SetupOwnerId", + "label": "Location", + "localApiName": "SetupOwnerId", + "type": "Reference" + }, + "CreatedDate": { + "apiName": "CreatedDate", + "label": "Created Date", + "localApiName": "CreatedDate", + "type": "Datetime" + }, + "CreatedById": { + "apiName": "CreatedById", + "label": "Created By ID", + "localApiName": "CreatedById", + "type": "Reference" + }, + "LastModifiedDate": { + "apiName": "LastModifiedDate", + "label": "Last Modified Date", + "localApiName": "LastModifiedDate", + "type": "Datetime" + }, + "LastModifiedById": { + "apiName": "LastModifiedById", + "label": "Last Modified By ID", + "localApiName": "LastModifiedById", + "type": "Reference" + }, + "SystemModstamp": { + "apiName": "SystemModstamp", + "label": "System Modstamp", + "localApiName": "SystemModstamp", + "type": "Datetime" + }, + "DefaultLogOwner__c": { + "apiName": "DefaultLogOwner__c", + "inlineHelpText": "Specifies the default owner for new Log__c records. This can be a user ID, a username, a queue ID, or a queue's developer name.", + "label": "Log Owner", + "localApiName": "DefaultLogOwner__c", + "type": "String" + }, + "DefaultLogShareAccessLevel__c": { + "apiName": "DefaultLogShareAccessLevel__c", + "inlineHelpText": "Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles.", + "label": "Log Access Level", + "localApiName": "DefaultLogShareAccessLevel__c", + "type": "String" + }, + "DefaultNumberOfDaysToRetainLogs__c": { + "apiName": "DefaultNumberOfDaysToRetainLogs__c", + "inlineHelpText": "This value is used to set the field Log__c.LogRetentionDate__c, which is then used by LogBatchPurger to delete old logs. To keep logs indefinitely, set this field to blank (null).", + "label": "Days to Retain Logs", + "localApiName": "DefaultNumberOfDaysToRetainLogs__c", + "type": "Double" + }, + "DefaultSaveMethod__c": { + "apiName": "DefaultSaveMethod__c", + "inlineHelpText": "Defaults to EVENT_BUS. This controls the default save method used by Logger when calling saveLog(). In most situations, EVENT_BUS should be used.", + "label": "Save Method", + "localApiName": "DefaultSaveMethod__c", + "type": "String" + }, + "IsAnonymousModeEnabled__c": { + "apiName": "IsAnonymousModeEnabled__c", + "inlineHelpText": "When enabled, any logs generated will not have any user-specific details set - any fields related to the User, Profile, etc. will be null. Note: this feature only works properly when using the save method EVENT_BUS.", + "label": "Enable Anonymous Mode", + "localApiName": "IsAnonymousModeEnabled__c", + "type": "Boolean" + }, + "IsApexSystemDebugLoggingEnabled__c": { + "apiName": "IsApexSystemDebugLoggingEnabled__c", + "inlineHelpText": "When enabled, Logger will automatically call Apex's System.debug(). To help with performance, this option should be disabled in production unless you are actively troubleshooting an issue.", + "label": "Enable Apex System.debug()", + "localApiName": "IsApexSystemDebugLoggingEnabled__c", + "type": "Boolean" + }, + "IsDataMaskingEnabled__c": { + "apiName": "IsDataMaskingEnabled__c", + "inlineHelpText": "When enabled, any data-mask rules (configured in LogEntryDataMaskRule__mdt) will be automatically applied to log entry messages.", + "label": "Enable Data Masking", + "localApiName": "IsDataMaskingEnabled__c", + "type": "Boolean" + }, + "IsEnabled__c": { + "apiName": "IsEnabled__c", + "inlineHelpText": "Controls if Logger is enabled for the specified level (organization, profile, or user)", + "label": "Enabled", + "localApiName": "IsEnabled__c", + "type": "Boolean" + }, + "IsJavaScriptConsoleLoggingEnabled__c": { + "apiName": "IsJavaScriptConsoleLoggingEnabled__c", + "inlineHelpText": "When enabled, Logger will automatically call the browser's console.log() function when logging via lightning components. To help with performance, this option should be disabled in production unless you are actively troubleshooting an issue.", + "label": "Enable JavaScript console.log()", + "localApiName": "IsJavaScriptConsoleLoggingEnabled__c", + "type": "Boolean" + }, + "IsPlatformEventStorageEnabled__c": { + "apiName": "IsPlatformEventStorageEnabled__c", + "inlineHelpText": "Controls if LogEntryEvent__e platform events are transformed & stored in the custom objects Log__c and LogEntry__c (when IsSavingEnabled__c == true).", + "label": "Store Platform Events", + "localApiName": "IsPlatformEventStorageEnabled__c", + "type": "Boolean" + }, + "IsRecordFieldStrippingEnabled__c": { + "apiName": "IsRecordFieldStrippingEnabled__c", + "inlineHelpText": "When enabled, any time an SObject record is logged, only fields that the current user can access will be included in the record's JSON.", + "label": "Strip Inaccessible Record Fields", + "localApiName": "IsRecordFieldStrippingEnabled__c", + "type": "Boolean" + }, + "IsSavingEnabled__c": { + "apiName": "IsSavingEnabled__c", + "inlineHelpText": "Controls if saving is enabled - when disabled, any calls to saveLog() are ignored.", + "label": "Enable Saving", + "localApiName": "IsSavingEnabled__c", + "type": "Boolean" + }, + "LoggingLevel__c": { + "apiName": "LoggingLevel__c", + "label": "Logging Level", + "localApiName": "LoggingLevel__c", + "type": "String" + }, + "DefaultLogScenario__c": { + "apiName": "DefaultLogScenario__c", + "inlineHelpText": "Sets a default scenario for the transaction", + "label": "Log Scenario", + "localApiName": "DefaultLogScenario__c", + "type": "String" + } + }, + "label": "Logger Settings", + "labelPlural": "Logger Settings", + "localApiName": "LoggerSettings__c" +} diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json deleted file mode 100644 index 14332fb02..000000000 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/data/getObjectInfo.json +++ /dev/null @@ -1,940 +0,0 @@ -{ - "apiName": "LoggerSettings__c", - "associateEntityType": null, - "associateParentEntity": null, - "childRelationships": [ - { - "childObjectApiName": "AttachedContentDocument", - "fieldName": "LinkedEntityId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "AttachedContentDocuments" - }, - { - "childObjectApiName": "CollaborationGroupRecord", - "fieldName": "RecordId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "RecordAssociatedGroups" - }, - { - "childObjectApiName": "CombinedAttachment", - "fieldName": "ParentId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "CombinedAttachments" - }, - { - "childObjectApiName": "ContactRequest", - "fieldName": "WhatId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "ContactRequests" - }, - { - "childObjectApiName": "ContentDocumentLink", - "fieldName": "LinkedEntityId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "ContentDocumentLinks" - }, - { - "childObjectApiName": "DuplicateRecordItem", - "fieldName": "RecordId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "DuplicateRecordItems" - }, - { - "childObjectApiName": "EntitySubscription", - "fieldName": "ParentId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "FeedSubscriptionsForEntity" - }, - { - "childObjectApiName": "ProcessException", - "fieldName": "AttachedToId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "ProcessExceptions" - }, - { - "childObjectApiName": "ProcessInstance", - "fieldName": "TargetObjectId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "ProcessInstances" - }, - { - "childObjectApiName": "ProcessInstanceHistory", - "fieldName": "TargetObjectId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "ProcessSteps" - }, - { - "childObjectApiName": "RecordAction", - "fieldName": "RecordId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "RecordActions" - }, - { - "childObjectApiName": "RecordActionHistory", - "fieldName": "ParentRecordId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "RecordActionHistories" - }, - { - "childObjectApiName": "TopicAssignment", - "fieldName": "EntityId", - "junctionIdListNames": [], - "junctionReferenceTo": [], - "relationshipName": "TopicAssignments" - } - ], - "createable": true, - "custom": true, - "defaultRecordTypeId": "012000000000000AAA", - "deletable": true, - "dependentFields": {}, - "feedEnabled": false, - "fields": { - "CloneSourceId": { - "apiName": "CloneSourceId", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "Reference", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Clone Source", - "length": 18, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": true, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": false, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "CreatedById": { - "apiName": "CreatedById", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "Reference", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Created By ID", - "length": 18, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": true, - "referenceTargetField": null, - "referenceToInfos": [ - { - "apiName": "User", - "nameFields": ["FirstName", "LastName", "Name"] - } - ], - "relationshipName": "CreatedBy", - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "CreatedDate": { - "apiName": "CreatedDate", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "DateTime", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Created Date", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "DefaultLogOwner__c": { - "apiName": "DefaultLogOwner__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "String", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "Specifies the default owner for new Log__c records. This can be a user ID, a username, a queue ID, or a queue's developer name.", - "label": "Log Owner", - "length": 255, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": false, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "DefaultLogShareAccessLevel__c": { - "apiName": "DefaultLogShareAccessLevel__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "String", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "Uses Apex managed sharing to grants users read or edit access to their log records (on insert only). When no access level is specified, no Apex sharing logic is executed. This only gives record-level access - users will still need to be granted access to the Log__c object using permission sets or profiles.", - "label": "Log Access Level", - "length": 255, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": false, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "DefaultNumberOfDaysToRetainLogs__c": { - "apiName": "DefaultNumberOfDaysToRetainLogs__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Double", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "This value is used to set the field Log__c.LogRetentionDate__c, which is then used by LogBatchPurger to delete old logs. To keep logs indefinitely, set this field to blank (null).", - "label": "Days to Retain Logs", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 4, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": false, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "DefaultSaveMethod__c": { - "apiName": "DefaultSaveMethod__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "String", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "Defaults to EVENT_BUS. This controls the default save method used by Logger when calling saveLog(). In most situations, EVENT_BUS should be used.", - "label": "Save Method", - "length": 255, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "Id": { - "apiName": "Id", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "String", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Record ID", - "length": 18, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "IsAnonymousModeEnabled__c": { - "apiName": "IsAnonymousModeEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "When enabled, any logs generated will not have any user-specific details set - any fields related to the User, Profile, etc. will be null. Note: this feature only works properly when using the save method EVENT_BUS.", - "label": "Enable Anonymous Mode", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsApexSystemDebugLoggingEnabled__c": { - "apiName": "IsApexSystemDebugLoggingEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "When enabled, Logger will automatically call Apex's System.debug(). To help with performance, this option should be disabled in production unless you are actively troubleshooting an issue.", - "label": "Enable Apex System.debug()", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsDataMaskingEnabled__c": { - "apiName": "IsDataMaskingEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "When enabled, any data-mask rules (configured in LogEntryDataMaskRule__mdt) will be automatically applied to log entry messages.", - "label": "Enable Data Masking", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsDeleted": { - "apiName": "IsDeleted", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Deleted", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "IsEnabled__c": { - "apiName": "IsEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "Controls if Logger is enabled for the specified level (organization, profile, or user)", - "label": "Enabled", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsJavaScriptConsoleLoggingEnabled__c": { - "apiName": "IsJavaScriptConsoleLoggingEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "When enabled, Logger will automatically call the browser's console.log() function when logging via lightning components. To help with performance, this option should be disabled in production unless you are actively troubleshooting an issue.", - "label": "Enable JavaScript console.log()", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsPlatformEventStorageEnabled__c": { - "apiName": "IsPlatformEventStorageEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "Controls if LogEntryEvent__e platform events are transformed & stored in the custom objects Log__c and LogEntry__c (when IsSavingEnabled__c == true).", - "label": "Store Platform Events", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsRecordFieldStrippingEnabled__c": { - "apiName": "IsRecordFieldStrippingEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "When enabled, any time an SObject record is logged, only fields that the current user can access will be included in the record's JSON.", - "label": "Strip Inaccessible Record Fields", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "IsSavingEnabled__c": { - "apiName": "IsSavingEnabled__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "Controls if saving is enabled - when disabled, any calls to saveLog() are ignored.", - "label": "Enable Saving", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "LastModifiedById": { - "apiName": "LastModifiedById", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "Reference", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Last Modified By ID", - "length": 18, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": true, - "referenceTargetField": null, - "referenceToInfos": [ - { - "apiName": "User", - "nameFields": ["FirstName", "LastName", "Name"] - } - ], - "relationshipName": "LastModifiedBy", - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "LastModifiedDate": { - "apiName": "LastModifiedDate", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "DateTime", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Last Modified Date", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - }, - "LoggingLevel__c": { - "apiName": "LoggingLevel__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "String", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Logging Level", - "length": 255, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "Name": { - "apiName": "Name", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": false, - "dataType": "String", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Name", - "length": 80, - "nameField": true, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": false, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "SetupOwnerId": { - "apiName": "SetupOwnerId", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": false, - "dataType": "Reference", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "Location", - "length": 18, - "nameField": false, - "polymorphicForeignKey": true, - "precision": 0, - "reference": true, - "referenceTargetField": null, - "referenceToInfos": [ - { - "apiName": "Organization", - "nameFields": ["Name"] - }, - { - "apiName": "Profile", - "nameFields": ["Name"] - }, - { - "apiName": "User", - "nameFields": ["FirstName", "LastName", "Name"] - } - ], - "relationshipName": "SetupOwner", - "required": false, - "scale": 0, - "searchPrefilterable": true, - "sortable": true, - "unique": false, - "updateable": true - }, - "StripInaccessibleRecordFields__c": { - "apiName": "StripInaccessibleRecordFields__c", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": true, - "custom": true, - "dataType": "Boolean", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": "When enabled, any time an SObject record is logged, only fields that the current user can access will be included in the record's JSON.", - "label": "Strip Inaccessible Record Fields", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": true - }, - "SystemModstamp": { - "apiName": "SystemModstamp", - "calculated": false, - "compound": false, - "compoundComponentName": null, - "compoundFieldName": null, - "controllerName": null, - "controllingFields": [], - "createable": false, - "custom": false, - "dataType": "DateTime", - "extraTypeInfo": null, - "filterable": true, - "filteredLookupInfo": null, - "highScaleNumber": false, - "htmlFormatted": false, - "inlineHelpText": null, - "label": "System Modstamp", - "length": 0, - "nameField": false, - "polymorphicForeignKey": false, - "precision": 0, - "reference": false, - "referenceTargetField": null, - "referenceToInfos": [], - "relationshipName": null, - "required": true, - "scale": 0, - "searchPrefilterable": false, - "sortable": true, - "unique": false, - "updateable": false - } - }, - "keyPrefix": "a03", - "label": "Logger Settings", - "labelPlural": "Logger Settings", - "layoutable": true, - "mruEnabled": false, - "nameFields": ["Name"], - "queryable": true, - "recordTypeInfos": { - "012000000000000AAA": { - "available": true, - "defaultRecordTypeMapping": true, - "master": true, - "name": "Master", - "recordTypeId": "012000000000000AAA" - } - }, - "searchable": true, - "themeInfo": null, - "updateable": true -} diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/loggerSettings.test.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/loggerSettings.test.js index 3ece2a233..fa2ef46f8 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/loggerSettings.test.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/__tests__/loggerSettings.test.js @@ -3,8 +3,8 @@ import { createElement } from 'lwc'; import LoggerSettings from 'c/loggerSettings'; // LoggerSettings__c metadata -import { getObjectInfo } from 'lightning/uiObjectInfoApi'; import canUserModifyLoggerSettings from '@salesforce/apex/LoggerSettingsController.canUserModifyLoggerSettings'; +import getLoggerSettingsSchema from '@salesforce/apex/LoggerSObjectMetadata.getLoggerSettingsSchema'; import getPicklistOptions from '@salesforce/apex/LoggerSettingsController.getPicklistOptions'; import getOrganization from '@salesforce/apex/LoggerSettingsController.getOrganization'; import searchForSetupOwner from '@salesforce/apex/LoggerSettingsController.searchForSetupOwner'; @@ -16,7 +16,7 @@ import saveRecord from '@salesforce/apex/LoggerSettingsController.saveRecord'; import deleteRecord from '@salesforce/apex/LoggerSettingsController.deleteRecord'; // Mock metadata -const mockObjectInfo = require('./data/getObjectInfo.json'); +const mockLoggerSettingsSchema = require('./data/getLoggerSettingsSchema.json'); const mockOrganization = require('./data/getOrganization.json'); const mockPicklistOptions = require('./data/getPicklistOptions.json'); @@ -105,9 +105,20 @@ jest.mock( { virtual: true } ); +jest.mock( + '@salesforce/apex/LoggerSObjectMetadata.getLoggerSettingsSchema', + () => { + return { + default: jest.fn() + }; + }, + { virtual: true } +); + async function initializeElement(enableModifyAccess) { // Assign mock values for resolved Apex promises canUserModifyLoggerSettings.mockResolvedValue(enableModifyAccess); + getLoggerSettingsSchema.mockResolvedValue(mockLoggerSettingsSchema); getPicklistOptions.mockResolvedValue(mockPicklistOptions); getRecords.mockResolvedValue(mockRecords); @@ -115,9 +126,7 @@ async function initializeElement(enableModifyAccess) { const loggerSettingsElement = createElement('c-logger-settings', { is: LoggerSettings }); document.body.appendChild(loggerSettingsElement); - // Emit data from @wire - await getObjectInfo.emit(mockObjectInfo); - await Promise.resolve(); + await new Promise(resolve => setTimeout(resolve, 0)); return loggerSettingsElement; } @@ -156,6 +165,7 @@ describe('Logger Settings lwc tests', () => { // Verify the expected Apex/framework calls expect(canUserModifyLoggerSettings).toHaveBeenCalledTimes(1); + expect(getLoggerSettingsSchema).toHaveBeenCalledTimes(1); expect(getPicklistOptions).toHaveBeenCalledTimes(1); expect(getRecords).toHaveBeenCalledTimes(1); expect(createRecord).toHaveBeenCalledTimes(0); @@ -348,6 +358,7 @@ describe('Logger Settings lwc tests', () => { const isDataMaskingEnabled = false; const isDataMaskingEnabledField = loggerSettingsElement.shadowRoot.querySelector('[data-id="IsDataMaskingEnabled__c"]'); isDataMaskingEnabledField.checked = isDataMaskingEnabled; + isDataMaskingEnabledField.value = isDataMaskingEnabled; isDataMaskingEnabledField.dispatchEvent(new CustomEvent('change')); // Save the record & verify the call to the Apex controller diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js index 79d2a80e0..28fa36d35 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.js @@ -9,8 +9,8 @@ import { ShowToastEvent } from 'lightning/platformShowToastEvent'; // LoggerSettings__c metadata import { generatePageLayout } from './loggerSettingsPageLayout'; -import getLoggerSettingsSchema from '@salesforce/apex/LoggerSObjectMetadata.getLoggerSettingsSchema'; import canUserModifyLoggerSettings from '@salesforce/apex/LoggerSettingsController.canUserModifyLoggerSettings'; +import getLoggerSettingsSchema from '@salesforce/apex/LoggerSObjectMetadata.getLoggerSettingsSchema'; import getPicklistOptions from '@salesforce/apex/LoggerSettingsController.getPicklistOptions'; import getOrganization from '@salesforce/apex/LoggerSettingsController.getOrganization'; import searchForSetupOwner from '@salesforce/apex/LoggerSettingsController.searchForSetupOwner'; @@ -48,15 +48,12 @@ export default class LoggerSettings extends LightningElement { _currentRecord; connectedCallback() { - console.info('running connecteedCallback!'); document.title = this.title; this.showLoadingSpinner = true; Promise.all([getOrganization(), getLoggerSettingsSchema(), getPicklistOptions(), canUserModifyLoggerSettings()]) .then(([organizationRecord, loggerSettingsSchema, apexPicklistOptions, canUserModifyLoggerSettings]) => { - console.info('running then!'); this.organization = organizationRecord; this._loggerSettingsSchema = loggerSettingsSchema; - console.info('this._loggerSettingsSchema', this._loggerSettingsSchema); this.loggerSettingsPicklistOptions = apexPicklistOptions; this.canUserModifyLoggerSettings = canUserModifyLoggerSettings; @@ -120,13 +117,17 @@ export default class LoggerSettings extends LightningElement { ? event.target.checked : event.target.value; this._currentRecord[event.target.dataset.id] = value; - if (value && event.target.dataset.id === this._loggerSettingsSchema.fields.IsSavingEnabled__c) { - const checkbox = this.template.querySelector(`[data-id="${this._loggerSettingsSchema.fields.IsPlatformEventStorageEnabled__c}"]`); + if (value && event.target.dataset.id === this._loggerSettingsSchema.fields.IsSavingEnabled__c.apiName) { + const checkbox = this.template.querySelector(`[data-id="${this._loggerSettingsSchema.fields.IsPlatformEventStorageEnabled__c.apiName}"]`); if (checkbox) { checkbox.checked = true; } this.handleFieldChange({ - target: { type: 'checkbox', checked: true, dataset: { id: this._loggerSettingsSchema.fields.IsPlatformEventStorageEnabled__c } } + target: { + type: 'checkbox', + checked: true, + dataset: { id: this._loggerSettingsSchema.fields.IsPlatformEventStorageEnabled__c.apiName } + } }); } @@ -211,9 +212,7 @@ export default class LoggerSettings extends LightningElement { } get createdDateField() { - const field = this._loadField(this._loggerSettingsSchema.fields.CreatedDate.apiName); - console.info('createdDateField', field); - return field; + return this._loadField(this._loggerSettingsSchema.fields.CreatedDate.apiName); } get isEnabledField() { @@ -327,7 +326,6 @@ export default class LoggerSettings extends LightningElement { // For all other fields, use object API info to dynamically get field details // TODO - make this array configurable by storing in LoggerParameter__mdt - console.log('this._loggerSettingsSchema', this._loggerSettingsSchema); const tableColumnNames = [ 'IsEnabled__c', 'LoggingLevel__c', @@ -337,13 +335,12 @@ export default class LoggerSettings extends LightningElement { 'DefaultNumberOfDaysToRetainLogs__c', 'DefaultLogOwner__c' ]; - console.log('tableColumnNames', tableColumnNames); for (let i = 0; i < tableColumnNames.length; i++) { const field = this._loggerSettingsSchema.fields[tableColumnNames[i]]; const column = { fieldName: field.apiName, label: field.label, - type: field.dataType?.toLowerCase() + type: field.type.toLowerCase() }; if (column.type === 'string') { column.type = 'text'; @@ -382,7 +379,6 @@ export default class LoggerSettings extends LightningElement { } if (this._currentRecord) { - console.info('getting field value on current record for ' + fieldApiName, JSON.parse(JSON.stringify(this._currentRecord))); fieldDescribe.value = this._currentRecord[recordFieldApiName]; } From c7cde0ec4c72775dbf853da22c780855e3c31beb Mon Sep 17 00:00:00 2001 From: Jonathan Gillespie Date: Tue, 15 Feb 2022 14:28:42 -0500 Subject: [PATCH 41/73] Finished updating logEntryEventStream lwc to use the new Apex class LoggerSObjectMetadata --- .../data/getLogEntryEventSchema.json | 807 ++++++++++++++++++ .../__tests__/logEntryEventStream.test.js | 41 + .../logEntryEventStream.js | 33 +- .../lwc/loggerSettings/loggerSettings.html | 2 +- .../lwc/loggerSettings/loggerSettings.js | 14 +- .../loggerSettingsPageLayout.js | 4 +- 6 files changed, 871 insertions(+), 30 deletions(-) create mode 100644 nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/data/getLogEntryEventSchema.json diff --git a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/data/getLogEntryEventSchema.json b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/data/getLogEntryEventSchema.json new file mode 100644 index 000000000..972304089 --- /dev/null +++ b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/data/getLogEntryEventSchema.json @@ -0,0 +1,807 @@ +{ + "namespacePrefix": null, + "localApiName": "LogEntryEvent__e", + "labelPlural": "Log Entry Events", + "label": "Log Entry Event", + "fields": { + "UserType__c": { + "type": "string", + "localApiName": "UserType__c", + "label": "User Type", + "inlineHelpText": null, + "apiName": "UserType__c" + }, + "UserRoleName__c": { + "type": "string", + "localApiName": "UserRoleName__c", + "label": "User Role Name", + "inlineHelpText": null, + "apiName": "UserRoleName__c" + }, + "UserRoleId__c": { + "type": "string", + "localApiName": "UserRoleId__c", + "label": "User Role ID", + "inlineHelpText": null, + "apiName": "UserRoleId__c" + }, + "UserLoggingLevel__c": { + "type": "string", + "localApiName": "UserLoggingLevel__c", + "label": "User Logging Level", + "inlineHelpText": null, + "apiName": "UserLoggingLevel__c" + }, + "UserLoggingLevelOrdinal__c": { + "type": "double", + "localApiName": "UserLoggingLevelOrdinal__c", + "label": "User Logging Level Ordinal", + "inlineHelpText": null, + "apiName": "UserLoggingLevelOrdinal__c" + }, + "UserLicenseName__c": { + "type": "string", + "localApiName": "UserLicenseName__c", + "label": "User License Name", + "inlineHelpText": null, + "apiName": "UserLicenseName__c" + }, + "UserLicenseId__c": { + "type": "string", + "localApiName": "UserLicenseId__c", + "label": "User License ID", + "inlineHelpText": null, + "apiName": "UserLicenseId__c" + }, + "UserLicenseDefinitionKey__c": { + "type": "string", + "localApiName": "UserLicenseDefinitionKey__c", + "label": "User License Definition Key", + "inlineHelpText": null, + "apiName": "UserLicenseDefinitionKey__c" + }, + "TriggerSObjectType__c": { + "type": "string", + "localApiName": "TriggerSObjectType__c", + "label": "Trigger SObject Type", + "inlineHelpText": null, + "apiName": "TriggerSObjectType__c" + }, + "TriggerOperationType__c": { + "type": "string", + "localApiName": "TriggerOperationType__c", + "label": "Trigger Operation Type", + "inlineHelpText": null, + "apiName": "TriggerOperationType__c" + }, + "TriggerIsExecuting__c": { + "type": "boolean", + "localApiName": "TriggerIsExecuting__c", + "label": "Trigger Is Executing", + "inlineHelpText": null, + "apiName": "TriggerIsExecuting__c" + }, + "TransactionId__c": { + "type": "string", + "localApiName": "TransactionId__c", + "label": "Transaction ID", + "inlineHelpText": null, + "apiName": "TransactionId__c" + }, + "TransactionEntryNumber__c": { + "type": "double", + "localApiName": "TransactionEntryNumber__c", + "label": "Transaction Entry Number", + "inlineHelpText": null, + "apiName": "TransactionEntryNumber__c" + }, + "Topics__c": { + "type": "textarea", + "localApiName": "Topics__c", + "label": "DEPRECATED: Topics", + "inlineHelpText": null, + "apiName": "Topics__c" + }, + "Timestamp__c": { + "type": "datetime", + "localApiName": "Timestamp__c", + "label": "Timestamp", + "inlineHelpText": null, + "apiName": "Timestamp__c" + }, + "TimestampString__c": { + "type": "string", + "localApiName": "TimestampString__c", + "label": "Timestamp String", + "inlineHelpText": null, + "apiName": "TimestampString__c" + }, + "TimeZoneName__c": { + "type": "string", + "localApiName": "TimeZoneName__c", + "label": "Time Zone Name", + "inlineHelpText": null, + "apiName": "TimeZoneName__c" + }, + "TimeZoneId__c": { + "type": "string", + "localApiName": "TimeZoneId__c", + "label": "Time Zone ID", + "inlineHelpText": null, + "apiName": "TimeZoneId__c" + }, + "ThemeDisplayed__c": { + "type": "string", + "localApiName": "ThemeDisplayed__c", + "label": "Theme Displayed", + "inlineHelpText": null, + "apiName": "ThemeDisplayed__c" + }, + "Tags__c": { + "type": "textarea", + "localApiName": "Tags__c", + "label": "Tags", + "inlineHelpText": null, + "apiName": "Tags__c" + }, + "SystemMode__c": { + "type": "string", + "localApiName": "SystemMode__c", + "label": "System Mode", + "inlineHelpText": null, + "apiName": "SystemMode__c" + }, + "StackTrace__c": { + "type": "textarea", + "localApiName": "StackTrace__c", + "label": "Stack Trace", + "inlineHelpText": null, + "apiName": "StackTrace__c" + }, + "SourceIp__c": { + "type": "string", + "localApiName": "SourceIp__c", + "label": "Source IP", + "inlineHelpText": null, + "apiName": "SourceIp__c" + }, + "SessionType__c": { + "type": "string", + "localApiName": "SessionType__c", + "label": "Session Type", + "inlineHelpText": null, + "apiName": "SessionType__c" + }, + "SessionSecurityLevel__c": { + "type": "string", + "localApiName": "SessionSecurityLevel__c", + "label": "Session Security Level", + "inlineHelpText": null, + "apiName": "SessionSecurityLevel__c" + }, + "SessionId__c": { + "type": "string", + "localApiName": "SessionId__c", + "label": "SessionId", + "inlineHelpText": null, + "apiName": "SessionId__c" + }, + "Scenario__c": { + "type": "string", + "localApiName": "Scenario__c", + "label": "Scenario", + "inlineHelpText": null, + "apiName": "Scenario__c" + }, + "RecordSObjectType__c": { + "type": "string", + "localApiName": "RecordSObjectType__c", + "label": "Related Record SObject Type", + "inlineHelpText": null, + "apiName": "RecordSObjectType__c" + }, + "RecordSObjectTypeNamespace__c": { + "type": "string", + "localApiName": "RecordSObjectTypeNamespace__c", + "label": "Related Record Object Namespace", + "inlineHelpText": null, + "apiName": "RecordSObjectTypeNamespace__c" + }, + "RecordSObjectClassification__c": { + "type": "string", + "localApiName": "RecordSObjectClassification__c", + "label": "Related Record SObject Classification", + "inlineHelpText": null, + "apiName": "RecordSObjectClassification__c" + }, + "RecordJson__c": { + "type": "textarea", + "localApiName": "RecordJson__c", + "label": "Related Record JSON", + "inlineHelpText": null, + "apiName": "RecordJson__c" + }, + "RecordJsonMasked__c": { + "type": "boolean", + "localApiName": "RecordJsonMasked__c", + "label": "Record JSON Masked", + "inlineHelpText": null, + "apiName": "RecordJsonMasked__c" + }, + "RecordId__c": { + "type": "string", + "localApiName": "RecordId__c", + "label": "Related Record ID", + "inlineHelpText": null, + "apiName": "RecordId__c" + }, + "RecordCollectionType__c": { + "type": "string", + "localApiName": "RecordCollectionType__c", + "label": "Related Record Collection Type", + "inlineHelpText": null, + "apiName": "RecordCollectionType__c" + }, + "ProfileName__c": { + "type": "string", + "localApiName": "ProfileName__c", + "label": "Profile Name", + "inlineHelpText": null, + "apiName": "ProfileName__c" + }, + "ProfileId__c": { + "type": "string", + "localApiName": "ProfileId__c", + "label": "Profile ID", + "inlineHelpText": null, + "apiName": "ProfileId__c" + }, + "ParentLogTransactionId__c": { + "type": "string", + "localApiName": "ParentLogTransactionId__c", + "label": "Parent Log Transaction ID", + "inlineHelpText": null, + "apiName": "ParentLogTransactionId__c" + }, + "OriginType__c": { + "type": "string", + "localApiName": "OriginType__c", + "label": "Origin Type", + "inlineHelpText": null, + "apiName": "OriginType__c" + }, + "OriginLocation__c": { + "type": "string", + "localApiName": "OriginLocation__c", + "label": "Origin Location", + "inlineHelpText": null, + "apiName": "OriginLocation__c" + }, + "OrganizationType__c": { + "type": "string", + "localApiName": "OrganizationType__c", + "label": "Organization Type", + "inlineHelpText": null, + "apiName": "OrganizationType__c" + }, + "OrganizationNamespacePrefix__c": { + "type": "string", + "localApiName": "OrganizationNamespacePrefix__c", + "label": "Organization Namespace Prefix", + "inlineHelpText": null, + "apiName": "OrganizationNamespacePrefix__c" + }, + "OrganizationName__c": { + "type": "string", + "localApiName": "OrganizationName__c", + "label": "Organization Name", + "inlineHelpText": null, + "apiName": "OrganizationName__c" + }, + "OrganizationInstanceName__c": { + "type": "string", + "localApiName": "OrganizationInstanceName__c", + "label": "Organization Instance Name", + "inlineHelpText": null, + "apiName": "OrganizationInstanceName__c" + }, + "OrganizationId__c": { + "type": "string", + "localApiName": "OrganizationId__c", + "label": "Organization ID", + "inlineHelpText": null, + "apiName": "OrganizationId__c" + }, + "OrganizationEnvironmentType__c": { + "type": "string", + "localApiName": "OrganizationEnvironmentType__c", + "label": "Organization Environment Type", + "inlineHelpText": null, + "apiName": "OrganizationEnvironmentType__c" + }, + "OrganizationDomainUrl__c": { + "type": "string", + "localApiName": "OrganizationDomainUrl__c", + "label": "Organization Domain URL", + "inlineHelpText": null, + "apiName": "OrganizationDomainUrl__c" + }, + "NetworkUrlPathPrefix__c": { + "type": "string", + "localApiName": "NetworkUrlPathPrefix__c", + "label": "Site URL Path Prefix", + "inlineHelpText": null, + "apiName": "NetworkUrlPathPrefix__c" + }, + "NetworkSelfRegistrationUrl__c": { + "type": "string", + "localApiName": "NetworkSelfRegistrationUrl__c", + "label": "Site Self Registration URL", + "inlineHelpText": null, + "apiName": "NetworkSelfRegistrationUrl__c" + }, + "NetworkName__c": { + "type": "string", + "localApiName": "NetworkName__c", + "label": "Site Name", + "inlineHelpText": null, + "apiName": "NetworkName__c" + }, + "NetworkLogoutUrl__c": { + "type": "string", + "localApiName": "NetworkLogoutUrl__c", + "label": "Site Logout URL", + "inlineHelpText": null, + "apiName": "NetworkLogoutUrl__c" + }, + "NetworkLoginUrl__c": { + "type": "string", + "localApiName": "NetworkLoginUrl__c", + "label": "Site Login URL", + "inlineHelpText": null, + "apiName": "NetworkLoginUrl__c" + }, + "NetworkId__c": { + "type": "string", + "localApiName": "NetworkId__c", + "label": "Network ID", + "inlineHelpText": null, + "apiName": "NetworkId__c" + }, + "Message__c": { + "type": "textarea", + "localApiName": "Message__c", + "label": "Message", + "inlineHelpText": null, + "apiName": "Message__c" + }, + "MessageTruncated__c": { + "type": "boolean", + "localApiName": "MessageTruncated__c", + "label": "Message Truncated", + "inlineHelpText": null, + "apiName": "MessageTruncated__c" + }, + "MessageMasked__c": { + "type": "boolean", + "localApiName": "MessageMasked__c", + "label": "Message Masked", + "inlineHelpText": null, + "apiName": "MessageMasked__c" + }, + "LogoutUrl__c": { + "type": "string", + "localApiName": "LogoutUrl__c", + "label": "Logout URL", + "inlineHelpText": null, + "apiName": "LogoutUrl__c" + }, + "LoginType__c": { + "type": "string", + "localApiName": "LoginType__c", + "label": "Login Type", + "inlineHelpText": null, + "apiName": "LoginType__c" + }, + "LoginPlatform__c": { + "type": "string", + "localApiName": "LoginPlatform__c", + "label": "Login Platform", + "inlineHelpText": null, + "apiName": "LoginPlatform__c" + }, + "LoginHistoryId__c": { + "type": "string", + "localApiName": "LoginHistoryId__c", + "label": "Login History ID", + "inlineHelpText": null, + "apiName": "LoginHistoryId__c" + }, + "LoginDomain__c": { + "type": "string", + "localApiName": "LoginDomain__c", + "label": "DEPRECATED: Login Domain", + "inlineHelpText": null, + "apiName": "LoginDomain__c" + }, + "LoginBrowser__c": { + "type": "string", + "localApiName": "LoginBrowser__c", + "label": "Login Browser", + "inlineHelpText": null, + "apiName": "LoginBrowser__c" + }, + "LoginApplication__c": { + "type": "string", + "localApiName": "LoginApplication__c", + "label": "Login Application", + "inlineHelpText": null, + "apiName": "LoginApplication__c" + }, + "LoggingLevel__c": { + "type": "string", + "localApiName": "LoggingLevel__c", + "label": "Logging Level", + "inlineHelpText": null, + "apiName": "LoggingLevel__c" + }, + "LoggingLevelOrdinal__c": { + "type": "double", + "localApiName": "LoggingLevelOrdinal__c", + "label": "Logging Level Ordinal", + "inlineHelpText": null, + "apiName": "LoggingLevelOrdinal__c" + }, + "LoggerVersionNumber__c": { + "type": "string", + "localApiName": "LoggerVersionNumber__c", + "label": "Logger Version Number", + "inlineHelpText": null, + "apiName": "LoggerVersionNumber__c" + }, + "LoggedByUsername__c": { + "type": "string", + "localApiName": "LoggedByUsername__c", + "label": "Username", + "inlineHelpText": null, + "apiName": "LoggedByUsername__c" + }, + "LoggedById__c": { + "type": "string", + "localApiName": "LoggedById__c", + "label": "Logged By ID", + "inlineHelpText": null, + "apiName": "LoggedById__c" + }, + "Locale__c": { + "type": "string", + "localApiName": "Locale__c", + "label": "Locale", + "inlineHelpText": null, + "apiName": "Locale__c" + }, + "LimitsSoslSearchesUsed__c": { + "type": "double", + "localApiName": "LimitsSoslSearchesUsed__c", + "label": "SOSL Searches Used", + "inlineHelpText": null, + "apiName": "LimitsSoslSearchesUsed__c" + }, + "LimitsSoslSearchesMax__c": { + "type": "double", + "localApiName": "LimitsSoslSearchesMax__c", + "label": "SOSL Searches Max", + "inlineHelpText": null, + "apiName": "LimitsSoslSearchesMax__c" + }, + "LimitsSoqlQueryRowsUsed__c": { + "type": "double", + "localApiName": "LimitsSoqlQueryRowsUsed__c", + "label": "SOQL Query Rows Used", + "inlineHelpText": null, + "apiName": "LimitsSoqlQueryRowsUsed__c" + }, + "LimitsSoqlQueryRowsMax__c": { + "type": "double", + "localApiName": "LimitsSoqlQueryRowsMax__c", + "label": "SOQL Query Rows Max", + "inlineHelpText": null, + "apiName": "LimitsSoqlQueryRowsMax__c" + }, + "LimitsSoqlQueryLocatorRowsUsed__c": { + "type": "double", + "localApiName": "LimitsSoqlQueryLocatorRowsUsed__c", + "label": "SOQL Query Locator Rows Used", + "inlineHelpText": null, + "apiName": "LimitsSoqlQueryLocatorRowsUsed__c" + }, + "LimitsSoqlQueryLocatorRowsMax__c": { + "type": "double", + "localApiName": "LimitsSoqlQueryLocatorRowsMax__c", + "label": "SOQL Query Locator Rows Max", + "inlineHelpText": null, + "apiName": "LimitsSoqlQueryLocatorRowsMax__c" + }, + "LimitsSoqlQueriesUsed__c": { + "type": "double", + "localApiName": "LimitsSoqlQueriesUsed__c", + "label": "SOQL Queries Used", + "inlineHelpText": null, + "apiName": "LimitsSoqlQueriesUsed__c" + }, + "LimitsSoqlQueriesMax__c": { + "type": "double", + "localApiName": "LimitsSoqlQueriesMax__c", + "label": "SOQL Queries Max", + "inlineHelpText": null, + "apiName": "LimitsSoqlQueriesMax__c" + }, + "LimitsQueueableJobsUsed__c": { + "type": "double", + "localApiName": "LimitsQueueableJobsUsed__c", + "label": "Queueable Jobs Used", + "inlineHelpText": null, + "apiName": "LimitsQueueableJobsUsed__c" + }, + "LimitsQueueableJobsMax__c": { + "type": "double", + "localApiName": "LimitsQueueableJobsMax__c", + "label": "Queueable Jobs Max", + "inlineHelpText": null, + "apiName": "LimitsQueueableJobsMax__c" + }, + "LimitsPublishImmediateDmlStatementsUsed__c": { + "type": "double", + "localApiName": "LimitsPublishImmediateDmlStatementsUsed__c", + "label": "Publish Immediate Statements DML Used", + "inlineHelpText": null, + "apiName": "LimitsPublishImmediateDmlStatementsUsed__c" + }, + "LimitsPublishImmediateDmlStatementsMax__c": { + "type": "double", + "localApiName": "LimitsPublishImmediateDmlStatementsMax__c", + "label": "Publish Immediate Statements DML Max", + "inlineHelpText": null, + "apiName": "LimitsPublishImmediateDmlStatementsMax__c" + }, + "LimitsMobilePushApexCallsUsed__c": { + "type": "double", + "localApiName": "LimitsMobilePushApexCallsUsed__c", + "label": "Mobile Push Apex Calls Used", + "inlineHelpText": null, + "apiName": "LimitsMobilePushApexCallsUsed__c" + }, + "LimitsMobilePushApexCallsMax__c": { + "type": "double", + "localApiName": "LimitsMobilePushApexCallsMax__c", + "label": "Mobile Push Apex Calls Max", + "inlineHelpText": null, + "apiName": "LimitsMobilePushApexCallsMax__c" + }, + "LimitsHeapSizeUsed__c": { + "type": "double", + "localApiName": "LimitsHeapSizeUsed__c", + "label": "Heap Size Used", + "inlineHelpText": null, + "apiName": "LimitsHeapSizeUsed__c" + }, + "LimitsHeapSizeMax__c": { + "type": "double", + "localApiName": "LimitsHeapSizeMax__c", + "label": "Heap Size Max", + "inlineHelpText": null, + "apiName": "LimitsHeapSizeMax__c" + }, + "LimitsFutureCallsUsed__c": { + "type": "double", + "localApiName": "LimitsFutureCallsUsed__c", + "label": "Future Calls Used", + "inlineHelpText": null, + "apiName": "LimitsFutureCallsUsed__c" + }, + "LimitsFutureCallsMax__c": { + "type": "double", + "localApiName": "LimitsFutureCallsMax__c", + "label": "Future Calls Max", + "inlineHelpText": null, + "apiName": "LimitsFutureCallsMax__c" + }, + "LimitsEmailInvocationsUsed__c": { + "type": "double", + "localApiName": "LimitsEmailInvocationsUsed__c", + "label": "Email Invocations Used", + "inlineHelpText": null, + "apiName": "LimitsEmailInvocationsUsed__c" + }, + "LimitsEmailInvocationsMax__c": { + "type": "double", + "localApiName": "LimitsEmailInvocationsMax__c", + "label": "Email Invocations Max", + "inlineHelpText": null, + "apiName": "LimitsEmailInvocationsMax__c" + }, + "LimitsDmlStatementsUsed__c": { + "type": "double", + "localApiName": "LimitsDmlStatementsUsed__c", + "label": "DML Statements Used", + "inlineHelpText": null, + "apiName": "LimitsDmlStatementsUsed__c" + }, + "LimitsDmlStatementsMax__c": { + "type": "double", + "localApiName": "LimitsDmlStatementsMax__c", + "label": "DML Statements Max", + "inlineHelpText": null, + "apiName": "LimitsDmlStatementsMax__c" + }, + "LimitsDmlRowsUsed__c": { + "type": "double", + "localApiName": "LimitsDmlRowsUsed__c", + "label": "DML Rows Used", + "inlineHelpText": null, + "apiName": "LimitsDmlRowsUsed__c" + }, + "LimitsDmlRowsMax__c": { + "type": "double", + "localApiName": "LimitsDmlRowsMax__c", + "label": "DML Rows Max", + "inlineHelpText": null, + "apiName": "LimitsDmlRowsMax__c" + }, + "LimitsCpuTimeUsed__c": { + "type": "double", + "localApiName": "LimitsCpuTimeUsed__c", + "label": "CPU Time Used", + "inlineHelpText": null, + "apiName": "LimitsCpuTimeUsed__c" + }, + "LimitsCpuTimeMax__c": { + "type": "double", + "localApiName": "LimitsCpuTimeMax__c", + "label": "CPU Time Max", + "inlineHelpText": null, + "apiName": "LimitsCpuTimeMax__c" + }, + "LimitsCalloutsUsed__c": { + "type": "double", + "localApiName": "LimitsCalloutsUsed__c", + "label": "Callouts Used", + "inlineHelpText": null, + "apiName": "LimitsCalloutsUsed__c" + }, + "LimitsCalloutsMax__c": { + "type": "double", + "localApiName": "LimitsCalloutsMax__c", + "label": "Callouts Max", + "inlineHelpText": null, + "apiName": "LimitsCalloutsMax__c" + }, + "LimitsAsyncCallsUsed__c": { + "type": "double", + "localApiName": "LimitsAsyncCallsUsed__c", + "label": "Async Calls Used", + "inlineHelpText": null, + "apiName": "LimitsAsyncCallsUsed__c" + }, + "LimitsAsyncCallsMax__c": { + "type": "double", + "localApiName": "LimitsAsyncCallsMax__c", + "label": "Async Calls Max", + "inlineHelpText": null, + "apiName": "LimitsAsyncCallsMax__c" + }, + "LimitsAggregateQueryMax__c": { + "type": "double", + "localApiName": "LimitsAggregateQueryMax__c", + "label": "Limits AggregateQueryMax_", + "inlineHelpText": null, + "apiName": "LimitsAggregateQueryMax__c" + }, + "LimitsAggregateQueriesUsed__c": { + "type": "double", + "localApiName": "LimitsAggregateQueriesUsed__c", + "label": "Aggregate Queries Used", + "inlineHelpText": null, + "apiName": "LimitsAggregateQueriesUsed__c" + }, + "LimitsAggregateQueriesMax__c": { + "type": "double", + "localApiName": "LimitsAggregateQueriesMax__c", + "label": "Aggregate Queries Max", + "inlineHelpText": null, + "apiName": "LimitsAggregateQueriesMax__c" + }, + "ExceptionType__c": { + "type": "string", + "localApiName": "ExceptionType__c", + "label": "Exception Type", + "inlineHelpText": null, + "apiName": "ExceptionType__c" + }, + "ExceptionStackTrace__c": { + "type": "textarea", + "localApiName": "ExceptionStackTrace__c", + "label": "Exception Stack Trace", + "inlineHelpText": null, + "apiName": "ExceptionStackTrace__c" + }, + "ExceptionMessage__c": { + "type": "textarea", + "localApiName": "ExceptionMessage__c", + "label": "Exception Message", + "inlineHelpText": null, + "apiName": "ExceptionMessage__c" + }, + "EpochTimestamp__c": { + "type": "double", + "localApiName": "EpochTimestamp__c", + "label": "Epoch Timestamp", + "inlineHelpText": null, + "apiName": "EpochTimestamp__c" + }, + "DatabaseResultType__c": { + "type": "string", + "localApiName": "DatabaseResultType__c", + "label": "Database Result Type", + "inlineHelpText": null, + "apiName": "DatabaseResultType__c" + }, + "DatabaseResultJson__c": { + "type": "textarea", + "localApiName": "DatabaseResultJson__c", + "label": "Database Result JSON", + "inlineHelpText": null, + "apiName": "DatabaseResultJson__c" + }, + "DatabaseResultCollectionType__c": { + "type": "string", + "localApiName": "DatabaseResultCollectionType__c", + "label": "Database Result Collection Type", + "inlineHelpText": null, + "apiName": "DatabaseResultCollectionType__c" + }, + "ComponentType__c": { + "type": "string", + "localApiName": "ComponentType__c", + "label": "Component Type", + "inlineHelpText": null, + "apiName": "ComponentType__c" + }, + "ApiVersion__c": { + "type": "string", + "localApiName": "ApiVersion__c", + "label": "API Version", + "inlineHelpText": null, + "apiName": "ApiVersion__c" + }, + "EventUuid": { + "type": "string", + "localApiName": "EventUuid", + "label": "Event UUID", + "inlineHelpText": null, + "apiName": "EventUuid" + }, + "CreatedById": { + "type": "reference", + "localApiName": "CreatedById", + "label": "Created By ID", + "inlineHelpText": null, + "apiName": "CreatedById" + }, + "CreatedDate": { + "type": "datetime", + "localApiName": "CreatedDate", + "label": "Created Date", + "inlineHelpText": null, + "apiName": "CreatedDate" + }, + "ReplayId": { + "type": "string", + "localApiName": "ReplayId", + "label": "Replay ID", + "inlineHelpText": null, + "apiName": "ReplayId" + } + }, + "apiName": "LogEntryEvent__e" +} diff --git a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/logEntryEventStream.test.js b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/logEntryEventStream.test.js index c91513aae..f093a312b 100644 --- a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/logEntryEventStream.test.js +++ b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/__tests__/logEntryEventStream.test.js @@ -1,6 +1,7 @@ import { createElement } from 'lwc'; import LogEntryEventStream from 'c/logEntryEventStream'; import { jestMockPublish } from 'lightning/empApi'; +import getLogEntryEventSchema from '@salesforce/apex/LoggerSObjectMetadata.getLogEntryEventSchema'; const loggingLevels = { FINEST: 2, @@ -24,6 +25,18 @@ const mockLogEntryEventTemplate = { TransactionEntryNumber__c: 1 }; +const mockLogEntryEventSchema = require('./data/getLogEntryEventSchema.json'); + +jest.mock( + '@salesforce/apex/LoggerSObjectMetadata.getLogEntryEventSchema', + () => { + return { + default: jest.fn() + }; + }, + { virtual: true } +); + function getPlatformEventText(mockLogEntryEvent) { return ( mockLogEntryEvent.Timestamp__c + @@ -48,6 +61,8 @@ describe('LogEntryEventStream tests', () => { } }); it('streams a single log entry event', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -66,6 +81,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBe(expectedStreamText); }); it('toggles streaming when button clicked', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -83,6 +100,8 @@ describe('LogEntryEventStream tests', () => { }); }); it('clears stream when clear button clicked', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -107,6 +126,8 @@ describe('LogEntryEventStream tests', () => { }); }); it('includes matching log entry event for logging level filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -131,6 +152,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBe(expectedStreamText); }); it('excludes non-matching log entry event for logging level filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -154,6 +177,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBeFalsy(); }); it('includes matching log entry event for origin type filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -177,6 +202,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBe(expectedStreamText); }); it('excludes non-matching log entry event for origin type filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -199,6 +226,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBeFalsy(); }); it('includes matching log entry event for origin location filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -222,6 +251,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBe(expectedStreamText); }); it('excludes non-matching log entry event for origin location filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -244,6 +275,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBeFalsy(); }); it('includes matching log entry event for logged by filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -267,6 +300,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBe(expectedStreamText); }); it('excludes non-matching log entry event for logged by filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -289,6 +324,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBeFalsy(); }); it('includes matching log entry event using string for message filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -312,6 +349,8 @@ describe('LogEntryEventStream tests', () => { expect(eventStreamDiv.textContent).toBe(expectedStreamText); }); it('excludes non-matching log entry event for message filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); @@ -335,6 +374,8 @@ describe('LogEntryEventStream tests', () => { }); it('includes matching log entry event using regex for message filter', async () => { + getLogEntryEventSchema.mockResolvedValue(mockLogEntryEventSchema); + const element = createElement('log-entry-event-stream', { is: LogEntryEventStream }); diff --git a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js index 4c8b45c32..1010b73b3 100644 --- a/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js +++ b/nebula-logger/core/main/log-management/lwc/logEntryEventStream/logEntryEventStream.js @@ -4,7 +4,7 @@ ************************************************************************************************/ import { LightningElement } from 'lwc'; -import { isEmpEnabled, subscribe, unsubscribe } from 'lightning/empApi'; +import { subscribe, unsubscribe } from 'lightning/empApi'; import getLogEntryEventSchema from '@salesforce/apex/LoggerSObjectMetadata.getLogEntryEventSchema'; export default class LogEntryEventStream extends LightningElement { @@ -31,16 +31,9 @@ export default class LogEntryEventStream extends LightningElement { getLogEntryEventSchema().then(result => { this._logEntryEventSchema = result; - console.log('this._logEntryEventSchema', this._logEntryEventSchema); + this._channel = '/event/' + this._logEntryEventSchema.apiName; - // For reasons unknown, the platform returns `LogEntryEvent__c` instead of `LogEntryEvent__e` - const objectApiName = this._logEntryEventSchema.apiName; - console.info('objectApiName', objectApiName); - this._channel = '/event/' + objectApiName; - - if (isEmpEnabled() === true) { - this.createSubscription(); - } + this.createSubscription(); }); } @@ -86,13 +79,12 @@ export default class LogEntryEventStream extends LightningElement { async createSubscription() { this._subscription = await subscribe(this._channel, -2, event => { const logEntryEvent = event.data.payload; - console.log('logEntryEvent', logEntryEvent); // As of API v52.0 (Summer '21), platform events have a unique field, EventUUID // but it doesn't seem to be populated via empApi, so use a synthetic key instead logEntryEvent.key = - logEntryEvent[this._logEntryEventSchema.fields.TransactionId__c] + + logEntryEvent[this._logEntryEventSchema.fields.TransactionId__c.apiName] + '__' + - logEntryEvent[this._logEntryEventSchema.fields.TransactionEntryNumber__c]; + logEntryEvent[this._logEntryEventSchema.fields.TransactionEntryNumber__c.apiName]; this.unfilteredEvents.unshift(logEntryEvent); this._filterEvents(); }); @@ -146,31 +138,34 @@ export default class LogEntryEventStream extends LightningElement { } _meetsLoggedByFilter(logEntryEvent) { - return this._matchesTextFilter(this.loggedByFilter, logEntryEvent[this._logEntryEventSchema.fields.LoggedByUsername__c]); + return this._matchesTextFilter(this.loggedByFilter, logEntryEvent[this._logEntryEventSchema.fields.LoggedByUsername__c.apiName]); } _meetsLoggingLevelFilter(logEntryEvent) { let matches = false; - if (!this.loggingLevelFilter || Number(logEntryEvent[this._logEntryEventSchema.fields.LoggingLevelOrdinal__c]) >= Number(this.loggingLevelFilter)) { + if ( + !this.loggingLevelFilter || + Number(logEntryEvent[this._logEntryEventSchema.fields.LoggingLevelOrdinal__c.apiName]) >= Number(this.loggingLevelFilter) + ) { matches = true; } return matches; } _meetsMessageFilter(logEntryEvent) { - return this._matchesTextFilter(this.messageFilter, logEntryEvent[this._logEntryEventSchema.fields.Message__c]); + return this._matchesTextFilter(this.messageFilter, logEntryEvent[this._logEntryEventSchema.fields.Message__c.apiName]); } _meetsOriginLocationFilter(logEntryEvent) { - return this._matchesTextFilter(this.originLocationFilter, logEntryEvent[this._logEntryEventSchema.fields.OriginLocation__c]); + return this._matchesTextFilter(this.originLocationFilter, logEntryEvent[this._logEntryEventSchema.fields.OriginLocation__c.apiName]); } _meetsOriginTypeFilter(logEntryEvent) { - return this._matchesTextFilter(this.originTypeFilter, logEntryEvent[this._logEntryEventSchema.fields.OriginType__c]); + return this._matchesTextFilter(this.originTypeFilter, logEntryEvent[this._logEntryEventSchema.fields.OriginType__c.apiName]); } _meetsScenarioFilter(logEntryEvent) { - return this._matchesTextFilter(this.scenarioFilter, logEntryEvent[this._logEntryEventSchema.fields.Scenario__c]); + return this._matchesTextFilter(this.scenarioFilter, logEntryEvent[this._logEntryEventSchema.fields.Scenario__c.apiName]); } _matchesTextFilter(filterCriteria = '', text = '') { diff --git a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html index 404d0e49a..a3e4c4dd2 100644 --- a/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html +++ b/nebula-logger/core/main/log-management/lwc/loggerSettings/loggerSettings.html @@ -15,7 +15,7 @@ onclick={loadSettingsRecords} title="Refresh Records" > -