target-supabase-sdk 0.2.0 → 0.2.1

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 (484) hide show
  1. package/README.md +127 -10
  2. package/dist/browser.d.ts +44 -36
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +6 -45
  5. package/dist/browser.js.map +1 -1
  6. package/dist/chunks/create-logger-DyH3mZ8p.js +1028 -0
  7. package/dist/chunks/create-logger-DyH3mZ8p.js.map +1 -0
  8. package/dist/chunks/enable-log-persist-C_bSw6Kx.js +1362 -0
  9. package/dist/chunks/enable-log-persist-C_bSw6Kx.js.map +1 -0
  10. package/dist/chunks/word.interface-DLgRobKV.js +1973 -0
  11. package/dist/chunks/word.interface-DLgRobKV.js.map +1 -0
  12. package/dist/command/command.api.d.ts +1 -1
  13. package/dist/command/command.api.d.ts.map +1 -1
  14. package/dist/command/command.interface.d.ts +1 -1
  15. package/dist/command/command.interface.d.ts.map +1 -1
  16. package/dist/core.api.d.ts +10 -6
  17. package/dist/core.api.d.ts.map +1 -1
  18. package/dist/core.interface.d.ts +3 -2
  19. package/dist/core.interface.d.ts.map +1 -1
  20. package/dist/core.utils.d.ts +1 -1
  21. package/dist/core.utils.d.ts.map +1 -1
  22. package/dist/idea/idea.interface.d.ts +1 -1
  23. package/dist/idea/idea.interface.d.ts.map +1 -1
  24. package/dist/link/link.api.d.ts +1 -1
  25. package/dist/link/link.api.d.ts.map +1 -1
  26. package/dist/link/link.interface.d.ts +2 -2
  27. package/dist/link/link.interface.d.ts.map +1 -1
  28. package/dist/list/list.api.d.ts +3 -1
  29. package/dist/list/list.api.d.ts.map +1 -1
  30. package/dist/list/list.interface.d.ts +2 -2
  31. package/dist/list/list.interface.d.ts.map +1 -1
  32. package/dist/node/env/env-parsers.d.ts +19 -0
  33. package/dist/node/env/env-parsers.d.ts.map +1 -0
  34. package/dist/node/env/index.d.ts +11 -0
  35. package/dist/node/env/index.d.ts.map +1 -0
  36. package/dist/node/env/init-supabase-from-env.d.ts +17 -0
  37. package/dist/node/env/init-supabase-from-env.d.ts.map +1 -0
  38. package/dist/node/env/load-env.d.ts +20 -0
  39. package/dist/node/env/load-env.d.ts.map +1 -0
  40. package/dist/node/env/project-root.d.ts +11 -0
  41. package/dist/node/env/project-root.d.ts.map +1 -0
  42. package/dist/node/env/public-base-url.d.ts +10 -0
  43. package/dist/node/env/public-base-url.d.ts.map +1 -0
  44. package/dist/node/env/require-env.d.ts +3 -0
  45. package/dist/node/env/require-env.d.ts.map +1 -0
  46. package/dist/node/fs/json-state-store.d.ts +19 -0
  47. package/dist/node/fs/json-state-store.d.ts.map +1 -0
  48. package/dist/node/fs/read-source-file.d.ts +19 -0
  49. package/dist/node/fs/read-source-file.d.ts.map +1 -0
  50. package/dist/node/node-liveness.d.ts +30 -0
  51. package/dist/node/node-liveness.d.ts.map +1 -0
  52. package/dist/node/node-runtime.base.d.ts +21 -3
  53. package/dist/node/node-runtime.base.d.ts.map +1 -1
  54. package/dist/node/node.api.d.ts +1 -1
  55. package/dist/node/node.api.d.ts.map +1 -1
  56. package/dist/node/node.interface.d.ts +1 -6
  57. package/dist/node/node.interface.d.ts.map +1 -1
  58. package/dist/node/preload/run-service-preload.d.ts +14 -0
  59. package/dist/node/preload/run-service-preload.d.ts.map +1 -0
  60. package/dist/node/preload/service-preload.interface.d.ts +15 -0
  61. package/dist/node/preload/service-preload.interface.d.ts.map +1 -0
  62. package/dist/node/process/index.d.ts +5 -0
  63. package/dist/node/process/index.d.ts.map +1 -0
  64. package/dist/node/process/managed-child-processes.d.ts +37 -0
  65. package/dist/node/process/managed-child-processes.d.ts.map +1 -0
  66. package/dist/node/process/process-spawn.d.ts +27 -0
  67. package/dist/node/process/process-spawn.d.ts.map +1 -0
  68. package/dist/node/readiness/index.d.ts +9 -0
  69. package/dist/node/readiness/index.d.ts.map +1 -0
  70. package/dist/node/readiness/poll-until.d.ts +11 -0
  71. package/dist/node/readiness/poll-until.d.ts.map +1 -0
  72. package/dist/node/readiness/readiness-checks.d.ts +22 -0
  73. package/dist/node/readiness/readiness-checks.d.ts.map +1 -0
  74. package/dist/node/readiness/readiness.types.d.ts +12 -0
  75. package/dist/node/readiness/readiness.types.d.ts.map +1 -0
  76. package/dist/node/readiness/run-readiness-checks.d.ts +4 -0
  77. package/dist/node/readiness/run-readiness-checks.d.ts.map +1 -0
  78. package/dist/node/readiness/service-ready-gate.d.ts +26 -0
  79. package/dist/node/readiness/service-ready-gate.d.ts.map +1 -0
  80. package/dist/node.d.ts +26 -12
  81. package/dist/node.d.ts.map +1 -1
  82. package/dist/node.js +2482 -18
  83. package/dist/node.js.map +1 -1
  84. package/dist/parcel/chunk-fetch-registry.d.ts +14 -0
  85. package/dist/parcel/chunk-fetch-registry.d.ts.map +1 -0
  86. package/dist/parcel/chunk-url.utils.d.ts +9 -0
  87. package/dist/parcel/chunk-url.utils.d.ts.map +1 -0
  88. package/dist/parcel/parcel-manager.d.ts +44 -20
  89. package/dist/parcel/parcel-manager.d.ts.map +1 -1
  90. package/dist/parcel/parcel.api.d.ts +306 -0
  91. package/dist/parcel/parcel.api.d.ts.map +1 -0
  92. package/dist/parcel/parcel.interface.d.ts +26 -5
  93. package/dist/parcel/parcel.interface.d.ts.map +1 -1
  94. package/dist/parcel/parcel.service.d.ts +38 -0
  95. package/dist/parcel/parcel.service.d.ts.map +1 -0
  96. package/dist/parcel/storage-provider-registry.d.ts +17 -0
  97. package/dist/parcel/storage-provider-registry.d.ts.map +1 -0
  98. package/dist/parcel/storage-provider.types.d.ts +31 -0
  99. package/dist/parcel/storage-provider.types.d.ts.map +1 -0
  100. package/dist/preload.d.ts +7 -0
  101. package/dist/preload.d.ts.map +1 -0
  102. package/dist/preload.js +47 -0
  103. package/dist/preload.js.map +1 -0
  104. package/dist/repo/repo-context.utils.d.ts.map +1 -1
  105. package/dist/repo/repo-manager.d.ts +1 -1
  106. package/dist/repo/repo-manager.d.ts.map +1 -1
  107. package/dist/repo/repo.api.d.ts +1 -1
  108. package/dist/repo/repo.api.d.ts.map +1 -1
  109. package/dist/repo/repo.interface.d.ts +1 -1
  110. package/dist/repo/repo.interface.d.ts.map +1 -1
  111. package/dist/repo/repo.script-loader.d.ts +3 -3
  112. package/dist/repo/repo.script-loader.d.ts.map +1 -1
  113. package/dist/service/base.interface.d.ts +54 -57
  114. package/dist/service/base.interface.d.ts.map +1 -1
  115. package/dist/service/index.d.ts +21 -0
  116. package/dist/service/index.d.ts.map +1 -0
  117. package/dist/service/service.api.d.ts +503 -0
  118. package/dist/service/service.api.d.ts.map +1 -0
  119. package/dist/service/service.interface.d.ts +36 -9
  120. package/dist/service/service.interface.d.ts.map +1 -1
  121. package/dist/shared/http/fetch-retry.d.ts +21 -0
  122. package/dist/shared/http/fetch-retry.d.ts.map +1 -0
  123. package/dist/shared/log/create-logger.d.ts +27 -0
  124. package/dist/shared/log/create-logger.d.ts.map +1 -0
  125. package/dist/shared/log/enable-log-persist.d.ts +28 -0
  126. package/dist/shared/log/enable-log-persist.d.ts.map +1 -0
  127. package/dist/shared/log/index.d.ts +6 -6
  128. package/dist/shared/log/index.d.ts.map +1 -1
  129. package/dist/shared/log/log-manager.d.ts +25 -27
  130. package/dist/shared/log/log-manager.d.ts.map +1 -1
  131. package/dist/shared/log/log-persist-batch-id.d.ts +13 -0
  132. package/dist/shared/log/log-persist-batch-id.d.ts.map +1 -0
  133. package/dist/shared/log/log-persist-flush.d.ts +8 -0
  134. package/dist/shared/log/log-persist-flush.d.ts.map +1 -0
  135. package/dist/shared/log/log-persist-hook.d.ts +6 -0
  136. package/dist/shared/log/log-persist-hook.d.ts.map +1 -0
  137. package/dist/shared/log/log-persist-logger.d.ts +15 -0
  138. package/dist/shared/log/log-persist-logger.d.ts.map +1 -0
  139. package/dist/shared/log/log-persist-registry.d.ts +17 -0
  140. package/dist/shared/log/log-persist-registry.d.ts.map +1 -0
  141. package/dist/shared/log/log-persist.config.d.ts +10 -0
  142. package/dist/shared/log/log-persist.config.d.ts.map +1 -0
  143. package/dist/shared/log/log-persist.d.ts +55 -0
  144. package/dist/shared/log/log-persist.d.ts.map +1 -0
  145. package/dist/shared/log/log-persist.interface.d.ts +116 -0
  146. package/dist/shared/log/log-persist.interface.d.ts.map +1 -0
  147. package/dist/shared/log/log-scope.d.ts +25 -18
  148. package/dist/shared/log/log-scope.d.ts.map +1 -1
  149. package/dist/shared/utils/fetch-url.d.ts +3 -0
  150. package/dist/shared/utils/fetch-url.d.ts.map +1 -0
  151. package/dist/shared/utils/network-error.d.ts +14 -0
  152. package/dist/shared/utils/network-error.d.ts.map +1 -0
  153. package/dist/shared/utils/safe-file-name.d.ts +14 -0
  154. package/dist/shared/utils/safe-file-name.d.ts.map +1 -0
  155. package/dist/shared/utils/sha256.d.ts +3 -0
  156. package/dist/shared/utils/sha256.d.ts.map +1 -0
  157. package/dist/supabase.d.ts +7 -2
  158. package/dist/supabase.d.ts.map +1 -1
  159. package/dist/task/index.d.ts +8 -7
  160. package/dist/task/index.d.ts.map +1 -1
  161. package/dist/task/local-task-registry.d.ts +1 -1
  162. package/dist/task/local-task-registry.d.ts.map +1 -1
  163. package/dist/task/task-manager.d.ts +7 -9
  164. package/dist/task/task-manager.d.ts.map +1 -1
  165. package/dist/{node → task}/task-node.d.ts +2 -3
  166. package/dist/task/task-node.d.ts.map +1 -0
  167. package/dist/task/task-post-validated.api.d.ts +19 -0
  168. package/dist/task/task-post-validated.api.d.ts.map +1 -0
  169. package/dist/task/task-post.api.d.ts +10 -5
  170. package/dist/task/task-post.api.d.ts.map +1 -1
  171. package/dist/task/task-queue.d.ts +7 -0
  172. package/dist/task/task-queue.d.ts.map +1 -0
  173. package/dist/task/task-repo-context.d.ts.map +1 -1
  174. package/dist/task/task-repo-validation.d.ts +2 -2
  175. package/dist/task/task-repo-validation.d.ts.map +1 -1
  176. package/dist/task/task.api.d.ts +13 -13
  177. package/dist/task/task.api.d.ts.map +1 -1
  178. package/dist/task/task.constant.d.ts +4 -0
  179. package/dist/task/task.constant.d.ts.map +1 -0
  180. package/dist/task/task.interface.d.ts +1 -1
  181. package/dist/task/task.interface.d.ts.map +1 -1
  182. package/dist/trigger/trigger-manager.d.ts +25 -0
  183. package/dist/trigger/trigger-manager.d.ts.map +1 -0
  184. package/dist/trigger/trigger-node.d.ts +23 -0
  185. package/dist/trigger/trigger-node.d.ts.map +1 -0
  186. package/dist/trigger/trigger.api.d.ts +4 -4
  187. package/dist/trigger/trigger.api.d.ts.map +1 -1
  188. package/dist/trigger/trigger.constant.d.ts +8 -0
  189. package/dist/trigger/trigger.constant.d.ts.map +1 -0
  190. package/dist/trigger/trigger.interface.d.ts +46 -2
  191. package/dist/trigger/trigger.interface.d.ts.map +1 -1
  192. package/dist/word/word.api.d.ts +1 -1
  193. package/dist/word/word.api.d.ts.map +1 -1
  194. package/dist/word/word.interface.d.ts +2 -2
  195. package/dist/word/word.interface.d.ts.map +1 -1
  196. package/package.json +89 -74
  197. package/src/browser.ts +144 -79
  198. package/src/command/command.api.ts +19 -17
  199. package/src/command/command.interface.ts +2 -3
  200. package/src/core.api.ts +466 -477
  201. package/src/core.interface.ts +63 -62
  202. package/src/core.utils.ts +64 -64
  203. package/src/idea/idea.interface.ts +3 -3
  204. package/src/link/link.api.ts +28 -30
  205. package/src/link/link.interface.ts +3 -4
  206. package/src/list/list.api.ts +50 -29
  207. package/src/list/list.interface.ts +3 -4
  208. package/src/node/env/env-parsers.ts +77 -0
  209. package/src/node/env/index.ts +10 -0
  210. package/src/node/env/init-supabase-from-env.ts +38 -0
  211. package/src/node/env/load-env.ts +67 -0
  212. package/src/node/env/project-root.ts +34 -0
  213. package/src/node/env/public-base-url.ts +18 -0
  214. package/src/node/env/require-env.ts +15 -0
  215. package/src/node/fs/json-state-store.ts +97 -0
  216. package/src/node/fs/read-source-file.ts +75 -0
  217. package/src/node/node-liveness.ts +80 -0
  218. package/src/node/node-runtime.base.ts +135 -104
  219. package/src/node/node.api.ts +11 -10
  220. package/src/node/node.interface.ts +1 -8
  221. package/src/node/node.utils.ts +1 -1
  222. package/src/node/preload/run-service-preload.ts +48 -0
  223. package/src/node/preload/service-preload.interface.ts +14 -0
  224. package/src/node/process/index.ts +8 -0
  225. package/src/node/process/managed-child-processes.ts +121 -0
  226. package/src/node/process/process-spawn.ts +61 -0
  227. package/src/node/readiness/index.ts +20 -0
  228. package/src/node/readiness/poll-until.ts +27 -0
  229. package/src/node/readiness/readiness-checks.ts +79 -0
  230. package/src/node/readiness/readiness.types.ts +13 -0
  231. package/src/node/readiness/run-readiness-checks.ts +20 -0
  232. package/src/node/readiness/service-ready-gate.ts +65 -0
  233. package/src/node.ts +138 -47
  234. package/src/parcel/chunk-fetch-registry.ts +96 -0
  235. package/src/parcel/chunk-url.utils.ts +30 -0
  236. package/src/parcel/parcel-manager.ts +431 -173
  237. package/src/parcel/parcel.api.ts +103 -0
  238. package/src/parcel/parcel.interface.ts +44 -23
  239. package/src/parcel/parcel.service.ts +79 -0
  240. package/src/parcel/storage-provider-registry.ts +49 -0
  241. package/src/parcel/storage-provider.types.ts +45 -0
  242. package/src/preload.ts +7 -0
  243. package/src/repo/repo-context.utils.ts +3 -4
  244. package/src/repo/repo-manager.ts +7 -20
  245. package/src/repo/repo.api.ts +5 -5
  246. package/src/repo/repo.interface.ts +1 -2
  247. package/src/repo/repo.script-loader.ts +4 -8
  248. package/src/service/base.interface.ts +81 -90
  249. package/src/service/index.ts +173 -0
  250. package/src/service/service.api.ts +294 -0
  251. package/src/service/service.interface.ts +49 -17
  252. package/src/shared/http/fetch-retry.ts +145 -0
  253. package/src/shared/log/create-logger.ts +51 -0
  254. package/src/shared/log/enable-log-persist.ts +225 -0
  255. package/src/shared/log/index.ts +19 -11
  256. package/src/shared/log/log-manager.ts +65 -69
  257. package/src/shared/log/log-persist-batch-id.ts +43 -0
  258. package/src/shared/log/log-persist-flush.ts +128 -0
  259. package/src/shared/log/log-persist-hook.ts +13 -0
  260. package/src/shared/log/log-persist-logger.ts +33 -0
  261. package/src/shared/log/log-persist-registry.ts +109 -0
  262. package/src/shared/log/log-persist.config.ts +97 -0
  263. package/src/shared/log/log-persist.interface.ts +132 -0
  264. package/src/shared/log/log-persist.ts +704 -0
  265. package/src/shared/log/log-scope.ts +46 -46
  266. package/src/shared/utils/config-path.utils.ts +1 -1
  267. package/src/shared/utils/fetch-url.ts +13 -0
  268. package/src/shared/utils/network-error.ts +152 -0
  269. package/src/shared/utils/safe-file-name.ts +37 -0
  270. package/src/shared/utils/sha256.ts +15 -0
  271. package/src/supabase.ts +125 -119
  272. package/src/task/index.ts +31 -34
  273. package/src/task/local-task-registry.ts +9 -17
  274. package/src/task/task-manager.ts +34 -35
  275. package/src/{node → task}/task-node.ts +91 -73
  276. package/src/task/task-post-validated.api.ts +47 -0
  277. package/src/task/task-post.api.ts +81 -98
  278. package/src/task/task-queue.ts +18 -0
  279. package/src/task/task-repo-context.ts +2 -1
  280. package/src/task/task-repo-validation.ts +6 -8
  281. package/src/task/task.api.ts +61 -25
  282. package/src/task/task.constant.ts +4 -0
  283. package/src/task/task.interface.ts +4 -7
  284. package/src/trigger/trigger-manager.ts +287 -0
  285. package/src/trigger/trigger-node.ts +80 -0
  286. package/src/trigger/trigger.api.ts +11 -11
  287. package/src/trigger/trigger.constant.ts +10 -0
  288. package/src/trigger/trigger.interface.ts +52 -2
  289. package/src/trigger/trigger.utils.ts +1 -1
  290. package/src/word/word.api.ts +28 -30
  291. package/src/word/word.interface.ts +3 -4
  292. package/dist/auth/auth.api.d.ts +0 -28
  293. package/dist/auth/auth.api.d.ts.map +0 -1
  294. package/dist/auth/auth.api.js +0 -51
  295. package/dist/auth/auth.api.js.map +0 -1
  296. package/dist/command/command.api.js +0 -58
  297. package/dist/command/command.api.js.map +0 -1
  298. package/dist/command/command.interface.js +0 -9
  299. package/dist/command/command.interface.js.map +0 -1
  300. package/dist/core.api.js +0 -412
  301. package/dist/core.api.js.map +0 -1
  302. package/dist/core.interface.js +0 -46
  303. package/dist/core.interface.js.map +0 -1
  304. package/dist/core.utils.js +0 -81
  305. package/dist/core.utils.js.map +0 -1
  306. package/dist/feed/feed.interface.d.ts +0 -27
  307. package/dist/feed/feed.interface.d.ts.map +0 -1
  308. package/dist/feed/feed.interface.js +0 -17
  309. package/dist/feed/feed.interface.js.map +0 -1
  310. package/dist/file/file-manager.d.ts +0 -24
  311. package/dist/file/file-manager.d.ts.map +0 -1
  312. package/dist/file/file-manager.js +0 -109
  313. package/dist/file/file-manager.js.map +0 -1
  314. package/dist/file/file.api.d.ts +0 -15
  315. package/dist/file/file.api.d.ts.map +0 -1
  316. package/dist/file/file.api.js +0 -30
  317. package/dist/file/file.api.js.map +0 -1
  318. package/dist/file/file.interface.d.ts +0 -25
  319. package/dist/file/file.interface.d.ts.map +0 -1
  320. package/dist/file/file.interface.js +0 -9
  321. package/dist/file/file.interface.js.map +0 -1
  322. package/dist/file-list/file-list.api.d.ts +0 -15
  323. package/dist/file-list/file-list.api.d.ts.map +0 -1
  324. package/dist/file-list/file-list.api.js +0 -54
  325. package/dist/file-list/file-list.api.js.map +0 -1
  326. package/dist/file-list/file-list.interface.d.ts +0 -22
  327. package/dist/file-list/file-list.interface.d.ts.map +0 -1
  328. package/dist/file-list/file-list.interface.js +0 -5
  329. package/dist/file-list/file-list.interface.js.map +0 -1
  330. package/dist/idea/idea.interface.js +0 -15
  331. package/dist/idea/idea.interface.js.map +0 -1
  332. package/dist/index.js +0 -3
  333. package/dist/index.js.map +0 -1
  334. package/dist/link/link.api.js +0 -30
  335. package/dist/link/link.api.js.map +0 -1
  336. package/dist/link/link.interface.js +0 -7
  337. package/dist/link/link.interface.js.map +0 -1
  338. package/dist/list/list.api.js +0 -30
  339. package/dist/list/list.api.js.map +0 -1
  340. package/dist/list/list.interface.js +0 -6
  341. package/dist/list/list.interface.js.map +0 -1
  342. package/dist/node/node-log-scope.d.ts +0 -11
  343. package/dist/node/node-log-scope.d.ts.map +0 -1
  344. package/dist/node/node-log-scope.js +0 -7
  345. package/dist/node/node-log-scope.js.map +0 -1
  346. package/dist/node/node-runtime.base.js +0 -397
  347. package/dist/node/node-runtime.base.js.map +0 -1
  348. package/dist/node/node-task.preset.d.ts +0 -1
  349. package/dist/node/node-task.preset.d.ts.map +0 -1
  350. package/dist/node/node-task.preset.js +0 -14
  351. package/dist/node/node-task.preset.js.map +0 -1
  352. package/dist/node/node.api.js +0 -100
  353. package/dist/node/node.api.js.map +0 -1
  354. package/dist/node/node.interface.js +0 -19
  355. package/dist/node/node.interface.js.map +0 -1
  356. package/dist/node/node.utils.js +0 -36
  357. package/dist/node/node.utils.js.map +0 -1
  358. package/dist/node/task-node.d.ts.map +0 -1
  359. package/dist/node/task-node.js +0 -245
  360. package/dist/node/task-node.js.map +0 -1
  361. package/dist/node/trigger-node.d.ts +0 -18
  362. package/dist/node/trigger-node.d.ts.map +0 -1
  363. package/dist/node/trigger-node.js +0 -150
  364. package/dist/node/trigger-node.js.map +0 -1
  365. package/dist/parcel/parcel-manager.js +0 -156
  366. package/dist/parcel/parcel-manager.js.map +0 -1
  367. package/dist/parcel/parcel.interface.js +0 -11
  368. package/dist/parcel/parcel.interface.js.map +0 -1
  369. package/dist/question-list/question-list.api.d.ts +0 -13
  370. package/dist/question-list/question-list.api.d.ts.map +0 -1
  371. package/dist/question-list/question-list.api.js +0 -35
  372. package/dist/question-list/question-list.api.js.map +0 -1
  373. package/dist/question-list/question-list.interface.d.ts +0 -18
  374. package/dist/question-list/question-list.interface.d.ts.map +0 -1
  375. package/dist/question-list/question-list.interface.js +0 -5
  376. package/dist/question-list/question-list.interface.js.map +0 -1
  377. package/dist/repo/repo-context.utils.js +0 -81
  378. package/dist/repo/repo-context.utils.js.map +0 -1
  379. package/dist/repo/repo-manager.js +0 -166
  380. package/dist/repo/repo-manager.js.map +0 -1
  381. package/dist/repo/repo.api.js +0 -40
  382. package/dist/repo/repo.api.js.map +0 -1
  383. package/dist/repo/repo.interface.js +0 -8
  384. package/dist/repo/repo.interface.js.map +0 -1
  385. package/dist/repo/repo.script-loader.js +0 -108
  386. package/dist/repo/repo.script-loader.js.map +0 -1
  387. package/dist/review/review.api.d.ts +0 -14
  388. package/dist/review/review.api.d.ts.map +0 -1
  389. package/dist/review/review.api.js +0 -133
  390. package/dist/review/review.api.js.map +0 -1
  391. package/dist/review/review.interface.d.ts +0 -24
  392. package/dist/review/review.interface.d.ts.map +0 -1
  393. package/dist/review/review.interface.js +0 -10
  394. package/dist/review/review.interface.js.map +0 -1
  395. package/dist/review-v2/apis/post-review-setting.api.d.ts +0 -12
  396. package/dist/review-v2/apis/post-review-setting.api.d.ts.map +0 -1
  397. package/dist/review-v2/apis/post-review-setting.api.js +0 -27
  398. package/dist/review-v2/apis/post-review-setting.api.js.map +0 -1
  399. package/dist/review-v2/apis/post-review.api.d.ts +0 -13
  400. package/dist/review-v2/apis/post-review.api.d.ts.map +0 -1
  401. package/dist/review-v2/apis/post-review.api.js +0 -46
  402. package/dist/review-v2/apis/post-review.api.js.map +0 -1
  403. package/dist/review-v2/review-setting.interface.d.ts +0 -23
  404. package/dist/review-v2/review-setting.interface.d.ts.map +0 -1
  405. package/dist/review-v2/review-setting.interface.js +0 -5
  406. package/dist/review-v2/review-setting.interface.js.map +0 -1
  407. package/dist/review-v2/review.interface.d.ts +0 -20
  408. package/dist/review-v2/review.interface.d.ts.map +0 -1
  409. package/dist/review-v2/review.interface.js +0 -5
  410. package/dist/review-v2/review.interface.js.map +0 -1
  411. package/dist/service/api.interface.d.ts +0 -35
  412. package/dist/service/api.interface.d.ts.map +0 -1
  413. package/dist/service/api.interface.js +0 -12
  414. package/dist/service/api.interface.js.map +0 -1
  415. package/dist/service/base.interface.js +0 -7
  416. package/dist/service/base.interface.js.map +0 -1
  417. package/dist/service/service.interface.js +0 -11
  418. package/dist/service/service.interface.js.map +0 -1
  419. package/dist/shared/log/create-api-logger.d.ts +0 -21
  420. package/dist/shared/log/create-api-logger.d.ts.map +0 -1
  421. package/dist/shared/log/create-api-logger.js +0 -19
  422. package/dist/shared/log/create-api-logger.js.map +0 -1
  423. package/dist/shared/log/index.js +0 -10
  424. package/dist/shared/log/index.js.map +0 -1
  425. package/dist/shared/log/log-manager.js +0 -237
  426. package/dist/shared/log/log-manager.js.map +0 -1
  427. package/dist/shared/log/log-scope.js +0 -70
  428. package/dist/shared/log/log-scope.js.map +0 -1
  429. package/dist/shared/utils/config-path.utils.js +0 -85
  430. package/dist/shared/utils/config-path.utils.js.map +0 -1
  431. package/dist/shared/utils/error.utils.js +0 -15
  432. package/dist/shared/utils/error.utils.js.map +0 -1
  433. package/dist/shared/utils/id.utils.js +0 -5
  434. package/dist/shared/utils/id.utils.js.map +0 -1
  435. package/dist/supabase.js +0 -100
  436. package/dist/supabase.js.map +0 -1
  437. package/dist/task/index.js +0 -14
  438. package/dist/task/index.js.map +0 -1
  439. package/dist/task/local-task-registry.js +0 -214
  440. package/dist/task/local-task-registry.js.map +0 -1
  441. package/dist/task/task-manager.js +0 -196
  442. package/dist/task/task-manager.js.map +0 -1
  443. package/dist/task/task-post.api.js +0 -91
  444. package/dist/task/task-post.api.js.map +0 -1
  445. package/dist/task/task-repo-context.js +0 -12
  446. package/dist/task/task-repo-context.js.map +0 -1
  447. package/dist/task/task-repo-validation.js +0 -96
  448. package/dist/task/task-repo-validation.js.map +0 -1
  449. package/dist/task/task.api.js +0 -303
  450. package/dist/task/task.api.js.map +0 -1
  451. package/dist/task/task.interface.js +0 -36
  452. package/dist/task/task.interface.js.map +0 -1
  453. package/dist/task/task.utils.js +0 -2
  454. package/dist/task/task.utils.js.map +0 -1
  455. package/dist/trigger/trigger.api.js +0 -125
  456. package/dist/trigger/trigger.api.js.map +0 -1
  457. package/dist/trigger/trigger.interface.js +0 -11
  458. package/dist/trigger/trigger.interface.js.map +0 -1
  459. package/dist/trigger/trigger.utils.js +0 -39
  460. package/dist/trigger/trigger.utils.js.map +0 -1
  461. package/dist/word/word.api.js +0 -30
  462. package/dist/word/word.api.js.map +0 -1
  463. package/dist/word/word.interface.js +0 -6
  464. package/dist/word/word.interface.js.map +0 -1
  465. package/src/auth/auth.api.ts +0 -87
  466. package/src/feed/feed.interface.ts +0 -33
  467. package/src/file/file-manager.ts +0 -145
  468. package/src/file/file.api.ts +0 -43
  469. package/src/file/file.interface.ts +0 -30
  470. package/src/file-list/file-list.api.ts +0 -64
  471. package/src/file-list/file-list.interface.ts +0 -24
  472. package/src/node/node-log-scope.ts +0 -15
  473. package/src/node/node-task.preset.ts +0 -13
  474. package/src/node/trigger-node.ts +0 -180
  475. package/src/question-list/question-list.api.ts +0 -42
  476. package/src/question-list/question-list.interface.ts +0 -21
  477. package/src/review/review.api.ts +0 -145
  478. package/src/review/review.interface.ts +0 -26
  479. package/src/review-v2/apis/post-review-setting.api.ts +0 -35
  480. package/src/review-v2/apis/post-review.api.ts +0 -59
  481. package/src/review-v2/review-setting.interface.ts +0 -26
  482. package/src/review-v2/review.interface.ts +0 -23
  483. package/src/service/api.interface.ts +0 -47
  484. package/src/shared/log/create-api-logger.ts +0 -36
@@ -1,76 +1,77 @@
1
- import { PostgrestError } from "@supabase/supabase-js";
1
+ import type { PostgrestError } from "@supabase/supabase-js";
2
2
 
3
3
  export interface Target {
4
- id: string;
5
- category: string;
6
- name: string;
7
- value: string;
8
- tagList: string[];
9
- extra?: string;
10
- details?: unknown;
11
- created_at: string;
4
+ id: string;
5
+ category: string;
6
+ name: string;
7
+ value: string;
8
+ tagList: string[];
9
+ extra?: string;
10
+ details?: unknown;
11
+ created_at: string;
12
12
  }
13
13
 
14
- export type TargetPayload<T extends Target> = Omit<T, "id" | "created_at">;
14
+ /** Target row before persistence — no `id` or `created_at`. */
15
+ export type TargetDraft<T extends Target> = Omit<T, "id" | "created_at">;
15
16
 
16
17
  export enum StatusCode {
17
- SUCCESS = 200,
18
- ERROR = 400,
18
+ SUCCESS = 200,
19
+ ERROR = 400,
19
20
  }
20
21
 
21
22
  export interface SupabaseResponse<T = unknown> {
22
- status_code: StatusCode;
23
- success: boolean;
24
- message?: string;
25
- data?: T;
26
- error?: {
27
- message: string;
28
- code?: string;
29
- };
23
+ status_code: StatusCode;
24
+ success: boolean;
25
+ message?: string;
26
+ data?: T;
27
+ error?: {
28
+ message: string;
29
+ code?: string;
30
+ };
30
31
  }
31
32
 
32
33
  export const generateResponse = {
33
- success<T>(data?: T, message?: string): SupabaseResponse<T> {
34
- return {
35
- status_code: StatusCode.SUCCESS,
36
- success: true,
37
- message,
38
- data,
39
- };
40
- },
34
+ success<T>(data?: T, message?: string): SupabaseResponse<T> {
35
+ return {
36
+ status_code: StatusCode.SUCCESS,
37
+ success: true,
38
+ message,
39
+ data,
40
+ };
41
+ },
41
42
 
42
- error(
43
- message: string | { key: string; error: PostgrestError } | { key: string; error: string },
44
- statusCode?: StatusCode,
45
- code?: string
46
- ): SupabaseResponse {
47
- if (typeof message === "string") {
48
- return {
49
- status_code: statusCode ?? StatusCode.ERROR,
50
- success: false,
51
- error: {
52
- message,
53
- code,
54
- },
55
- };
56
- }
57
- if (typeof message?.error === "string") {
58
- return {
59
- status_code: statusCode ?? StatusCode.ERROR,
60
- success: false,
61
- error: {
62
- message: `Error from ${message.key}: ${message.error}`,
63
- code,
64
- },
65
- };
66
- }
67
- return {
68
- status_code: statusCode ?? StatusCode.ERROR,
69
- success: false,
70
- error: {
71
- message: `Error from ${message.key}: ${message?.error?.message}`,
72
- code,
73
- },
74
- };
75
- },
43
+ error(
44
+ message: string | { key: string; error: PostgrestError } | { key: string; error: string },
45
+ statusCode?: StatusCode,
46
+ code?: string,
47
+ ): SupabaseResponse {
48
+ if (typeof message === "string") {
49
+ return {
50
+ status_code: statusCode ?? StatusCode.ERROR,
51
+ success: false,
52
+ error: {
53
+ message,
54
+ code,
55
+ },
56
+ };
57
+ }
58
+ if (typeof message?.error === "string") {
59
+ return {
60
+ status_code: statusCode ?? StatusCode.ERROR,
61
+ success: false,
62
+ error: {
63
+ message: `Error from ${message.key}: ${message.error}`,
64
+ code,
65
+ },
66
+ };
67
+ }
68
+ return {
69
+ status_code: statusCode ?? StatusCode.ERROR,
70
+ success: false,
71
+ error: {
72
+ message: `Error from ${message.key}: ${message?.error?.message}`,
73
+ code,
74
+ },
75
+ };
76
+ },
76
77
  };
package/src/core.utils.ts CHANGED
@@ -2,91 +2,91 @@ import { pick, pickBy } from "lodash-es";
2
2
 
3
3
  /** True when running in a development build (Vite or Node). Defaults to false for safety. */
4
4
  export function isDevEnvironment(): boolean {
5
- if (typeof import.meta !== "undefined" && "env" in import.meta) {
6
- const env = (import.meta as ImportMeta & { env?: { DEV?: boolean; MODE?: string } }).env;
7
- if (env?.DEV === true || env?.MODE === "development") return true;
8
- if (env?.DEV === false || env?.MODE === "production") return false;
9
- }
10
- if (typeof process !== "undefined" && process.env?.NODE_ENV) {
11
- return process.env.NODE_ENV !== "production";
12
- }
13
- return false;
5
+ if (typeof import.meta !== "undefined" && "env" in import.meta) {
6
+ const env = (import.meta as ImportMeta & { env?: { DEV?: boolean; MODE?: string } }).env;
7
+ if (env?.DEV === true || env?.MODE === "development") return true;
8
+ if (env?.DEV === false || env?.MODE === "production") return false;
9
+ }
10
+ if (typeof process !== "undefined" && process.env?.NODE_ENV) {
11
+ return process.env.NODE_ENV !== "production";
12
+ }
13
+ return false;
14
14
  }
15
15
 
16
16
  export function logDev(...args: unknown[]): void {
17
- if (isDevEnvironment()) {
18
- console.log(...args);
19
- }
17
+ if (isDevEnvironment()) {
18
+ console.log(...args);
19
+ }
20
20
  }
21
21
 
22
22
  export function logDevGroup(label: string, fn: () => void): void {
23
- if (!isDevEnvironment()) return;
24
- console.group(label);
25
- try {
26
- fn();
27
- } finally {
28
- console.groupEnd();
29
- }
23
+ if (!isDevEnvironment()) return;
24
+ console.group(label);
25
+ try {
26
+ fn();
27
+ } finally {
28
+ console.groupEnd();
29
+ }
30
30
  }
31
31
 
32
32
  /** Log internal details, then throw a sanitized error safe to expose to callers. */
33
33
  export function handleSupabaseError(context: string, error: unknown, publicMessage?: string): never {
34
- console.error(`[${context}] failed:`, error);
35
- throw new Error(publicMessage ?? `[${context}] Operation failed`);
34
+ console.error(`[${context}] failed:`, error);
35
+ throw new Error(publicMessage ?? `[${context}] Operation failed`);
36
36
  }
37
37
 
38
38
  /** Raw payload -> Available data */
39
39
  export abstract class BaseValidator<T extends object> {
40
- protected requiredFields: (keyof T)[] = [];
41
- protected optionalFields: (keyof T)[] = [];
42
- protected ignoredFields: (keyof T)[] = [];
43
- protected customValidators: ((val: T) => true | string)[] = [];
40
+ protected requiredFields: (keyof T)[] = [];
41
+ protected optionalFields: (keyof T)[] = [];
42
+ protected ignoredFields: (keyof T)[] = [];
43
+ protected customValidators: ((val: T) => true | string)[] = [];
44
44
 
45
- addCustomValidator(validator: (val: T) => true | string) {
46
- this.customValidators.push(validator);
47
- return this;
48
- }
45
+ addCustomValidator(validator: (val: T) => true | string) {
46
+ this.customValidators.push(validator);
47
+ return this;
48
+ }
49
49
 
50
- protected validateField(field: keyof T, value: unknown): boolean {
51
- // TODO now only empty check, later should add type checks
52
- return value != null;
53
- }
50
+ protected validateField(_field: keyof T, value: unknown): boolean {
51
+ // TODO now only empty check, later should add type checks
52
+ return value != null;
53
+ }
54
54
 
55
- validate = (val: T): T => {
56
- const errors: string[] = [];
55
+ validate = (val: T): T => {
56
+ const errors: string[] = [];
57
57
 
58
- // Step 1: Check required fields
59
- this.requiredFields.forEach((field) => {
60
- if (!this.validateField(field, val[field])) {
61
- errors.push(`Missing required field: ${String(field)}`);
62
- }
63
- });
58
+ // Step 1: Check required fields
59
+ this.requiredFields.forEach((field) => {
60
+ if (!this.validateField(field, val[field])) {
61
+ errors.push(`Missing required field: ${String(field)}`);
62
+ }
63
+ });
64
64
 
65
- // Step 2: Run custom validators
66
- this.customValidators.forEach((validator) => {
67
- const result = validator(val);
68
- if (result !== true) {
69
- errors.push(`Custom validation failed ${result}`);
70
- }
71
- });
65
+ // Step 2: Run custom validators
66
+ this.customValidators.forEach((validator) => {
67
+ const result = validator(val);
68
+ if (result !== true) {
69
+ errors.push(`Custom validation failed ${result}`);
70
+ }
71
+ });
72
72
 
73
- if (errors.length > 0) {
74
- const errorCount = errors.length;
75
- const errorList = errors.map((error, index) => ` ${index + 1}. ${error}`).join("\n");
73
+ if (errors.length > 0) {
74
+ const errorCount = errors.length;
75
+ const errorList = errors.map((error, index) => ` ${index + 1}. ${error}`).join("\n");
76
76
 
77
- throw new Error(
78
- `[${this.constructor.name}] Validation failed (${errorCount} error${errorCount > 1 ? "s" : ""}):\n${errorList}`
79
- );
80
- }
77
+ throw new Error(
78
+ `[${this.constructor.name}] Validation failed (${errorCount} error${errorCount > 1 ? "s" : ""}):\n${errorList}`,
79
+ );
80
+ }
81
81
 
82
- // Step 3: Pick required and optional fields
83
- const required = pick(val, this.requiredFields);
84
- const optional = pickBy(val, (value, key) => {
85
- const typedKey = key as keyof T;
86
- return this.optionalFields.includes(typedKey) && value != null;
87
- }) as Partial<T>;
88
- // TODO ignoredFields
82
+ // Step 3: Pick required and optional fields
83
+ const required = pick(val, this.requiredFields);
84
+ const optional = pickBy(val, (value, key) => {
85
+ const typedKey = key as keyof T;
86
+ return this.optionalFields.includes(typedKey) && value != null;
87
+ }) as Partial<T>;
88
+ // TODO ignoredFields
89
89
 
90
- return { ...required, ...optional } as T;
91
- };
90
+ return { ...required, ...optional } as T;
91
+ };
92
92
  }
@@ -1,4 +1,4 @@
1
- import { Target } from "../core.interface";
1
+ import type { Target } from "../core.interface";
2
2
 
3
3
  export enum CategoryIdea {
4
4
  OPPORTUNITY = "opportunity",
@@ -17,7 +17,7 @@ export interface IdeaDetails {
17
17
  reviewList: string[];
18
18
  /** 切入點 */
19
19
  point: string;
20
- };
20
+ }
21
21
 
22
22
  export enum Market {
23
23
  NA = "NA",
@@ -25,4 +25,4 @@ export enum Market {
25
25
  JP = "JP",
26
26
  CN = "CN",
27
27
  TW = "TW",
28
- };
28
+ }
@@ -1,43 +1,41 @@
1
1
  import { createTarget } from "../core.api";
2
2
  import { BaseValidator } from "../core.utils";
3
- import { Link, LinkDetails } from "./link.interface";
3
+ import type { Link, LinkDetails } from "./link.interface";
4
4
 
5
5
  export interface PostLinkCreatePayload {
6
- name: Link["name"];
7
- value: Link["value"];
8
- category: Link["category"];
9
- details: LinkDetails;
6
+ name: Link["name"];
7
+ value: Link["value"];
8
+ category: Link["category"];
9
+ details: LinkDetails;
10
10
  }
11
11
 
12
12
  export class PostLinkValidator extends BaseValidator<PostLinkCreatePayload> {
13
- protected requiredFields: (keyof PostLinkCreatePayload)[] = ["name", "value", "category", "details"];
14
- protected optionalFields: (keyof PostLinkCreatePayload)[] = [];
13
+ protected requiredFields: (keyof PostLinkCreatePayload)[] = ["name", "value", "category", "details"];
14
+ protected optionalFields: (keyof PostLinkCreatePayload)[] = [];
15
15
 
16
- constructor() {
17
- super();
18
- // Add custom
19
- this.addCustomValidator((val) => {
20
- return true;
21
- });
22
- }
16
+ constructor() {
17
+ super();
18
+ // Add custom
19
+ this.addCustomValidator((_val) => {
20
+ return true;
21
+ });
22
+ }
23
23
  }
24
24
 
25
-
26
-
27
25
  export const postLinkCreate = async (payload: PostLinkCreatePayload) => {
28
- return createTarget<Link, PostLinkCreatePayload>({
29
- payload: payload,
30
- validator: PostLinkValidator,
31
- createFn: (validPayload) => {
32
- const { name, value, category, details } = validPayload;
26
+ return createTarget<Link, PostLinkCreatePayload>({
27
+ payload: payload,
28
+ validator: PostLinkValidator,
29
+ createFn: (validPayload) => {
30
+ const { name, value, category, details } = validPayload;
33
31
 
34
- return {
35
- name,
36
- category,
37
- value,
38
- tagList: [],
39
- details,
40
- };
41
- },
42
- });
32
+ return {
33
+ name,
34
+ category,
35
+ value,
36
+ tagList: [],
37
+ details,
38
+ };
39
+ },
40
+ });
43
41
  };
@@ -1,7 +1,6 @@
1
- import { Target } from "../core.interface";
1
+ import type { Target } from "../core.interface";
2
2
 
3
3
  export enum CategoryLink {
4
- /** HTML by default */
5
4
  LINK = "link",
6
5
  }
7
6
 
@@ -11,6 +10,7 @@ export interface Link extends Target {
11
10
  /** URL */
12
11
  value: string;
13
12
  details: LinkDetails;
13
+ /** Only Link can own a custom category, like 'link-log' */
14
14
  category: CategoryLink;
15
15
  }
16
16
 
@@ -22,5 +22,4 @@ export interface LinkDetails {
22
22
  /** How to render the link */
23
23
  loaderKey: string;
24
24
  original: unknown;
25
- };
26
-
25
+ }
@@ -1,43 +1,64 @@
1
1
  import { createTarget } from "../core.api";
2
2
  import { BaseValidator } from "../core.utils";
3
- import { List, ListDetails } from "./list.interface";
3
+ import { CategoryList, type List, type ListDetails } from "./list.interface";
4
4
 
5
5
  export interface PostListCreatePayload {
6
- name: List["name"];
7
- value: List["value"];
8
- category: List["category"];
9
- details: ListDetails;
6
+ name: List["name"];
7
+ value: List["value"];
8
+ category: List["category"];
9
+ details: ListDetails;
10
10
  }
11
11
 
12
12
  export class PostListValidator extends BaseValidator<PostListCreatePayload> {
13
- protected requiredFields: (keyof PostListCreatePayload)[] = ["name", "value", "category", "details"];
14
- protected optionalFields: (keyof PostListCreatePayload)[] = [];
13
+ protected requiredFields: (keyof PostListCreatePayload)[] = ["name", "value", "category", "details"];
14
+ protected optionalFields: (keyof PostListCreatePayload)[] = [];
15
15
 
16
- constructor() {
17
- super();
18
- // Add custom
19
- this.addCustomValidator((val) => {
20
- return true;
21
- });
22
- }
16
+ constructor() {
17
+ super();
18
+ // Add custom
19
+ this.addCustomValidator((_val) => {
20
+ return true;
21
+ });
22
+ }
23
23
  }
24
24
 
25
+ export const postListCreate = async (payload: PostListCreatePayload) => {
26
+ return createTarget<List, PostListCreatePayload>({
27
+ payload: payload,
28
+ validator: PostListValidator,
29
+ createFn: (validPayload) => {
30
+ const { name, value, category, details } = validPayload;
25
31
 
32
+ return {
33
+ name,
34
+ category,
35
+ value,
36
+ tagList: [],
37
+ details,
38
+ };
39
+ },
40
+ });
41
+ };
26
42
 
27
- export const postListCreate = async (payload: PostListCreatePayload) => {
28
- return createTarget<List, PostListCreatePayload>({
29
- payload: payload,
30
- validator: PostListValidator,
31
- createFn: (validPayload) => {
32
- const { name, value, category, details } = validPayload;
43
+ /** Log batch create — idempotent on List.value (stable batch hash). */
44
+ export const postLogListCreate = async (payload: PostListCreatePayload) => {
45
+ return createTarget<List, PostListCreatePayload>({
46
+ payload,
47
+ validator: PostListValidator,
48
+ checkRedundancyFilterList: [
49
+ { field: "category", operator: "eq", value: CategoryList.LIST },
50
+ { field: "value", operator: "eq", value: payload.value },
51
+ ],
52
+ createFn: (validPayload) => {
53
+ const { name, value, category, details } = validPayload;
33
54
 
34
- return {
35
- name,
36
- category,
37
- value,
38
- tagList: [],
39
- details,
40
- };
41
- },
42
- });
55
+ return {
56
+ name,
57
+ category,
58
+ value,
59
+ tagList: [],
60
+ details,
61
+ };
62
+ },
63
+ });
43
64
  };
@@ -1,4 +1,4 @@
1
- import { Target, TargetPayload } from "../core.interface";
1
+ import type { Target } from "../core.interface";
2
2
 
3
3
  export enum CategoryList {
4
4
  LIST = "list",
@@ -19,6 +19,5 @@ export interface ListDetails {
19
19
  preview: string;
20
20
  /** How to render the List */
21
21
  loaderKey: string;
22
- items: Array<TargetPayload<Target>>
23
- };
24
-
22
+ items: Array<unknown>;
23
+ }
@@ -0,0 +1,77 @@
1
+ import { readEnv } from "./require-env";
2
+
3
+ export interface EnvIntOptions {
4
+ env?: NodeJS.ProcessEnv;
5
+ min?: number;
6
+ max?: number;
7
+ }
8
+
9
+ export function envInt(name: string, defaultValue: number, options?: EnvIntOptions): number {
10
+ const env = options?.env ?? process.env;
11
+ const raw = readEnv(name, env);
12
+ if (raw == null) {
13
+ return defaultValue;
14
+ }
15
+
16
+ const value = Number(raw);
17
+ if (!Number.isInteger(value)) {
18
+ throw new Error(`Invalid ${name}: ${raw}`);
19
+ }
20
+
21
+ const min = options?.min;
22
+ if (min != null && value < min) {
23
+ throw new Error(`Invalid ${name}: ${raw}`);
24
+ }
25
+
26
+ const max = options?.max;
27
+ if (max != null && value > max) {
28
+ throw new Error(`Invalid ${name}: ${raw}`);
29
+ }
30
+
31
+ return value;
32
+ }
33
+
34
+ export function envMs(name: string, defaultMs: number, options?: EnvIntOptions): number {
35
+ return envInt(name, defaultMs, { ...options, min: options?.min ?? 1 });
36
+ }
37
+
38
+ export function envPort(defaultPort = 3100, options?: EnvIntOptions & { envKey?: string }): number {
39
+ const envKey = options?.envKey ?? "PORT";
40
+ return envInt(envKey, defaultPort, { ...options, min: 1, max: 65535 });
41
+ }
42
+
43
+ export interface EnvNumberOptions {
44
+ env?: NodeJS.ProcessEnv;
45
+ min?: number;
46
+ /** When true, use Math.floor on parsed value. */
47
+ floor?: boolean;
48
+ }
49
+
50
+ export function envNumber(name: string, defaultValue: number, options?: EnvNumberOptions): number {
51
+ const env = options?.env ?? process.env;
52
+ const raw = readEnv(name, env);
53
+ if (raw == null) {
54
+ return defaultValue;
55
+ }
56
+
57
+ const value = Number(raw);
58
+ if (!Number.isFinite(value)) {
59
+ throw new Error(`Invalid ${name}: ${raw}`);
60
+ }
61
+
62
+ const min = options?.min;
63
+ const resolved = options?.floor === true ? Math.floor(value) : value;
64
+ if (min != null && resolved < min) {
65
+ throw new Error(`Invalid ${name}: ${raw}`);
66
+ }
67
+
68
+ return resolved;
69
+ }
70
+
71
+ export function envBool(name: string, defaultValue = false, env: NodeJS.ProcessEnv = process.env): boolean {
72
+ const raw = readEnv(name, env)?.toLowerCase();
73
+ if (raw == null) {
74
+ return defaultValue;
75
+ }
76
+ return raw === "1" || raw === "true" || raw === "yes";
77
+ }
@@ -0,0 +1,10 @@
1
+ export type { EnvIntOptions, EnvNumberOptions } from "./env-parsers";
2
+ export { envBool, envInt, envMs, envNumber, envPort } from "./env-parsers";
3
+ export type { InitSupabaseFromStandardEnvOptions } from "./init-supabase-from-env";
4
+ export { initSupabaseFromStandardEnv } from "./init-supabase-from-env";
5
+ export type { LoadEnvFilesOptions } from "./load-env";
6
+ export { loadEnvFiles, parseEnvFile, parseEnvFileContent, parseEnvLine } from "./load-env";
7
+ export { resolveProjectRootByPackageName, resolveProjectRootFromModule } from "./project-root";
8
+ export type { PublicBaseUrlFromEnvOptions } from "./public-base-url";
9
+ export { publicBaseUrlFromEnv } from "./public-base-url";
10
+ export { readEnv, requireEnv } from "./require-env";
@@ -0,0 +1,38 @@
1
+ import { supabase } from "../../supabase";
2
+ import { loadEnvFiles } from "./load-env";
3
+ import { readEnv, requireEnv } from "./require-env";
4
+
5
+ export interface InitSupabaseFromStandardEnvOptions {
6
+ /** Project root for `.env` files (required when `loadEnv` is true). */
7
+ root?: string;
8
+ /** Load `.env.local` / `.env` before initialize (default true). */
9
+ loadEnv?: boolean;
10
+ /** Hook after env files loaded (legacy aliases, etc.). */
11
+ afterLoadEnv?: () => void;
12
+ env?: NodeJS.ProcessEnv;
13
+ }
14
+
15
+ /**
16
+ * Load standard Supabase env vars and initialize the process-wide Supabase holder.
17
+ *
18
+ * Required: `SUPABASE_URL`, `SUPABASE_ANON_KEY`
19
+ * Optional: `SUPABASE_NEED_AUTH_URL`, `SUPABASE_NEED_AUTH_ANON_KEY`
20
+ */
21
+ export async function initSupabaseFromStandardEnv(options: InitSupabaseFromStandardEnvOptions = {}): Promise<void> {
22
+ const env = options.env ?? process.env;
23
+ const loadEnv = options.loadEnv ?? true;
24
+
25
+ if (loadEnv) {
26
+ if (options.root == null || options.root === "") {
27
+ throw new Error("initSupabaseFromStandardEnv: root is required when loadEnv is true");
28
+ }
29
+ loadEnvFiles(options.root, { env, afterLoad: options.afterLoadEnv });
30
+ }
31
+
32
+ await supabase.initialize({
33
+ supabaseUrl: requireEnv("SUPABASE_URL", env),
34
+ supabaseAnonKey: requireEnv("SUPABASE_ANON_KEY", env),
35
+ supabaseNeedAuthUrl: readEnv("SUPABASE_NEED_AUTH_URL", env),
36
+ supabaseNeedAuthAnonKey: readEnv("SUPABASE_NEED_AUTH_ANON_KEY", env),
37
+ });
38
+ }