From 317c856dad7c7ae08f02afe61345efbb6027b9c4 Mon Sep 17 00:00:00 2001 From: James Tu Date: Tue, 9 Jul 2024 12:05:34 -0700 Subject: [PATCH 1/5] feat: add template for typescript lwc --- src/generators/lightningComponentGenerator.ts | 15 +++++++++++++-- .../lightningcomponent/lwc/typeScript/.gitignore | 1 + .../lwc/typeScript/typeScript.html | 3 +++ .../lwc/typeScript/typeScript.js-meta.xml | 5 +++++ src/utils/types.ts | 6 +++++- 5 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 src/templates/lightningcomponent/lwc/typeScript/.gitignore create mode 100644 src/templates/lightningcomponent/lwc/typeScript/typeScript.html create mode 100644 src/templates/lightningcomponent/lwc/typeScript/typeScript.js-meta.xml diff --git a/src/generators/lightningComponentGenerator.ts b/src/generators/lightningComponentGenerator.ts index f284e960..8389848c 100644 --- a/src/generators/lightningComponentGenerator.ts +++ b/src/generators/lightningComponentGenerator.ts @@ -148,6 +148,7 @@ export default class LightningComponentGenerator extends BaseGenerator + + \ No newline at end of file diff --git a/src/templates/lightningcomponent/lwc/typeScript/typeScript.js-meta.xml b/src/templates/lightningcomponent/lwc/typeScript/typeScript.js-meta.xml new file mode 100644 index 00000000..0f1eb43d --- /dev/null +++ b/src/templates/lightningcomponent/lwc/typeScript/typeScript.js-meta.xml @@ -0,0 +1,5 @@ + + + <%= apiVersion %> + false + \ No newline at end of file diff --git a/src/utils/types.ts b/src/utils/types.ts index 7022c064..c98e87f9 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -80,7 +80,11 @@ export interface LightningAppOptions extends TemplateOptions { export interface LightningComponentOptions extends TemplateOptions { componentname: string; - template: 'default' | 'analyticsDashboard' | 'analyticsDashboardWithStep'; + template: + | 'default' + | 'analyticsDashboard' + | 'analyticsDashboardWithStep' + | 'typeScript'; type: 'aura' | 'lwc'; internal: boolean; } From 927570f608e1d41803e4d1b22ac9a17801a9e4a1 Mon Sep 17 00:00:00 2001 From: James Tu Date: Tue, 9 Jul 2024 12:06:10 -0700 Subject: [PATCH 2/5] test: add unit tests --- test/service/templateService.test.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/service/templateService.test.ts b/test/service/templateService.test.ts index 1a4fe3fc..8abcb4de 100644 --- a/test/service/templateService.test.ts +++ b/test/service/templateService.test.ts @@ -638,6 +638,34 @@ describe('TemplateService', () => { ); }); + it('should create LightningComponent (lwc) with TypeScript', async () => { + await remove(path.join('testsoutput', 'libraryCreate', 'lwc')); + const templateService = TemplateService.getInstance(); + const result = await templateService.create( + TemplateType.LightningComponent, + { + componentname: 'LibraryCreateComponent', + outputdir: path.join('testsoutput', 'libraryCreate', 'lwc'), + template: 'typeScript', + type: 'lwc', + } + ); + + chai + .expect(result.created.sort()) + .to.deep.equal( + [ + 'testsoutput/libraryCreate/lwc/libraryCreateComponent/libraryCreateComponent.ts', + 'testsoutput/libraryCreate/lwc/libraryCreateComponent/libraryCreateComponent.html', + 'testsoutput/libraryCreate/lwc/libraryCreateComponent/__tests__/libraryCreateComponent.test.ts', + 'testsoutput/libraryCreate/lwc/libraryCreateComponent/libraryCreateComponent.js-meta.xml', + 'testsoutput/libraryCreate/lwc/libraryCreateComponent/.gitignore', + ] + .map((p) => path.normalize(p)) + .sort() + ); + }); + it('should create LightningEvent', async () => { await remove(path.join('testsoutput', 'libraryCreate', 'aura')); const templateService = TemplateService.getInstance(); From 43277be35d494b08e5a1dcdd91cebbfef4a57210 Mon Sep 17 00:00:00 2001 From: James Tu Date: Tue, 9 Jul 2024 12:10:57 -0700 Subject: [PATCH 3/5] chore: fix gitignore issue --- src/generators/lightningComponentGenerator.ts | 2 +- .../typeScript/__tests__/typeScript.test.js | 25 +++++++++++++++++++ .../lwc/typeScript/{.gitignore => gitignore} | 0 .../lwc/typeScript/typeScript.js | 3 +++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/templates/lightningcomponent/lwc/typeScript/__tests__/typeScript.test.js rename src/templates/lightningcomponent/lwc/typeScript/{.gitignore => gitignore} (100%) create mode 100644 src/templates/lightningcomponent/lwc/typeScript/typeScript.js diff --git a/src/generators/lightningComponentGenerator.ts b/src/generators/lightningComponentGenerator.ts index 8389848c..a7cd5940 100644 --- a/src/generators/lightningComponentGenerator.ts +++ b/src/generators/lightningComponentGenerator.ts @@ -196,7 +196,7 @@ export default class LightningComponentGenerator extends BaseGenerator from 'c/<%= camelCaseComponentName %>'; + +describe('c-<%= kebabCaseComponentName %>', () => { + afterEach(() => { + // The jsdom instance is shared across test cases in a single file so reset the DOM + while (document.body.firstChild) { + document.body.removeChild(document.body.firstChild); + } + }); + + it('TODO: test case generated by CLI command, please fill in test logic', () => { + // Arrange + const element = createElement('c-<%= kebabCaseComponentName %>', { + is: <%= pascalCaseComponentName %> + }); + + // Act + document.body.appendChild(element); + + // Assert + // const div = element.shadowRoot.querySelector('div'); + expect(1).toBe(1); + }); +}); \ No newline at end of file diff --git a/src/templates/lightningcomponent/lwc/typeScript/.gitignore b/src/templates/lightningcomponent/lwc/typeScript/gitignore similarity index 100% rename from src/templates/lightningcomponent/lwc/typeScript/.gitignore rename to src/templates/lightningcomponent/lwc/typeScript/gitignore diff --git a/src/templates/lightningcomponent/lwc/typeScript/typeScript.js b/src/templates/lightningcomponent/lwc/typeScript/typeScript.js new file mode 100644 index 00000000..d3b2b295 --- /dev/null +++ b/src/templates/lightningcomponent/lwc/typeScript/typeScript.js @@ -0,0 +1,3 @@ +import { LightningElement } from 'lwc'; + +export default class <%= pascalCaseComponentName %> extends LightningElement {} \ No newline at end of file From 5c2f0ce29be89e05ffcb632d52e37a46f35842fa Mon Sep 17 00:00:00 2001 From: James Tu Date: Wed, 17 Jul 2024 14:29:40 -0700 Subject: [PATCH 4/5] chore: update typescript extension type --- .eslintrc.json | 5 ++++- src/generators/lightningComponentGenerator.ts | 4 ++-- .../__tests__/{typeScript.test.js => typeScript.test.ts} | 0 .../lwc/typeScript/{typeScript.js => typeScript.ts} | 0 tsconfig.json | 3 ++- 5 files changed, 8 insertions(+), 4 deletions(-) rename src/templates/lightningcomponent/lwc/typeScript/__tests__/{typeScript.test.js => typeScript.test.ts} (100%) rename src/templates/lightningcomponent/lwc/typeScript/{typeScript.js => typeScript.ts} (100%) diff --git a/.eslintrc.json b/.eslintrc.json index efedd32e..3e858318 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -67,5 +67,8 @@ "@typescript-eslint/no-non-null-assertion": ["off"], "@typescript-eslint/no-var-requires": ["off"] }, - "ignorePatterns": ["*.js"] + "ignorePatterns": [ + "*.js", + "./src/templates/lightningcomponent/lwc/typeScript/*" + ] } diff --git a/src/generators/lightningComponentGenerator.ts b/src/generators/lightningComponentGenerator.ts index a7cd5940..8a9c4dfe 100644 --- a/src/generators/lightningComponentGenerator.ts +++ b/src/generators/lightningComponentGenerator.ts @@ -154,7 +154,7 @@ export default class LightningComponentGenerator extends BaseGenerator Date: Wed, 17 Jul 2024 14:30:00 -0700 Subject: [PATCH 5/5] chore: fix eslintrc --- .eslintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.eslintrc.json b/.eslintrc.json index 3e858318..e93abc21 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -69,6 +69,6 @@ }, "ignorePatterns": [ "*.js", - "./src/templates/lightningcomponent/lwc/typeScript/*" + "src/templates/lightningcomponent/lwc/typeScript/*" ] }