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
@@ -0,0 +1,103 @@
1
+ import { z } from "zod";
2
+ import { createTarget, deleteTarget, getTarget, validateWithSchema } from "../core.api";
3
+ import { CategoryParcel, type Parcel, type ParcelDetails } from "./parcel.interface";
4
+
5
+ const parcelIdSchema = z.string().trim().min(1);
6
+
7
+ const chunkSchema = z.object({
8
+ index: z.number().int().nonnegative(),
9
+ size: z.number().int().nonnegative(),
10
+ checksum: z.string().trim().min(1),
11
+ url: z.string().trim().min(1),
12
+ provider: z.string().optional(),
13
+ });
14
+
15
+ const parcelCryptoSchema = z.object({
16
+ enabled: z.boolean(),
17
+ algorithm: z.string().optional(),
18
+ iv: z.string().optional(),
19
+ keyDerivation: z.string().optional(),
20
+ salt: z.string().optional(),
21
+ pbkdf2Iterations: z.number().int().positive().optional(),
22
+ });
23
+
24
+ export const parcelDetailsSchema = z.object({
25
+ manifestVersion: z.number().int().nonnegative(),
26
+ chunkList: z.array(chunkSchema).min(1),
27
+ checksum: z.string().trim().min(1),
28
+ size: z.number().int().nonnegative(),
29
+ preview: z.string().optional(),
30
+ crypto: parcelCryptoSchema.optional(),
31
+ });
32
+
33
+ export const postParcelSchema = z.object({
34
+ name: z.string().trim().min(1),
35
+ value: z.string().trim().min(1),
36
+ details: parcelDetailsSchema,
37
+ tagList: z.array(z.string()).optional().default([]),
38
+ extra: z.string().optional(),
39
+ });
40
+
41
+ export type PostParcelPayload = z.infer<typeof postParcelSchema>;
42
+
43
+ export const getParcelSchema = z.object({
44
+ id: parcelIdSchema,
45
+ });
46
+
47
+ export type GetParcelPayload = z.infer<typeof getParcelSchema>;
48
+
49
+ export const deleteParcelSchema = z.object({
50
+ id: parcelIdSchema,
51
+ });
52
+
53
+ export type DeleteParcelPayload = z.infer<typeof deleteParcelSchema>;
54
+
55
+ const parcelCategoryFilter = {
56
+ field: "category",
57
+ operator: "eq" as const,
58
+ value: CategoryParcel.PARCEL,
59
+ };
60
+
61
+ /** Persist a Parcel row (`category=parcel`) after chunks are uploaded via {@link ParcelManager.save}. */
62
+ export const postParcel = validateWithSchema(
63
+ postParcelSchema,
64
+ "postParcelSchema",
65
+ )(async ({ name, value, details, tagList, extra }) => {
66
+ return createTarget<Parcel, PostParcelPayload>({
67
+ payload: { name, value, details, tagList, extra },
68
+ createFn: () => ({
69
+ name,
70
+ value,
71
+ category: CategoryParcel.PARCEL,
72
+ tagList,
73
+ extra,
74
+ details: details as ParcelDetails,
75
+ }),
76
+ });
77
+ });
78
+
79
+ /** Fetch a Parcel by id (`category=parcel`). */
80
+ export const getParcel = validateWithSchema(
81
+ getParcelSchema,
82
+ "getParcelSchema",
83
+ )(async ({ id }) => {
84
+ const result = await getTarget({
85
+ id,
86
+ filterList: [parcelCategoryFilter],
87
+ });
88
+ return {
89
+ ...result,
90
+ data: result.data as Parcel,
91
+ };
92
+ });
93
+
94
+ /** Delete a Parcel row by id (`category=parcel`). Does not remove chunk blobs from storage providers. */
95
+ export const deleteParcel = validateWithSchema(
96
+ deleteParcelSchema,
97
+ "deleteParcelSchema",
98
+ )(async ({ id }) => {
99
+ return deleteTarget({
100
+ id,
101
+ filterList: [parcelCategoryFilter],
102
+ });
103
+ });
@@ -1,40 +1,61 @@
1
- import { Target } from "../core.interface";
1
+ import type { Target } from "../core.interface";
2
+
3
+ export enum CategoryParcel {
4
+ PARCEL = "parcel",
5
+ }
2
6
 
3
7
  export interface Parcel extends Target {
4
- category: CategoryParcel;
5
- details: ParcelDetails;
8
+ /** Human readable name */
9
+ name: string;
10
+ /** Used to search the parcel, should be unique */
11
+ value: string;
12
+ category: CategoryParcel;
13
+ details: ParcelDetails;
6
14
  }
7
15
 
8
- export enum CategoryParcel {
9
- PARCEL = "parcel",
16
+ export interface ParcelCrypto {
17
+ /** 未設置或 false → 明文分片 */
18
+ enabled: boolean;
19
+ /** 例如 "AES-GCM-256";enabled 時必填 */
20
+ algorithm?: string;
21
+ /** Base64 IV;AES-GCM 時必填 */
22
+ iv?: string;
23
+ /** 口令派生密鑰時的 KDF,例如 "PBKDF2-SHA256" */
24
+ keyDerivation?: string;
25
+ /** PBKDF2 salt(Base64);keyDerivation 為 PBKDF2 時必填 */
26
+ salt?: string;
27
+ /** PBKDF2 迭代次數;未設置時由 SDK 默認 */
28
+ pbkdf2Iterations?: number;
10
29
  }
11
30
 
12
31
  export interface ParcelDetails {
13
- manifestVersion: number;
14
- chunkList: Chunk[];
15
- /** sha256 */
16
- checksum: string;
17
- size: number;
32
+ manifestVersion: number;
33
+ chunkList: Chunk[];
34
+ /** 還原後的明文 sha256 */
35
+ checksum: string;
36
+ /** 還原後的明文大小(字節) */
37
+ size: number;
38
+ preview?: string;
39
+ crypto?: ParcelCrypto;
18
40
  }
19
41
 
20
42
  export enum LifecycleStatus {
21
- STORED = "STORED",
22
- SOFT_DELETED = "SOFT_DELETED",
23
- HARD_DELETED = "HARD_DELETED",
43
+ STORED = "STORED",
44
+ SOFT_DELETED = "SOFT_DELETED",
45
+ HARD_DELETED = "HARD_DELETED",
24
46
  }
25
47
 
26
48
  export interface Lifecycle {
27
- status: LifecycleStatus;
28
- storedAt: string;
29
- softDeletedAt: string | null;
30
- hardDeletedAt: string | null;
49
+ status: LifecycleStatus;
50
+ storedAt: string;
51
+ softDeletedAt: string | null;
52
+ hardDeletedAt: string | null;
31
53
  }
32
54
 
33
55
  export interface Chunk {
34
- index: number;
35
- /** TODO Storage service provider */
36
- // shardKey: string;
37
- size: number;
38
- checksum: string;
39
- url: string;
56
+ index: number;
57
+ size: number;
58
+ checksum: string; // 該 chunk 字節的 sha256(明文或密文,與 create 時一致)
59
+ url: string;
60
+ provider?: string; // 對應 StorageAdapter / 平台標識(呼應 TODO shardKey)
40
61
  }
@@ -0,0 +1,79 @@
1
+ import type { SupabaseResponse } from "../core.interface";
2
+ import { getParcel, postParcel } from "./parcel.api";
3
+ import type { Parcel } from "./parcel.interface";
4
+ import { type CreateOptions, ParcelManager, type ReassembleOptions, type StorageAdapter } from "./parcel-manager";
5
+
6
+ export interface PublishParcelInput {
7
+ file: ArrayBuffer;
8
+ adapters: StorageAdapter[];
9
+ name: string;
10
+ value: string;
11
+ tagList?: string[];
12
+ extra?: string;
13
+ createOptions?: CreateOptions;
14
+ }
15
+
16
+ export interface PublishParcelResult {
17
+ parcel: Parcel;
18
+ /** Present when encrypted without passphrase — caller must persist outside Supabase */
19
+ key?: CryptoKey;
20
+ }
21
+
22
+ export interface RestoreParcelByIdInput {
23
+ id: string;
24
+ reassembleOptions?: ReassembleOptions;
25
+ }
26
+
27
+ export interface RestoreParcelByIdResult {
28
+ parcel: Parcel;
29
+ file: ArrayBuffer;
30
+ }
31
+
32
+ function requireResponseData<T>(response: SupabaseResponse<T>, label: string): T {
33
+ if (response.data == null) {
34
+ const suffix = response.message != null ? ` (${response.message})` : "";
35
+ throw new Error(`${label}: no data${suffix}`);
36
+ }
37
+ return response.data;
38
+ }
39
+
40
+ /**
41
+ * One-shot publish: split (optional encrypt) → upload chunks → persist Parcel row.
42
+ * Orchestrates {@link ParcelManager} + {@link postParcel}.
43
+ */
44
+ export async function publishParcel(input: PublishParcelInput): Promise<PublishParcelResult> {
45
+ const { file, adapters, name, value, tagList = [], extra, createOptions } = input;
46
+
47
+ const createResult = await ParcelManager.create(file, createOptions ?? {});
48
+ const draft = await ParcelManager.save(createResult, adapters, { name, value, tagList });
49
+
50
+ const response = await postParcel({
51
+ name: draft.name,
52
+ value: draft.value,
53
+ details: draft.details,
54
+ tagList: draft.tagList ?? [],
55
+ extra,
56
+ });
57
+
58
+ return {
59
+ parcel: requireResponseData(response, "postParcel"),
60
+ key: createResult.key,
61
+ };
62
+ }
63
+
64
+ /**
65
+ * Reassemble file bytes from a {@link Parcel} (chunk URLs in details).
66
+ */
67
+ export async function restoreParcel(parcel: Parcel, reassembleOptions?: ReassembleOptions): Promise<ArrayBuffer> {
68
+ return ParcelManager.reassemble(parcel, reassembleOptions ?? {});
69
+ }
70
+
71
+ /**
72
+ * Fetch Parcel by id, then reassemble. Orchestrates {@link getParcel} + {@link restoreParcel}.
73
+ */
74
+ export async function restoreParcelById(input: RestoreParcelByIdInput): Promise<RestoreParcelByIdResult> {
75
+ const response = await getParcel({ id: input.id });
76
+ const parcel = requireResponseData(response, "getParcel");
77
+ const file = await restoreParcel(parcel, input.reassembleOptions);
78
+ return { parcel, file };
79
+ }
@@ -0,0 +1,49 @@
1
+ import { registerProviderChunkResolver } from "./chunk-fetch-registry";
2
+ import type { ProviderProbeResult, StorageProviderModule } from "./storage-provider.types";
3
+
4
+ export type ProviderProbeMap = Record<string, ProviderProbeResult | { ok: true; detail: { skipped: true } }>;
5
+
6
+ export interface StorageProviderRegistry {
7
+ register(module: StorageProviderModule): void;
8
+ get(provider: string): StorageProviderModule;
9
+ has(provider: string): boolean;
10
+ list(): string[];
11
+ probeAll(): Promise<ProviderProbeMap>;
12
+ }
13
+
14
+ /** In-process registry for {@link StorageProviderModule}; syncs chunk resolvers on register. */
15
+ export function createStorageProviderRegistry(): StorageProviderRegistry {
16
+ const modules = new Map<string, StorageProviderModule>();
17
+
18
+ return {
19
+ register(module) {
20
+ modules.set(module.provider, module);
21
+ registerProviderChunkResolver(module);
22
+ },
23
+ get(provider) {
24
+ const found = modules.get(provider);
25
+ if (found == null) {
26
+ const available = [...modules.keys()].join(", ") || "(none)";
27
+ throw new Error(`Unknown storage provider: ${provider}. Registered: ${available}`);
28
+ }
29
+ return found;
30
+ },
31
+ has(provider) {
32
+ return modules.has(provider);
33
+ },
34
+ list() {
35
+ return [...modules.keys()];
36
+ },
37
+ async probeAll() {
38
+ const out: ProviderProbeMap = {};
39
+ for (const [name, module] of modules) {
40
+ if (module.probe == null) {
41
+ out[name] = { ok: true, detail: { skipped: true } };
42
+ continue;
43
+ }
44
+ out[name] = await module.probe();
45
+ }
46
+ return out;
47
+ },
48
+ };
49
+ }
@@ -0,0 +1,45 @@
1
+ import type { ChunkResolveProvider } from "./chunk-fetch-registry";
2
+ import type { Parcel } from "./parcel.interface";
3
+ import type { StorageAdapter } from "./parcel-manager";
4
+
5
+ export interface ProviderProbeOk {
6
+ ok: true;
7
+ detail?: Record<string, unknown>;
8
+ }
9
+
10
+ export interface ProviderProbeFail {
11
+ ok: false;
12
+ error: string;
13
+ }
14
+
15
+ export type ProviderProbeResult = ProviderProbeOk | ProviderProbeFail;
16
+
17
+ /** Best-effort rollback of partial uploads. */
18
+ export interface UploadTracker<THandle> {
19
+ readonly handles: THandle[];
20
+ push(handle: THandle): void;
21
+ }
22
+
23
+ export interface CreateUploadAdapterOptions {
24
+ /** Collect rollback handles during upload (partial-failure cleanup). */
25
+ tracker?: UploadTracker<unknown>;
26
+ }
27
+
28
+ /** Full storage backend module: upload, restore, probe, rollback. */
29
+ export interface StorageProviderModule extends ChunkResolveProvider {
30
+ createUploadAdapter(options?: CreateUploadAdapterOptions): StorageAdapter;
31
+ probe?(): Promise<ProviderProbeResult>;
32
+ rollbackUpload?(handles: unknown[]): Promise<void>;
33
+ /** Validate parcel before restore (provider mix, missing chunks). */
34
+ assertParcelRestorable?(parcel: Parcel): void;
35
+ }
36
+
37
+ export function createUploadTracker<THandle>(): UploadTracker<THandle> {
38
+ const handles: THandle[] = [];
39
+ return {
40
+ handles,
41
+ push(handle: THandle) {
42
+ handles.push(handle);
43
+ },
44
+ };
45
+ }
package/src/preload.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Node `--import` entry — `target-supabase-sdk/preload`
3
+ * @see .cursor/skills/service-preload/SKILL.md
4
+ */
5
+
6
+ export { runServicePreload } from "./node/preload/run-service-preload";
7
+ export type { ServicePreloadOptions } from "./node/preload/service-preload.interface";
@@ -31,15 +31,14 @@ export function isTaskRepoContext(value: unknown): value is TaskRepoContext {
31
31
  export function normalizeRepoContextModule(
32
32
  moduleExports: unknown,
33
33
  taskTypeKey: string,
34
- exportName?: string
34
+ exportName?: string,
35
35
  ): TaskRepoContext | null {
36
36
  if (moduleExports == null) {
37
37
  return null;
38
38
  }
39
39
 
40
40
  const record = moduleExports as Record<string, unknown>;
41
- const namedExport =
42
- exportName != null && exportName !== "" ? record[exportName] : undefined;
41
+ const namedExport = exportName != null && exportName !== "" ? record[exportName] : undefined;
43
42
  const defaultExport = record.default;
44
43
  const candidate = namedExport ?? defaultExport ?? moduleExports;
45
44
 
@@ -103,7 +102,7 @@ export function getScriptLoadKey(script: TaskRepoScriptRecord): string {
103
102
  }
104
103
 
105
104
  export function assertScriptLoadable(
106
- details: TaskRepoScriptDetails
105
+ details: TaskRepoScriptDetails,
107
106
  ): details is TaskRepoScriptDetails & ({ source: string } | { modulePath: string }) {
108
107
  const hasSource = details.source != null && details.source.trim() !== "";
109
108
  const hasModulePath = details.modulePath != null && details.modulePath.trim() !== "";
@@ -1,21 +1,11 @@
1
1
  import { getPossibleTarget } from "../core.api";
2
- import { SupabaseInitializer } from "../supabase";
3
- import { LoggerWithScope } from "../shared/log";
2
+ import type { LoggerWithScope } from "../shared/log";
3
+ import { supabase } from "../supabase";
4
4
  import type { TaskRepoContext, TaskRepoScriptRecord } from "../task/task-repo-context";
5
5
  import { TASK_REPO_SCRIPT_CATEGORY } from "../task/task-repo-context";
6
- import {
7
- assertScriptLoadable,
8
- isTaskRepoContext,
9
- pickEntryScript,
10
- } from "./repo-context.utils";
11
- import { CategoryRepo, Repo } from "./repo.interface";
12
- import {
13
- clearRepoScriptModuleCache,
14
- loadRepoContextFromScript,
15
- loadRepoContextFromUrl,
16
- } from "./repo.script-loader";
17
-
18
- const supabase = SupabaseInitializer.getInstance();
6
+ import { CategoryRepo, type Repo } from "./repo.interface";
7
+ import { clearRepoScriptModuleCache, loadRepoContextFromScript, loadRepoContextFromUrl } from "./repo.script-loader";
8
+ import { assertScriptLoadable, isTaskRepoContext, pickEntryScript } from "./repo-context.utils";
19
9
 
20
10
  type LocalRepoEntry =
21
11
  | { kind: "context"; context: TaskRepoContext }
@@ -82,7 +72,7 @@ async function fetchRemoteScripts(taskTypeKey: string): Promise<TaskRepoScriptRe
82
72
  async function loadLocalEntry(
83
73
  logger: LoggerWithScope,
84
74
  entry: LocalRepoEntry,
85
- taskTypeKey: string
75
+ taskTypeKey: string,
86
76
  ): Promise<TaskRepoContext | null> {
87
77
  if (entry.kind === "context") {
88
78
  return entry.context;
@@ -105,10 +95,7 @@ async function loadLocalEntry(
105
95
  return loaded?.context ?? null;
106
96
  }
107
97
 
108
- async function loadRemoteRepoContext(
109
- logger: LoggerWithScope,
110
- taskTypeKey: string
111
- ): Promise<GetRepoContextResult> {
98
+ async function loadRemoteRepoContext(logger: LoggerWithScope, taskTypeKey: string): Promise<GetRepoContextResult> {
112
99
  logger.info("從 Supabase 加載 Repo", { topic: "repo", data: { taskTypeKey } });
113
100
 
114
101
  const remoteRepo = await fetchRemoteRepo(taskTypeKey);
@@ -1,7 +1,7 @@
1
- import { scanTargetList, validateWithSchema } from "../core.api";
2
- import { generateResponse, SupabaseResponse } from "../core.interface";
3
1
  import { z } from "zod";
4
- import { CategoryRepo, Repo } from "./repo.interface";
2
+ import { scanTargetList, validateWithSchema } from "../core.api";
3
+ import { generateResponse, type SupabaseResponse } from "../core.interface";
4
+ import { CategoryRepo, type Repo } from "./repo.interface";
5
5
 
6
6
  const REPO_USAGE_FIELD = "details->>usage" as const;
7
7
 
@@ -16,7 +16,7 @@ export type GetScanRemoteRepoValuesPayload = z.infer<typeof getScanRemoteRepoVal
16
16
  * Returns `{ data: string[] }` on success; validation and DB failures use `{ error }` (never throws).
17
17
  */
18
18
  export const getScanRemoteRepoValues = async (
19
- payload: GetScanRemoteRepoValuesPayload
19
+ payload: GetScanRemoteRepoValuesPayload,
20
20
  ): Promise<SupabaseResponse<string[]>> => {
21
21
  try {
22
22
  return await getScanRemoteRepoValuesValidated(payload);
@@ -28,7 +28,7 @@ export const getScanRemoteRepoValues = async (
28
28
 
29
29
  const getScanRemoteRepoValuesValidated = validateWithSchema(
30
30
  getScanRemoteRepoValuesSchema,
31
- "getScanRemoteRepoValuesSchema"
31
+ "getScanRemoteRepoValuesSchema",
32
32
  )(async ({ usage }): Promise<SupabaseResponse<string[]>> => {
33
33
  try {
34
34
  const { data } = await scanTargetList<Repo>({
@@ -1,4 +1,4 @@
1
- import { Target } from "../core.interface";
1
+ import type { Target } from "../core.interface";
2
2
 
3
3
  export enum CategoryRepo {
4
4
  /** Project */
@@ -28,4 +28,3 @@ export interface RepoDetails {
28
28
  url: string;
29
29
  hash: string;
30
30
  }
31
-
@@ -1,16 +1,12 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { mkdir, writeFile } from "node:fs/promises";
3
- import { join, resolve } from "node:path";
4
3
  import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
5
 
6
- import { LoggerWithScope } from "../shared/log";
6
+ import type { LoggerWithScope } from "../shared/log";
7
7
  import { resolvePathFromCwd, toFileImportHref } from "../shared/utils/config-path.utils";
8
- import { TaskRepoScriptRecord } from "../task/task-repo-context";
9
- import {
10
- getScriptLoadKey,
11
- LoadedRepoContext,
12
- normalizeRepoContextModule,
13
- } from "./repo-context.utils";
8
+ import type { TaskRepoScriptRecord } from "../task/task-repo-context";
9
+ import { getScriptLoadKey, type LoadedRepoContext, normalizeRepoContextModule } from "./repo-context.utils";
14
10
 
15
11
  const importedModuleCache = new Map<string, LoadedRepoContext>();
16
12
 
@@ -1,97 +1,88 @@
1
- import { Target } from "../core.interface";
2
-
3
- export enum LifecycleStatus {
4
- ACTIVE = "ACTIVE",
5
- DEPRECATED = "DEPRECATED",
6
- SUNSET = "SUNSET",
7
- }
8
-
9
- export interface Lifecycle {
10
- status: LifecycleStatus;
11
- /** YYYY-MM-DD */
12
- activeSince: string;
13
- deprecatedAt: string | null;
14
- sunsetAt: string | null;
1
+ export enum ServiceLifecycleStatus {
2
+ ACTIVE = "ACTIVE",
3
+ DEPRECATED = "DEPRECATED",
4
+ SUNSET = "SUNSET",
15
5
  }
16
6
 
17
- export type Field =
18
- | {
19
- type: "string";
20
- nullable: boolean;
21
- required: boolean;
22
- /** 1 */
23
- minLength: number;
24
- /** 64 */
25
- maxLength: number;
26
- /** ^[a-z0-9_-]+$ */
27
- pattern: string;
28
- }
29
- | {
30
- type: "number";
31
- nullable: boolean;
32
- required: boolean;
33
- /** 1 */
34
- minimum: number;
35
- /** 64 */
36
- maximum: number;
37
- }
38
- | {
39
- type: "boolean";
40
- nullable: boolean;
41
- required: boolean;
42
- }
43
- | {
44
- type: "enum";
45
- nullable: boolean;
46
- required: boolean;
47
- /** 'core.Gender.0' */
48
- enumKey: string;
49
- }
50
- | {
51
- type: "array";
52
- nullable: boolean;
53
- required: boolean;
54
- /** 'string'|'number'|'boolean'|'enum.enumKey'|'ref.refKey' */
55
- itemType: string;
56
- }
57
- | {
58
- /** Object */
59
- type: "ref";
60
- nullable: boolean;
61
- required: boolean;
62
- /** 'core.QuestionReview.0' */
63
- refKey: string;
64
- };
65
-
66
-
67
- export interface TargetDescriptor extends Target {
68
- /** "core.QuestionReview.0" 唯一键 领域 + targetName + VERSION */
69
- value: string;
70
- category: 'target-descriptor';
71
- details: TargetDescriptorDetails;
7
+ export interface ServiceLifecycle {
8
+ status: ServiceLifecycleStatus;
9
+ /** YYYY-MM-DD */
10
+ activeSince: string;
11
+ deprecatedAt: string | null;
12
+ sunsetAt: string | null;
72
13
  }
73
14
 
74
- export interface TargetDescriptorDetails {
75
- list: Array<{
76
- name: string;
77
- } & Field>;
78
- refMap?: Record<string, TargetDescriptor>;
79
- enumMap?: Record<string, string[]>;
80
- manifestVersion: number;
81
- }
82
-
83
- export interface EnumDescriptor extends Target {
84
- /** "core.Gender.0" 唯一键 领域 + enumName + VERSION */
85
- value: string;
86
- category: 'target-descriptor';
87
- details: EnumDescriptorDetails;
88
- }
89
-
90
- export interface EnumDescriptorDetails {
91
- list: Array<{
15
+ /** Inline enum members (no registry lookup). */
16
+ export type EnumMembers = ReadonlyArray<{
92
17
  key: string;
93
18
  value: string;
94
- }>;
95
- manifestVersion: number;
96
- }
19
+ }>;
20
+
21
+ /**
22
+ * Schema node without a field name — used for array items and anonymous nesting.
23
+ * Named properties use {@link FieldDefinition} (`fieldName` + `SchemaDefinition`).
24
+ */
25
+ export type SchemaDefinition =
26
+ | {
27
+ type: "string";
28
+ nullable: boolean;
29
+ optional: boolean;
30
+ /** string length */
31
+ min?: number;
32
+ /** string length */
33
+ max?: number;
34
+ /** e.g. ^[a-z0-9_-]+$ */
35
+ regex?: string;
36
+ default?: string;
37
+ }
38
+ | {
39
+ type: "number";
40
+ nullable: boolean;
41
+ optional: boolean;
42
+ min?: number;
43
+ max?: number;
44
+ default?: number;
45
+ }
46
+ | {
47
+ type: "boolean";
48
+ nullable: boolean;
49
+ optional: boolean;
50
+ default?: boolean;
51
+ }
52
+ | {
53
+ type: "unknown";
54
+ nullable: boolean;
55
+ optional: boolean;
56
+ default?: unknown;
57
+ }
58
+ | {
59
+ type: "enum";
60
+ nullable: boolean;
61
+ optional: boolean;
62
+ members: EnumMembers;
63
+ /** Must match a `members[].key` */
64
+ defaultKey?: string;
65
+ }
66
+ | {
67
+ type: "object";
68
+ nullable: boolean;
69
+ optional: boolean;
70
+ fields: FieldDefinition[];
71
+ default?: Record<string, unknown>;
72
+ }
73
+ | {
74
+ type: "array";
75
+ nullable: boolean;
76
+ optional: boolean;
77
+ items: SchemaDefinition;
78
+ /** min/max item count */
79
+ min?: number;
80
+ max?: number;
81
+ default?: unknown;
82
+ };
97
83
 
84
+ /**
85
+ * Named field schema. `fieldName` is required for introspection (walk paths, docs, forms).
86
+ * Use `fields: FieldDefinition[]` — not `Record<string, …>` — so the name has a single source of truth.
87
+ */
88
+ export type FieldDefinition = { fieldName: string } & SchemaDefinition;