diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f417cc11c..28b126eb6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,14 +5,17 @@ on: push: paths-ignore: - 'sfdx-project.json' + - 'package.json' - 'README.md' - 'Contributing.md' - 'CODE_OF_CONDUCT.md' - 'package.json' - 'LICENSE' - 'content/**' + - 'docs/**' - 'examples/**' - - 'managed-package/**' + - 'packages/**' + - '.forceignore' - '.gitignore' - '.prettierignore' - '.prettierrc' diff --git a/README.md b/README.md index 3b094bb59..b5c2995b9 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,19 @@ # Nebula Logger for Salesforce + [![Deployment](https://github.com/jongpie/NebulaLogger/actions/workflows/deploy.yml/badge.svg)](https://github.com/jongpie/NebulaLogger/actions/workflows/deploy.yml) [![codecov](https://codecov.io/gh/jongpie/NebulaLogger/branch/main/graph/badge.svg?token=1DJPDRM3N4)](https://codecov.io/gh/jongpie/NebulaLogger) Designed for Salesforce admins, developers & architects. A robust logger for Apex, Flow, Process Builder & Integrations. -[![Deploy Unpackaged Metadata](./content/btn-deploy-unmanaged-metadata.png)](https://githubsfdeploy.herokuapp.com/?owner=jongpie&repo=NebulaLogger&ref=main) +[![Install Unlocked Package](./content/btn-install-unlocked-package.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y0000027FGFQA2) [![Install Managed Package](./content/btn-install-managed-package.png)](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t5Y0000027FFgQAM) +[![Deploy Unpackaged Metadata](./content/btn-deploy-unpackaged-metadata.png)](https://githubsfdeploy.herokuapp.com/?owner=jongpie&repo=NebulaLogger&ref=main) [![View Documentation](./content/btn-view-documentation.png)](https://jongpie.github.io/NebulaLogger/) -___ +--- ## Features + 1. Easily add log entries via Apex, Flow & Process Builder to generate 1 consolidate log 2. Manage & report on logging data using the `Log__c` and `LogEntry__c` objects 3. Leverage `LogEntryEvent__e` platform events for real-time monitoring & integrations @@ -18,39 +21,88 @@ ___ 5. View related log entries on any record page by adding the 'Related Log Entries' component in App Builder 6. Dynamically assign Topics to `Log__c` and `LogEntry__c` records for tagging/labeling your logs (not currently available in the managed package) -___ +--- ## Installing -You can choose to either deploy the metadata from this repo to your org, or install the managed package. The metadata is the same, but there are some differences in using the 2 versions. All examples in README are for the unmanaged metadata - simply add the `Nebula` namespace from the examples if you are using the managed package. - -| | Unpackaged Metadata | 2nd Gen Managed Package | -| ----------- | ------------------- | ----------------------- | -| Namespace | none | `Nebula` | -| Future Releases | New enhancements & bugfixes will be immediately available in GitHub | Slower release cycle: new package versions will only be released once new enhancements & bugfixes have been tested and code is stabilized | -| Public Apex Methods | Any `public` Apex methods are subject to change in the future - they can be used, but you may encounter deployment issues if future changes to `public` methods are not backwards-compatible | Only `global` methods are available in managed packages - any `global` Apex methods available in the managed package will be supported for the foreseeable future | -| Apex Debug Statements | `System.debug()` is automatically called | Requires adding your own calls for `System.debug()` due to Salesforce limitations with managed packages | -| Apex Stack Traces | Automatically stored in `LogEntry__c.StackTrace__c` when calling methods like `Logger.debug('my message');` | Requires calling `parseStackTrace()` due to Salesforce limitations with managed packages. For example:
`Logger.debug('my message').parseStackTrace(new DmlException().getStackTrace());` | -| Assign Topics (Tagging/Labeling System) | Provide `List topics` in Apex or Flow to dynamically assign Salesforce Topics to `Log__c` and `LogEntry__c` records | This functionality is not currently available in the managed package | - -___ +You can choose to install the unlocked package, you can deploy the metadata from this repo to your org, or you can install the managed package. The metadata is the same in all 3 options, but there are some differences in using the 3 versions. All examples in README are for the unlocked package/unpackaged metadata (no namespace) - simply add the `Nebula` namespace from the examples if you are using the managed package. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Unlocked Package (Recommended)Managed PackageUnpackaged Metadata
InstallationInstall, update & uninstall with 2nd Gen PackageInstall, update & uninstall with 2nd Gen PackageDeploy using metadata API, remove using destructiveChanges.xml
NamespacenoneNebulanone
Future ReleasesSlower release cycle: new package versions will only be released once new enhancements & bugfixes have been tested and code is stabilizedSlower release cycle: new package versions will only be released once new enhancements & bugfixes have been tested and code is stabilizedNew enhancements & bugfixes will be immediately available in GitHub
Public Apex MethodsAny public Apex methods are subject to change in the future - they can be used, but you may encounter deployment issues if future changes to public methods are not backwards-compatibleOnly global methods are available in managed packages - any global Apex methods available in the managed package will be supported for the foreseeable futureAny public Apex methods are subject to change in the future - they can be used, but you may encounter deployment issues if future changes to public methods are not backwards-compatible
Apex Debug StatementsSystem.debug() is automatically calledRequires adding your own calls for System.debug() due to Salesforce limitations with managed packagesSystem.debug() is automatically called
Apex Stack TracesAutomatically stored in LogEntry__c.StackTrace__c when calling methods like Logger.debug('my message');Requires calling parseStackTrace() due to Salesforce limitations with managed packages. For example:
Logger.debug('my message').parseStackTrace(new DmlException().getStackTrace());
Automatically stored in LogEntry__c.StackTrace__c when calling methods like Logger.debug('my message');
Assign Topics (Tagging/Labeling System)Provide List<String> topics in Apex or Flow to dynamically assign Salesforce Topics to Log__c and LogEntry__c recordsThis functionality is not currently available in the managed packageProvide List<String> topics in Apex or Flow to dynamically assign Salesforce Topics to Log__c and LogEntry__c records
+ +--- ## Getting Started + After deploying Nebula Logger to your org, there are a few additional configuration changes needed... -* Assign permission set(s) to users - * `LoggerLogCreator` provides the minimum access needed for users to generate logs via Apex, Flow or Process Builder - * `LoggerEndUser` provides access to generate logs, as well as read-only access to any log records shared with the user. - * `LoggerLogViewer` provides view-all access (read-only) to all log records. This does **not** provide access to generate logs. - * `LoggerAdmin` provides view-all and modify-all access to all log records. -* Customize the default settings in `LoggerSettings__c` - * You can customize settings at the org, profile and user levels -* Unmanaged Metadata Only: Enable Salesforce Topics for the `Log__c` and `LogEntry__c` objects for tagging/labeling. See [Salesforce Help](https://help.salesforce.com/articleView?id=sf.collab_topics_records_admin.htm) for more details. - * Currently, enabling Topics for objects must still be done using the Salesforce Classic UI. Once enabled, Topics can then be used from withing Lightning Experience. - * Once enabled, Topics can be added via Apex and Flow and then used as list view filters (and more) for the object `Log__c`. - -___ + +- Assign permission set(s) to users + - `LoggerLogCreator` provides the minimum access needed for users to generate logs via Apex, Flow or Process Builder + - `LoggerEndUser` provides access to generate logs, as well as read-only access to any log records shared with the user. + - `LoggerLogViewer` provides view-all access (read-only) to all log records. This does **not** provide access to generate logs. + - `LoggerAdmin` provides view-all and modify-all access to all log records. +- Customize the default settings in `LoggerSettings__c` + - You can customize settings at the org, profile and user levels +- Unmanaged Metadata Only: Enable Salesforce Topics for the `Log__c` and `LogEntry__c` objects for tagging/labeling. See [Salesforce Help](https://help.salesforce.com/articleView?id=sf.collab_topics_records_admin.htm) for more details. + - Currently, enabling Topics for objects must still be done using the Salesforce Classic UI. Once enabled, Topics can then be used from withing Lightning Experience. + - Once enabled, Topics can be added via Apex and Flow and then used as list view filters (and more) for the object `Log__c`. + +--- ## Logger for Apex: Quick Start + For Apex developers, the `Logger` class has several methods that can be used to add entries with different logging levels. Each logging level's method has several overloads to support multiple parameters. ```java @@ -72,9 +124,10 @@ This results in 1 `Log__c` record with several related `LogEntry__c` records. ![Apex Log Results](./content/apex-log.png) -___ +--- ## Logger for Flow & Process Builder: Quick Start + Within Flow & Process Builder, you can select 1 of the several Logging actions ![Flow Logger Actions](./content/flow-logger-actions.png) @@ -87,9 +140,10 @@ This results in a `Log__c` record with related `LogEntry__c` records. ![Flow Log Results](./content/flow-log.png) -___ +--- ## All Together: Apex & Flow in One Log + After incorporating Logger into your Flows & Apex code (including controllers, trigger framework, etc.), you'll have a unified transaction log of all your declarative & custom code automations. ```java @@ -109,40 +163,51 @@ This generates 1 consolidated `Log__c`, containing `LogEntry__c` records from bo ![Flow Log Results](./content/combined-apex-flow-log.png) ## Event-Driven Integrations with Platform Events + Logger is built using Salesforce's [Platform Events](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_intro.htm), an event-driven messaging architecture. External integrations can subscribe to log events using the `LogEntryEvent__e` object - see more details at [the Platform Events Developer Guide site](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_subscribe_cometd.htm) -___ +--- ## Managing Logs + To help development and support teams better manage logs (and any underlying code or config issues), some fields on `Log__c` are provided to track the owner, priority and status of a log. These fields are optional, but are helpful in critical environments (production, QA sandboxes, UAT sandboxes, etc.) for monitoring ongoing user activities. -* All editable fields on `Log__c` can be updated via the 'Manage Log' quick action (shown below) - ![Manage Log QuickAction](./content/manage-log-quickaction.png) -* Additional fields are automatically set based on changes to `Log__c.Status__c` - * `Log__c.ClosedBy__c` - The user who closed the log - * `Log__c.ClosedDate__c` - The datetime that the log was closed - * `Log__c.IsClosed__c` - Indicates if the log is closed, based on the selected status (and associated config in the 'Log Status' custom metadata type) - * `Log__c.IsResolved__c` - Indicates if the log is resolved (meaning that it required analaysis/work, which has been completed). Only closed statuses can be considered resolved. This is also driven based on the selected status (and associated config in the 'Log Status' custom metadata type) -* To customize the statuses provided, simply update the picklist values for `Log__c.Status__c` and create/update corresponding records in the custom metadata type `LogStatus__mdt`. This custom metadata type controls which statuses are considerd closed and resolved. +- All editable fields on `Log__c` can be updated via the 'Manage Log' quick action (shown below) + + ![Manage Log QuickAction](./content/manage-log-quickaction.png) -___ +- Additional fields are automatically set based on changes to `Log__c.Status__c` + - `Log__c.ClosedBy__c` - The user who closed the log + - `Log__c.ClosedDate__c` - The datetime that the log was closed + - `Log__c.IsClosed__c` - Indicates if the log is closed, based on the selected status (and associated config in the 'Log Status' custom metadata type) + - `Log__c.IsResolved__c` - Indicates if the log is resolved (meaning that it required analaysis/work, which has been completed). Only closed statuses can be considered resolved. This is also driven based on the selected status (and associated config in the 'Log Status' custom metadata type) +- To customize the statuses provided, simply update the picklist values for `Log__c.Status__c` and create/update corresponding records in the custom metadata type `LogStatus__mdt`. This custom metadata type controls which statuses are considerd closed and resolved. + +--- ## View Related Log Entries on a Record Page + Within App Builder, admins can add the 'Related Log Entries' lightning web component to any record page. Admins can also control which columns are displayed be creating & selecting a field set on `LogEntry__c` with the desired fields. -* The component automatically shows any related log entries, based on `LogEntry__c.RecordId__c == :recordId` -* Users can search the list of log entries for a particular record using the component's built-insearch box. The component dynamically searches all related log entries using SOSL. -* Component automatically enforces Salesforce's security model - * Object-Level Security - Users without read access to `LogEntry__c` will not see the component - * Record-Level Security - Users will only see records that have been shared with them - * Field-Level Security - Users will only see the fields within the field set that they have access to + +- The component automatically shows any related log entries, based on `LogEntry__c.RecordId__c == :recordId` +- Users can search the list of log entries for a particular record using the component's built-insearch box. The component dynamically searches all related log entries using SOSL. +- Component automatically enforces Salesforce's security model + - Object-Level Security - Users without read access to `LogEntry__c` will not see the component + - Record-Level Security - Users will only see records that have been shared with them + - Field-Level Security - Users will only see the fields within the field set that they have access to ![Related Log Entries](./content/relate-log-entries-lwc.png) -___ + +--- ## Deleting Old Logs + Admins can easily delete old logs using 2 methods: list views or Apex batch jobs + ### Mass Deleting with List Views + Salesforce (still) does not support mass deleting records out-of-the-box. There's been [an Idea for 11+ years](https://trailblazer.salesforce.com/ideaView?id=08730000000BqczAAC) about it, but it's still not standard functionality. A custom button is available on `Log__c` list views to provide mass deletion functionality. + 1. Users can select 1 or more `Log__c` records from the list view to choose which logs will be deleted ![Mass Delete Selection](./content/log-mass-delete-selection.png) @@ -152,19 +217,24 @@ Salesforce (still) does not support mass deleting records out-of-the-box. There' ![Mass Delete Confirmation](./content/log-mass-delete-confirmation.png) ### Batch Deleting with Apex Jobs + Two Apex classes are provided out-of-the-box to handle automatically deleting old logs + 1. `LogBatchPurger` - this batch Apex class will delete any `Log__c` records with `Log__c.LogRetentionDate__c <= System.today()`. - * By default, this field is populated with "TODAY + 14 DAYS" - the number of days to retain a log can be customized in `LoggerSettings__c`. - * Users can also manually edit this field to change the retention date - or set it to null to prevent the log from being automatically deleted + - By default, this field is populated with "TODAY + 14 DAYS" - the number of days to retain a log can be customized in `LoggerSettings__c`. + - Users can also manually edit this field to change the retention date - or set it to null to prevent the log from being automatically deleted 2. `LogBatchPurgeScheduler` - this schedulable Apex class can be schedule to run `LogBatchPurger` on a daily or weekly basis -___ +--- ## Uninstalling/Removing Logger -If you want to remove the managed package, you can do so by simply uninstalling it in your org under Setup --> Installed Packages. -If you want to delete the unmanaged metadata, there is a `destructiveChanges.xml` file available in the directory [./uninstall](./uninstall). This can be used in SFDX with the command `sfdx force:mdapi:deploy --deploydir uninstall --wait 30`. However, due to some Salesforce deployment limitations, there are still some manual steps needed to delete everything: +If you want to remove the unlocked or managed packages, you can do so by simply uninstalling them in your org under Setup --> Installed Packages. + +![Uninstall Packages](./content/installed-packages-uninstall-option.png) + +If you want to delete the unmanaged metadata, there is a `destructiveChanges.xml` file available in the directory [./packages/unpackaged-metadata/](./packages/unpackaged-metadata/). This can be used in SFDX with the command `sfdx force:mdapi:deploy --deploydir uninstall --wait 30`. However, due to some Salesforce deployment limitations, there are still some manual steps needed to delete everything: -* Flexipages for `Log__c` and `LogEntry__c` must first be manually removed as the org defaults -* The quick actions on `Log__c` have to be manually removed from the layouts first - otherwise, Salesforce complains about the quick actions being in use (even though the layout is being deleted at the same time) -* The global value set `LoggingLevel` has to be manually deleted after all other metadata is deleted - otherwise, Salesforce complains about the global value set being in use (even though the relevant `Log__c` and `LogEntry__c` fields are being deleted at the same time) +- Flexipages for `Log__c` and `LogEntry__c` must first be manually removed as the org defaults +- The quick actions on `Log__c` have to be manually removed from the layouts first - otherwise, Salesforce complains about the quick actions being in use (even though the layout is being deleted at the same time) +- The global value set `LoggingLevel` has to be manually deleted after all other metadata is deleted - otherwise, Salesforce complains about the global value set being in use (even though the relevant `Log__c` and `LogEntry__c` fields are being deleted at the same time) diff --git a/content/btn-deploy-unmanaged-metadata.png b/content/btn-deploy-unmanaged-metadata.png deleted file mode 100644 index 5862f946b..000000000 Binary files a/content/btn-deploy-unmanaged-metadata.png and /dev/null differ diff --git a/content/btn-deploy-unpackaged-metadata.png b/content/btn-deploy-unpackaged-metadata.png new file mode 100644 index 000000000..e4ef5a278 Binary files /dev/null and b/content/btn-deploy-unpackaged-metadata.png differ diff --git a/content/btn-install-managed-package.png b/content/btn-install-managed-package.png index 84734d213..d1cbcdfb5 100644 Binary files a/content/btn-install-managed-package.png and b/content/btn-install-managed-package.png differ diff --git a/content/btn-install-unlocked-package.png b/content/btn-install-unlocked-package.png new file mode 100644 index 000000000..b3409be54 Binary files /dev/null and b/content/btn-install-unlocked-package.png differ diff --git a/content/installed-packages-uninstall-option.png b/content/installed-packages-uninstall-option.png new file mode 100644 index 000000000..79e70e3ae Binary files /dev/null and b/content/installed-packages-uninstall-option.png differ diff --git a/examples/classes/Account_Batch_Logger_Example.cls b/examples/without-namespace/classes/Account_Batch_Logger_Example.cls similarity index 100% rename from examples/classes/Account_Batch_Logger_Example.cls rename to examples/without-namespace/classes/Account_Batch_Logger_Example.cls diff --git a/examples/classes/Account_Batch_Logger_Example.cls-meta.xml b/examples/without-namespace/classes/Account_Batch_Logger_Example.cls-meta.xml similarity index 100% rename from examples/classes/Account_Batch_Logger_Example.cls-meta.xml rename to examples/without-namespace/classes/Account_Batch_Logger_Example.cls-meta.xml diff --git a/examples/classes/Account_Queueable_Logger_Example.cls b/examples/without-namespace/classes/Account_Queueable_Logger_Example.cls similarity index 100% rename from examples/classes/Account_Queueable_Logger_Example.cls rename to examples/without-namespace/classes/Account_Queueable_Logger_Example.cls diff --git a/examples/classes/Account_Queueable_Logger_Example.cls-meta.xml b/examples/without-namespace/classes/Account_Queueable_Logger_Example.cls-meta.xml similarity index 100% rename from examples/classes/Account_Queueable_Logger_Example.cls-meta.xml rename to examples/without-namespace/classes/Account_Queueable_Logger_Example.cls-meta.xml diff --git a/examples/flows/Account_Flow_Logger_Example.flow-meta.xml b/examples/without-namespace/flows/Account_Flow_Logger_Example.flow-meta.xml similarity index 100% rename from examples/flows/Account_Flow_Logger_Example.flow-meta.xml rename to examples/without-namespace/flows/Account_Flow_Logger_Example.flow-meta.xml diff --git a/examples/flows/Account_Process_Logger_Example.flow-meta.xml b/examples/without-namespace/flows/Account_Process_Logger_Example.flow-meta.xml similarity index 100% rename from examples/flows/Account_Process_Logger_Example.flow-meta.xml rename to examples/without-namespace/flows/Account_Process_Logger_Example.flow-meta.xml diff --git a/examples/triggers/Account_Trigger_Logger_Example.trigger b/examples/without-namespace/triggers/Account_Trigger_Logger_Example.trigger similarity index 100% rename from examples/triggers/Account_Trigger_Logger_Example.trigger rename to examples/without-namespace/triggers/Account_Trigger_Logger_Example.trigger diff --git a/examples/triggers/Account_Trigger_Logger_Example.trigger-meta.xml b/examples/without-namespace/triggers/Account_Trigger_Logger_Example.trigger-meta.xml similarity index 100% rename from examples/triggers/Account_Trigger_Logger_Example.trigger-meta.xml rename to examples/without-namespace/triggers/Account_Trigger_Logger_Example.trigger-meta.xml diff --git a/package.json b/package.json index 34f279e42..e4c217d6b 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,13 @@ { "name": "nebula-logger", - "version": "4.4.0", + "version": "4.4.1", "description": "Fine-tune your logging in Apex, Flow, and Process Builder", "main": "index.js", "scripts": { - "create-package-version": "sfdx force:package:version:create --package \"Nebula Logger\" --codecoverage --installationkeybypass --wait 30", + "create-managed-package-version": "sfdx force:package:version:create --package \"Nebula Logger - Managed Package\" --codecoverage --installationkeybypass --wait 30", + "create-unlocked-package-version": "sfdx force:package:version:create --package \"Nebula Logger - Unlocked Package\" --codecoverage --installationkeybypass --wait 30", "format": "prettier --write nebula-logger", - "generate-docs": "npx apexdocs-generate --configPath config/apexdocs.json --scope global public --sourceDir nebula-logger/main --targetDir nebula-logger-docs", + "generate-docs": "npx apexdocs-generate --configPath config/apexdocs.json --scope global public --sourceDir nebula-logger/main --targetDir docs", "pretest": "node ./scripts/findTests.js", "test": "sh ./scripts/test.sh", "posttest": "node scripts/findTestsCleanup.js" @@ -21,7 +22,8 @@ "logging-library", "salesforce", "salesforce-lightning", - "salesforce-apex" + "salesforce-apex", + "salesforce-flow" ], "author": "Jonathan Gillespie", "license": "MIT", diff --git a/managed-package/main/classes/LoggerInstallHandler.cls b/packages/managed-package/main/classes/LoggerInstallHandler.cls similarity index 100% rename from managed-package/main/classes/LoggerInstallHandler.cls rename to packages/managed-package/main/classes/LoggerInstallHandler.cls diff --git a/managed-package/main/classes/LoggerInstallHandler.cls-meta.xml b/packages/managed-package/main/classes/LoggerInstallHandler.cls-meta.xml similarity index 100% rename from managed-package/main/classes/LoggerInstallHandler.cls-meta.xml rename to packages/managed-package/main/classes/LoggerInstallHandler.cls-meta.xml diff --git a/managed-package/sfdx-project.json b/packages/managed-package/sfdx-project.json similarity index 60% rename from managed-package/sfdx-project.json rename to packages/managed-package/sfdx-project.json index 7489799a1..a4064b032 100644 --- a/managed-package/sfdx-project.json +++ b/packages/managed-package/sfdx-project.json @@ -4,7 +4,7 @@ "sourceApiVersion": "51.0", "packageDirectories": [ { - "package": "Nebula Logger", + "package": "Nebula Logger - Managed Package", "path": "nebula-logger", "default": true, "definitionFile": "config/project-scratch-def.json", @@ -17,10 +17,10 @@ } ], "packageAliases": { - "Nebula Logger": "0Ho5Y000000XZCDSA4", - "Nebula Logger@4.0.0-9-managed-package-release": "04t5Y000000XJZ7QAO", - "Nebula Logger@4.2.0-0-more-fields-and-methods": "04t5Y000000Xg4wQAC", - "Nebula Logger@4.3.0-3-logger-console-app": "04t5Y000000YLDLQA4", - "Nebula Logger@4.4.0-2-config-default-save-method": "04t5Y0000027FFgQAM" + "Nebula Logger - Managed Package": "0Ho5Y000000XZCDSA4", + "Nebula Logger - Managed Package@4.0.0-9-managed-package-release": "04t5Y000000XJZ7QAO", + "Nebula Logger - Managed Package@4.2.0-0-more-fields-and-methods": "04t5Y000000Xg4wQAC", + "Nebula Logger - Managed Package@4.3.0-3-logger-console-app": "04t5Y000000YLDLQA4", + "Nebula Logger - Managed Package@4.4.0-2-config-default-save-method": "04t5Y0000027FFgQAM" } } \ No newline at end of file diff --git a/managed-package/tests/classes/LoggerInstallHandler_Tests.cls b/packages/managed-package/tests/classes/LoggerInstallHandler_Tests.cls similarity index 100% rename from managed-package/tests/classes/LoggerInstallHandler_Tests.cls rename to packages/managed-package/tests/classes/LoggerInstallHandler_Tests.cls diff --git a/managed-package/tests/classes/LoggerInstallHandler_Tests.cls-meta.xml b/packages/managed-package/tests/classes/LoggerInstallHandler_Tests.cls-meta.xml similarity index 100% rename from managed-package/tests/classes/LoggerInstallHandler_Tests.cls-meta.xml rename to packages/managed-package/tests/classes/LoggerInstallHandler_Tests.cls-meta.xml diff --git a/packages/unlocked-package/sfdx-project.json b/packages/unlocked-package/sfdx-project.json new file mode 100644 index 000000000..5024aa534 --- /dev/null +++ b/packages/unlocked-package/sfdx-project.json @@ -0,0 +1,21 @@ +{ + "namespace": "", + "sfdcLoginUrl": "https://login.salesforce.com", + "sourceApiVersion": "51.0", + "packageDirectories": [ + { + "package": "Nebula Logger - Unlocked Package", + "path": "nebula-logger", + "default": true, + "definitionFile": "config/project-scratch-def.json", + "versionName": "Unlocked package release", + "versionNumber": "4.4.1.3", + "versionDescription": "First release of the unlocked package", + "releaseNotesUrl": "https://github.com/jongpie/NebulaLogger/releases" + } + ], + "packageAliases": { + "Nebula Logger - Unlocked Package": "0Ho5Y000000TNKASA4", + "Nebula Logger - Unlocked Package@4.4.1-3-unlocked-package-release": "04t5Y0000027FGFQA2" + } +} \ No newline at end of file diff --git a/uninstall/destructiveChanges.xml b/packages/unpackaged-metadata/destructiveChanges/destructiveChanges.xml similarity index 100% rename from uninstall/destructiveChanges.xml rename to packages/unpackaged-metadata/destructiveChanges/destructiveChanges.xml diff --git a/uninstall/package.xml b/packages/unpackaged-metadata/destructiveChanges/package.xml similarity index 100% rename from uninstall/package.xml rename to packages/unpackaged-metadata/destructiveChanges/package.xml diff --git a/sfdx-project.json b/sfdx-project.json index d1dd5b8d0..5024aa534 100644 --- a/sfdx-project.json +++ b/sfdx-project.json @@ -1,10 +1,21 @@ { + "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "51.0", "packageDirectories": [ { + "package": "Nebula Logger - Unlocked Package", "path": "nebula-logger", - "default": true + "default": true, + "definitionFile": "config/project-scratch-def.json", + "versionName": "Unlocked package release", + "versionNumber": "4.4.1.3", + "versionDescription": "First release of the unlocked package", + "releaseNotesUrl": "https://github.com/jongpie/NebulaLogger/releases" } - ] + ], + "packageAliases": { + "Nebula Logger - Unlocked Package": "0Ho5Y000000TNKASA4", + "Nebula Logger - Unlocked Package@4.4.1-3-unlocked-package-release": "04t5Y0000027FGFQA2" + } } \ No newline at end of file