@donotdev/cli 0.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 (281) hide show
  1. package/LICENSE.md +48 -0
  2. package/README.md +291 -0
  3. package/dependencies-matrix.json +694 -0
  4. package/dist/bin/commands/build.d.ts +11 -0
  5. package/dist/bin/commands/build.d.ts.map +1 -0
  6. package/dist/bin/commands/build.js +8162 -0
  7. package/dist/bin/commands/build.js.map +1 -0
  8. package/dist/bin/commands/bump.d.ts +11 -0
  9. package/dist/bin/commands/bump.d.ts.map +1 -0
  10. package/dist/bin/commands/bump.js +8004 -0
  11. package/dist/bin/commands/bump.js.map +1 -0
  12. package/dist/bin/commands/cacheout.d.ts +11 -0
  13. package/dist/bin/commands/cacheout.d.ts.map +1 -0
  14. package/dist/bin/commands/cacheout.js +7630 -0
  15. package/dist/bin/commands/cacheout.js.map +1 -0
  16. package/dist/bin/commands/create-app.d.ts +11 -0
  17. package/dist/bin/commands/create-app.d.ts.map +1 -0
  18. package/dist/bin/commands/create-app.js +9032 -0
  19. package/dist/bin/commands/create-app.js.map +1 -0
  20. package/dist/bin/commands/create-project.d.ts +11 -0
  21. package/dist/bin/commands/create-project.d.ts.map +1 -0
  22. package/dist/bin/commands/create-project.js +9643 -0
  23. package/dist/bin/commands/create-project.js.map +1 -0
  24. package/dist/bin/commands/deploy.d.ts +11 -0
  25. package/dist/bin/commands/deploy.d.ts.map +1 -0
  26. package/dist/bin/commands/deploy.js +9007 -0
  27. package/dist/bin/commands/deploy.js.map +1 -0
  28. package/dist/bin/commands/dev.d.ts +11 -0
  29. package/dist/bin/commands/dev.d.ts.map +1 -0
  30. package/dist/bin/commands/dev.js +7892 -0
  31. package/dist/bin/commands/dev.js.map +1 -0
  32. package/dist/bin/commands/emu.d.ts +11 -0
  33. package/dist/bin/commands/emu.d.ts.map +1 -0
  34. package/dist/bin/commands/emu.js +8302 -0
  35. package/dist/bin/commands/emu.js.map +1 -0
  36. package/dist/bin/commands/format.d.ts +11 -0
  37. package/dist/bin/commands/format.d.ts.map +1 -0
  38. package/dist/bin/commands/format.js +8009 -0
  39. package/dist/bin/commands/format.js.map +1 -0
  40. package/dist/bin/commands/lint.d.ts +11 -0
  41. package/dist/bin/commands/lint.d.ts.map +1 -0
  42. package/dist/bin/commands/lint.js +7481 -0
  43. package/dist/bin/commands/lint.js.map +1 -0
  44. package/dist/bin/commands/preview.d.ts +11 -0
  45. package/dist/bin/commands/preview.d.ts.map +1 -0
  46. package/dist/bin/commands/preview.js +7909 -0
  47. package/dist/bin/commands/preview.js.map +1 -0
  48. package/dist/bin/commands/sync-secrets.d.ts +11 -0
  49. package/dist/bin/commands/sync-secrets.d.ts.map +1 -0
  50. package/dist/bin/commands/sync-secrets.js +8227 -0
  51. package/dist/bin/commands/sync-secrets.js.map +1 -0
  52. package/dist/bin/dndev.js +222 -0
  53. package/dist/bin/donotdev.js +222 -0
  54. package/dist/index.d.ts +8 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +12820 -0
  57. package/dist/index.js.map +1 -0
  58. package/package.json +71 -0
  59. package/templates/app-demo/index.html.example +20 -0
  60. package/templates/app-demo/public/favicon.ico.example +0 -0
  61. package/templates/app-demo/public/fonts/Roboto-400-cyrillic-ext.woff2.example +0 -0
  62. package/templates/app-demo/public/fonts/Roboto-400-cyrillic.woff2.example +0 -0
  63. package/templates/app-demo/public/fonts/Roboto-400-greek-ext.woff2.example +0 -0
  64. package/templates/app-demo/public/fonts/Roboto-400-greek.woff2.example +0 -0
  65. package/templates/app-demo/public/fonts/Roboto-400-latin-ext.woff2.example +0 -0
  66. package/templates/app-demo/public/fonts/Roboto-400-latin.woff2.example +0 -0
  67. package/templates/app-demo/public/fonts/Roboto-400-vietnamese.woff2.example +0 -0
  68. package/templates/app-demo/public/fonts/Roboto-700-cyrillic-ext.woff2.example +0 -0
  69. package/templates/app-demo/public/fonts/Roboto-700-cyrillic.woff2.example +0 -0
  70. package/templates/app-demo/public/fonts/Roboto-700-greek-ext.woff2.example +0 -0
  71. package/templates/app-demo/public/fonts/Roboto-700-greek.woff2.example +0 -0
  72. package/templates/app-demo/public/fonts/Roboto-700-latin-ext.woff2.example +0 -0
  73. package/templates/app-demo/public/fonts/Roboto-700-latin.woff2.example +0 -0
  74. package/templates/app-demo/public/fonts/Roboto-700-vietnamese.woff2.example +0 -0
  75. package/templates/app-demo/public/fonts/fonts.css.example +144 -0
  76. package/templates/app-demo/public/logo.png.example +0 -0
  77. package/templates/app-demo/public/logo.svg.example +1 -0
  78. package/templates/app-demo/public/manifest.json.example +10 -0
  79. package/templates/app-demo/src/App.tsx.example +17 -0
  80. package/templates/app-demo/src/Routes.tsx.example +20 -0
  81. package/templates/app-demo/src/components/ThemeToggle.tsx.example +48 -0
  82. package/templates/app-demo/src/globals.css.example +4 -0
  83. package/templates/app-demo/src/main.tsx.example +27 -0
  84. package/templates/app-demo/src/pages/DetailPage.tsx.example +103 -0
  85. package/templates/app-demo/src/pages/FullPage.tsx.example +142 -0
  86. package/templates/app-demo/src/pages/HomePage.tsx.example +79 -0
  87. package/templates/app-demo/src/pages/components/ComponentRenderer.tsx.example +511 -0
  88. package/templates/app-demo/src/pages/components/ComponentsData.tsx.example +152 -0
  89. package/templates/app-demo/src/pages/components/DemoLayout.tsx.example +266 -0
  90. package/templates/app-demo/src/pages/components/LayoutRoute.tsx.example +20 -0
  91. package/templates/app-demo/src/pages/components/componentConfig.ts.example +921 -0
  92. package/templates/app-demo/src/themes.css.example +179 -0
  93. package/templates/app-demo/tsconfig.json.example +9 -0
  94. package/templates/app-demo/vite.config.ts.example +53 -0
  95. package/templates/app-next/.env.example +92 -0
  96. package/templates/app-next/next.config.ts.example +8 -0
  97. package/templates/app-next/postcss.config.js.example +58 -0
  98. package/templates/app-next/service-account-key.json.example +2 -0
  99. package/templates/app-next/src/app/ClientLayout.tsx.example +39 -0
  100. package/templates/app-next/src/app/layout.tsx.example +52 -0
  101. package/templates/app-next/src/app/not-found.tsx.example +21 -0
  102. package/templates/app-next/src/config/app.ts.example +75 -0
  103. package/templates/app-next/src/config/legal.ts.example +170 -0
  104. package/templates/app-next/src/globals.css.example +15 -0
  105. package/templates/app-next/src/locales/dndev_en.json.example +516 -0
  106. package/templates/app-next/src/pages/HomePage.tsx.example +20 -0
  107. package/templates/app-next/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  108. package/templates/app-next/src/pages/legal/PrivacyPage.tsx.example +69 -0
  109. package/templates/app-next/src/pages/legal/TermsPage.tsx.example +71 -0
  110. package/templates/app-next/src/themes.css.example +179 -0
  111. package/templates/app-next/tsconfig.json.example +11 -0
  112. package/templates/app-payload/.env.example +28 -0
  113. package/templates/app-payload/README.md.example +233 -0
  114. package/templates/app-payload/collections/Company.ts.example +125 -0
  115. package/templates/app-payload/collections/Hero.ts.example +62 -0
  116. package/templates/app-payload/collections/Media.ts.example +41 -0
  117. package/templates/app-payload/collections/Products.ts.example +115 -0
  118. package/templates/app-payload/collections/Services.ts.example +104 -0
  119. package/templates/app-payload/collections/Testimonials.ts.example +92 -0
  120. package/templates/app-payload/collections/Users.ts.example +35 -0
  121. package/templates/app-payload/src/server.ts.example +79 -0
  122. package/templates/app-payload/tsconfig.json.example +24 -0
  123. package/templates/app-vite/.env.example +77 -0
  124. package/templates/app-vite/index.html.example +127 -0
  125. package/templates/app-vite/service-account-key.json.example +2 -0
  126. package/templates/app-vite/src/App.tsx.example +39 -0
  127. package/templates/app-vite/src/Routes.tsx.example +16 -0
  128. package/templates/app-vite/src/config/app.ts.example +75 -0
  129. package/templates/app-vite/src/config/legal.ts.example +170 -0
  130. package/templates/app-vite/src/globals.css.example +11 -0
  131. package/templates/app-vite/src/locales/dndev_en.json.example +516 -0
  132. package/templates/app-vite/src/main.tsx.example +21 -0
  133. package/templates/app-vite/src/pages/HomePage.tsx.example +22 -0
  134. package/templates/app-vite/src/pages/NotFoundPage.tsx.example +33 -0
  135. package/templates/app-vite/src/pages/legal/LegalNoticePage.tsx.example +75 -0
  136. package/templates/app-vite/src/pages/legal/PrivacyPage.tsx.example +69 -0
  137. package/templates/app-vite/src/pages/legal/TermsPage.tsx.example +71 -0
  138. package/templates/app-vite/src/pages/locales/README.md.example +1 -0
  139. package/templates/app-vite/src/pages/locales/example_en.json.example +5 -0
  140. package/templates/app-vite/src/themes.css.example +179 -0
  141. package/templates/app-vite/tsconfig.json.example +9 -0
  142. package/templates/app-vite/vite.config.ts.example +9 -0
  143. package/templates/functions-firebase/README.md.example +129 -0
  144. package/templates/functions-firebase/build.mjs.example +52 -0
  145. package/templates/functions-firebase/functions-firebase/.env.example.example +45 -0
  146. package/templates/functions-firebase/functions-firebase/README.md.example +123 -0
  147. package/templates/functions-firebase/functions-firebase/build.mjs.example +52 -0
  148. package/templates/functions-firebase/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  149. package/templates/functions-firebase/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  150. package/templates/functions-firebase/functions-firebase/src/auth/index.ts.example +11 -0
  151. package/templates/functions-firebase/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  152. package/templates/functions-firebase/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  153. package/templates/functions-firebase/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  154. package/templates/functions-firebase/functions-firebase/src/billing/index.ts.example +10 -0
  155. package/templates/functions-firebase/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  156. package/templates/functions-firebase/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  157. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +19 -0
  158. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  159. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +14 -0
  160. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +12 -0
  161. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +14 -0
  162. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  163. package/templates/functions-firebase/functions-firebase/src/index.ts.example +45 -0
  164. package/templates/functions-firebase/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  165. package/templates/functions-firebase/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  166. package/templates/functions-firebase/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  167. package/templates/functions-firebase/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  168. package/templates/functions-firebase/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  169. package/templates/functions-firebase/functions-firebase/src/oauth/index.ts.example +17 -0
  170. package/templates/functions-firebase/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  171. package/templates/functions-firebase/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  172. package/templates/functions-firebase/functions-firebase/tsconfig.json.example +21 -0
  173. package/templates/functions-firebase/functions.yaml.example +14 -0
  174. package/templates/functions-firebase/src/auth/getCustomClaims.ts.example +19 -0
  175. package/templates/functions-firebase/src/auth/getUserAuthStatus.ts.example +21 -0
  176. package/templates/functions-firebase/src/auth/index.ts.example +11 -0
  177. package/templates/functions-firebase/src/auth/removeCustomClaims.ts.example +21 -0
  178. package/templates/functions-firebase/src/auth/setCustomClaims.ts.example +21 -0
  179. package/templates/functions-firebase/src/billing/handleStripeWebhook.ts.example +24 -0
  180. package/templates/functions-firebase/src/billing/index.ts.example +10 -0
  181. package/templates/functions-firebase/src/billing/processPaymentSuccess.ts.example +14 -0
  182. package/templates/functions-firebase/src/billing/refreshSubscriptionStatus.ts.example +14 -0
  183. package/templates/functions-firebase/src/crud/createEntity.ts.example +19 -0
  184. package/templates/functions-firebase/src/crud/deleteEntity.ts.example +14 -0
  185. package/templates/functions-firebase/src/crud/getEntity.ts.example +14 -0
  186. package/templates/functions-firebase/src/crud/index.ts.example +12 -0
  187. package/templates/functions-firebase/src/crud/listEntities.ts.example +14 -0
  188. package/templates/functions-firebase/src/crud/updateEntity.ts.example +14 -0
  189. package/templates/functions-firebase/src/index.ts.example +45 -0
  190. package/templates/functions-firebase/src/oauth/checkGitHubAccess.ts.example +14 -0
  191. package/templates/functions-firebase/src/oauth/disconnect.ts.example +14 -0
  192. package/templates/functions-firebase/src/oauth/exchangeToken.ts.example +14 -0
  193. package/templates/functions-firebase/src/oauth/getConnections.ts.example +14 -0
  194. package/templates/functions-firebase/src/oauth/grantGitHubAccess.ts.example +14 -0
  195. package/templates/functions-firebase/src/oauth/index.ts.example +17 -0
  196. package/templates/functions-firebase/src/oauth/refreshToken.ts.example +14 -0
  197. package/templates/functions-firebase/src/oauth/revokeGitHubAccess.ts.example +14 -0
  198. package/templates/functions-firebase/tsconfig.json.example +24 -0
  199. package/templates/functions-vercel/README.md.example +116 -0
  200. package/templates/functions-vercel/build.mjs.example +52 -0
  201. package/templates/functions-vercel/functions-vercel/.env.example.example +37 -0
  202. package/templates/functions-vercel/functions-vercel/README.md.example +116 -0
  203. package/templates/functions-vercel/functions-vercel/build.mjs.example +52 -0
  204. package/templates/functions-vercel/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  205. package/templates/functions-vercel/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  206. package/templates/functions-vercel/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  207. package/templates/functions-vercel/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  208. package/templates/functions-vercel/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  209. package/templates/functions-vercel/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  210. package/templates/functions-vercel/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  211. package/templates/functions-vercel/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  212. package/templates/functions-vercel/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  213. package/templates/functions-vercel/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  214. package/templates/functions-vercel/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  215. package/templates/functions-vercel/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  216. package/templates/functions-vercel/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  217. package/templates/functions-vercel/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  218. package/templates/functions-vercel/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  219. package/templates/functions-vercel/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  220. package/templates/functions-vercel/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  221. package/templates/functions-vercel/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  222. package/templates/functions-vercel/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  223. package/templates/functions-vercel/functions-vercel/tsconfig.json.example +21 -0
  224. package/templates/functions-vercel/functions-vercel/vercel.json.example +14 -0
  225. package/templates/functions-vercel/src/api/auth/getCustomClaims.ts.example +20 -0
  226. package/templates/functions-vercel/src/api/auth/getUserAuthStatus.ts.example +20 -0
  227. package/templates/functions-vercel/src/api/auth/removeCustomClaims.ts.example +20 -0
  228. package/templates/functions-vercel/src/api/auth/setCustomClaims.ts.example +20 -0
  229. package/templates/functions-vercel/src/api/billing/handleStripeWebhook.ts.example +20 -0
  230. package/templates/functions-vercel/src/api/billing/processPaymentSuccess.ts.example +20 -0
  231. package/templates/functions-vercel/src/api/billing/refreshSubscriptionStatus.ts.example +20 -0
  232. package/templates/functions-vercel/src/api/crud/createEntity.ts.example +20 -0
  233. package/templates/functions-vercel/src/api/crud/deleteEntity.ts.example +20 -0
  234. package/templates/functions-vercel/src/api/crud/getEntity.ts.example +20 -0
  235. package/templates/functions-vercel/src/api/crud/listEntities.ts.example +20 -0
  236. package/templates/functions-vercel/src/api/crud/updateEntity.ts.example +20 -0
  237. package/templates/functions-vercel/src/api/oauth/checkGitHubAccess.ts.example +20 -0
  238. package/templates/functions-vercel/src/api/oauth/disconnect.ts.example +20 -0
  239. package/templates/functions-vercel/src/api/oauth/exchangeToken.ts.example +20 -0
  240. package/templates/functions-vercel/src/api/oauth/getConnections.ts.example +20 -0
  241. package/templates/functions-vercel/src/api/oauth/grantGitHubAccess.ts.example +20 -0
  242. package/templates/functions-vercel/src/api/oauth/refreshToken.ts.example +20 -0
  243. package/templates/functions-vercel/src/api/oauth/revokeGitHubAccess.ts.example +20 -0
  244. package/templates/functions-vercel/tsconfig.json.example +24 -0
  245. package/templates/functions-vercel/vercel.json.example +14 -0
  246. package/templates/github/github/workflows/firebase-deploy.yml.example +79 -0
  247. package/templates/github/workflows/firebase-deploy.yml.example +79 -0
  248. package/templates/root-consumer/.env.example +19 -0
  249. package/templates/root-consumer/.gitignore.example +82 -0
  250. package/templates/root-consumer/.prettierrc.cjs.example +12 -0
  251. package/templates/root-consumer/CLAUDE.md.example +73 -0
  252. package/templates/root-consumer/README.md.example +295 -0
  253. package/templates/root-consumer/bunfig.toml.example +68 -0
  254. package/templates/root-consumer/eslint.config.js.example +336 -0
  255. package/templates/root-consumer/firebase.json.example +348 -0
  256. package/templates/root-consumer/guides/AGENT_START_HERE.md.example +98 -0
  257. package/templates/root-consumer/guides/APP_CHECK_SETUP.md.example +111 -0
  258. package/templates/root-consumer/guides/AUTH_SETUP.md.example +92 -0
  259. package/templates/root-consumer/guides/BILLING_SETUP.md.example +120 -0
  260. package/templates/root-consumer/guides/CLI.md.example +293 -0
  261. package/templates/root-consumer/guides/COMPONENTS.md.example +875 -0
  262. package/templates/root-consumer/guides/CONFIG_SETUP.md.example +132 -0
  263. package/templates/root-consumer/guides/EMULATOR_SETUP.md.example +48 -0
  264. package/templates/root-consumer/guides/FEATURES.md.example +286 -0
  265. package/templates/root-consumer/guides/FRAMEWORK_OVERVIEW.md.example +97 -0
  266. package/templates/root-consumer/guides/FUNCTIONS.md.example +177 -0
  267. package/templates/root-consumer/guides/GETTING_STARTED.md.example +451 -0
  268. package/templates/root-consumer/guides/HOW_TO_USE.md.example +296 -0
  269. package/templates/root-consumer/guides/I18N_SETUP.md.example +204 -0
  270. package/templates/root-consumer/guides/IMPORT_PATTERNS.md.example +79 -0
  271. package/templates/root-consumer/guides/INDEX.md.example +50 -0
  272. package/templates/root-consumer/guides/INSTALLATION.md.example +296 -0
  273. package/templates/root-consumer/guides/LAYOUTS.md.example +310 -0
  274. package/templates/root-consumer/guides/PAGES_SETUP.md.example +123 -0
  275. package/templates/root-consumer/guides/STYLING.md.example +273 -0
  276. package/templates/root-consumer/guides/THEMING_SETUP.md.example +119 -0
  277. package/templates/root-consumer/guides/VERSION_CONTROL.md.example +181 -0
  278. package/templates/root-consumer/tsconfig.functions.json.example +15 -0
  279. package/templates/root-consumer/tsconfig.json.example +18 -0
  280. package/templates/root-consumer/turbo.json.example +46 -0
  281. package/templates/root-consumer/vercel.json.example +124 -0
@@ -0,0 +1,336 @@
1
+ /**
2
+ * @fileoverview ESLint Flat Config
3
+ * @description Modern ESLint flat configuration for the DoNotDev framework with TypeScript, React, and accessibility support.
4
+ *
5
+ * @version 0.0.1
6
+ * @since 0.0.1
7
+ * @author AMBROISE PARK Consulting
8
+ */
9
+
10
+ import { dirname } from 'path';
11
+ import { fileURLToPath } from 'url';
12
+
13
+ import tsPlugin from '@typescript-eslint/eslint-plugin';
14
+ import tsParser from '@typescript-eslint/parser';
15
+ import importPlugin from 'eslint-plugin-import';
16
+ import jsxA11y from 'eslint-plugin-jsx-a11y';
17
+ import prettierPlugin from 'eslint-plugin-prettier';
18
+ import react from 'eslint-plugin-react';
19
+ import reactRefresh from 'eslint-plugin-react-refresh';
20
+ import globals from 'globals';
21
+
22
+ import customPlugin from '@donotdev/core/config/eslint';
23
+
24
+ const __filename = fileURLToPath(import.meta.url);
25
+ const __dirname = dirname(__filename);
26
+
27
+ console.log('🔍 ESLint: Starting analysis...');
28
+
29
+ export default [
30
+ {
31
+ ignores: [
32
+ '**/dist/**',
33
+ '**/node_modules/**',
34
+ '**/build/**',
35
+ '**/.next/**',
36
+ '**/coverage/**',
37
+ '**/lib/**',
38
+ '**/es/**',
39
+ '**/cjs/**',
40
+ '**/umd/**',
41
+ '**/types/**',
42
+ '**/*.d.ts',
43
+ '**/*.min.js',
44
+ '**/*.bundle.js',
45
+ '**/*element.tsx',
46
+ '**/*element.ts',
47
+ '**/*-element.tsx',
48
+ '**/*-element.ts',
49
+ ],
50
+ },
51
+ {
52
+ files: ['*.config.js', 'postcss.config.cjs', 'eslint.config.js'],
53
+ languageOptions: {
54
+ ecmaVersion: 2020,
55
+ sourceType: 'module',
56
+ },
57
+ },
58
+ {
59
+ files: ['vite.config.ts'],
60
+ languageOptions: {
61
+ ecmaVersion: 2020,
62
+ sourceType: 'module',
63
+ parser: tsParser,
64
+ parserOptions: {
65
+ project: './tsconfig.node.json',
66
+ tsconfigRootDir: __dirname,
67
+ },
68
+ },
69
+ plugins: {
70
+ '@typescript-eslint': tsPlugin,
71
+ import: importPlugin,
72
+ prettier: prettierPlugin,
73
+ },
74
+ settings: {
75
+ 'import/resolver': {
76
+ typescript: {
77
+ project: './tsconfig.node.json',
78
+ },
79
+ },
80
+ },
81
+ rules: {
82
+ 'prettier/prettier': 'warn',
83
+ },
84
+ },
85
+ {
86
+ files: ['**/*.{ts,tsx,js,jsx}'],
87
+ languageOptions: {
88
+ ecmaVersion: 2020,
89
+ sourceType: 'module',
90
+ parser: tsParser,
91
+ parserOptions: {
92
+ ecmaFeatures: {
93
+ jsx: true,
94
+ },
95
+ project: './tsconfig.json',
96
+ tsconfigRootDir: __dirname,
97
+ },
98
+ globals: {
99
+ ...globals.browser,
100
+ },
101
+ },
102
+ plugins: {
103
+ react,
104
+ 'react-refresh': reactRefresh,
105
+ import: importPlugin,
106
+ 'jsx-a11y': jsxA11y,
107
+ prettier: prettierPlugin,
108
+ '@typescript-eslint': tsPlugin,
109
+ '@donotdev/config': customPlugin,
110
+ },
111
+ settings: {
112
+ react: {
113
+ version: 'detect',
114
+ },
115
+ 'import/resolver': {
116
+ typescript: {
117
+ alwaysTryTypes: true,
118
+ project: './tsconfig.json',
119
+ },
120
+ },
121
+ },
122
+ rules: {
123
+ '@donotdev/config/no-singleton-lifecycle': 'error',
124
+ '@donotdev/config/react-19-ssr-safe': 'error',
125
+ '@donotdev/config/prefer-framework-utils': 'warn',
126
+ 'react/no-unstable-nested-components': 'error',
127
+ 'no-restricted-globals': [
128
+ 'error',
129
+ {
130
+ name: 'window',
131
+ message: 'Use typeof window !== "undefined" check for SSR safety',
132
+ },
133
+ {
134
+ name: 'document',
135
+ message: 'Use typeof document !== "undefined" check for SSR safety',
136
+ },
137
+ {
138
+ name: 'localStorage',
139
+ message: 'Use safeLocalStorage from @donotdev/utils for SSR safety',
140
+ },
141
+ {
142
+ name: 'sessionStorage',
143
+ message: 'Use safeSessionStorage from @donotdev/utils for SSR safety',
144
+ },
145
+ ],
146
+ '@typescript-eslint/no-explicit-any': 'off',
147
+ '@typescript-eslint/explicit-function-return-type': [
148
+ 'warn',
149
+ {
150
+ allowExpressions: true,
151
+ allowTypedFunctionExpressions: true,
152
+ },
153
+ ],
154
+ 'import/order': [
155
+ 'error',
156
+ {
157
+ groups: [
158
+ 'builtin',
159
+ 'external',
160
+ 'internal',
161
+ ['parent', 'sibling', 'index'],
162
+ 'object',
163
+ 'type',
164
+ ],
165
+ 'newlines-between': 'always',
166
+ alphabetize: {
167
+ order: 'asc',
168
+ caseInsensitive: true,
169
+ },
170
+ pathGroups: [
171
+ {
172
+ pattern: '@donotdev/**',
173
+ group: 'internal',
174
+ },
175
+ ],
176
+ pathGroupsExcludedImportTypes: ['builtin'],
177
+ },
178
+ ],
179
+ 'import/no-unresolved': 'off',
180
+ 'import/prefer-default-export': 'off',
181
+ 'import/no-named-as-default': 'off',
182
+ 'import/no-named-as-default-member': 'off',
183
+ 'import/no-named-export': 'off',
184
+ 'no-console': 'off',
185
+ 'no-debugger': 'warn',
186
+ 'react/prop-types': 'off',
187
+ 'react/react-in-jsx-scope': 'off',
188
+ 'react/jsx-uses-react': 'off',
189
+ 'react/jsx-uses-vars': 'warn',
190
+ 'react-refresh/only-export-components': [
191
+ 'warn',
192
+ { allowConstantExport: true },
193
+ ],
194
+ 'prettier/prettier': 'warn',
195
+ 'jsx-a11y/alt-text': 'warn',
196
+ 'jsx-a11y/anchor-is-valid': [
197
+ 'warn',
198
+ {
199
+ aspects: ['invalidHref', 'preferButton'],
200
+ },
201
+ ],
202
+ '@typescript-eslint/no-unused-vars': [
203
+ 'warn',
204
+ { argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
205
+ ],
206
+ '@donotdev/config/require-use-client': [
207
+ 'warn',
208
+ {
209
+ clientPatterns: [
210
+ 'useState',
211
+ 'useEffect',
212
+ 'useCallback',
213
+ 'useMemo',
214
+ 'useRef',
215
+ 'useContext',
216
+ 'useReducer',
217
+ 'useLayoutEffect',
218
+ 'useImperativeHandle',
219
+ 'useDebugValue',
220
+ 'useId',
221
+ 'useSyncExternalStore',
222
+ 'useTransition',
223
+ 'useDeferredValue',
224
+ 'useInsertionEffect',
225
+ 'onClick',
226
+ 'onChange',
227
+ 'onSubmit',
228
+ 'onFocus',
229
+ 'onBlur',
230
+ 'onMouseEnter',
231
+ 'onMouseLeave',
232
+ 'onKeyDown',
233
+ 'onKeyUp',
234
+ 'onKeyPress',
235
+ 'onScroll',
236
+ 'onResize',
237
+ 'onLoad',
238
+ 'onError',
239
+ 'window',
240
+ 'document',
241
+ 'localStorage',
242
+ 'sessionStorage',
243
+ 'navigator',
244
+ 'location',
245
+ 'history',
246
+ 'addEventListener',
247
+ 'removeEventListener',
248
+ 'useAuth',
249
+ 'useTranslation',
250
+ 'useLocalStorage',
251
+ 'useTheme',
252
+ 'useRouter',
253
+ 'usePathname',
254
+ 'useSearchParams',
255
+ 'framer-motion',
256
+ 'lottie',
257
+ 'gsap',
258
+ 'shiki',
259
+ ],
260
+ filePatterns: ['**/*.{ts,tsx}'],
261
+ excludePatterns: [
262
+ '**/*.config.{js,ts}',
263
+ '**/*.d.ts',
264
+ '**/types/**',
265
+ '**/constants/**',
266
+ '**/utils/**',
267
+ '**/helpers/**',
268
+ '**/stores/**',
269
+ '**/api/**',
270
+ '**/functions/**',
271
+ '**/lib/**',
272
+ '**/server/**',
273
+ '**/middleware/**',
274
+ '**/edge/**',
275
+ '**/node_modules/**',
276
+ '**/dist/**',
277
+ '**/build/**',
278
+ ],
279
+ },
280
+ ],
281
+ 'import/no-named-export': 'off',
282
+ },
283
+ },
284
+ {
285
+ files: [
286
+ '**/components/**/*.{ts,tsx}',
287
+ '**/src/**/*.{ts,tsx}',
288
+ ],
289
+ rules: {
290
+ 'import/no-default-export': 'off',
291
+ 'import/prefer-default-export': 'off',
292
+ },
293
+ },
294
+ {
295
+ files: [
296
+ '**/utils/**/*.{ts,tsx}',
297
+ '**/helpers/**/*.{ts,tsx}',
298
+ '**/hooks/**/*.{ts,tsx}',
299
+ '**/stores/**/*.{ts,tsx}',
300
+ ],
301
+ rules: {
302
+ 'import/no-default-export': 'error',
303
+ 'import/prefer-default-export': 'off',
304
+ },
305
+ },
306
+ {
307
+ files: [
308
+ '**/functions/**/*.{ts,tsx}',
309
+ '**/lib/**/*.{ts,tsx}',
310
+ '**/api/**/*.{ts,tsx}',
311
+ ],
312
+ rules: {
313
+ 'import/no-default-export': 'error',
314
+ 'import/prefer-default-export': 'off',
315
+ },
316
+ },
317
+ {
318
+ files: [
319
+ '**/pages/**/*.{ts,tsx}',
320
+ '**/app/**/*.{ts,tsx}',
321
+ '**/*Page.{ts,tsx}',
322
+ '**/*Page.tsx',
323
+ ],
324
+ rules: {
325
+ 'import/no-default-export': 'off',
326
+ 'import/prefer-default-export': 'warn',
327
+ },
328
+ },
329
+ {
330
+ files: ['**/index.{ts,tsx}', '**/index.js'],
331
+ rules: {
332
+ 'import/no-default-export': 'off',
333
+ 'import/prefer-default-export': 'off',
334
+ },
335
+ },
336
+ ];
@@ -0,0 +1,348 @@
1
+ {
2
+ "hosting": {
3
+ "public": "dist",
4
+ "site": "{{YOUR_FIREBASE_PROJECT_ID}}",
5
+ "ignore": [
6
+ "firebase.json",
7
+ "**/.*",
8
+ "**/node_modules/**"
9
+ ],
10
+ "rewrites": [
11
+ {
12
+ "source": "/robots.txt",
13
+ "destination": "/robots.txt"
14
+ },
15
+ {
16
+ "source": "/sitemap.xml",
17
+ "destination": "/sitemap.xml"
18
+ },
19
+ {
20
+ "source": "**",
21
+ "destination": "/index.html"
22
+ }
23
+ ],
24
+ "headers": [
25
+ {
26
+ "source": "**",
27
+ "headers": [
28
+ {
29
+ "key": "Access-Control-Allow-Origin",
30
+ "value": "*"
31
+ },
32
+ {
33
+ "key": "Content-Security-Policy",
34
+ "value": "default-src 'self'; script-src 'self' https://accounts.google.com https://apis.google.com https://www.google.com https://www.gstatic.com; connect-src 'self' http://localhost:* ws://localhost:* https://accounts.google.com https://apis.google.com https://www.googleapis.com https://identitytoolkit.googleapis.com https://securetoken.googleapis.com https://firestore.googleapis.com https://{{YOUR_FIREBASE_PROJECT_ID}}.firebaseio.com https://{{YOUR_REGION}}-{{YOUR_FIREBASE_PROJECT_ID}}.cloudfunctions.net https://*.a.run.app https://{{YOUR_FIREBASE_PROJECT_ID}}.firebasestorage.app https://recaptchaenterprise.googleapis.com https://content-firebaseappcheck.googleapis.com https://firebaseappcheck.googleapis.com https://www.google.com https://github.com https://api.github.com https://api.stripe.com https://checkout.stripe.com; img-src 'self' data: https: http://localhost:* https://avatars.githubusercontent.com https://lh3.googleusercontent.com https://{{YOUR_FIREBASE_PROJECT_ID}}.firebasestorage.app; frame-src 'self' http://localhost:* https://accounts.google.com https://checkout.stripe.com https://js.stripe.com https://www.google.com https://recaptcha.google.com; font-src 'self' data:; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; form-action 'self' http://localhost:* https://accounts.google.com https://github.com https://checkout.stripe.com"
35
+ },
36
+ {
37
+ "key": "X-Content-Type-Options",
38
+ "value": "nosniff"
39
+ },
40
+ {
41
+ "key": "X-Frame-Options",
42
+ "value": "SAMEORIGIN"
43
+ },
44
+ {
45
+ "key": "X-XSS-Protection",
46
+ "value": "1; mode=block"
47
+ }
48
+ ]
49
+ },
50
+ {
51
+ "source": "/assets/vendor-*.js",
52
+ "headers": [
53
+ {
54
+ "key": "Cache-Control",
55
+ "value": "no-cache, no-store, must-revalidate"
56
+ },
57
+ {
58
+ "key": "Content-Type",
59
+ "value": "application/javascript; charset=utf-8"
60
+ },
61
+ {
62
+ "key": "Access-Control-Allow-Origin",
63
+ "value": "*"
64
+ },
65
+ {
66
+ "key": "Pragma",
67
+ "value": "no-cache"
68
+ },
69
+ {
70
+ "key": "Expires",
71
+ "value": "0"
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "source": "/assets/**/*.css",
77
+ "headers": [
78
+ {
79
+ "key": "Cache-Control",
80
+ "value": "public, max-age=31536000, immutable"
81
+ },
82
+ {
83
+ "key": "Content-Type",
84
+ "value": "text/css; charset=utf-8"
85
+ },
86
+ {
87
+ "key": "Access-Control-Allow-Origin",
88
+ "value": "*"
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "source": "/assets/index.*.js",
94
+ "headers": [
95
+ {
96
+ "key": "Cache-Control",
97
+ "value": "no-cache, no-store, must-revalidate"
98
+ },
99
+ {
100
+ "key": "Content-Type",
101
+ "value": "application/javascript; charset=utf-8"
102
+ },
103
+ {
104
+ "key": "Access-Control-Allow-Origin",
105
+ "value": "*"
106
+ },
107
+ {
108
+ "key": "Pragma",
109
+ "value": "no-cache"
110
+ },
111
+ {
112
+ "key": "Expires",
113
+ "value": "0"
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "source": "**/*.json",
119
+ "headers": [
120
+ {
121
+ "key": "Cache-Control",
122
+ "value": "no-cache, no-store, must-revalidate"
123
+ },
124
+ {
125
+ "key": "Content-Type",
126
+ "value": "application/json; charset=utf-8"
127
+ },
128
+ {
129
+ "key": "Access-Control-Allow-Origin",
130
+ "value": "*"
131
+ },
132
+ {
133
+ "key": "Pragma",
134
+ "value": "no-cache"
135
+ },
136
+ {
137
+ "key": "Expires",
138
+ "value": "0"
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ "source": "**/*.css",
144
+ "headers": [
145
+ {
146
+ "key": "Cache-Control",
147
+ "value": "no-cache, no-store, must-revalidate"
148
+ },
149
+ {
150
+ "key": "Content-Type",
151
+ "value": "text/css; charset=utf-8"
152
+ },
153
+ {
154
+ "key": "Access-Control-Allow-Origin",
155
+ "value": "*"
156
+ },
157
+ {
158
+ "key": "Pragma",
159
+ "value": "no-cache"
160
+ },
161
+ {
162
+ "key": "Expires",
163
+ "value": "0"
164
+ }
165
+ ]
166
+ },
167
+ {
168
+ "source": "**/*.js",
169
+ "headers": [
170
+ {
171
+ "key": "Cache-Control",
172
+ "value": "no-cache, no-store, must-revalidate"
173
+ },
174
+ {
175
+ "key": "Content-Type",
176
+ "value": "application/javascript; charset=utf-8"
177
+ },
178
+ {
179
+ "key": "Access-Control-Allow-Origin",
180
+ "value": "*"
181
+ },
182
+ {
183
+ "key": "Pragma",
184
+ "value": "no-cache"
185
+ },
186
+ {
187
+ "key": "Expires",
188
+ "value": "0"
189
+ }
190
+ ]
191
+ },
192
+ {
193
+ "source": "/fonts/**/*.@(woff|woff2|ttf|eot)",
194
+ "headers": [
195
+ {
196
+ "key": "Cache-Control",
197
+ "value": "public, max-age=31536000, immutable"
198
+ },
199
+ {
200
+ "key": "Access-Control-Allow-Origin",
201
+ "value": "*"
202
+ }
203
+ ]
204
+ },
205
+ {
206
+ "source": "/assets/**/*.@(woff|woff2|ttf|eot)",
207
+ "headers": [
208
+ {
209
+ "key": "Cache-Control",
210
+ "value": "public, max-age=31536000, immutable"
211
+ },
212
+ {
213
+ "key": "Access-Control-Allow-Origin",
214
+ "value": "*"
215
+ }
216
+ ]
217
+ },
218
+ {
219
+ "source": "**/*.woff2",
220
+ "headers": [
221
+ {
222
+ "key": "Cache-Control",
223
+ "value": "public, max-age=31536000, immutable"
224
+ },
225
+ {
226
+ "key": "Access-Control-Allow-Origin",
227
+ "value": "*"
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "source": "**/*.@(jpg|jpeg|gif|png|svg|webp|ico)",
233
+ "headers": [
234
+ {
235
+ "key": "Cache-Control",
236
+ "value": "no-cache, no-store, must-revalidate"
237
+ },
238
+ {
239
+ "key": "Access-Control-Allow-Origin",
240
+ "value": "*"
241
+ },
242
+ {
243
+ "key": "Pragma",
244
+ "value": "no-cache"
245
+ },
246
+ {
247
+ "key": "Expires",
248
+ "value": "0"
249
+ }
250
+ ]
251
+ },
252
+ {
253
+ "source": "/manifest.json",
254
+ "headers": [
255
+ {
256
+ "key": "Cache-Control",
257
+ "value": "no-cache, no-store, must-revalidate"
258
+ },
259
+ {
260
+ "key": "Content-Type",
261
+ "value": "application/manifest+json; charset=utf-8"
262
+ },
263
+ {
264
+ "key": "Access-Control-Allow-Origin",
265
+ "value": "*"
266
+ },
267
+ {
268
+ "key": "Pragma",
269
+ "value": "no-cache"
270
+ },
271
+ {
272
+ "key": "Expires",
273
+ "value": "0"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "source": "/service-worker.js",
279
+ "headers": [
280
+ {
281
+ "key": "Cache-Control",
282
+ "value": "no-cache, no-store, must-revalidate"
283
+ },
284
+ {
285
+ "key": "Content-Type",
286
+ "value": "application/javascript; charset=utf-8"
287
+ },
288
+ {
289
+ "key": "Access-Control-Allow-Origin",
290
+ "value": "*"
291
+ },
292
+ {
293
+ "key": "Pragma",
294
+ "value": "no-cache"
295
+ },
296
+ {
297
+ "key": "Expires",
298
+ "value": "0"
299
+ }
300
+ ]
301
+ }
302
+ ]
303
+ }{{#includeFunctions}},
304
+ "functions": [
305
+ {
306
+ "source": "functions",
307
+ "codebase": "default",
308
+ "ignore": [
309
+ "node_modules",
310
+ ".git",
311
+ "firebase-debug.log",
312
+ "firebase-debug.*.log",
313
+ "**/.*",
314
+ "**/*.test.ts",
315
+ "**/__tests__/**"
316
+ ],
317
+ "runtime": "nodejs20"
318
+ }
319
+ ],
320
+ "firestore": {
321
+ "rules": "firestore.rules",
322
+ "indexes": "firestore.indexes.json"
323
+ },
324
+ "storage": {
325
+ "rules": "storage.rules"
326
+ }{{/includeFunctions}},
327
+ "emulators": {
328
+ "auth": {
329
+ "port": 9099
330
+ }{{#includeFunctions}},
331
+ "functions": {
332
+ "port": 5001
333
+ },
334
+ "firestore": {
335
+ "port": 8080
336
+ },
337
+ "storage": {
338
+ "port": 9199
339
+ }{{/includeFunctions}},
340
+ "hosting": {
341
+ "port": 5000
342
+ },
343
+ "ui": {
344
+ "enabled": true,
345
+ "port": 4000
346
+ }
347
+ }
348
+ }