@benjos/create-boilerplate 1.5.0 → 1.5.2

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 (92) hide show
  1. package/README.md +6 -5
  2. package/dist/index.js +5 -1
  3. package/dist/index.js.map +1 -1
  4. package/package.json +3 -2
  5. package/template-react/package-lock.json +2 -2
  6. package/template-react/package.json +1 -1
  7. package/template-vanilla/package-lock.json +2 -2
  8. package/template-vanilla/package.json +1 -1
  9. package/template-vanilla/readme.md +12 -9
  10. package/template-vue/.prettierignore +6 -0
  11. package/template-vue/.prettierrc +10 -0
  12. package/template-vue/eslint.config.js +130 -0
  13. package/template-vue/index.html +17 -0
  14. package/template-vue/package-lock.json +4082 -0
  15. package/template-vue/package.json +43 -0
  16. package/template-vue/public/assets/fonts/LICENSE +13 -0
  17. package/template-vue/public/assets/fonts/template.typeface.json +1 -0
  18. package/template-vue/public/assets/hdrs/template.hdr +0 -0
  19. package/template-vue/public/assets/icons/benjosLogoBlack.svg +5 -0
  20. package/template-vue/public/assets/loaders/draco/README.md +32 -0
  21. package/template-vue/public/assets/loaders/draco/draco_decoder.js +34 -0
  22. package/template-vue/public/assets/loaders/draco/draco_decoder.wasm +0 -0
  23. package/template-vue/public/assets/loaders/draco/draco_encoder.js +33 -0
  24. package/template-vue/public/assets/loaders/draco/draco_wasm_wrapper.js +117 -0
  25. package/template-vue/public/assets/loaders/draco/gltf/draco_decoder.js +33 -0
  26. package/template-vue/public/assets/loaders/draco/gltf/draco_decoder.wasm +0 -0
  27. package/template-vue/public/assets/loaders/draco/gltf/draco_encoder.js +33 -0
  28. package/template-vue/public/assets/loaders/draco/gltf/draco_wasm_wrapper.js +116 -0
  29. package/template-vue/public/assets/models/template.glb +0 -0
  30. package/template-vue/public/assets/textures/template.jpg +0 -0
  31. package/template-vue/readme.md +34 -0
  32. package/template-vue/src/experiences/Experience.ts +27 -0
  33. package/template-vue/src/experiences/cameras/threes/DebugThreeCameraController.ts +55 -0
  34. package/template-vue/src/experiences/cameras/threes/LoaderThreeCameraController.ts +25 -0
  35. package/template-vue/src/experiences/cameras/threes/MainThreeCameraController.ts +24 -0
  36. package/template-vue/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +90 -0
  37. package/template-vue/src/experiences/commands/InitCommand.ts +50 -0
  38. package/template-vue/src/experiences/constants/experiences/AnimationId.ts +3 -0
  39. package/template-vue/src/experiences/constants/experiences/AssetId.ts +8 -0
  40. package/template-vue/src/experiences/constants/experiences/CameraId.ts +7 -0
  41. package/template-vue/src/experiences/constants/experiences/DebugGuiTitle.ts +6 -0
  42. package/template-vue/src/experiences/constants/experiences/Object3dId.ts +3 -0
  43. package/template-vue/src/experiences/constants/experiences/ViewId.ts +16 -0
  44. package/template-vue/src/experiences/constants/experiences/ViewType.ts +6 -0
  45. package/template-vue/src/experiences/engines/threes/MainThree.ts +11 -0
  46. package/template-vue/src/experiences/engines/threes/app/LoaderThreeApp.ts +49 -0
  47. package/template-vue/src/experiences/engines/threes/app/MainThreeApp.ts +109 -0
  48. package/template-vue/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +128 -0
  49. package/template-vue/src/experiences/engines/vues/MainVue.vue +9 -0
  50. package/template-vue/src/experiences/managers/DebugManager.ts +87 -0
  51. package/template-vue/src/experiences/managers/LoaderManager.ts +177 -0
  52. package/template-vue/src/experiences/managers/threes/ThreeAssetsManager.ts +263 -0
  53. package/template-vue/src/experiences/managers/threes/ThreeCameraControllerManager.ts +46 -0
  54. package/template-vue/src/experiences/managers/threes/ThreeRaycasterManager.ts +21 -0
  55. package/template-vue/src/experiences/materials/threes/loaders/LoaderMaterial.ts +44 -0
  56. package/template-vue/src/experiences/renderers/threes/LoaderRenderer.ts +18 -0
  57. package/template-vue/src/experiences/renderers/threes/Renderer.ts +71 -0
  58. package/template-vue/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +29 -0
  59. package/template-vue/src/experiences/shaders/threes/loaders/LoaderFragmentShader.glsl +8 -0
  60. package/template-vue/src/experiences/shaders/threes/loaders/LoaderVertexShader.glsl +3 -0
  61. package/template-vue/src/experiences/styles/abstracts/_import.scss +5 -0
  62. package/template-vue/src/experiences/styles/abstracts/functions.scss +3 -0
  63. package/template-vue/src/experiences/styles/abstracts/mixins.scss +0 -0
  64. package/template-vue/src/experiences/styles/abstracts/variables.scss +7 -0
  65. package/template-vue/src/experiences/styles/commons/fonts.scss +10 -0
  66. package/template-vue/src/experiences/styles/commons/main.scss +59 -0
  67. package/template-vue/src/experiences/styles/commons/texts.scss +1 -0
  68. package/template-vue/src/experiences/styles/style.scss +7 -0
  69. package/template-vue/src/experiences/styles/views/loader.scss +70 -0
  70. package/template-vue/src/experiences/types/assetTypes.ts +8 -0
  71. package/template-vue/src/experiences/types/cameraTypes.ts +37 -0
  72. package/template-vue/src/experiences/types/global.d.ts +9 -0
  73. package/template-vue/src/experiences/types/shaders.d.ts +4 -0
  74. package/template-vue/src/experiences/views/threes/bases/ThreeViewBase.ts +49 -0
  75. package/template-vue/src/experiences/views/threes/loaders/LoaderThreeView.ts +28 -0
  76. package/template-vue/src/experiences/views/threes/loaders/components/TemplateLoaderThreeActor.ts +49 -0
  77. package/template-vue/src/experiences/views/threes/worlds/World2ThreeView.ts +35 -0
  78. package/template-vue/src/experiences/views/threes/worlds/WorldThreeView.ts +35 -0
  79. package/template-vue/src/experiences/views/threes/worlds/components/Environment.ts +89 -0
  80. package/template-vue/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +58 -0
  81. package/template-vue/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +65 -0
  82. package/template-vue/src/experiences/views/threes/worlds/components/actors/TemplateMesh2.ts +71 -0
  83. package/template-vue/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +33 -0
  84. package/template-vue/src/experiences/views/threes/worlds/components/actors/bases/ThreeActorBase.ts +44 -0
  85. package/template-vue/src/experiences/views/threes/worlds/components/actors/bases/ThreeAnimatedModelBase.ts +63 -0
  86. package/template-vue/src/experiences/views/threes/worlds/components/actors/bases/ThreeModelBase.ts +48 -0
  87. package/template-vue/src/experiences/views/vues/LoaderView.vue +55 -0
  88. package/template-vue/src/main.ts +7 -0
  89. package/template-vue/tsconfig.app.json +14 -0
  90. package/template-vue/tsconfig.json +7 -0
  91. package/template-vue/tsconfig.node.json +17 -0
  92. package/template-vue/vite.config.ts +16 -0
package/README.md CHANGED
@@ -19,15 +19,16 @@ npm create @benjos/boilerplate@latest .
19
19
 
20
20
  Choose your framework:
21
21
  - **Vanilla** → Three.js + TypeScript + HTML views
22
- - **React** → Three.js + TypeScript + React components
22
+ - **Vue** → Three.js + TypeScript + Vue components
23
23
 
24
24
  Both templates include:
25
25
  - ⚡ Vite for fast development
26
26
  - 🎨 GLSL shader support (vite-plugin-glsl)
27
- - 🐛 Debug mode with lil-gui
28
- - 📦 Manager-based architecture (Loader, Ticker, Keyboard, Mouse, etc.)
29
- - 🎯 ViewProxy system for managing views
30
- - 🎭 Three.js scene management
27
+ - 🐛 Debug mode with lil-gui (DebugManager)
28
+ - 📦 Singleton-based manager architecture (Loader, Debug, Assets, Raycaster, etc.)
29
+ - 🔄 Lazy loading with animated transitions between views
30
+ - 🎭 Multi-view system (HTML views + Three.js views with dispose/cleanup)
31
+ - 🎬 ThreeApp architecture (LoaderThreeApp, MainThreeApp)
31
32
  - 📝 TypeScript + ESLint + Prettier
32
33
 
33
34
  ## 🔧 Development
package/dist/index.js CHANGED
@@ -9,6 +9,10 @@ import { fileURLToPath } from 'url';
9
9
  const __filename = fileURLToPath(import.meta.url);
10
10
  // eslint-disable-next-line @typescript-eslint/naming-convention
11
11
  const __dirname = path.dirname(__filename);
12
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
13
+ const pkg = await fs.readJson(path.join(__dirname, '..', 'package.json'));
14
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
15
+ const version = pkg.version;
12
16
  async function createProject(projectNameArg) {
13
17
  console.log(chalk.cyan.bold('\n🚀 Welcome to @benjos/boilerplate!\n'));
14
18
  const answers = await inquirer.prompt([
@@ -78,7 +82,7 @@ async function createProject(projectNameArg) {
78
82
  program
79
83
  .name('create-boilerplate')
80
84
  .description('Create a new Three.js project with Vanilla/React/Vue')
81
- .version('1.0.1')
85
+ .version(version)
82
86
  .argument('[project-name]', 'Project name (use "." for current directory)')
83
87
  .action((projectName) => createProject(projectName));
84
88
  program.parse();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,gEAAgE;AAChE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,gEAAgE;AAChE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAO3C,KAAK,UAAU,aAAa,CAAC,cAAuB;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAEvE,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,EAAoB,EAAE;gBAC1C,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,IAAI,CAAC;gBAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,uGAAuG,CAAC;gBACnH,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,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,6BAA6B,EAAE,KAAK,EAAE,KAAK,EAAE;aACxD;SACJ;KACJ,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,WAAW,GAAG,cAAc,IAAI,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;IACjE,MAAM,YAAY,GAAG,WAAW,KAAK,GAAG,CAAC;IACzC,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAEvF,+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,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,mEAAmE;IACnE,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;IAED,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAE/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,OAAO,CAAC,CAAC,CAAC;IAEtE,gBAAgB;IAChB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAChF,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEtC,wCAAwC;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAC7D,mEAAmE;IACnE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACvD,sEAAsE;IACtE,WAAW,CAAC,IAAI,GAAG,gBAAgB,CAAC;IACpC,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAChD,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,CAAC;AAElE,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@benjos/create-boilerplate",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "CLI to scaffold Three.js projects with framework support",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9,7 +9,8 @@
9
9
  "files": [
10
10
  "dist",
11
11
  "template-vanilla",
12
- "template-react"
12
+ "template-react",
13
+ "template-vue"
13
14
  ],
14
15
  "scripts": {
15
16
  "build": "tsc",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "template-react",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "template-react",
9
- "version": "1.5.0",
9
+ "version": "1.5.2",
10
10
  "dependencies": {
11
11
  "@dimforge/rapier3d": "^0.19.3",
12
12
  "gsap": "^3.14.2",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "template-react",
3
3
  "private": true,
4
- "version": "1.5.0",
4
+ "version": "1.5.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "template-vanilla",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "template-vanilla",
9
- "version": "1.5.0",
9
+ "version": "1.5.2",
10
10
  "dependencies": {
11
11
  "@benjos/cookware": "^1.0.4",
12
12
  "@benjos/spices": "^1.0.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "template-vanilla",
3
3
  "private": true,
4
- "version": "1.5.0",
4
+ "version": "1.5.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
@@ -1,6 +1,6 @@
1
- # 🎨 Three.js Boilerplate
1
+ # 🎨 Three.js Vanilla Boilerplate
2
2
 
3
- Custom boilerplate for Three.js projects with CLI scaffolding.
3
+ Three.js + Vite + TypeScript boilerplate with a singleton-based architecture.
4
4
 
5
5
  ## 🚀 Quick Start
6
6
 
@@ -12,19 +12,22 @@ npm run dev
12
12
  ## ✨ Features
13
13
 
14
14
  - Three.js + Vite + TypeScript
15
- - GLSL shaders support
16
- - Debug mode with lil-gui
17
- - Manager-based architecture
15
+ - GLSL shader support (vite-plugin-glsl)
16
+ - Singleton-based manager architecture (DebugManager, LoaderManager, ThreeAssetsManager, etc.)
17
+ - Lazy loading with animated transitions between views
18
+ - Multi-view system with HTML views and Three.js views (init/reset/dispose lifecycle)
19
+ - ThreeApp layer (LoaderThreeApp, MainThreeApp) for scene orchestration
20
+ - Camera controller system with base classes (MainThreeCameraController, DebugThreeCameraController)
18
21
  - ESLint + Prettier
19
22
 
20
23
  ## 🐛 Debug Mode
21
24
 
22
25
  Add `#debug` to URL: `http://localhost:5173/#debug`
23
26
 
24
- - `Shift + H` → Toggle UI
25
- - `Shift + C` → Debug Camera
26
- - `Shift + W` → Wireframe
27
- - `Ctrl + Click` → Center on object
27
+ - `Shift + H` → Toggle debug UI + perf monitor
28
+ - `Shift + C` → Toggle debug camera (OrbitControls)
29
+ - `Shift + W` → Toggle wireframe
30
+ - `Ctrl + Click` → Center camera on object
28
31
 
29
32
  ## 📄 License
30
33
 
@@ -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
+ }
@@ -0,0 +1,130 @@
1
+ import eslint from '@eslint/js';
2
+ import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
3
+ import { defineConfig } from "eslint/config";
4
+ import tseslint from 'typescript-eslint';
5
+
6
+ export default defineConfig(
7
+ {
8
+ ignores: ['**/dist/**', '**/build/**', '**/node_modules/**', '**/*.min.js', '**/*.js.map', '**/*.d.ts'],
9
+ },
10
+ eslint.configs.recommended,
11
+ tseslint.configs.recommendedTypeChecked,
12
+ tseslint.configs.stylisticTypeChecked,
13
+ eslintPluginPrettier,
14
+ {
15
+ languageOptions: {
16
+ parserOptions: {
17
+ projectService: true,
18
+ tsconfigRootDir: import.meta.dirname,
19
+ },
20
+ },
21
+ },
22
+ {
23
+ rules: {
24
+ // Style Rules
25
+ '@typescript-eslint/explicit-member-accessibility': [
26
+ 'error',
27
+ {
28
+ accessibility: 'explicit',
29
+ overrides: {
30
+ constructors: 'no-public',
31
+ },
32
+ },
33
+ ],
34
+ '@typescript-eslint/member-ordering': 'off',
35
+ '@typescript-eslint/naming-convention': [
36
+ 'error',
37
+ // Variables
38
+ {
39
+ selector: 'variable',
40
+ modifiers: ['const'],
41
+ format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
42
+ },
43
+ // Parameters
44
+ {
45
+ selector: 'parameter',
46
+ format: ['camelCase', 'PascalCase'],
47
+ leadingUnderscore: 'allow',
48
+ },
49
+ // Object properties (constants like DomEvent.MOUSE_DOWN)
50
+ {
51
+ selector: 'objectLiteralProperty',
52
+ format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
53
+ },
54
+ // Public members (instance or static) : camelCase or PascalCase
55
+ {
56
+ selector: ['method', 'property'],
57
+ modifiers: ['public'],
58
+ format: ['camelCase', 'PascalCase'],
59
+ leadingUnderscore: 'forbid',
60
+ },
61
+ // Private static members : _PascalCase or _UPPER_CASE
62
+ {
63
+ selector: ['method', 'property'],
64
+ modifiers: ['private', 'static'],
65
+ format: ['PascalCase', 'UPPER_CASE'],
66
+ leadingUnderscore: 'require',
67
+ },
68
+ // Protected static members : _PascalCase or _UPPER_CASE
69
+ {
70
+ selector: ['method', 'property'],
71
+ modifiers: ['protected', 'static'],
72
+ format: ['PascalCase', 'UPPER_CASE'],
73
+ leadingUnderscore: 'require',
74
+ },
75
+ // Private instance members : _camelCase or _UPPER_CASE
76
+ {
77
+ selector: ['method', 'property'],
78
+ modifiers: ['private'],
79
+ format: ['camelCase', 'UPPER_CASE'],
80
+ leadingUnderscore: 'require',
81
+ },
82
+ // Protected instance members : _camelCase or _UPPER_CASE
83
+ {
84
+ selector: ['method', 'property'],
85
+ modifiers: ['protected'],
86
+ format: ['camelCase', 'UPPER_CASE'],
87
+ leadingUnderscore: 'require',
88
+ },
89
+ // Types
90
+ {
91
+ selector: 'typeLike',
92
+ format: ['PascalCase'],
93
+ },
94
+ ],
95
+ '@typescript-eslint/no-unused-vars': [
96
+ 'warn',
97
+ {
98
+ argsIgnorePattern: '^_',
99
+ varsIgnorePattern: '^_',
100
+ },
101
+ ],
102
+
103
+ // Best Practices
104
+ '@typescript-eslint/no-explicit-any': 'warn',
105
+ '@typescript-eslint/no-floating-promises': 'error',
106
+ '@typescript-eslint/no-misused-promises': 'error',
107
+ '@typescript-eslint/await-thenable': 'error',
108
+ '@typescript-eslint/no-empty-function': 'off',
109
+ '@typescript-eslint/adjacent-overload-signatures': 'error',
110
+ '@typescript-eslint/prefer-nullish-coalescing': 'warn',
111
+ '@typescript-eslint/no-empty-object-type': 'off',
112
+ '@typescript-eslint/require-await': 'warn',
113
+ '@typescript-eslint/restrict-template-expressions': 'off',
114
+ '@typescript-eslint/explicit-function-return-type': [
115
+ 'error',
116
+ {
117
+ allowExpressions: false,
118
+ allowTypedFunctionExpressions: true,
119
+ allowHigherOrderFunctions: true,
120
+ },
121
+ ],
122
+
123
+ // Prettier integration
124
+ 'prettier/prettier': 'warn',
125
+ },
126
+ },
127
+ {
128
+ ignores: ['dist/**', 'node_modules/**', '*.config.js', '*.config.ts', 'public/**'],
129
+ }
130
+ );
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <link rel="icon" type="image/svg+xml" href="./assets/icons/benjosLogoBlack.svg" />
7
+ <meta 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
+ <title>Boilerplate + Vue</title>
10
+ </head>
11
+
12
+ <body>
13
+ <div id="app"></div>
14
+ <script type="module" src="/src/main.ts"></script>
15
+ </body>
16
+
17
+ </html>