Skip to content

Commit 334c32a

Browse files
authored
Merge branch 'main' into ew/gha
2 parents 18f65b3 + af20dc5 commit 334c32a

22 files changed

Lines changed: 1268 additions & 340 deletions

.github/CODEOWNERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# These owners will be the default owners for everything in
22
# the repo. Unless a later match takes precedence,
3-
# @forcedotcom/pdt will be requested for
3+
# @forcedotcom/ide-experience will be requested for
44
# review when someone opens a pull request.
55

66
#ECCN:Open Source
7-
#GUSINFO: Platform Dev Tools Scrum Team, Platform Dev Tools
8-
* @forcedotcom/pdt
7+
#GUSINFO: Platform Dev Tools Scrum Team, IDE Experience Team
8+
* @forcedotcom/ide-experience

.github/dependabot.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ updates:
77
interval: daily
88
open-pull-requests-limit: 10
99
ignore:
10-
- dependency-name: 'eslint'
10+
- dependency-name: '*'
1111
update-types: ['version-update:semver-major']
1212

1313
# For all @salesforce/templates library
@@ -28,8 +28,6 @@ updates:
2828
# no release for dev-deps
2929
prefix-development: chore(dev-deps)
3030
ignore:
31-
- dependency-name: 'eslint'
32-
update-types: ['version-update:semver-major']
3331
- dependency-name: '@salesforce/dev-scripts'
3432
- dependency-name: '*'
3533
update-types: ['version-update:semver-major']

CHANGELOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,56 @@
1+
## [64.2.1](https://github.com/forcedotcom/salesforcedx-templates/compare/64.2.0...64.2.1) (2025-07-22)
2+
3+
4+
### Bug Fixes
5+
6+
* **deps:** bump form-data from 2.5.1 to 2.5.5 ([061f6f4](https://github.com/forcedotcom/salesforcedx-templates/commit/061f6f4a476287e4c0ff12c7a1b880e458557788))
7+
8+
9+
10+
# [64.2.0](https://github.com/forcedotcom/salesforcedx-templates/compare/64.1.0...64.2.0) (2025-06-19)
11+
12+
13+
### Features
14+
15+
* add ESLint 9 support to template ([#619](https://github.com/forcedotcom/salesforcedx-templates/issues/619)) ([#669](https://github.com/forcedotcom/salesforcedx-templates/issues/669)) ([19bd111](https://github.com/forcedotcom/salesforcedx-templates/commit/19bd1115d6a6c2e9f1176f63a1bb98530d42c933))
16+
17+
18+
19+
# [64.1.0](https://github.com/forcedotcom/salesforcedx-templates/compare/63.0.4...64.1.0) (2025-06-06)
20+
21+
22+
### Features
23+
24+
* update the api version to v64 ([1cac9dc](https://github.com/forcedotcom/salesforcedx-templates/commit/1cac9dc20db03dc7f20a085d2ed74f35c3026dcc))
25+
26+
27+
28+
## [63.0.4](https://github.com/forcedotcom/salesforcedx-templates/compare/63.0.3...63.0.4) (2025-04-16)
29+
30+
31+
### Bug Fixes
32+
33+
* update deps so they are all compatible and npm install as well as lwc tests can run ([#662](https://github.com/forcedotcom/salesforcedx-templates/issues/662)) ([2cd6513](https://github.com/forcedotcom/salesforcedx-templates/commit/2cd65132fbb375e270053500fd07abd80c8d6e75))
34+
35+
36+
37+
## [63.0.3](https://github.com/forcedotcom/salesforcedx-templates/compare/63.0.2...63.0.3) (2025-04-15)
38+
39+
40+
### Bug Fixes
41+
42+
* fix import in lwc test ([#661](https://github.com/forcedotcom/salesforcedx-templates/issues/661)) ([bda5b9e](https://github.com/forcedotcom/salesforcedx-templates/commit/bda5b9e41684f2f06911b8f62242be6d7098f47a))
43+
44+
45+
46+
## [63.0.2](https://github.com/forcedotcom/salesforcedx-templates/compare/63.0.1...63.0.2) (2025-04-14)
47+
48+
49+
50+
## [63.0.1](https://github.com/forcedotcom/salesforcedx-templates/compare/62.0.5...63.0.1) (2025-02-06)
51+
52+
53+
154
## [62.0.5](https://github.com/forcedotcom/salesforcedx-templates/compare/62.0.4...62.0.5) (2024-11-24)
255

356

LICENSE.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2022, Salesforce.com, Inc.
1+
Copyright (c) 2025, Salesforce, 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:
@@ -7,6 +7,6 @@ Redistribution and use in source and binary forms, with or without modification,
77

88
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
99

10-
* 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.
10+
* Neither the name of Salesforce 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 SALESFORCE 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 SALESFORCE 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.

contributing/coding-guidelines.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Coding Guidelines
22

33
When possible, the following are enforced through the code formatter
4-
(Prettier.js) and tslint rules.
4+
(Prettier.js) and eslint rules.
55

66
---
77

how_to_license.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# How To License Info
2+
3+
This project uses the [BSD 3-Clause License](https://opensource.org/licenses/BSD-3-Clause).
4+
5+
## License Header for Source Code
6+
7+
The shorter version of license text should be added as a comment to all Salesforce-authored source code and configuration files that support comments. This includes file formats like HTML, CSS, JavaScript, XML, etc. which aren't directly code, but are still critical to your project code.
8+
9+
```javascript
10+
/*
11+
* Copyright (c) 2025, Salesforce, Inc.
12+
* All rights reserved.
13+
*
14+
* Redistribution and use in source and binary forms, with or without modification,
15+
* are permitted provided that the following conditions are met:
16+
*
17+
* * Redistributions of source code must retain the above copyright notice, this
18+
* list of conditions and the following disclaimer.
19+
*
20+
* * Redistributions in binary form must reproduce the above copyright notice,
21+
* this list of conditions and the following disclaimer in the documentation
22+
* and/or other materials provided with the distribution.
23+
*
24+
* * Neither the name of Salesforce.com nor the names of its contributors may be
25+
* used to endorse or promote products derived from this software without
26+
* specific prior written permission.
27+
*
28+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
29+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
30+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
31+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
32+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
33+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
34+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
35+
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
36+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38+
*/
39+
```
40+
41+
Note that there are many tools that exist to do this sort of thing in an automated fashion, without having to manually edit every single file in your project. It is highly recommended that you research some of these tools for your particular language / build system.
42+
43+
## For Sample, Demo, and Example Code
44+
45+
For sample, demo, and example code, we recommend the [Unlicense](https://opensource.org/license/unlicense/) license. Create a `LICENSE.txt` file containing:
46+
47+
```
48+
This is free and unencumbered software released into the public domain.
49+
50+
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
51+
software, either in source code form or as a compiled binary, for any purpose,
52+
commercial or non-commercial, and by any means.
53+
54+
In jurisdictions that recognize copyright laws, the author or authors of this
55+
software dedicate any and all copyright interest in the software to the public
56+
domain. We make this dedication for the benefit of the public at large and to
57+
the detriment of our heirs and successors. We intend this dedication to be an
58+
overt act of relinquishment in perpetuity of all present and future rights to
59+
this software under copyright law.
60+
61+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
62+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
63+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
64+
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
65+
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
66+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
67+
```
68+
69+
No license header is required for samples, demos, and example code.

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@salesforce/templates",
3-
"version": "62.0.5",
3+
"version": "64.2.1",
44
"description": "Salesforce JS library for templates",
55
"bugs": "https://github.com/forcedotcom/salesforcedx-templates/issues",
66
"main": "lib/index.js",
@@ -37,23 +37,23 @@
3737
"chai-as-promised": "^7.1.2",
3838
"commitizen": "^4.3.1",
3939
"cz-conventional-changelog": "^3.3.0",
40-
"esbuild": "^0.24.2",
40+
"esbuild": "^0.25.8",
4141
"eslint": "^7.27.0",
4242
"eslint-config-prettier": "^6.11.0",
4343
"eslint-config-salesforce": "^0.1.6",
4444
"eslint-config-salesforce-license": "^0.2.0",
4545
"eslint-config-salesforce-typescript": "^0.2.7",
4646
"eslint-plugin-header": "^3.0.0",
47-
"eslint-plugin-import": "^2.31.0",
47+
"eslint-plugin-import": "^2.32.0",
4848
"eslint-plugin-jsdoc": "^46.10.1",
4949
"eslint-plugin-prettier": "^3.1.3",
5050
"husky": "^8.0.3",
5151
"mocha": "^10.8.2",
5252
"nyc": "^15.1.0",
5353
"prettier": "^2.0.5",
5454
"pretty-quick": "^3.3.1",
55-
"shelljs": "^0.8.5",
56-
"shx": "^0.3.4",
55+
"shelljs": "^0.10.0",
56+
"shx": "^0.4.0",
5757
"sinon": "^18",
5858
"ts-morph": "^24.0.0",
5959
"ts-node": "^10.9.2",

src/generators/projectGenerator.ts

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const standardfolderarray = [
2222
'contentassets',
2323
'flexipages',
2424
'layouts',
25+
'lwc',
2526
'objects',
2627
'permissionsets',
2728
'staticresources',
@@ -126,6 +127,7 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
126127
// Add Husky directory and hooks
127128
this._createHuskyConfig(path.join(this.outputdir, projectname));
128129

130+
// VSCode config files
129131
for (const file of vscodearray) {
130132
await this.render(
131133
this.templatePath(`${file}.json`),
@@ -135,20 +137,17 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
135137
{}
136138
);
137139
}
140+
141+
// ESLint config (file is renamed to avoid conflict with generator project)
138142
await this.render(
139-
this.templatePath('lwc.eslintrc.json'),
140-
this.destinationPath(
141-
path.join(...folderlayout, 'lwc', '.eslintrc.json')
142-
),
143-
{}
144-
);
145-
await this.render(
146-
this.templatePath('aura.eslintrc.json'),
143+
this.templatePath('project.eslint.config.js'),
147144
this.destinationPath(
148-
path.join(...folderlayout, 'aura', '.eslintrc.json')
145+
path.join(this.outputdir, projectname, 'eslint.config.js')
149146
),
150147
{}
151148
);
149+
150+
// SOQL sample file
152151
await this.render(
153152
this.templatePath(path.join(template, soqlQueryFile)),
154153
this.destinationPath(
@@ -162,6 +161,8 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
162161
),
163162
{}
164163
);
164+
165+
// Apex sample script
165166
await this.render(
166167
this.templatePath(path.join(template, anonApexFile)),
167168
this.destinationPath(
@@ -175,6 +176,8 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
175176
),
176177
{}
177178
);
179+
180+
// Copy project root level files
178181
for (const file of filestocopy) {
179182
const out = file === GITIGNORE ? `.${file}` : file;
180183
await this.render(
@@ -202,6 +205,7 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
202205
// Add Husky directory and hooks
203206
this._createHuskyConfig(path.join(this.outputdir, projectname));
204207

208+
// VSCode config files
205209
for (const file of vscodearray) {
206210
await this.render(
207211
this.templatePath(`${file}.json`),
@@ -211,6 +215,7 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
211215
{}
212216
);
213217
}
218+
214219
// add the analytics vscode extension to the recommendations
215220
await extendJSON(
216221
path.join(this.outputdir, projectname, '.vscode', 'extensions.json'),
@@ -225,20 +230,17 @@ export default class ProjectGenerator extends BaseGenerator<ProjectOptions> {
225230
return value;
226231
}
227232
);
233+
234+
// ESLint config (file is renamed to avoid conflict with generator project)
228235
await this.render(
229-
this.templatePath('lwc.eslintrc.json'),
230-
this.destinationPath(
231-
path.join(...folderlayout, 'lwc', '.eslintrc.json')
232-
),
233-
{}
234-
);
235-
await this.render(
236-
this.templatePath('aura.eslintrc.json'),
236+
this.templatePath('project.eslint.config.js'),
237237
this.destinationPath(
238-
path.join(...folderlayout, 'aura', '.eslintrc.json')
238+
path.join(this.outputdir, projectname, 'eslint.config.js')
239239
),
240240
{}
241241
);
242+
243+
// Copy project root level files
242244
for (const file of filestocopy) {
243245
const out = file === GITIGNORE ? `.${file}` : file;
244246
await this.render(

src/i18n/localization.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import * as util from 'util';
99
const MISSING_LABEL_MSG = '!!! MISSING LABEL !!!';
10-
// tslint:disable: no-any
1110
export interface LocalizationProvider {
1211
localize(label: string, args?: string | string[]): string;
1312
}

src/templates/lightningcomponent/lwc/default/__tests__/default.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createElement } from 'lwc';
1+
import { createElement } from '@lwc/engine-dom';
22
import <%= pascalCaseComponentName %> from 'c/<%= camelCaseComponentName %>';
33

44
describe('c-<%= kebabCaseComponentName %>', () => {

0 commit comments

Comments
 (0)