Skip to content

Commit 1c5ba70

Browse files
committed
Initial push ov version 4
1 parent e97817c commit 1c5ba70

2,749 files changed

Lines changed: 811852 additions & 235559 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.eslintrc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"root": true,
3+
"parser": "@typescript-eslint/parser",
4+
"plugins": [
5+
"@typescript-eslint"
6+
],
7+
"extends": [
8+
"eslint:recommended",
9+
"plugin:@typescript-eslint/eslint-recommended",
10+
"plugin:@typescript-eslint/recommended"
11+
],
12+
"rules": {
13+
"@typescript-eslint/no-var-requires": 0,
14+
"@typescript-eslint/no-empty-interface": 0,
15+
"@typescript-eslint/no-explicit-any": 0,
16+
"@typescript-eslint/explicit-module-boundary-types": 0,
17+
"@typescript-eslint/no-empty-function": 0,
18+
"@typescript-eslint/no-this-alias": 0,
19+
"no-prototype-builtins": 0,
20+
"@typescript-eslint/no-namespace": 0,
21+
"@typescript-eslint/prefer-namespace-keyword" : 0,
22+
"no-empty": 0,
23+
"no-debugger": 0
24+
}
25+
}

.github/dependabot.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: npm
4+
directory: "/"
5+
schedule:
6+
interval: daily
7+
time: "13:00"
8+
open-pull-requests-limit: 99
9+
versioning-strategy: increase

.gitignore

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
node_modules
2-
/package-lock.json
3-
/user.json
4-
temp
2+
.trash
3+
.sfdx
4+
.vscode
5+
private

LICENSE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2020, Salesforce.com, Inc.
1+
Copyright (c) 2023, Salesforce.com, Inc.
22
All rights reserved.
33

44
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
@@ -9,4 +9,4 @@ Redistribution and use in source and binary forms, with or without modification,
99

1010
* Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
1111

12-
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

README.md

Lines changed: 15 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,92 +1,29 @@
11
----
2-
The advanced Salesforce Data Loader SFDX Plugin (SFDMU) will assist you to populate your org (scratch/development/sandbox/production) with data imported from another org or CSV files. Supports Delete, Insert, Update and Upsert for multiple related sObjects.<br />
2+
The Salesforce Data Move Utility (SFDMU) is a sophisticated SFDX Plugin designed to streamline the process of populating your Salesforce org (whether scratch, development, sandbox, or production) with data imported from another org or CSV files. It seamlessly supports Delete, Insert, Update, and Upsert operations across multiple related sObjects, enhancing the efficiency and accuracy of data migration tasks.
33

4-
- **The SFDMU Plugin repository can be accessed [here](https://github.com/forcedotcom/SFDX-Data-Move-Utility)**
5-
- **For the detailed documentation, visit the [SFDMU Help Center](https://help.sfdmu.com)**<br /><br />
6-
- **Please, Note! We are currently in the process of developing a new major version of this GUI App. As a result, this version is no longer supported. However we highly appreciate any pull requests that address bug fixes or introduce new features. Your contributions are invaluable in improving the current version of the application. Thank you for your support!**
4+
- **Access the SFDMU Plugin Repository [here](https://github.com/forcedotcom/SFDX-Data-Move-Utility) for additional resources and information.**
5+
- **For comprehensive documentation and support, please visit the [SFDMU Help Center](https://help.sfdmu.com).**
76

8-
---
7+
------
98

10-
### About this App.
9+
### Discover More About This Application
1110

12-
**This application can help you to create SFDMU plugin configuration files from the simple and intuitive UI.**
11+
This user-friendly application is a valuable tool for creating SFDMU plugin configuration files. Its intuitive and interactive user interface simplifies the process, allowing you to focus on your data and migration tasks rather than navigating complex configuration files.
1312

13+
------
1414

15-
### When can this Application be useful ?
15+
### Why Use This Application?
1616

17-
Apart from the minimal setup the export.json file has a lot of advanced properties that can be leveraged in creating and running complex migration jobs.
17+
The `export.json` file, essential for SFDMU setup, houses numerous advanced properties pivotal for crafting and executing complex migration jobs. As the complexity of these jobs escalates, the corresponding JSON file can become extensive and unwieldy, making manual editing using standard text editors a daunting task.
1818

19-
Therefore in some cases the json file may become very long and hard to edit it manually using the standard Notepad.
19+
Eliminate the need for Notepad and Console with this Desktop Application. Execute all tasks visually within the application’s interface, transforming the management of migration jobs into a hassle-free experience. Add or remove org connections with ease, swiftly configure SObjects and fields, and initiate the Plugin directly from within the application, saving time and reducing the possibility of errors.
2020

21-
Now with this Desktop Application you don't have to work with the Notepad and the Console, because all actions are performed in a visual mode. Now it's very simple to manage the migration jobs. You can add and remove org connections, set up SObjects and fields, then run the Plugin from the application itself.
21+
### Transitioning to Version 4
2222

23+
We are excited to announce the release of a new major version of the Application (version 4). If you have previously utilized the SFDMU GUI App, it is crucial to review the extensive list of improvements and breaking changes below prior to transitioning to this updated version. These enhancements are designed to offer a more streamlined and efficient user experience, ensuring your data migration tasks are completed effortlessly and accurately.
2324

25+
**For detailed instructions on how to install, configure, run, and debug the application, please visit:**
2426

25-
### Installation and running.
26-
```bash
27-
28-
# Make sure you have the latest npm / python / yarn / electron installed on your machine, otherwise perform steps 1 - 4 accordingly.
29-
30-
# 1. Install Python
31-
https://www.python.org/downloads/
32-
33-
# 2. Install yarn
34-
https://classic.yarnpkg.com/en/docs/install
35-
36-
# 3. Install node-gyp globally
37-
yarn global add node-gyp
38-
39-
# 4. Install electron globally
40-
yarn global add electron
41-
42-
# 5. Clone this repository.
43-
git clone https://github.com/forcedotcom/SFDX-Data-Move-Utility-Desktop-App.git
44-
45-
# 6. Go into the project directory.
46-
cd SFDX-Data-Move-Utility-Desktop-App
47-
48-
# 7. Install npm dependencies
49-
npm install
50-
51-
# 8. Run the Application.
52-
npm start
53-
54-
```
55-
56-
57-
58-
## Notes
59-
60-
* This Application must have the [SFDMU Plugin](https://github.com/forcedotcom/SFDX-Data-Move-Utility) to be installed in your system previously.
61-
* The Application puts user's data files into the standard **Documents** folder inside dedicated sub-folder named **/SFDMU_APP**.
62-
You can change the default path in the application's ***App Settings*** page.
63-
* The Application also creates a file **user.json** in the application installation directory. This file is being used to store the application settings.
64-
Make sure you are **NOT DELETING** this file during upgrade the Application from the git repository, otherwise the settings will be lost.
65-
* The Application supports multiple local users.
66-
Each user has his own local profile contains all his data, that is encrypted by the encryption key which is the password that is used to login into the application.
67-
So user's data never directly exposed to others. But after the creating of your local user's profile, you need to well remember your password because there is no password recovery option.
68-
69-
70-
71-
## Supported OS
72-
73-
Normally all major OS (Win, MACOS, Linux) should be supported. It was successfully tested on Windows and MACOS machines.
74-
75-
Sometimes MAC users may have problems installing and launching the Application, because the Electron platform fails to install and run correctly on these local systems. For the current moment we can't provide a reliable solution for this issue.
76-
77-
According to the live experience the Application is always working fine in Windows-based systems.
78-
79-
For the windows-based machines you can try to fix the incorrect electron installation by:
80-
81-
```bash
82-
npm install --global windows-build-tools
83-
84-
npm install electron
85-
```
86-
87-
## License
88-
89-
This product is licensed under the BSD-3-Clause - see the [LICENSE.txt](LICENSE.txt) file for details.
90-
91-
27+
**[SFDMU GUI App Help](https://help.sfdmu.com/sfdmu-gui-app)**
9228

29+
Embark on a smoother, more intuitive data migration journey with the updated SFDMU application, ensuring reliable and efficient data transfer across your Salesforce orgs.

about.html

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<head>
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<link id="cssFile" rel="stylesheet" href="" />
7+
</head>
8+
9+
<body>
10+
<div class="container">
11+
<img src="./images/splash.png" />
12+
<article>
13+
<div class="card" id="aboutInfo"></div>
14+
</article>
15+
<footer class="text-center">
16+
<button id="closeButton" class="btn" onclick="window.closeWindow()"> </button>
17+
</footer>
18+
</div>
19+
</body>
20+
21+
<script>
22+
require('./js/electron-app/about.js');
23+
</script>
24+
25+
</html>

copyFiles.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/* eslint-disable no-undef */
2+
const fs = require('fs');
3+
const path = require('path');
4+
5+
const rootDestDir = './js';
6+
const rootSourceDir = './src';
7+
8+
// Extracting mappings from command line arguments
9+
const argv = process.argv.slice(2);
10+
const mappings = {};
11+
for (let i = 0; i < argv.length; i += 2) {
12+
mappings[argv[i]] = argv[i + 1];
13+
}
14+
15+
16+
function copyFiles(srcDir, destDir, ext) {
17+
18+
const pattern = new RegExp(`.${ext}$`);
19+
20+
if (fs.existsSync(srcDir)) {
21+
22+
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
23+
24+
for (const entry of entries) {
25+
26+
const srcPath = path.join(srcDir, entry.name);
27+
const relativePath = path.relative(rootSourceDir, srcPath);
28+
const destPath = path.join(rootDestDir, relativePath);
29+
30+
if (entry.isDirectory()) {
31+
if (!fs.existsSync(destPath)) {
32+
fs.mkdirSync(destPath, { recursive: true });
33+
}
34+
copyFiles(srcPath, destPath, ext);
35+
} else if (entry.isFile() && pattern.test(entry.name)) {
36+
if (!fs.existsSync(path.dirname(destPath))) {
37+
fs.mkdirSync(path.dirname(destPath), { recursive: true });
38+
}
39+
fs.copyFileSync(srcPath, destPath);
40+
}
41+
}
42+
}
43+
}
44+
45+
for (const [ext, srcDir] of Object.entries(mappings)) {
46+
copyFiles(srcDir, rootDestDir, ext);
47+
}

0 commit comments

Comments
 (0)