subaya 1.0.0

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 (296) hide show
  1. package/README.md +156 -0
  2. package/dist/commands/api/OrpcGeneratorCommand.d.ts +16 -0
  3. package/dist/commands/api/OrpcGeneratorCommand.d.ts.map +1 -0
  4. package/dist/commands/api/OrpcGeneratorCommand.js +100 -0
  5. package/dist/commands/api/OrpcGeneratorCommand.js.map +1 -0
  6. package/dist/commands/api/generators/ApiMethodGenerator.d.ts +22 -0
  7. package/dist/commands/api/generators/ApiMethodGenerator.d.ts.map +1 -0
  8. package/dist/commands/api/generators/ApiMethodGenerator.js +73 -0
  9. package/dist/commands/api/generators/ApiMethodGenerator.js.map +1 -0
  10. package/dist/commands/api/generators/QueryStringGenerator.d.ts +7 -0
  11. package/dist/commands/api/generators/QueryStringGenerator.d.ts.map +1 -0
  12. package/dist/commands/api/generators/QueryStringGenerator.js +34 -0
  13. package/dist/commands/api/generators/QueryStringGenerator.js.map +1 -0
  14. package/dist/commands/api/generators/SchemaGenerator.d.ts +5 -0
  15. package/dist/commands/api/generators/SchemaGenerator.d.ts.map +1 -0
  16. package/dist/commands/api/generators/SchemaGenerator.js +61 -0
  17. package/dist/commands/api/generators/SchemaGenerator.js.map +1 -0
  18. package/dist/commands/api/services/ApiFileWriter.d.ts +9 -0
  19. package/dist/commands/api/services/ApiFileWriter.d.ts.map +1 -0
  20. package/dist/commands/api/services/ApiFileWriter.js +112 -0
  21. package/dist/commands/api/services/ApiFileWriter.js.map +1 -0
  22. package/dist/commands/api/services/DependencyChecker.d.ts +6 -0
  23. package/dist/commands/api/services/DependencyChecker.d.ts.map +1 -0
  24. package/dist/commands/api/services/DependencyChecker.js +63 -0
  25. package/dist/commands/api/services/DependencyChecker.js.map +1 -0
  26. package/dist/commands/api/utils/CommentGenerator.d.ts +6 -0
  27. package/dist/commands/api/utils/CommentGenerator.d.ts.map +1 -0
  28. package/dist/commands/api/utils/CommentGenerator.js +52 -0
  29. package/dist/commands/api/utils/CommentGenerator.js.map +1 -0
  30. package/dist/commands/api/utils/ParameterExtractor.d.ts +10 -0
  31. package/dist/commands/api/utils/ParameterExtractor.d.ts.map +1 -0
  32. package/dist/commands/api/utils/ParameterExtractor.js +29 -0
  33. package/dist/commands/api/utils/ParameterExtractor.js.map +1 -0
  34. package/dist/commands/api/utils/ResponseTypeExtractor.d.ts +9 -0
  35. package/dist/commands/api/utils/ResponseTypeExtractor.d.ts.map +1 -0
  36. package/dist/commands/api/utils/ResponseTypeExtractor.js +36 -0
  37. package/dist/commands/api/utils/ResponseTypeExtractor.js.map +1 -0
  38. package/dist/commands/api/utils/TypeResolver.d.ts +6 -0
  39. package/dist/commands/api/utils/TypeResolver.d.ts.map +1 -0
  40. package/dist/commands/api/utils/TypeResolver.js +38 -0
  41. package/dist/commands/api/utils/TypeResolver.js.map +1 -0
  42. package/dist/commands/axios/AxiosGeneratorCommand.d.ts +5 -0
  43. package/dist/commands/axios/AxiosGeneratorCommand.d.ts.map +1 -0
  44. package/dist/commands/axios/AxiosGeneratorCommand.js +56 -0
  45. package/dist/commands/axios/AxiosGeneratorCommand.js.map +1 -0
  46. package/dist/commands/env/EnvGeneratorCommand.d.ts +8 -0
  47. package/dist/commands/env/EnvGeneratorCommand.d.ts.map +1 -0
  48. package/dist/commands/env/EnvGeneratorCommand.js +62 -0
  49. package/dist/commands/env/EnvGeneratorCommand.js.map +1 -0
  50. package/dist/commands/icon/IconGenerateCommand.d.ts +6 -0
  51. package/dist/commands/icon/IconGenerateCommand.d.ts.map +1 -0
  52. package/dist/commands/icon/IconGenerateCommand.js +103 -0
  53. package/dist/commands/icon/IconGenerateCommand.js.map +1 -0
  54. package/dist/commands/image/BackgroundRemoveCommand.d.ts +7 -0
  55. package/dist/commands/image/BackgroundRemoveCommand.d.ts.map +1 -0
  56. package/dist/commands/image/BackgroundRemoveCommand.js +89 -0
  57. package/dist/commands/image/BackgroundRemoveCommand.js.map +1 -0
  58. package/dist/commands/image/ImageOptimizeCommand.d.ts +8 -0
  59. package/dist/commands/image/ImageOptimizeCommand.d.ts.map +1 -0
  60. package/dist/commands/image/ImageOptimizeCommand.js +161 -0
  61. package/dist/commands/image/ImageOptimizeCommand.js.map +1 -0
  62. package/dist/commands/image/ImageResizeCommand.d.ts +5 -0
  63. package/dist/commands/image/ImageResizeCommand.d.ts.map +1 -0
  64. package/dist/commands/image/ImageResizeCommand.js +64 -0
  65. package/dist/commands/image/ImageResizeCommand.js.map +1 -0
  66. package/dist/commands/index.d.ts +4 -0
  67. package/dist/commands/index.d.ts.map +1 -0
  68. package/dist/commands/index.js +4 -0
  69. package/dist/commands/index.js.map +1 -0
  70. package/dist/commands/localstorage/LocalstorageGeneratorCommand.d.ts +5 -0
  71. package/dist/commands/localstorage/LocalstorageGeneratorCommand.d.ts.map +1 -0
  72. package/dist/commands/localstorage/LocalstorageGeneratorCommand.js +45 -0
  73. package/dist/commands/localstorage/LocalstorageGeneratorCommand.js.map +1 -0
  74. package/dist/commands/provider/ProviderGeneratorCommand.d.ts +5 -0
  75. package/dist/commands/provider/ProviderGeneratorCommand.d.ts.map +1 -0
  76. package/dist/commands/provider/ProviderGeneratorCommand.js +54 -0
  77. package/dist/commands/provider/ProviderGeneratorCommand.js.map +1 -0
  78. package/dist/commands/route/NextRouteGeneratorCommand.d.ts +12 -0
  79. package/dist/commands/route/NextRouteGeneratorCommand.d.ts.map +1 -0
  80. package/dist/commands/route/NextRouteGeneratorCommand.js +126 -0
  81. package/dist/commands/route/NextRouteGeneratorCommand.js.map +1 -0
  82. package/dist/commands/share/ShareGeneratorCommand.d.ts +5 -0
  83. package/dist/commands/share/ShareGeneratorCommand.d.ts.map +1 -0
  84. package/dist/commands/share/ShareGeneratorCommand.js +44 -0
  85. package/dist/commands/share/ShareGeneratorCommand.js.map +1 -0
  86. package/dist/commands/state/StateGeneratorCommand.d.ts +10 -0
  87. package/dist/commands/state/StateGeneratorCommand.d.ts.map +1 -0
  88. package/dist/commands/state/StateGeneratorCommand.js +99 -0
  89. package/dist/commands/state/StateGeneratorCommand.js.map +1 -0
  90. package/dist/commands/supabase/SupabaseCommand.d.ts +7 -0
  91. package/dist/commands/supabase/SupabaseCommand.d.ts.map +1 -0
  92. package/dist/commands/supabase/SupabaseCommand.js +140 -0
  93. package/dist/commands/supabase/SupabaseCommand.js.map +1 -0
  94. package/dist/config/defaultConfig.d.ts +4 -0
  95. package/dist/config/defaultConfig.d.ts.map +1 -0
  96. package/dist/config/defaultConfig.js +15 -0
  97. package/dist/config/defaultConfig.js.map +1 -0
  98. package/dist/config/initial.d.ts +5 -0
  99. package/dist/config/initial.d.ts.map +1 -0
  100. package/dist/config/initial.js +32 -0
  101. package/dist/config/initial.js.map +1 -0
  102. package/dist/core/BaseCommand.d.ts +10 -0
  103. package/dist/core/BaseCommand.d.ts.map +1 -0
  104. package/dist/core/BaseCommand.js +36 -0
  105. package/dist/core/BaseCommand.js.map +1 -0
  106. package/dist/core/CommandRegistry.d.ts +15 -0
  107. package/dist/core/CommandRegistry.d.ts.map +1 -0
  108. package/dist/core/CommandRegistry.js +58 -0
  109. package/dist/core/CommandRegistry.js.map +1 -0
  110. package/dist/core/ConfigManager.d.ts +11 -0
  111. package/dist/core/ConfigManager.d.ts.map +1 -0
  112. package/dist/core/ConfigManager.js +42 -0
  113. package/dist/core/ConfigManager.js.map +1 -0
  114. package/dist/core/EnsureSystem.d.ts +10 -0
  115. package/dist/core/EnsureSystem.d.ts.map +1 -0
  116. package/dist/core/EnsureSystem.js +118 -0
  117. package/dist/core/EnsureSystem.js.map +1 -0
  118. package/dist/core/FileSystemService.d.ts +20 -0
  119. package/dist/core/FileSystemService.d.ts.map +1 -0
  120. package/dist/core/FileSystemService.js +97 -0
  121. package/dist/core/FileSystemService.js.map +1 -0
  122. package/dist/core/FrameworkDetector.d.ts +7 -0
  123. package/dist/core/FrameworkDetector.d.ts.map +1 -0
  124. package/dist/core/FrameworkDetector.js +33 -0
  125. package/dist/core/FrameworkDetector.js.map +1 -0
  126. package/dist/core/ProviderBuilder.d.ts +25 -0
  127. package/dist/core/ProviderBuilder.d.ts.map +1 -0
  128. package/dist/core/ProviderBuilder.js +227 -0
  129. package/dist/core/ProviderBuilder.js.map +1 -0
  130. package/dist/core/index.d.ts +7 -0
  131. package/dist/core/index.d.ts.map +1 -0
  132. package/dist/core/index.js +7 -0
  133. package/dist/core/index.js.map +1 -0
  134. package/dist/index.d.ts +3 -0
  135. package/dist/index.d.ts.map +1 -0
  136. package/dist/index.js +105 -0
  137. package/dist/index.js.map +1 -0
  138. package/dist/template/api/gen/httpClient.d.ts +2 -0
  139. package/dist/template/api/gen/httpClient.d.ts.map +1 -0
  140. package/dist/template/api/gen/httpClient.js +177 -0
  141. package/dist/template/api/gen/httpClient.js.map +1 -0
  142. package/dist/template/api/gen/queryApiClient.d.ts +2 -0
  143. package/dist/template/api/gen/queryApiClient.d.ts.map +1 -0
  144. package/dist/template/api/gen/queryApiClient.js +27 -0
  145. package/dist/template/api/gen/queryApiClient.js.map +1 -0
  146. package/dist/template/api/gen/queryReactQueryClient.d.ts +13 -0
  147. package/dist/template/api/gen/queryReactQueryClient.d.ts.map +1 -0
  148. package/dist/template/api/gen/queryReactQueryClient.js +159 -0
  149. package/dist/template/api/gen/queryReactQueryClient.js.map +1 -0
  150. package/dist/template/api/type/httpClientType.d.ts +2 -0
  151. package/dist/template/api/type/httpClientType.d.ts.map +1 -0
  152. package/dist/template/api/type/httpClientType.js +2 -0
  153. package/dist/template/api/type/httpClientType.js.map +1 -0
  154. package/dist/template/axios/instance.d.ts +2 -0
  155. package/dist/template/axios/instance.d.ts.map +1 -0
  156. package/dist/template/axios/instance.js +91 -0
  157. package/dist/template/axios/instance.js.map +1 -0
  158. package/dist/template/axios/refresh.d.ts +2 -0
  159. package/dist/template/axios/refresh.d.ts.map +1 -0
  160. package/dist/template/axios/refresh.js +81 -0
  161. package/dist/template/axios/refresh.js.map +1 -0
  162. package/dist/template/imageAsNext.d.ts +2 -0
  163. package/dist/template/imageAsNext.d.ts.map +1 -0
  164. package/dist/template/imageAsNext.js +104 -0
  165. package/dist/template/imageAsNext.js.map +1 -0
  166. package/dist/template/localstorage/LocalStorageManager.d.ts +2 -0
  167. package/dist/template/localstorage/LocalStorageManager.d.ts.map +1 -0
  168. package/dist/template/localstorage/LocalStorageManager.js +64 -0
  169. package/dist/template/localstorage/LocalStorageManager.js.map +1 -0
  170. package/dist/template/localstorage/localStorage.d.ts +2 -0
  171. package/dist/template/localstorage/localStorage.d.ts.map +1 -0
  172. package/dist/template/localstorage/localStorage.js +9 -0
  173. package/dist/template/localstorage/localStorage.js.map +1 -0
  174. package/dist/template/localstorage/localStorageType.d.ts +2 -0
  175. package/dist/template/localstorage/localStorageType.d.ts.map +1 -0
  176. package/dist/template/localstorage/localStorageType.js +6 -0
  177. package/dist/template/localstorage/localStorageType.js.map +1 -0
  178. package/dist/template/localstorage/useSharedStorage.d.ts +2 -0
  179. package/dist/template/localstorage/useSharedStorage.d.ts.map +1 -0
  180. package/dist/template/localstorage/useSharedStorage.js +24 -0
  181. package/dist/template/localstorage/useSharedStorage.js.map +1 -0
  182. package/dist/template/logger/api-logger.d.ts +2 -0
  183. package/dist/template/logger/api-logger.d.ts.map +1 -0
  184. package/dist/template/logger/api-logger.js +44 -0
  185. package/dist/template/logger/api-logger.js.map +1 -0
  186. package/dist/template/logger/styled-console.d.ts +2 -0
  187. package/dist/template/logger/styled-console.d.ts.map +1 -0
  188. package/dist/template/logger/styled-console.js +27 -0
  189. package/dist/template/logger/styled-console.js.map +1 -0
  190. package/dist/template/provider/defaultProvider.tsx +6 -0
  191. package/dist/template/provider/providerTemplates.d.ts +9 -0
  192. package/dist/template/provider/providerTemplates.d.ts.map +1 -0
  193. package/dist/template/provider/providerTemplates.js +40 -0
  194. package/dist/template/provider/providerTemplates.js.map +1 -0
  195. package/dist/template/provider/providerTemplates.ts +47 -0
  196. package/dist/template/share/copyText.d.ts +2 -0
  197. package/dist/template/share/copyText.d.ts.map +1 -0
  198. package/dist/template/share/copyText.js +12 -0
  199. package/dist/template/share/copyText.js.map +1 -0
  200. package/dist/template/share/sharer.d.ts +2 -0
  201. package/dist/template/share/sharer.d.ts.map +1 -0
  202. package/dist/template/share/sharer.js +211 -0
  203. package/dist/template/share/sharer.js.map +1 -0
  204. package/dist/template/share/useSharer.d.ts +2 -0
  205. package/dist/template/share/useSharer.d.ts.map +1 -0
  206. package/dist/template/share/useSharer.js +78 -0
  207. package/dist/template/share/useSharer.js.map +1 -0
  208. package/dist/template/state/zustand-persist.d.ts +2 -0
  209. package/dist/template/state/zustand-persist.d.ts.map +1 -0
  210. package/dist/template/state/zustand-persist.js +53 -0
  211. package/dist/template/state/zustand-persist.js.map +1 -0
  212. package/dist/template/state/zustand-provider-store.d.ts +2 -0
  213. package/dist/template/state/zustand-provider-store.d.ts.map +1 -0
  214. package/dist/template/state/zustand-provider-store.js +19 -0
  215. package/dist/template/state/zustand-provider-store.js.map +1 -0
  216. package/dist/template/state/zustand-provider.d.ts +2 -0
  217. package/dist/template/state/zustand-provider.d.ts.map +1 -0
  218. package/dist/template/state/zustand-provider.js +46 -0
  219. package/dist/template/state/zustand-provider.js.map +1 -0
  220. package/dist/template/state/zustand.d.ts +2 -0
  221. package/dist/template/state/zustand.d.ts.map +1 -0
  222. package/dist/template/state/zustand.js +38 -0
  223. package/dist/template/state/zustand.js.map +1 -0
  224. package/dist/template/supabase/actions/supabaseAdmin.d.ts +2 -0
  225. package/dist/template/supabase/actions/supabaseAdmin.d.ts.map +1 -0
  226. package/dist/template/supabase/actions/supabaseAdmin.js +21 -0
  227. package/dist/template/supabase/actions/supabaseAdmin.js.map +1 -0
  228. package/dist/template/supabase/actions/supabaseCrud.d.ts +3 -0
  229. package/dist/template/supabase/actions/supabaseCrud.d.ts.map +1 -0
  230. package/dist/template/supabase/actions/supabaseCrud.js +72 -0
  231. package/dist/template/supabase/actions/supabaseCrud.js.map +1 -0
  232. package/dist/template/supabase/actions/supabaseCrudWithAdmin.d.ts +2 -0
  233. package/dist/template/supabase/actions/supabaseCrudWithAdmin.d.ts.map +1 -0
  234. package/dist/template/supabase/actions/supabaseCrudWithAdmin.js +57 -0
  235. package/dist/template/supabase/actions/supabaseCrudWithAdmin.js.map +1 -0
  236. package/dist/template/supabase/supabaseAdminLayout.d.ts +2 -0
  237. package/dist/template/supabase/supabaseAdminLayout.d.ts.map +1 -0
  238. package/dist/template/supabase/supabaseAdminLayout.js +7 -0
  239. package/dist/template/supabase/supabaseAdminLayout.js.map +1 -0
  240. package/dist/template/supabase/supabaseAdminLoginLayout.d.ts +2 -0
  241. package/dist/template/supabase/supabaseAdminLoginLayout.d.ts.map +1 -0
  242. package/dist/template/supabase/supabaseAdminLoginLayout.js +121 -0
  243. package/dist/template/supabase/supabaseAdminLoginLayout.js.map +1 -0
  244. package/dist/template/supabase/supabaseProxy.d.ts +2 -0
  245. package/dist/template/supabase/supabaseProxy.d.ts.map +1 -0
  246. package/dist/template/supabase/supabaseProxy.js +42 -0
  247. package/dist/template/supabase/supabaseProxy.js.map +1 -0
  248. package/dist/template/supabase/utilBase.d.ts +3 -0
  249. package/dist/template/supabase/utilBase.d.ts.map +1 -0
  250. package/dist/template/supabase/utilBase.js +29 -0
  251. package/dist/template/supabase/utilBase.js.map +1 -0
  252. package/dist/types/BaseExtensionCommands.d.ts +38 -0
  253. package/dist/types/BaseExtensionCommands.d.ts.map +1 -0
  254. package/dist/types/BaseExtensionCommands.js +20 -0
  255. package/dist/types/BaseExtensionCommands.js.map +1 -0
  256. package/dist/types/config.d.ts +19 -0
  257. package/dist/types/config.d.ts.map +1 -0
  258. package/dist/types/config.js +2 -0
  259. package/dist/types/config.js.map +1 -0
  260. package/dist/types/env.d.ts +7 -0
  261. package/dist/types/env.d.ts.map +1 -0
  262. package/dist/types/env.js +5 -0
  263. package/dist/types/env.js.map +1 -0
  264. package/dist/types/index.d.ts +31 -0
  265. package/dist/types/index.d.ts.map +1 -0
  266. package/dist/types/index.js +2 -0
  267. package/dist/types/index.js.map +1 -0
  268. package/dist/utils/PathSearcher.d.ts +8 -0
  269. package/dist/utils/PathSearcher.d.ts.map +1 -0
  270. package/dist/utils/PathSearcher.js +40 -0
  271. package/dist/utils/PathSearcher.js.map +1 -0
  272. package/dist/utils/askInput.d.ts +10 -0
  273. package/dist/utils/askInput.d.ts.map +1 -0
  274. package/dist/utils/askInput.js +12 -0
  275. package/dist/utils/askInput.js.map +1 -0
  276. package/dist/utils/askSections.d.ts +13 -0
  277. package/dist/utils/askSections.d.ts.map +1 -0
  278. package/dist/utils/askSections.js +14 -0
  279. package/dist/utils/askSections.js.map +1 -0
  280. package/dist/utils/coverHyphenToQuotes.d.ts +2 -0
  281. package/dist/utils/coverHyphenToQuotes.d.ts.map +1 -0
  282. package/dist/utils/coverHyphenToQuotes.js +4 -0
  283. package/dist/utils/coverHyphenToQuotes.js.map +1 -0
  284. package/dist/utils/pathToAlias.d.ts +2 -0
  285. package/dist/utils/pathToAlias.d.ts.map +1 -0
  286. package/dist/utils/pathToAlias.js +4 -0
  287. package/dist/utils/pathToAlias.js.map +1 -0
  288. package/dist/utils/showSubaya.d.ts +2 -0
  289. package/dist/utils/showSubaya.d.ts.map +1 -0
  290. package/dist/utils/showSubaya.js +14 -0
  291. package/dist/utils/showSubaya.js.map +1 -0
  292. package/dist/utils/validateConfig.d.ts +3 -0
  293. package/dist/utils/validateConfig.d.ts.map +1 -0
  294. package/dist/utils/validateConfig.js +45 -0
  295. package/dist/utils/validateConfig.js.map +1 -0
  296. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zustand-provider-store.d.ts","sourceRoot":"","sources":["../../../src/template/state/zustand-provider-store.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,GAAI,gBAAgB,MAAM,WAiBzD,CAAA"}
@@ -0,0 +1,19 @@
1
+ export const zustandProviderStore = (stateClassName) => `import { createStore } from "zustand"
2
+
3
+ export interface ${stateClassName}Props {
4
+ count: number
5
+ }
6
+
7
+ export interface ${stateClassName}State extends ${stateClassName}Props {
8
+ increment: () => void
9
+ decrement: () => void
10
+ }
11
+
12
+ export const create${stateClassName}Store = (initProps: ${stateClassName}Props) => {
13
+ return createStore<${stateClassName}State>((set) => ({
14
+ ...initProps,
15
+ increment: () => set((state) => ({ count: state.count + 1 })),
16
+ decrement: () => set((state) => ({ count: state.count - 1 })),
17
+ }))
18
+ }`;
19
+ //# sourceMappingURL=zustand-provider-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zustand-provider-store.js","sourceRoot":"","sources":["../../../src/template/state/zustand-provider-store.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,cAAsB,EAAE,EAAE,CAAC;;mBAE7C,cAAc;;;;mBAId,cAAc,iBAAiB,cAAc;;;;;qBAK3C,cAAc,uBAAuB,cAAc;uBACjD,cAAc;;;;;EAKnC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const zustandProvider: (stateClassName: string, filename: string) => string;
2
+ //# sourceMappingURL=zustand-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zustand-provider.d.ts","sourceRoot":"","sources":["../../../src/template/state/zustand-provider.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,GAAI,gBAAgB,MAAM,EAAE,UAAU,MAAM,WA4CtE,CAAA"}
@@ -0,0 +1,46 @@
1
+ export const zustandProvider = (stateClassName, filename) => `"use client"
2
+
3
+ import { createContext, useContext, useRef } from "react"
4
+ import { useStore } from "zustand"
5
+ import { useShallow } from "zustand/shallow"
6
+ import { create${stateClassName}Store, type ${stateClassName}State } from "@/store/provider/${filename}"
7
+
8
+ export type ${stateClassName}StoreApi = ReturnType<typeof create${stateClassName}Store>
9
+
10
+ export const ${stateClassName}StoreContext = createContext<${stateClassName}StoreApi | undefined>(undefined)
11
+
12
+ export const ${stateClassName}StoreProvider = ({
13
+ children,
14
+ initialCount,
15
+ }: {
16
+ children: React.ReactNode
17
+ initialCount: number
18
+ }) => {
19
+ const storeRef = useRef<${stateClassName}StoreApi>(null)
20
+ if (!storeRef.current) {
21
+ storeRef.current = create${stateClassName}Store({ count: initialCount })
22
+ }
23
+
24
+ return <${stateClassName}StoreContext.Provider value={storeRef.current}>{children}</${stateClassName}StoreContext.Provider>
25
+ }
26
+
27
+ const useBase${stateClassName}Store = <T,>(selector: (store: ${stateClassName}State) => T): T => {
28
+ const context = useContext(${stateClassName}StoreContext)
29
+ if (!context) throw new Error("use${stateClassName}Store must be used within ${stateClassName}StoreProvider")
30
+ return useStore(context, selector)
31
+ }
32
+
33
+ export const use${stateClassName}Store = <K extends keyof ${stateClassName}State>(...keys: K[]) => {
34
+ return useBase${stateClassName}Store(
35
+ useShallow((state) =>
36
+ keys.reduce(
37
+ (acc, key) => {
38
+ acc[key] = state[key]
39
+ return acc
40
+ },
41
+ {} as Pick<${stateClassName}State, K>,
42
+ ),
43
+ ),
44
+ )
45
+ }`;
46
+ //# sourceMappingURL=zustand-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zustand-provider.js","sourceRoot":"","sources":["../../../src/template/state/zustand-provider.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,cAAsB,EAAE,QAAgB,EAAE,EAAE,CAAC;;;;;iBAK5D,cAAc,eAAe,cAAc,kCAAkC,QAAQ;;cAExF,cAAc,sCAAsC,cAAc;;eAEjE,cAAc,gCAAgC,cAAc;;eAE5D,cAAc;;;;;;;4BAOD,cAAc;;+BAEX,cAAc;;;YAGjC,cAAc,8DAA8D,cAAc;;;eAGvF,cAAc,kCAAkC,cAAc;+BAC9C,cAAc;sCACP,cAAc,6BAA6B,cAAc;;;;kBAI7E,cAAc,4BAA4B,cAAc;kBACxD,cAAc;;;;;;;qBAOX,cAAc;;;;EAIjC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const zustandStore: (stateClassName: string) => string;
2
+ //# sourceMappingURL=zustand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zustand.d.ts","sourceRoot":"","sources":["../../../src/template/state/zustand.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,gBAAgB,MAAM,WAoClD,CAAA"}
@@ -0,0 +1,38 @@
1
+ export const zustandStore = (stateClassName) => `import { create } from "zustand"
2
+ import { useShallow } from "zustand/shallow"
3
+
4
+ export interface ${stateClassName}StoreStateType {
5
+ count: number
6
+ }
7
+
8
+ export interface ${stateClassName}StoreActionsType {
9
+ incCount: () => void
10
+ decCount: () => void
11
+ }
12
+
13
+ export type ${stateClassName}StoreType = ${stateClassName}StoreStateType & ${stateClassName}StoreActionsType
14
+
15
+ const useBase${stateClassName}Store = create<${stateClassName}StoreType>((set) => ({
16
+ count: 1,
17
+
18
+ incCount: () => set((state) => ({ count: state.count + 1 })),
19
+ decCount: () => set((state) => ({ count: state.count - 1 })),
20
+ }))
21
+
22
+ const use${stateClassName}Store = <K extends keyof ${stateClassName}StoreType>(...keys: K[]) => {
23
+ return useBase${stateClassName}Store(
24
+ useShallow((state) =>
25
+ keys.reduce(
26
+ (acc, key) => {
27
+ acc[key] = state[key]
28
+ return acc
29
+ },
30
+ {} as Pick<${stateClassName}StoreType, K>,
31
+ ),
32
+ ),
33
+ )
34
+ }
35
+
36
+ export default use${stateClassName}Store
37
+ `;
38
+ //# sourceMappingURL=zustand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zustand.js","sourceRoot":"","sources":["../../../src/template/state/zustand.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,cAAsB,EAAE,EAAE,CAAC;;;mBAGrC,cAAc;;;;mBAId,cAAc;;;;;cAKnB,cAAc,eAAe,cAAc,oBAAoB,cAAc;;eAE5E,cAAc,kBAAkB,cAAc;;;;;;;WAOlD,cAAc,4BAA4B,cAAc;kBACjD,cAAc;;;;;;;qBAOX,cAAc;;;;;;oBAMf,cAAc;CACjC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const supabaseAdmin = "\"use server\"\n\nimport { createClient } from \"@/lib/supabase/server\"\nimport { redirect } from \"next/navigation\"\nimport { ROUTES } from \"@/generated/path/routes\"\n\nexport async function loginAsAdmin(formData: FormData) {\n const email = formData.get(\"email\") as string\n const password = formData.get(\"password\") as string\n\n const supabase = await createClient()\n const { error } = await supabase.auth.signInWithPassword({ email, password })\n\n if (error) {\n return { success: false, error: error.message }\n }\n\n redirect(ROUTES.ADMIN) \n}\n";
2
+ //# sourceMappingURL=supabaseAdmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseAdmin.d.ts","sourceRoot":"","sources":["../../../../src/template/supabase/actions/supabaseAdmin.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,ikBAmBzB,CAAA"}
@@ -0,0 +1,21 @@
1
+ export const supabaseAdmin = `"use server"
2
+
3
+ import { createClient } from "@/lib/supabase/server"
4
+ import { redirect } from "next/navigation"
5
+ import { ROUTES } from "@/generated/path/routes"
6
+
7
+ export async function loginAsAdmin(formData: FormData) {
8
+ const email = formData.get("email") as string
9
+ const password = formData.get("password") as string
10
+
11
+ const supabase = await createClient()
12
+ const { error } = await supabase.auth.signInWithPassword({ email, password })
13
+
14
+ if (error) {
15
+ return { success: false, error: error.message }
16
+ }
17
+
18
+ redirect(ROUTES.ADMIN)
19
+ }
20
+ `;
21
+ //# sourceMappingURL=supabaseAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseAdmin.js","sourceRoot":"","sources":["../../../../src/template/supabase/actions/supabaseAdmin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;CAmB5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const supabaseCrudService: (tableName: string) => string;
2
+ export declare const supabaseCrudActions: (tableName: string) => string;
3
+ //# sourceMappingURL=supabaseCrud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseCrud.d.ts","sourceRoot":"","sources":["../../../../src/template/supabase/actions/supabaseCrud.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,WAsCpD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,WA8BpD,CAAA"}
@@ -0,0 +1,72 @@
1
+ import { capitalCase } from "change-case";
2
+ export const supabaseCrudService = (tableName) => `import "server-only"
3
+
4
+ import { createClient } from "@/lib/supabase/server"
5
+
6
+ const TABLE_NAME = "${tableName}"
7
+
8
+ export async function insert${capitalCase(tableName)}(title: string) {
9
+ const supabase = await createClient()
10
+ const { data, error } = await supabase
11
+ .from(TABLE_NAME)
12
+ .insert([{ title, is_completed: false }])
13
+ .select()
14
+ .single()
15
+
16
+ if (error) throw new Error(error.message)
17
+ return data
18
+ }
19
+
20
+ export async function modify${capitalCase(tableName)}(id: string, isCompleted: boolean) {
21
+ const supabase = await createClient()
22
+ const { data, error } = await supabase
23
+ .from(TABLE_NAME)
24
+ .update({ is_completed: isCompleted })
25
+ .eq("id", id)
26
+ .select()
27
+ .single()
28
+
29
+ if (error) throw new Error(error.message)
30
+ return data
31
+ }
32
+
33
+ export async function remove${capitalCase(tableName)}(id: string) {
34
+ const supabase = await createClient()
35
+ const { error } = await supabase.from(TABLE_NAME).delete().eq("id", id)
36
+
37
+ if (error) throw new Error(error.message)
38
+ return true
39
+ }
40
+ `;
41
+ export const supabaseCrudActions = (tableName) => `"use server"
42
+
43
+ import { insert${capitalCase(tableName)}, modify${capitalCase(tableName)}, remove${capitalCase(tableName)} } from "@/services/${tableName}.service"
44
+
45
+ export async function add${capitalCase(tableName)}Action(title: string) {
46
+ try {
47
+ const data = await insert${capitalCase(tableName)}(title)
48
+ return { success: true, data }
49
+ } catch (error: any) {
50
+ return { success: false, error: error.message }
51
+ }
52
+ }
53
+
54
+ export async function update${capitalCase(tableName)}Action(id: string, isCompleted: boolean) {
55
+ try {
56
+ const data = await modify${capitalCase(tableName)}(id, isCompleted)
57
+ return { success: true, data }
58
+ } catch (error: any) {
59
+ return { success: false, error: error.message }
60
+ }
61
+ }
62
+
63
+ export async function delete${capitalCase(tableName)}Action(id: string) {
64
+ try {
65
+ await remove${capitalCase(tableName)}(id)
66
+ return { success: true }
67
+ } catch (error: any) {
68
+ return { success: false, error: error.message }
69
+ }
70
+ }
71
+ `;
72
+ //# sourceMappingURL=supabaseCrud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseCrud.js","sourceRoot":"","sources":["../../../../src/template/supabase/actions/supabaseCrud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC;;;;sBAIpC,SAAS;;8BAED,WAAW,CAAC,SAAS,CAAC;;;;;;;;;;;;8BAYtB,WAAW,CAAC,SAAS,CAAC;;;;;;;;;;;;;8BAatB,WAAW,CAAC,SAAS,CAAC;;;;;;;CAOnD,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC;;iBAEzC,WAAW,CAAC,SAAS,CAAC,WAAW,WAAW,CAAC,SAAS,CAAC,WAAW,WAAW,CAAC,SAAS,CAAC,uBAAuB,SAAS;;2BAE9G,WAAW,CAAC,SAAS,CAAC;;+BAElB,WAAW,CAAC,SAAS,CAAC;;;;;;;8BAOvB,WAAW,CAAC,SAAS,CAAC;;+BAErB,WAAW,CAAC,SAAS,CAAC;;;;;;;8BAOvB,WAAW,CAAC,SAAS,CAAC;;kBAElC,WAAW,CAAC,SAAS,CAAC;;;;;;CAMvC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const supabaseCrudWithAdmin = "\"use server\"\n\nimport { ROUTES } from \"@/generated/path/routes\"\nimport { createClient } from \"@/utils/supabase/server\"\nimport { revalidatePath } from \"next/cache\"\n\nimport { redirect } from \"next/navigation\"\n\nconst TABLE_NAME = \"todos\"\n\nexport async function loginAsAdmin(formData: FormData) {\n const email = formData.get(\"email\") as string\n const password = formData.get(\"password\") as string\n\n const supabase = await createClient()\n\n const { error } = await supabase.auth.signInWithPassword({ email, password })\n\n if (error) return { error: error.message }\n\n redirect(\"/admin\")\n}\n\nexport async function addTodo(title: string) {\n const supabase = await createClient()\n\n const { data, error } = await supabase\n .from(TABLE_NAME)\n .insert([{ title: title, is_completed: false }])\n .select()\n\n if (error) throw new Error(error.message)\n\n revalidatePath(ROUTES.HOME)\n return data\n}\n\nexport async function updateTodo(id: string, isCompleted: boolean) {\n const supabase = await createClient()\n\n const { data, error } = await supabase.from(TABLE_NAME).update({ is_completed: isCompleted }).eq(\"id\", id).select()\n\n if (error) throw new Error(error.message)\n revalidatePath(ROUTES.HOME)\n return data\n}\n\nexport async function deleteTodo(id: string) {\n const supabase = await createClient()\n\n const { error } = await supabase.from(TABLE_NAME).delete().eq(\"id\", id)\n\n if (error) throw new Error(error.message)\n revalidatePath(ROUTES.HOME)\n}\n";
2
+ //# sourceMappingURL=supabaseCrudWithAdmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseCrudWithAdmin.d.ts","sourceRoot":"","sources":["../../../../src/template/supabase/actions/supabaseCrudWithAdmin.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,mgDAuDjC,CAAA"}
@@ -0,0 +1,57 @@
1
+ export const supabaseCrudWithAdmin = `"use server"
2
+
3
+ import { ROUTES } from "@/generated/path/routes"
4
+ import { createClient } from "@/utils/supabase/server"
5
+ import { revalidatePath } from "next/cache"
6
+
7
+ import { redirect } from "next/navigation"
8
+
9
+ const TABLE_NAME = "todos"
10
+
11
+ export async function loginAsAdmin(formData: FormData) {
12
+ const email = formData.get("email") as string
13
+ const password = formData.get("password") as string
14
+
15
+ const supabase = await createClient()
16
+
17
+ const { error } = await supabase.auth.signInWithPassword({ email, password })
18
+
19
+ if (error) return { error: error.message }
20
+
21
+ redirect("/admin")
22
+ }
23
+
24
+ export async function addTodo(title: string) {
25
+ const supabase = await createClient()
26
+
27
+ const { data, error } = await supabase
28
+ .from(TABLE_NAME)
29
+ .insert([{ title: title, is_completed: false }])
30
+ .select()
31
+
32
+ if (error) throw new Error(error.message)
33
+
34
+ revalidatePath(ROUTES.HOME)
35
+ return data
36
+ }
37
+
38
+ export async function updateTodo(id: string, isCompleted: boolean) {
39
+ const supabase = await createClient()
40
+
41
+ const { data, error } = await supabase.from(TABLE_NAME).update({ is_completed: isCompleted }).eq("id", id).select()
42
+
43
+ if (error) throw new Error(error.message)
44
+ revalidatePath(ROUTES.HOME)
45
+ return data
46
+ }
47
+
48
+ export async function deleteTodo(id: string) {
49
+ const supabase = await createClient()
50
+
51
+ const { error } = await supabase.from(TABLE_NAME).delete().eq("id", id)
52
+
53
+ if (error) throw new Error(error.message)
54
+ revalidatePath(ROUTES.HOME)
55
+ }
56
+ `;
57
+ //# sourceMappingURL=supabaseCrudWithAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseCrudWithAdmin.js","sourceRoot":"","sources":["../../../../src/template/supabase/actions/supabaseCrudWithAdmin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const supabaseAdminLayout = "\"use client\"\n\nexport default function AdminPage() {\n return <div>AdminPage</div>\n}\n";
2
+ //# sourceMappingURL=supabaseAdminLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseAdminLayout.d.ts","sourceRoot":"","sources":["../../../src/template/supabase/supabaseAdminLayout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,gGAK/B,CAAA"}
@@ -0,0 +1,7 @@
1
+ export const supabaseAdminLayout = `"use client"
2
+
3
+ export default function AdminPage() {
4
+ return <div>AdminPage</div>
5
+ }
6
+ `;
7
+ //# sourceMappingURL=supabaseAdminLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseAdminLayout.js","sourceRoot":"","sources":["../../../src/template/supabase/supabaseAdminLayout.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;CAKlC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const supabaseAdminLoginLayout = "\"use client\"\n\nimport { loginAsAdmin } from \"@/actions/auth.action\"\nimport { useState, useTransition } from \"react\"\n\nexport default function AdminLoginPage() {\n const [email, setEmail] = useState(\"\")\n const [password, setPassword] = useState(\"\")\n const [isPending, startTransition] = useTransition()\n const [error, setError] = useState<string | null>(null)\n\n const handleLogin = async (e: React.SubmitEvent<HTMLFormElement>) => {\n e.preventDefault()\n setError(null)\n\n const formData = new FormData()\n formData.set(\"email\", email)\n formData.set(\"password\", password)\n\n startTransition(async () => {\n try {\n const result = await loginAsAdmin(formData)\n if (result?.error) {\n setError(result.error)\n }\n } catch (err: any) {\n setError(err?.message || \"Failed to login\")\n }\n })\n }\n\n return (\n <div className=\"flex justify-center items-center min-h-screen bg-linear-to-br from-black to-zinc-900\">\n <div className=\"rounded-2xl shadow-xl bg-zinc-900 p-8 w-full max-w-md border border-gray-700\">\n <h1 className=\"text-3xl font-bold mb-1 text-center text-white\">Login</h1>\n <p className=\"mb-6 text-zinc-500 text-center\">Login as admin</p>\n <form onSubmit={handleLogin} className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-1.5\">\n <label htmlFor=\"admin-email\" className=\"text-sm font-medium text-zinc-700\">\n Email\n </label>\n <input\n id=\"admin-email\"\n type=\"email\"\n value={email}\n autoComplete=\"off\"\n autoFocus\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"Enter Email\"\n required\n disabled={isPending}\n className=\"border border-gray-700 rounded-lg px-4 py-2 transition focus:outline-none focus:ring-1 ring-gray-500 bg-zinc-900 placeholder-white text-white autofill:bg-zinc-900 autofill:text-white\"\n style={{\n WebkitBoxShadow: \"0 0 0 1000px #18181b inset\",\n boxShadow: \"0 0 0 1000px #18181b inset\",\n WebkitTextFillColor: \"#fff\",\n }}\n />\n </div>\n <div className=\"flex flex-col gap-1.5\">\n <label htmlFor=\"admin-password\" className=\"text-sm font-medium text-zinc-700\">\n Password\n </label>\n <input\n id=\"admin-password\"\n type=\"password\"\n value={password}\n autoComplete=\"off\"\n onChange={(e) => setPassword(e.target.value)}\n placeholder=\"Enter Password\"\n required\n disabled={isPending}\n className=\"border border-gray-700 rounded-lg px-4 py-2 transition focus:outline-none focus:ring-1 ring-gray-500 bg-zinc-900 placeholder-white text-white\"\n style={{\n WebkitBoxShadow: \"0 0 0 1000px #18181b inset\",\n boxShadow: \"0 0 0 1000px #18181b inset\",\n WebkitTextFillColor: \"#fff\",\n }}\n />\n </div>\n {error && (\n <div className=\"text-red-500 text-sm mt-1 rounded bg-red-50 p-2 border border-red-100 text-center animate-pulse\">\n {error}\n </div>\n )}\n <button\n type=\"submit\"\n disabled={isPending}\n className=\"mt-2 rounded-lg bg-blue-600 hover:bg-blue-700 transition text-white font-semibold py-2 shadow text-lg disabled:opacity-60 disabled:cursor-not-allowed\"\n >\n {isPending ? (\n <span className=\"flex justify-center items-center gap-2\">\n <svg className=\"animate-spin h-5 w-5 text-white\" viewBox=\"0 0 24 24\">\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n fill=\"none\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8v4l3-3-3-3v4a8 8 0 000 16v-4l-3 3 3 3v-4a8 8 0 01-8-8z\"\n />\n </svg>\n Logging in...\n </span>\n ) : (\n \"Submit\"\n )}\n </button>\n </form>\n </div>\n </div>\n )\n}\n";
2
+ //# sourceMappingURL=supabaseAdminLoginLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseAdminLoginLayout.d.ts","sourceRoot":"","sources":["../../../src/template/supabase/supabaseAdminLoginLayout.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,inJAuHpC,CAAA"}
@@ -0,0 +1,121 @@
1
+ export const supabaseAdminLoginLayout = `"use client"
2
+
3
+ import { loginAsAdmin } from "@/actions/auth.action"
4
+ import { useState, useTransition } from "react"
5
+
6
+ export default function AdminLoginPage() {
7
+ const [email, setEmail] = useState("")
8
+ const [password, setPassword] = useState("")
9
+ const [isPending, startTransition] = useTransition()
10
+ const [error, setError] = useState<string | null>(null)
11
+
12
+ const handleLogin = async (e: React.SubmitEvent<HTMLFormElement>) => {
13
+ e.preventDefault()
14
+ setError(null)
15
+
16
+ const formData = new FormData()
17
+ formData.set("email", email)
18
+ formData.set("password", password)
19
+
20
+ startTransition(async () => {
21
+ try {
22
+ const result = await loginAsAdmin(formData)
23
+ if (result?.error) {
24
+ setError(result.error)
25
+ }
26
+ } catch (err: any) {
27
+ setError(err?.message || "Failed to login")
28
+ }
29
+ })
30
+ }
31
+
32
+ return (
33
+ <div className="flex justify-center items-center min-h-screen bg-linear-to-br from-black to-zinc-900">
34
+ <div className="rounded-2xl shadow-xl bg-zinc-900 p-8 w-full max-w-md border border-gray-700">
35
+ <h1 className="text-3xl font-bold mb-1 text-center text-white">Login</h1>
36
+ <p className="mb-6 text-zinc-500 text-center">Login as admin</p>
37
+ <form onSubmit={handleLogin} className="flex flex-col gap-4">
38
+ <div className="flex flex-col gap-1.5">
39
+ <label htmlFor="admin-email" className="text-sm font-medium text-zinc-700">
40
+ Email
41
+ </label>
42
+ <input
43
+ id="admin-email"
44
+ type="email"
45
+ value={email}
46
+ autoComplete="off"
47
+ autoFocus
48
+ onChange={(e) => setEmail(e.target.value)}
49
+ placeholder="Enter Email"
50
+ required
51
+ disabled={isPending}
52
+ className="border border-gray-700 rounded-lg px-4 py-2 transition focus:outline-none focus:ring-1 ring-gray-500 bg-zinc-900 placeholder-white text-white autofill:bg-zinc-900 autofill:text-white"
53
+ style={{
54
+ WebkitBoxShadow: "0 0 0 1000px #18181b inset",
55
+ boxShadow: "0 0 0 1000px #18181b inset",
56
+ WebkitTextFillColor: "#fff",
57
+ }}
58
+ />
59
+ </div>
60
+ <div className="flex flex-col gap-1.5">
61
+ <label htmlFor="admin-password" className="text-sm font-medium text-zinc-700">
62
+ Password
63
+ </label>
64
+ <input
65
+ id="admin-password"
66
+ type="password"
67
+ value={password}
68
+ autoComplete="off"
69
+ onChange={(e) => setPassword(e.target.value)}
70
+ placeholder="Enter Password"
71
+ required
72
+ disabled={isPending}
73
+ className="border border-gray-700 rounded-lg px-4 py-2 transition focus:outline-none focus:ring-1 ring-gray-500 bg-zinc-900 placeholder-white text-white"
74
+ style={{
75
+ WebkitBoxShadow: "0 0 0 1000px #18181b inset",
76
+ boxShadow: "0 0 0 1000px #18181b inset",
77
+ WebkitTextFillColor: "#fff",
78
+ }}
79
+ />
80
+ </div>
81
+ {error && (
82
+ <div className="text-red-500 text-sm mt-1 rounded bg-red-50 p-2 border border-red-100 text-center animate-pulse">
83
+ {error}
84
+ </div>
85
+ )}
86
+ <button
87
+ type="submit"
88
+ disabled={isPending}
89
+ className="mt-2 rounded-lg bg-blue-600 hover:bg-blue-700 transition text-white font-semibold py-2 shadow text-lg disabled:opacity-60 disabled:cursor-not-allowed"
90
+ >
91
+ {isPending ? (
92
+ <span className="flex justify-center items-center gap-2">
93
+ <svg className="animate-spin h-5 w-5 text-white" viewBox="0 0 24 24">
94
+ <circle
95
+ className="opacity-25"
96
+ cx="12"
97
+ cy="12"
98
+ r="10"
99
+ stroke="currentColor"
100
+ strokeWidth="4"
101
+ fill="none"
102
+ />
103
+ <path
104
+ className="opacity-75"
105
+ fill="currentColor"
106
+ d="M4 12a8 8 0 018-8v4l3-3-3-3v4a8 8 0 000 16v-4l-3 3 3 3v-4a8 8 0 01-8-8z"
107
+ />
108
+ </svg>
109
+ Logging in...
110
+ </span>
111
+ ) : (
112
+ "Submit"
113
+ )}
114
+ </button>
115
+ </form>
116
+ </div>
117
+ </div>
118
+ )
119
+ }
120
+ `;
121
+ //# sourceMappingURL=supabaseAdminLoginLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseAdminLoginLayout.js","sourceRoot":"","sources":["../../../src/template/supabase/supabaseAdminLoginLayout.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuHvC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const supabaseProxy = "import { ENV } from \"@/configs/env\"\nimport { createServerClient } from \"@supabase/ssr\"\nimport { NextResponse, type NextRequest } from \"next/server\"\n\nexport async function proxy(request: NextRequest) {\n let supabaseResponse = NextResponse.next({ request })\n\n if (request.nextUrl.pathname.startsWith(\"/admin\")) {\n if (request.nextUrl.pathname.startsWith(\"/admin/login\")) {\n return supabaseResponse\n }\n\n const supabase = createServerClient(ENV.SUPABASE_URL, ENV.SUPABASE_ANON_KEY, {\n cookies: {\n getAll() {\n return request.cookies.getAll()\n },\n setAll(cookiesToSet) {\n cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value))\n supabaseResponse = NextResponse.next({ request })\n cookiesToSet.forEach(({ name, value, options }) => supabaseResponse.cookies.set(name, value, options))\n },\n },\n })\n\n const {\n data: { user },\n } = await supabase.auth.getUser()\n\n if (!user || user.id !== ENV.SUPABASE_ADMIN_UID) {\n return NextResponse.redirect(new URL(\"/\", request.url))\n }\n }\n\n return supabaseResponse\n}\n\nexport const config = {\n matcher: [\"/((?!_next/static|_next/image|favicon.ico|.*\\\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)\"],\n}\n";
2
+ //# sourceMappingURL=supabaseProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseProxy.d.ts","sourceRoot":"","sources":["../../../src/template/supabase/supabaseProxy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,syCAwCzB,CAAA"}
@@ -0,0 +1,42 @@
1
+ export const supabaseProxy = `import { ENV } from "@/configs/env"
2
+ import { createServerClient } from "@supabase/ssr"
3
+ import { NextResponse, type NextRequest } from "next/server"
4
+
5
+ export async function proxy(request: NextRequest) {
6
+ let supabaseResponse = NextResponse.next({ request })
7
+
8
+ if (request.nextUrl.pathname.startsWith("/admin")) {
9
+ if (request.nextUrl.pathname.startsWith("/admin/login")) {
10
+ return supabaseResponse
11
+ }
12
+
13
+ const supabase = createServerClient(ENV.SUPABASE_URL, ENV.SUPABASE_ANON_KEY, {
14
+ cookies: {
15
+ getAll() {
16
+ return request.cookies.getAll()
17
+ },
18
+ setAll(cookiesToSet) {
19
+ cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value))
20
+ supabaseResponse = NextResponse.next({ request })
21
+ cookiesToSet.forEach(({ name, value, options }) => supabaseResponse.cookies.set(name, value, options))
22
+ },
23
+ },
24
+ })
25
+
26
+ const {
27
+ data: { user },
28
+ } = await supabase.auth.getUser()
29
+
30
+ if (!user || user.id !== ENV.SUPABASE_ADMIN_UID) {
31
+ return NextResponse.redirect(new URL("/", request.url))
32
+ }
33
+ }
34
+
35
+ return supabaseResponse
36
+ }
37
+
38
+ export const config = {
39
+ matcher: ["/((?!_next/static|_next/image|favicon.ico|.*\\\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)"],
40
+ }
41
+ `;
42
+ //# sourceMappingURL=supabaseProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabaseProxy.js","sourceRoot":"","sources":["../../../src/template/supabase/supabaseProxy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwC5B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const supabaseUtilClient = "import { ENV } from \"@/configs/env\"\nimport { createClient } from \"@supabase/supabase-js\"\n\nconst supabaseUrl = ENV.SUPABASE_URL\nconst supabaseKey = ENV.SUPABASE_ANON_KEY\n\nexport const supabase = createClient(supabaseUrl, supabaseKey)\n";
2
+ export declare const supabaseUtilServer = "import { ENV } from \"@/configs/env\"\nimport { createServerClient } from \"@supabase/ssr\"\nimport { cookies } from \"next/headers\"\n\nexport async function createClient() {\n const cookieStore = await cookies()\n\n return createServerClient(ENV.SUPABASE_URL, ENV.SUPABASE_ANON_KEY, {\n cookies: {\n getAll() {\n return cookieStore.getAll()\n },\n setAll(cookiesToSet) {\n try {\n cookiesToSet.forEach(({ name, value, options }) => cookieStore.set(name, value, options))\n } catch {}\n },\n },\n })\n}";
3
+ //# sourceMappingURL=utilBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilBase.d.ts","sourceRoot":"","sources":["../../../src/template/supabase/utilBase.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,yPAO9B,CAAA;AAED,eAAO,MAAM,kBAAkB,ujBAmB7B,CAAA"}
@@ -0,0 +1,29 @@
1
+ export const supabaseUtilClient = `import { ENV } from "@/configs/env"
2
+ import { createClient } from "@supabase/supabase-js"
3
+
4
+ const supabaseUrl = ENV.SUPABASE_URL
5
+ const supabaseKey = ENV.SUPABASE_ANON_KEY
6
+
7
+ export const supabase = createClient(supabaseUrl, supabaseKey)
8
+ `;
9
+ export const supabaseUtilServer = `import { ENV } from "@/configs/env"
10
+ import { createServerClient } from "@supabase/ssr"
11
+ import { cookies } from "next/headers"
12
+
13
+ export async function createClient() {
14
+ const cookieStore = await cookies()
15
+
16
+ return createServerClient(ENV.SUPABASE_URL, ENV.SUPABASE_ANON_KEY, {
17
+ cookies: {
18
+ getAll() {
19
+ return cookieStore.getAll()
20
+ },
21
+ setAll(cookiesToSet) {
22
+ try {
23
+ cookiesToSet.forEach(({ name, value, options }) => cookieStore.set(name, value, options))
24
+ } catch {}
25
+ },
26
+ },
27
+ })
28
+ }`;
29
+ //# sourceMappingURL=utilBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilBase.js","sourceRoot":"","sources":["../../../src/template/supabase/utilBase.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;CAOjC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;EAmBhC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { BaseCommand } from "../core/BaseCommand.js";
2
+ import type { DefaultConfigType } from "./config.js";
3
+ export declare abstract class BaseApiCommand extends BaseCommand {
4
+ protected abstract validateApiConfig(config: DefaultConfigType): {
5
+ hasBaseUrl: boolean;
6
+ };
7
+ protected abstract createApiClass(schemas: Record<string, any>): Promise<string>;
8
+ protected abstract generateApiClass(content: string): Promise<any>;
9
+ protected abstract generateAllApiAndQueries(paths: Record<string, any>, content: string): Promise<string>;
10
+ protected abstract generateHttpClient(): Promise<void>;
11
+ }
12
+ export declare abstract class BaseStateCommand extends BaseCommand {
13
+ protected abstract generateStateFile(generateType: "general" | "provider" | "persist", stateClassName: string): Promise<void>;
14
+ }
15
+ export declare abstract class BaseSupabaseCommand extends BaseCommand {
16
+ protected abstract generateAdmin(configsDir: string): Promise<void>;
17
+ protected abstract generateCrud(crudName: string): Promise<void>;
18
+ }
19
+ export declare abstract class BaseLocalstorageCommand extends BaseCommand {
20
+ }
21
+ export declare abstract class BaseAxiosCommand extends BaseCommand {
22
+ }
23
+ export declare abstract class BaseRouteCommand extends BaseCommand {
24
+ protected abstract generateRouteFile(): Promise<void>;
25
+ protected abstract validateRouteConfig(): {
26
+ isNextFramework: boolean;
27
+ };
28
+ }
29
+ export declare abstract class BaseEnvCommand extends BaseCommand {
30
+ protected abstract validateEnvConfig(): {
31
+ hasEnvTxt: boolean;
32
+ };
33
+ }
34
+ export declare abstract class BaseShareCommand extends BaseCommand {
35
+ }
36
+ export declare abstract class BaseProviderCommand extends BaseCommand {
37
+ }
38
+ //# sourceMappingURL=BaseExtensionCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseExtensionCommands.d.ts","sourceRoot":"","sources":["../../src/types/BaseExtensionCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,8BAAsB,cAAe,SAAQ,WAAW;IACtD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG;QAAE,UAAU,EAAE,OAAO,CAAA;KAAE;IACxF,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAChF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAClE,SAAS,CAAC,QAAQ,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACzG,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CACvD;AAED,8BAAsB,gBAAiB,SAAQ,WAAW;IACxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAClC,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,EAChD,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;CACjB;AAED,8BAAsB,mBAAoB,SAAQ,WAAW;IAC3D,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CACjE;AAED,8BAAsB,uBAAwB,SAAQ,WAAW;CAAG;AAEpE,8BAAsB,gBAAiB,SAAQ,WAAW;CAAG;AAE7D,8BAAsB,gBAAiB,SAAQ,WAAW;IACxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI;QAAE,eAAe,EAAE,OAAO,CAAA;KAAE;CACvE;AAED,8BAAsB,cAAe,SAAQ,WAAW;IACtD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE;CAC/D;AAED,8BAAsB,gBAAiB,SAAQ,WAAW;CAAG;AAE7D,8BAAsB,mBAAoB,SAAQ,WAAW;CAAG"}