Skip to content

Commit

Permalink
chore: transition to static imports for generators
Browse files Browse the repository at this point in the history
  • Loading branch information
mingxuanzhangsfdx committed Jul 31, 2024
1 parent 9bc8d85 commit b5c8aa3
Show file tree
Hide file tree
Showing 3 changed files with 196 additions and 8 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"chai-as-promised": "^7.1.1",
"commitizen": "^4.3.0",
"cz-conventional-changelog": "^3.3.0",
"esbuild": "^0.23.0",
"eslint": "^7.27.0",
"eslint-config-prettier": "^6.11.0",
"eslint-config-salesforce": "^0.1.6",
Expand Down
53 changes: 45 additions & 8 deletions src/service/templateService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,55 @@
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/

import {
type CreateOutput,
type TemplateOptions,
TemplateType,
} from '../utils/types';
import { type CreateOutput, TemplateType } from '../utils/types';
import analyticsTemplateGenerator from '../generators/analyticsTemplateGenerator';
import apexClassGenerator from '../generators/apexClassGenerator';
import apexTriggerGenerator from '../generators/apexTriggerGenerator';
import lightningAppGenerator from '../generators/lightningAppGenerator';
import lightningComponentGenerator from '../generators/lightningComponentGenerator';
import lightningEventGenerator from '../generators/lightningEventGenerator';
import lightningInterfaceGenerator from '../generators/lightningInterfaceGenerator';
import lightningTestGenerator from '../generators/lightningTestGenerator';
import projectGenerator from '../generators/projectGenerator';
import staticResourceGenerator from '../generators/staticResourceGenerator';
import visualforceComponentGenerator from '../generators/visualforceComponentGenerator';
import visualforcePageGenerator from '../generators/visualforcePageGenerator';

type Generators =
| typeof analyticsTemplateGenerator
| typeof apexClassGenerator
| typeof apexTriggerGenerator
| typeof lightningAppGenerator
| typeof lightningComponentGenerator
| typeof lightningEventGenerator
| typeof lightningTestGenerator
| typeof lightningInterfaceGenerator
| typeof projectGenerator
| typeof staticResourceGenerator
| typeof visualforceComponentGenerator
| typeof visualforcePageGenerator;

const generators = new Map<string, Generators>([
['analyticsTemplateGenerator', analyticsTemplateGenerator],
['apexClassGenerator', apexClassGenerator],
['apexTriggerGenerator', apexTriggerGenerator],
['lightningAppGenerator', lightningAppGenerator],
['lightningComponentGenerator', lightningComponentGenerator],
['lightningEventGenerator', lightningEventGenerator],
['lightningInterfaceGenerator', lightningInterfaceGenerator],
['lightningTestGenerator', lightningTestGenerator],
['projectGenerator', projectGenerator],
['staticResourceGenerator', staticResourceGenerator],
['visualforceComponentGenerator', visualforceComponentGenerator],
['visualforcePageGenerator', visualforcePageGenerator],
]);

export async function importGenerator(templateType: TemplateType) {
const generatorClass =
TemplateType[templateType].toString().charAt(0).toLowerCase() +
TemplateType[templateType].toString().slice(1) +
'Generator';
return (await import(`../generators/${generatorClass}`)).default;
return generators.get(generatorClass) as Generators;
}

/**
Expand Down Expand Up @@ -64,9 +101,9 @@ export class TemplateService {
* @param templateOptions template options
* @param customTemplatesRootPathOrGitRepo custom templates root path or git repo. If not specified, use built-in templates
*/
public async create<TOptions extends TemplateOptions>(
public async create(
templateType: TemplateType,
templateOptions: TOptions,
templateOptions: any,
customTemplatesRootPathOrGitRepo?: string
): Promise<CreateOutput> {
const runOptions = {
Expand Down
150 changes: 150 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,126 @@
esquery "^1.5.0"
jsdoc-type-pratt-parser "~4.0.0"

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz#145b74d5e4a5223489cabdc238d8dad902df5259"
integrity sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz#453bbe079fc8d364d4c5545069e8260228559832"
integrity sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.0.tgz#26c806853aa4a4f7e683e519cd9d68e201ebcf99"
integrity sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.0.tgz#1e51af9a6ac1f7143769f7ee58df5b274ed202e6"
integrity sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz#d996187a606c9534173ebd78c58098a44dd7ef9e"
integrity sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz#30c8f28a7ef4e32fe46501434ebe6b0912e9e86c"
integrity sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz#30f4fcec8167c08a6e8af9fc14b66152232e7fb4"
integrity sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz#1003a6668fe1f5d4439e6813e5b09a92981bc79d"
integrity sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz#3b9a56abfb1410bb6c9138790f062587df3e6e3a"
integrity sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz#237a8548e3da2c48cd79ae339a588f03d1889aad"
integrity sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz#4269cd19cb2de5de03a7ccfc8855dde3d284a238"
integrity sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz#82b568f5658a52580827cc891cb69d2cb4f86280"
integrity sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz#9a57386c926262ae9861c929a6023ed9d43f73e5"
integrity sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz#f3a79fd636ba0c82285d227eb20ed8e31b4444f6"
integrity sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz#f9d2ef8356ce6ce140f76029680558126b74c780"
integrity sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz#45390f12e802201f38a0229e216a6aed4351dfe8"
integrity sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz#c8409761996e3f6db29abcf9b05bee8d7d80e910"
integrity sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz#ba70db0114380d5f6cfb9003f1d378ce989cd65c"
integrity sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz#72fc55f0b189f7a882e3cf23f332370d69dfd5db"
integrity sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz#b6ae7a0911c18fe30da3db1d6d17a497a550e5d8"
integrity sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz#58f0d5e55b9b21a086bfafaa29f62a3eb3470ad8"
integrity sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz#b858b2432edfad62e945d5c7c9e5ddd0f528ca6d"
integrity sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz#167ef6ca22a476c6c0c014a58b4f43ae4b80dec7"
integrity sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==

"@esbuild/[email protected]":
version "0.23.0"
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz#db44a6a08520b5f25bbe409f34a59f2d4bcc7ced"
integrity sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==

"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
Expand Down Expand Up @@ -2201,6 +2321,36 @@ es6-error@^4.0.1:
resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz"
integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==

esbuild@^0.23.0:
version "0.23.0"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.0.tgz#de06002d48424d9fdb7eb52dbe8e95927f852599"
integrity sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==
optionalDependencies:
"@esbuild/aix-ppc64" "0.23.0"
"@esbuild/android-arm" "0.23.0"
"@esbuild/android-arm64" "0.23.0"
"@esbuild/android-x64" "0.23.0"
"@esbuild/darwin-arm64" "0.23.0"
"@esbuild/darwin-x64" "0.23.0"
"@esbuild/freebsd-arm64" "0.23.0"
"@esbuild/freebsd-x64" "0.23.0"
"@esbuild/linux-arm" "0.23.0"
"@esbuild/linux-arm64" "0.23.0"
"@esbuild/linux-ia32" "0.23.0"
"@esbuild/linux-loong64" "0.23.0"
"@esbuild/linux-mips64el" "0.23.0"
"@esbuild/linux-ppc64" "0.23.0"
"@esbuild/linux-riscv64" "0.23.0"
"@esbuild/linux-s390x" "0.23.0"
"@esbuild/linux-x64" "0.23.0"
"@esbuild/netbsd-x64" "0.23.0"
"@esbuild/openbsd-arm64" "0.23.0"
"@esbuild/openbsd-x64" "0.23.0"
"@esbuild/sunos-x64" "0.23.0"
"@esbuild/win32-arm64" "0.23.0"
"@esbuild/win32-ia32" "0.23.0"
"@esbuild/win32-x64" "0.23.0"

escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
Expand Down

0 comments on commit b5c8aa3

Please sign in to comment.