@benjos/create-boilerplate 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/README.md +16 -21
  2. package/dist/index.js +16 -15
  3. package/dist/index.js.map +1 -1
  4. package/package.json +2 -2
  5. package/template-vanilla/.prettierignore +6 -0
  6. package/template-vanilla/.prettierrc +10 -0
  7. package/template-vanilla/assets_source/.gitkeep +0 -0
  8. package/template-vanilla/docs/PUBLISHING.md +30 -0
  9. package/template-vanilla/eslint.config.js +126 -0
  10. package/template-vanilla/index.html +17 -0
  11. package/template-vanilla/package-lock.json +3743 -0
  12. package/template-vanilla/package.json +38 -0
  13. package/template-vanilla/public/assets/fonts/LICENSE +13 -0
  14. package/template-vanilla/public/assets/fonts/template.typeface.json +1 -0
  15. package/template-vanilla/public/assets/hdrs/template.hdr +0 -0
  16. package/template-vanilla/public/assets/icons/benjosLogoBlack.svg +5 -0
  17. package/template-vanilla/public/assets/loaders/draco/README.md +32 -0
  18. package/template-vanilla/public/assets/loaders/draco/draco_decoder.js +34 -0
  19. package/template-vanilla/public/assets/loaders/draco/draco_decoder.wasm +0 -0
  20. package/template-vanilla/public/assets/loaders/draco/draco_encoder.js +33 -0
  21. package/template-vanilla/public/assets/loaders/draco/draco_wasm_wrapper.js +117 -0
  22. package/template-vanilla/public/assets/loaders/draco/gltf/draco_decoder.js +33 -0
  23. package/template-vanilla/public/assets/loaders/draco/gltf/draco_decoder.wasm +0 -0
  24. package/template-vanilla/public/assets/loaders/draco/gltf/draco_encoder.js +33 -0
  25. package/template-vanilla/public/assets/loaders/draco/gltf/draco_wasm_wrapper.js +116 -0
  26. package/template-vanilla/public/assets/models/template.glb +0 -0
  27. package/template-vanilla/public/assets/textures/template.jpg +0 -0
  28. package/template-vanilla/readme.md +49 -0
  29. package/template-vanilla/src/experiences/Experience.ts +15 -0
  30. package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +60 -0
  31. package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +28 -0
  32. package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +28 -0
  33. package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +109 -0
  34. package/template-vanilla/src/experiences/commands/InitCommand.ts +48 -0
  35. package/template-vanilla/src/experiences/constants/doms/DomEvent.ts +100 -0
  36. package/template-vanilla/src/experiences/constants/doms/KeyboardConstant.ts +250 -0
  37. package/template-vanilla/src/experiences/constants/experiences/AnimationId.ts +3 -0
  38. package/template-vanilla/src/experiences/constants/experiences/AssetId.ts +8 -0
  39. package/template-vanilla/src/experiences/constants/experiences/AssetType.ts +8 -0
  40. package/template-vanilla/src/experiences/constants/experiences/CameraId.ts +7 -0
  41. package/template-vanilla/src/experiences/constants/experiences/CameraType.ts +6 -0
  42. package/template-vanilla/src/experiences/constants/experiences/Object3dId.ts +3 -0
  43. package/template-vanilla/src/experiences/constants/experiences/ViewId.ts +15 -0
  44. package/template-vanilla/src/experiences/engines/htmls/MainHTML.ts +13 -0
  45. package/template-vanilla/src/experiences/engines/threes/MainThree.ts +171 -0
  46. package/template-vanilla/src/experiences/managers/DebugManager.ts +78 -0
  47. package/template-vanilla/src/experiences/managers/KeyboardManager.ts +65 -0
  48. package/template-vanilla/src/experiences/managers/LoaderManager.ts +79 -0
  49. package/template-vanilla/src/experiences/managers/MouseManager.ts +100 -0
  50. package/template-vanilla/src/experiences/managers/ResizeManager.ts +53 -0
  51. package/template-vanilla/src/experiences/managers/TickerManager.ts +86 -0
  52. package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +279 -0
  53. package/template-vanilla/src/experiences/managers/threes/ThreeCameraControllerManager.ts +43 -0
  54. package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +23 -0
  55. package/template-vanilla/src/experiences/materials/threes/loaders/LoaderMaterial.ts +48 -0
  56. package/template-vanilla/src/experiences/proxies/ViewProxy.ts +30 -0
  57. package/template-vanilla/src/experiences/proxies/bases/PoolProxyBase.ts +61 -0
  58. package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +22 -0
  59. package/template-vanilla/src/experiences/renderers/threes/Renderer.ts +74 -0
  60. package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +29 -0
  61. package/template-vanilla/src/experiences/shaders/threes/loaders/LoaderFragmentShader.glsl +6 -0
  62. package/template-vanilla/src/experiences/shaders/threes/loaders/LoaderVertexShader.glsl +3 -0
  63. package/template-vanilla/src/experiences/styles/abstracts/_import.scss +5 -0
  64. package/template-vanilla/src/experiences/styles/abstracts/functions.scss +3 -0
  65. package/template-vanilla/src/experiences/styles/abstracts/mixins.scss +0 -0
  66. package/template-vanilla/src/experiences/styles/abstracts/variables.scss +7 -0
  67. package/template-vanilla/src/experiences/styles/commons/fonts.scss +10 -0
  68. package/template-vanilla/src/experiences/styles/commons/main.scss +84 -0
  69. package/template-vanilla/src/experiences/styles/commons/texts.scss +1 -0
  70. package/template-vanilla/src/experiences/styles/style.scss +7 -0
  71. package/template-vanilla/src/experiences/styles/views/loader.scss +72 -0
  72. package/template-vanilla/src/experiences/tools/Action.ts +23 -0
  73. package/template-vanilla/src/experiences/tools/Point.ts +56 -0
  74. package/template-vanilla/src/experiences/types/global.d.ts +9 -0
  75. package/template-vanilla/src/experiences/utils/AssetUtils.ts +6 -0
  76. package/template-vanilla/src/experiences/utils/DomUtils.ts +28 -0
  77. package/template-vanilla/src/experiences/views/bases/ViewBase.ts +25 -0
  78. package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +41 -0
  79. package/template-vanilla/src/experiences/views/htmls/loaders/LoaderHTMLView.ts +34 -0
  80. package/template-vanilla/src/experiences/views/htmls/loaders/components/HTMLTemplateLoader.ts +57 -0
  81. package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +26 -0
  82. package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +41 -0
  83. package/template-vanilla/src/experiences/views/threes/loaders/components/ThreeTemplateLoader.ts +52 -0
  84. package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +51 -0
  85. package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +77 -0
  86. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +62 -0
  87. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +65 -0
  88. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +31 -0
  89. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ActorBase.ts +9 -0
  90. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/AnimatedModelBase.ts +67 -0
  91. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ModelBase.ts +48 -0
  92. package/template-vanilla/src/main.ts +3 -0
  93. package/template-vanilla/tsconfig.json +24 -0
  94. package/template-vanilla/vite.config.ts +15 -0
package/README.md CHANGED
@@ -1,32 +1,27 @@
1
- # @benjos/boilerplate
1
+ # 📦 @benjos/create-boilerplate
2
2
 
3
- CLI pour scaffolder des projets Three.js avec support Vanilla/React/Vue.
3
+ CLI to scaffold Three.js projects.
4
4
 
5
- ## Utilisation
5
+ ## 🚀 Usage
6
6
 
7
7
  ```bash
8
- npm create @benjos/boilerplate
9
- # ou
10
- npx @benjos/boilerplate
8
+ npm create @benjos/boilerplate@latest [project-name]
11
9
  ```
12
10
 
13
- Le CLI vous demandera :
14
- 1. **Nom du projet** (exemple: `my-threejs-app` ou `.` pour le dossier actuel)
15
- 2. **Framework** : Vanilla (React et Vue à venir)
16
-
17
- ## Développement local
11
+ ## 🔧 Local Development
18
12
 
19
13
  ```bash
20
- cd packages/cli
21
- npm install
22
- npm run build
23
- npm link
24
-
25
- # Tester
26
- cd /tmp
27
- create-boilerplate
14
+ git clone https://github.com/LeBenjos/boilerplate.git
15
+ cd boilerplate/packages/cli
16
+ npm install && npm run build && npm link
28
17
  ```
29
18
 
30
- ## Publication
19
+ Test: `create-boilerplate`
20
+
21
+ ## 📝 Publishing
22
+
23
+ See [../../docs/PUBLISHING.md](../../docs/PUBLISHING.md)
24
+
25
+ ## 📄 License
31
26
 
32
- Voir [docs/PUBLISHING.md](../../docs/PUBLISHING.md)
27
+ MIT
package/dist/index.js CHANGED
@@ -1,20 +1,21 @@
1
1
  #!/usr/bin/env node
2
- import { program } from 'commander';
3
- import inquirer from 'inquirer';
4
2
  import chalk from 'chalk';
3
+ import { program } from 'commander';
5
4
  import fs from 'fs-extra';
5
+ import inquirer from 'inquirer';
6
6
  import path from 'path';
7
7
  import { fileURLToPath } from 'url';
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = path.dirname(__filename);
10
- async function createProject() {
10
+ async function createProject(projectNameArg) {
11
11
  console.log(chalk.cyan.bold('\n🚀 Welcome to @benjos/boilerplate!\n'));
12
12
  const answers = await inquirer.prompt([
13
13
  {
14
14
  type: 'input',
15
15
  name: 'projectName',
16
16
  message: 'Project name:',
17
- default: 'my-threejs-app',
17
+ default: projectNameArg || 'my-threejs-app',
18
+ when: !projectNameArg,
18
19
  validate: (input) => {
19
20
  if (input === '.')
20
21
  return true;
@@ -36,13 +37,14 @@ async function createProject() {
36
37
  },
37
38
  ]);
38
39
  // Handle current directory case
39
- const isCurrentDir = answers.projectName === '.';
40
+ const projectName = projectNameArg || answers.projectName || '.';
41
+ const isCurrentDir = projectName === '.';
40
42
  const targetDir = isCurrentDir
41
43
  ? process.cwd()
42
- : path.join(process.cwd(), answers.projectName);
44
+ : path.join(process.cwd(), projectName);
43
45
  // Check if directory already exists (only for new directories)
44
46
  if (!isCurrentDir && (await fs.pathExists(targetDir))) {
45
- console.log(chalk.red(`\n❌ Directory "${answers.projectName}" already exists!`));
47
+ console.log(chalk.red(`\n❌ Directory "${projectName}" already exists!`));
46
48
  process.exit(1);
47
49
  }
48
50
  // Check if current directory is empty (only for current directory)
@@ -53,22 +55,20 @@ async function createProject() {
53
55
  process.exit(1);
54
56
  }
55
57
  }
56
- const projectName = isCurrentDir
57
- ? path.basename(targetDir)
58
- : answers.projectName;
58
+ const finalProjectName = isCurrentDir ? path.basename(targetDir) : projectName;
59
59
  console.log(chalk.blue(`\n📦 Creating project in ${targetDir}...\n`));
60
60
  // Copy template
61
- const templateDir = path.join(__dirname, '..', '..', `template-${answers.framework}`);
61
+ const templateDir = path.join(__dirname, '..', `template-${answers.framework}`);
62
62
  await fs.copy(templateDir, targetDir);
63
63
  // Update package.json with project name
64
64
  const packageJsonPath = path.join(targetDir, 'package.json');
65
65
  const packageJson = await fs.readJson(packageJsonPath);
66
- packageJson.name = projectName;
66
+ packageJson.name = finalProjectName;
67
67
  await fs.writeJson(packageJsonPath, packageJson, { spaces: 4 });
68
68
  console.log(chalk.green('✅ Project created successfully!\n'));
69
69
  console.log(chalk.cyan('Next steps:\n'));
70
70
  if (!isCurrentDir) {
71
- console.log(chalk.white(` cd ${answers.projectName}`));
71
+ console.log(chalk.white(` cd ${projectName}`));
72
72
  }
73
73
  console.log(chalk.white(' npm install'));
74
74
  console.log(chalk.white(' npm run dev\n'));
@@ -76,7 +76,8 @@ async function createProject() {
76
76
  program
77
77
  .name('create-boilerplate')
78
78
  .description('Create a new Three.js project with Vanilla/React/Vue')
79
- .version('1.0.0')
80
- .action(createProject);
79
+ .version('1.0.1')
80
+ .argument('[project-name]', 'Project name (use "." for current directory)')
81
+ .action((projectName) => createProject(projectName));
81
82
  program.parse();
82
83
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,UAAU,CAAA;AACzB,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AAO1C,KAAK,UAAU,aAAa,CAAC,cAAuB;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAA;IAEtE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAiB;QAClD;YACI,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,cAAc,IAAI,gBAAgB;YAC3C,IAAI,EAAE,CAAC,cAAc;YACrB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxB,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAA;gBAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,uGAAuG,CAAA;gBAClH,CAAC;gBACD,OAAO,IAAI,CAAA;YACf,CAAC;SACJ;QACD;YACI,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE;gBACL,EAAE,IAAI,EAAE,iCAAiC,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC7D,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/D,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC9D;SACJ;KACJ,CAAC,CAAA;IAEF,gCAAgC;IAChC,MAAM,WAAW,GAAG,cAAc,IAAI,OAAO,CAAC,WAAW,IAAI,GAAG,CAAA;IAChE,MAAM,YAAY,GAAG,WAAW,KAAK,GAAG,CAAA;IACxC,MAAM,SAAS,GAAG,YAAY;QAC1B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAA;IAE3C,+DAA+D;IAC/D,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,WAAW,mBAAmB,CAAC,CAAC,CAAA;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,mEAAmE;IACnE,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAE9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,OAAO,CAAC,CAAC,CAAA;IAErE,gBAAgB;IAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC/E,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAErC,wCAAwC;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IAC5D,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IACtD,WAAW,CAAC,IAAI,GAAG,gBAAgB,CAAA;IACnC,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;IAE/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAC/C,CAAC;AAED,OAAO;KACF,IAAI,CAAC,oBAAoB,CAAC;KAC1B,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;KAC1E,MAAM,CAAC,CAAC,WAAoB,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;AAEjE,OAAO,CAAC,KAAK,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benjos/create-boilerplate",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "CLI to scaffold Three.js projects with Vanilla/React/Vue support",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
- "../template-vanilla"
11
+ "template-vanilla"
12
12
  ],
13
13
  "scripts": {
14
14
  "build": "tsc",
@@ -0,0 +1,6 @@
1
+ dist
2
+ node_modules
3
+ *.min.js
4
+ *.min.css
5
+ public/assets
6
+ package-lock.json
@@ -0,0 +1,10 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "es5",
4
+ "singleQuote": true,
5
+ "printWidth": 120,
6
+ "tabWidth": 4,
7
+ "useTabs": false,
8
+ "arrowParens": "always",
9
+ "endOfLine": "lf"
10
+ }
File without changes
@@ -0,0 +1,30 @@
1
+ # 📦 Publishing Guide
2
+
3
+ ## First Publish
4
+
5
+ ```bash
6
+ npm login
7
+ cd packages/cli
8
+ npm run build
9
+ npm publish --access public
10
+ ```
11
+
12
+ ## Updates
13
+
14
+ ```bash
15
+ cd packages/cli
16
+ npm version patch # or minor/major
17
+ npm publish --access public
18
+ ```
19
+
20
+ ## Version Types
21
+
22
+ - `patch` → 1.0.0 → 1.0.1 (bug fixes)
23
+ - `minor` → 1.0.0 → 1.1.0 (new features)
24
+ - `major` → 1.0.0 → 2.0.0 (breaking changes)
25
+
26
+ ## Test Before Publishing
27
+
28
+ ```bash
29
+ npm pack --dry-run
30
+ ```
@@ -0,0 +1,126 @@
1
+ import eslint from '@eslint/js';
2
+ import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
3
+ import tseslint from 'typescript-eslint';
4
+
5
+ export default tseslint.config(
6
+ eslint.configs.recommended,
7
+ ...tseslint.configs.recommendedTypeChecked,
8
+ ...tseslint.configs.stylisticTypeChecked,
9
+ eslintPluginPrettier,
10
+ {
11
+ languageOptions: {
12
+ parserOptions: {
13
+ projectService: true,
14
+ tsconfigRootDir: import.meta.dirname,
15
+ },
16
+ },
17
+ },
18
+ {
19
+ rules: {
20
+ // Style Rules
21
+ '@typescript-eslint/explicit-member-accessibility': [
22
+ 'error',
23
+ {
24
+ accessibility: 'explicit',
25
+ overrides: {
26
+ constructors: 'no-public',
27
+ },
28
+ },
29
+ ],
30
+ '@typescript-eslint/member-ordering': 'off',
31
+ '@typescript-eslint/naming-convention': [
32
+ 'error',
33
+ // Variables
34
+ {
35
+ selector: 'variable',
36
+ modifiers: ['const'],
37
+ format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
38
+ },
39
+ // Parameters
40
+ {
41
+ selector: 'parameter',
42
+ format: ['camelCase', 'PascalCase'],
43
+ leadingUnderscore: 'allow',
44
+ },
45
+ // Object properties (constants like DomEvent.MOUSE_DOWN)
46
+ {
47
+ selector: 'objectLiteralProperty',
48
+ format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
49
+ },
50
+ // Public members (instance or static) : camelCase or PascalCase
51
+ {
52
+ selector: ['method', 'property'],
53
+ modifiers: ['public'],
54
+ format: ['camelCase', 'PascalCase'],
55
+ leadingUnderscore: 'forbid',
56
+ },
57
+ // Private static members : _PascalCase or _UPPER_CASE
58
+ {
59
+ selector: ['method', 'property'],
60
+ modifiers: ['private', 'static'],
61
+ format: ['PascalCase', 'UPPER_CASE'],
62
+ leadingUnderscore: 'require',
63
+ },
64
+ // Protected static members : _PascalCase or _UPPER_CASE
65
+ {
66
+ selector: ['method', 'property'],
67
+ modifiers: ['protected', 'static'],
68
+ format: ['PascalCase', 'UPPER_CASE'],
69
+ leadingUnderscore: 'require',
70
+ },
71
+ // Private instance members : _camelCase or _UPPER_CASE
72
+ {
73
+ selector: ['method', 'property'],
74
+ modifiers: ['private'],
75
+ format: ['camelCase', 'UPPER_CASE'],
76
+ leadingUnderscore: 'require',
77
+ },
78
+ // Protected instance members : _camelCase or _UPPER_CASE
79
+ {
80
+ selector: ['method', 'property'],
81
+ modifiers: ['protected'],
82
+ format: ['camelCase', 'UPPER_CASE'],
83
+ leadingUnderscore: 'require',
84
+ },
85
+ // Types
86
+ {
87
+ selector: 'typeLike',
88
+ format: ['PascalCase'],
89
+ },
90
+ ],
91
+ '@typescript-eslint/no-unused-vars': [
92
+ 'warn',
93
+ {
94
+ argsIgnorePattern: '^_',
95
+ varsIgnorePattern: '^_',
96
+ },
97
+ ],
98
+
99
+ // Best Practices
100
+ '@typescript-eslint/no-explicit-any': 'warn',
101
+ '@typescript-eslint/no-floating-promises': 'error',
102
+ '@typescript-eslint/no-misused-promises': 'error',
103
+ '@typescript-eslint/await-thenable': 'error',
104
+ '@typescript-eslint/no-empty-function': 'off',
105
+ '@typescript-eslint/adjacent-overload-signatures': 'error',
106
+ '@typescript-eslint/prefer-nullish-coalescing': 'warn',
107
+ '@typescript-eslint/no-empty-object-type': 'off',
108
+ '@typescript-eslint/require-await': 'warn',
109
+ '@typescript-eslint/restrict-template-expressions': 'off',
110
+ '@typescript-eslint/explicit-function-return-type': [
111
+ 'error',
112
+ {
113
+ allowExpressions: false,
114
+ allowTypedFunctionExpressions: true,
115
+ allowHigherOrderFunctions: true,
116
+ },
117
+ ],
118
+
119
+ // Prettier integration
120
+ 'prettier/prettier': 'warn',
121
+ },
122
+ },
123
+ {
124
+ ignores: ['dist/**', 'node_modules/**', '*.config.js', '*.config.ts', 'public/**'],
125
+ }
126
+ );
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="./assets/icons/benjosLogoBlack.svg" />
6
+ <meta
7
+ name="viewport"
8
+ content="width=device-width, initial-scale=1.0, maximum-scale=1, minimum-scale=1, height=device-height, user-scalable=no, viewport-fit=cover, shrink-to-fit=no, minimal-ui"
9
+ />
10
+ <title>Boilerplate</title>
11
+ </head>
12
+
13
+ <body>
14
+ <div id="app"></div>
15
+ <script type="module" src="/src/main.ts"></script>
16
+ </body>
17
+ </html>