@aurabase/aurabase-js 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/.changeset/config.json +11 -0
  2. package/CHANGELOG.md +30 -0
  3. package/LICENSE +21 -0
  4. package/README.md +833 -0
  5. package/package.json +90 -0
  6. package/packages/ai/LICENSE +21 -0
  7. package/packages/ai/README.md +106 -0
  8. package/packages/ai/dist/index.cjs +229 -0
  9. package/packages/ai/dist/index.d.cts +139 -0
  10. package/packages/ai/dist/index.d.ts +139 -0
  11. package/packages/ai/dist/index.js +226 -0
  12. package/packages/ai/node_modules/.bin/esbuild +19 -0
  13. package/packages/ai/node_modules/.bin/tsc +22 -0
  14. package/packages/ai/node_modules/.bin/tsserver +22 -0
  15. package/packages/ai/node_modules/.bin/tsup +22 -0
  16. package/packages/ai/node_modules/.bin/tsup-node +22 -0
  17. package/packages/ai/node_modules/.bin/vite +22 -0
  18. package/packages/ai/node_modules/.bin/vitest +22 -0
  19. package/packages/ai/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  20. package/packages/ai/package.json +61 -0
  21. package/packages/ai/src/AiService.ts +226 -0
  22. package/packages/ai/src/index.ts +18 -0
  23. package/packages/ai/src/sse.ts +141 -0
  24. package/packages/ai/src/types.ts +30 -0
  25. package/packages/ai/tests/chat-stream.test.ts +151 -0
  26. package/packages/ai/tests/rag-namespaces.test.ts +54 -0
  27. package/packages/ai/tests/sse.test.ts +69 -0
  28. package/packages/ai/tsconfig.json +5 -0
  29. package/packages/ai/tsup.config.ts +11 -0
  30. package/packages/aurabase/LICENSE +21 -0
  31. package/packages/aurabase/README.md +64 -0
  32. package/packages/aurabase/dist/AuraClient-DAtDbfPB.d.cts +77 -0
  33. package/packages/aurabase/dist/AuraClient-DAtDbfPB.d.ts +77 -0
  34. package/packages/aurabase/dist/index.cjs +237 -0
  35. package/packages/aurabase/dist/index.d.cts +46 -0
  36. package/packages/aurabase/dist/index.d.ts +46 -0
  37. package/packages/aurabase/dist/index.js +177 -0
  38. package/packages/aurabase/dist/ssr.cjs +224 -0
  39. package/packages/aurabase/dist/ssr.d.cts +65 -0
  40. package/packages/aurabase/dist/ssr.d.ts +65 -0
  41. package/packages/aurabase/dist/ssr.js +214 -0
  42. package/packages/aurabase/node_modules/.bin/esbuild +19 -0
  43. package/packages/aurabase/node_modules/.bin/tsc +22 -0
  44. package/packages/aurabase/node_modules/.bin/tsserver +22 -0
  45. package/packages/aurabase/node_modules/.bin/tsup +22 -0
  46. package/packages/aurabase/node_modules/.bin/tsup-node +22 -0
  47. package/packages/aurabase/node_modules/.bin/vite +22 -0
  48. package/packages/aurabase/node_modules/.bin/vitest +22 -0
  49. package/packages/aurabase/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  50. package/packages/aurabase/package.json +80 -0
  51. package/packages/aurabase/src/AuraClient.ts +237 -0
  52. package/packages/aurabase/src/index.ts +152 -0
  53. package/packages/aurabase/src/ssr.ts +156 -0
  54. package/packages/aurabase/tests/ai-streaming-rag-e2e.test.ts +82 -0
  55. package/packages/aurabase/tests/ai.test.ts +111 -0
  56. package/packages/aurabase/tests/auth-admin.test.ts +515 -0
  57. package/packages/aurabase/tests/auth-e2e.test.ts +135 -0
  58. package/packages/aurabase/tests/auth-hardening.test.ts +206 -0
  59. package/packages/aurabase/tests/auth.test.ts +947 -0
  60. package/packages/aurabase/tests/database.test.ts +230 -0
  61. package/packages/aurabase/tests/db-types-e2e.test.ts +217 -0
  62. package/packages/aurabase/tests/dispose.test.ts +23 -0
  63. package/packages/aurabase/tests/foreign-token.e2e.test.ts +129 -0
  64. package/packages/aurabase/tests/functions.test.ts +107 -0
  65. package/packages/aurabase/tests/integration.test.ts +413 -0
  66. package/packages/aurabase/tests/live-production-validation.js +241 -0
  67. package/packages/aurabase/tests/live-sdk-production-validation.js +293 -0
  68. package/packages/aurabase/tests/mocks.ts +139 -0
  69. package/packages/aurabase/tests/notifications.test.ts +314 -0
  70. package/packages/aurabase/tests/observability-backup.test.ts +186 -0
  71. package/packages/aurabase/tests/observability-hook.test.ts +130 -0
  72. package/packages/aurabase/tests/production-robustness.test.ts +268 -0
  73. package/packages/aurabase/tests/public-api-surface.test.ts +53 -0
  74. package/packages/aurabase/tests/query-builder.test.ts +329 -0
  75. package/packages/aurabase/tests/readme-smoke-e2e.test.ts +231 -0
  76. package/packages/aurabase/tests/realtime-filter-e2e.test.ts +344 -0
  77. package/packages/aurabase/tests/refresh-locks.test.ts +210 -0
  78. package/packages/aurabase/tests/retry-option.test.ts +17 -0
  79. package/packages/aurabase/tests/rpc-e2e.test.ts +254 -0
  80. package/packages/aurabase/tests/rs256-local-e2e.test.ts +114 -0
  81. package/packages/aurabase/tests/rt-alias-public-e2e.test.ts +235 -0
  82. package/packages/aurabase/tests/rt-http-broadcast-e2e.test.ts +124 -0
  83. package/packages/aurabase/tests/service-role-guard.test.ts +99 -0
  84. package/packages/aurabase/tests/ssr.test.ts +91 -0
  85. package/packages/aurabase/tests/storage-backend-e2e.test.ts +481 -0
  86. package/packages/aurabase/tests/storage-sdk-parity-e2e.test.ts +104 -0
  87. package/packages/aurabase/tests/storage-transform-e2e.test.ts +684 -0
  88. package/packages/aurabase/tests/storage.test.ts +55 -0
  89. package/packages/aurabase/tests/types/client-generic.test-d.ts +79 -0
  90. package/packages/aurabase/tests/types/docs-snippets.test-d.ts +571 -0
  91. package/packages/aurabase/tests/types/error-code.test-d.ts +53 -0
  92. package/packages/aurabase/tsconfig.json +5 -0
  93. package/packages/aurabase/tsconfig.test-d.json +5 -0
  94. package/packages/aurabase/tsup.config.ts +11 -0
  95. package/packages/aurabase/vitest.config.ts +16 -0
  96. package/packages/aurabase/vitest.e2e.config.ts +9 -0
  97. package/packages/auth/LICENSE +21 -0
  98. package/packages/auth/README.md +215 -0
  99. package/packages/auth/dist/index.cjs +1175 -0
  100. package/packages/auth/dist/index.d.cts +397 -0
  101. package/packages/auth/dist/index.d.ts +397 -0
  102. package/packages/auth/dist/index.js +1170 -0
  103. package/packages/auth/node_modules/.bin/esbuild +19 -0
  104. package/packages/auth/node_modules/.bin/tsc +22 -0
  105. package/packages/auth/node_modules/.bin/tsserver +22 -0
  106. package/packages/auth/node_modules/.bin/tsup +22 -0
  107. package/packages/auth/node_modules/.bin/tsup-node +22 -0
  108. package/packages/auth/node_modules/.bin/vite +22 -0
  109. package/packages/auth/node_modules/.bin/vitest +22 -0
  110. package/packages/auth/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  111. package/packages/auth/package.json +61 -0
  112. package/packages/auth/src/AuthAdminService.ts +149 -0
  113. package/packages/auth/src/AuthService.ts +1166 -0
  114. package/packages/auth/src/SessionManager.ts +92 -0
  115. package/packages/auth/src/index.ts +17 -0
  116. package/packages/auth/src/jwks.ts +337 -0
  117. package/packages/auth/src/pkce.ts +27 -0
  118. package/packages/auth/src/types.ts +89 -0
  119. package/packages/auth/tests/auth-lifecycle.test.ts +149 -0
  120. package/packages/auth/tests/detect-session.test.ts +361 -0
  121. package/packages/auth/tests/getclaims.test.ts +780 -0
  122. package/packages/auth/tests/is-mfa-challenge.test.ts +27 -0
  123. package/packages/auth/tests/password-recovery.test.ts +124 -0
  124. package/packages/auth/tests/pkce.test.ts +192 -0
  125. package/packages/auth/tests/session-manager.test.ts +103 -0
  126. package/packages/auth/tests/set-session.test.ts +139 -0
  127. package/packages/auth/tests/verify-otp.test.ts +153 -0
  128. package/packages/auth/tsconfig.json +5 -0
  129. package/packages/auth/tsup.config.ts +11 -0
  130. package/packages/core/LICENSE +21 -0
  131. package/packages/core/README.md +132 -0
  132. package/packages/core/dist/index.cjs +695 -0
  133. package/packages/core/dist/index.d.cts +1137 -0
  134. package/packages/core/dist/index.d.ts +1137 -0
  135. package/packages/core/dist/index.js +673 -0
  136. package/packages/core/node_modules/.bin/esbuild +22 -0
  137. package/packages/core/node_modules/.bin/tsc +22 -0
  138. package/packages/core/node_modules/.bin/tsserver +22 -0
  139. package/packages/core/node_modules/.bin/tsup +22 -0
  140. package/packages/core/node_modules/.bin/tsup-node +22 -0
  141. package/packages/core/node_modules/.bin/vite +22 -0
  142. package/packages/core/node_modules/.bin/vitest +22 -0
  143. package/packages/core/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  144. package/packages/core/package.json +57 -0
  145. package/packages/core/src/AuraError.ts +89 -0
  146. package/packages/core/src/BaseService.ts +44 -0
  147. package/packages/core/src/client.ts +34 -0
  148. package/packages/core/src/cookie-utils.ts +42 -0
  149. package/packages/core/src/fetch.ts +435 -0
  150. package/packages/core/src/index.ts +22 -0
  151. package/packages/core/src/retry.ts +63 -0
  152. package/packages/core/src/serialize.ts +6 -0
  153. package/packages/core/src/stores/BaseAuthStore.ts +164 -0
  154. package/packages/core/src/stores/LocalAuthStore.ts +199 -0
  155. package/packages/core/src/types.ts +1042 -0
  156. package/packages/core/tests/auth-store.test.ts +300 -0
  157. package/packages/core/tests/error-code.test.ts +61 -0
  158. package/packages/core/tests/error.test.ts +24 -0
  159. package/packages/core/tests/fetch.test.ts +286 -0
  160. package/packages/core/tests/mocks.ts +139 -0
  161. package/packages/core/tests/observability.test.ts +86 -0
  162. package/packages/core/tests/refresh-hardening.test.ts +164 -0
  163. package/packages/core/tests/refresh-observability.test.ts +111 -0
  164. package/packages/core/tests/retry.test.ts +106 -0
  165. package/packages/core/tests/serialize.test.ts +12 -0
  166. package/packages/core/tests/timeout.test.ts +79 -0
  167. package/packages/core/tsconfig.json +5 -0
  168. package/packages/core/tsup.config.ts +11 -0
  169. package/packages/db/LICENSE +21 -0
  170. package/packages/db/README.md +152 -0
  171. package/packages/db/VENDORED.md +93 -0
  172. package/packages/db/dist/index.cjs +544 -0
  173. package/packages/db/dist/index.d.cts +1111 -0
  174. package/packages/db/dist/index.d.ts +1111 -0
  175. package/packages/db/dist/index.js +541 -0
  176. package/packages/db/node_modules/.bin/esbuild +19 -0
  177. package/packages/db/node_modules/.bin/tsc +22 -0
  178. package/packages/db/node_modules/.bin/tsserver +22 -0
  179. package/packages/db/node_modules/.bin/tsup +22 -0
  180. package/packages/db/node_modules/.bin/tsup-node +22 -0
  181. package/packages/db/node_modules/.bin/vite +22 -0
  182. package/packages/db/node_modules/.bin/vitest +22 -0
  183. package/packages/db/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  184. package/packages/db/package.json +62 -0
  185. package/packages/db/src/DatabaseService.ts +170 -0
  186. package/packages/db/src/QueryBuilder.ts +830 -0
  187. package/packages/db/src/index.ts +2 -0
  188. package/packages/db/src/pgrst-types/common/common.ts +86 -0
  189. package/packages/db/src/pgrst-types/common/rpc.ts +151 -0
  190. package/packages/db/src/pgrst-types/feature-flags.ts +20 -0
  191. package/packages/db/src/pgrst-types/types.ts +134 -0
  192. package/packages/db/src/select-query-parser/parser.ts +479 -0
  193. package/packages/db/src/select-query-parser/result.ts +553 -0
  194. package/packages/db/src/select-query-parser/types.ts +132 -0
  195. package/packages/db/src/select-query-parser/utils.ts +707 -0
  196. package/packages/db/tests/filters.test.ts +81 -0
  197. package/packages/db/tests/mutations-filtered.e2e.test.ts +132 -0
  198. package/packages/db/tests/mutations-filtered.test.ts +188 -0
  199. package/packages/db/tests/order.test.ts +45 -0
  200. package/packages/db/tests/rpc.test.ts +41 -0
  201. package/packages/db/tests/scale/build-large-schema.ts +94 -0
  202. package/packages/db/tests/scale/scale-compile.test.ts +167 -0
  203. package/packages/db/tests/schema.test.ts +77 -0
  204. package/packages/db/tests/single-accept.e2e.test.ts +123 -0
  205. package/packages/db/tests/single.test.ts +211 -0
  206. package/packages/db/tests/types/filters.test-d.ts +52 -0
  207. package/packages/db/tests/types/fixtures.ts +40 -0
  208. package/packages/db/tests/types/from-views.test-d.ts +18 -0
  209. package/packages/db/tests/types/mutations.test-d.ts +23 -0
  210. package/packages/db/tests/types/rpc.test-d.ts +60 -0
  211. package/packages/db/tests/types/schema-shape.test-d.ts +8 -0
  212. package/packages/db/tests/types/select-inference.test-d.ts +38 -0
  213. package/packages/db/tests/vendored/fixtures.ts +83 -0
  214. package/packages/db/tests/vendored/get-result.test-d.ts +75 -0
  215. package/packages/db/tsconfig.json +5 -0
  216. package/packages/db/tsconfig.test-d.json +5 -0
  217. package/packages/db/tsup.config.ts +11 -0
  218. package/packages/db/vitest.config.ts +8 -0
  219. package/packages/functions/LICENSE +21 -0
  220. package/packages/functions/README.md +96 -0
  221. package/packages/functions/dist/index.cjs +173 -0
  222. package/packages/functions/dist/index.d.cts +81 -0
  223. package/packages/functions/dist/index.d.ts +81 -0
  224. package/packages/functions/dist/index.js +168 -0
  225. package/packages/functions/node_modules/.bin/esbuild +19 -0
  226. package/packages/functions/node_modules/.bin/tsc +22 -0
  227. package/packages/functions/node_modules/.bin/tsserver +22 -0
  228. package/packages/functions/node_modules/.bin/tsup +22 -0
  229. package/packages/functions/node_modules/.bin/tsup-node +22 -0
  230. package/packages/functions/node_modules/.bin/vite +22 -0
  231. package/packages/functions/node_modules/.bin/vitest +22 -0
  232. package/packages/functions/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  233. package/packages/functions/package.json +60 -0
  234. package/packages/functions/src/FunctionsService.ts +188 -0
  235. package/packages/functions/src/errors.ts +70 -0
  236. package/packages/functions/src/index.ts +6 -0
  237. package/packages/functions/tests/invoke.test.ts +97 -0
  238. package/packages/functions/tests/response-type-errors.test.ts +135 -0
  239. package/packages/functions/tsconfig.json +5 -0
  240. package/packages/functions/tsup.config.ts +11 -0
  241. package/packages/gen/LICENSE +21 -0
  242. package/packages/gen/README.md +84 -0
  243. package/packages/gen/dist/cli.cjs +334 -0
  244. package/packages/gen/dist/cli.d.cts +1 -0
  245. package/packages/gen/dist/cli.d.ts +1 -0
  246. package/packages/gen/dist/cli.js +332 -0
  247. package/packages/gen/dist/index.cjs +257 -0
  248. package/packages/gen/dist/index.d.cts +12 -0
  249. package/packages/gen/dist/index.d.ts +12 -0
  250. package/packages/gen/dist/index.js +255 -0
  251. package/packages/gen/node_modules/.bin/esbuild +19 -0
  252. package/packages/gen/node_modules/.bin/tsc +22 -0
  253. package/packages/gen/node_modules/.bin/tsserver +22 -0
  254. package/packages/gen/node_modules/.bin/tsup +22 -0
  255. package/packages/gen/node_modules/.bin/tsup-node +22 -0
  256. package/packages/gen/node_modules/.bin/vite +22 -0
  257. package/packages/gen/node_modules/.bin/vitest +22 -0
  258. package/packages/gen/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  259. package/packages/gen/package.json +66 -0
  260. package/packages/gen/src/cli.ts +67 -0
  261. package/packages/gen/src/generate.ts +0 -0
  262. package/packages/gen/src/index.ts +2 -0
  263. package/packages/gen/tests/compile.test.ts +213 -0
  264. package/packages/gen/tests/e2e.test.ts +130 -0
  265. package/packages/gen/tests/generate.test.ts +396 -0
  266. package/packages/gen/tsconfig.json +5 -0
  267. package/packages/gen/tsup.config.ts +11 -0
  268. package/packages/notifications/LICENSE +21 -0
  269. package/packages/notifications/README.md +134 -0
  270. package/packages/notifications/dist/index.cjs +128 -0
  271. package/packages/notifications/dist/index.d.cts +81 -0
  272. package/packages/notifications/dist/index.d.ts +81 -0
  273. package/packages/notifications/dist/index.js +125 -0
  274. package/packages/notifications/node_modules/.bin/esbuild +19 -0
  275. package/packages/notifications/node_modules/.bin/tsc +22 -0
  276. package/packages/notifications/node_modules/.bin/tsserver +22 -0
  277. package/packages/notifications/node_modules/.bin/tsup +22 -0
  278. package/packages/notifications/node_modules/.bin/tsup-node +22 -0
  279. package/packages/notifications/node_modules/.bin/vite +22 -0
  280. package/packages/notifications/node_modules/.bin/vitest +22 -0
  281. package/packages/notifications/package.json +60 -0
  282. package/packages/notifications/src/NotificationsService.ts +230 -0
  283. package/packages/notifications/src/index.ts +19 -0
  284. package/packages/notifications/tsconfig.json +5 -0
  285. package/packages/notifications/tsup.config.ts +11 -0
  286. package/packages/realtime/LICENSE +21 -0
  287. package/packages/realtime/README.md +183 -0
  288. package/packages/realtime/dist/index.cjs +977 -0
  289. package/packages/realtime/dist/index.d.cts +259 -0
  290. package/packages/realtime/dist/index.d.ts +259 -0
  291. package/packages/realtime/dist/index.js +973 -0
  292. package/packages/realtime/node_modules/.bin/esbuild +19 -0
  293. package/packages/realtime/node_modules/.bin/tsc +22 -0
  294. package/packages/realtime/node_modules/.bin/tsserver +22 -0
  295. package/packages/realtime/node_modules/.bin/tsup +22 -0
  296. package/packages/realtime/node_modules/.bin/tsup-node +22 -0
  297. package/packages/realtime/node_modules/.bin/vite +22 -0
  298. package/packages/realtime/node_modules/.bin/vitest +22 -0
  299. package/packages/realtime/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  300. package/packages/realtime/package.json +60 -0
  301. package/packages/realtime/src/AuraChannel.ts +485 -0
  302. package/packages/realtime/src/HeartbeatManager.ts +73 -0
  303. package/packages/realtime/src/RealtimeService.ts +505 -0
  304. package/packages/realtime/src/columnFilter.ts +301 -0
  305. package/packages/realtime/src/index.ts +4 -0
  306. package/packages/realtime/tests/ack-routing.test.ts +81 -0
  307. package/packages/realtime/tests/column-filter.test.ts +144 -0
  308. package/packages/realtime/tests/dispatch.test.ts +191 -0
  309. package/packages/realtime/tests/heartbeat.test.ts +67 -0
  310. package/packages/realtime/tests/http-broadcast.test.ts +68 -0
  311. package/packages/realtime/tests/realtime-token.test.ts +43 -0
  312. package/packages/realtime/tests/reconnect-race.test.ts +149 -0
  313. package/packages/realtime/tests/ref-id.test.ts +34 -0
  314. package/packages/realtime/tests/set-auth.test.ts +70 -0
  315. package/packages/realtime/tsconfig.json +5 -0
  316. package/packages/realtime/tsup.config.ts +11 -0
  317. package/packages/storage/LICENSE +21 -0
  318. package/packages/storage/README.md +141 -0
  319. package/packages/storage/dist/index.cjs +333 -0
  320. package/packages/storage/dist/index.d.cts +185 -0
  321. package/packages/storage/dist/index.d.ts +185 -0
  322. package/packages/storage/dist/index.js +329 -0
  323. package/packages/storage/node_modules/.bin/esbuild +19 -0
  324. package/packages/storage/node_modules/.bin/tsc +22 -0
  325. package/packages/storage/node_modules/.bin/tsserver +22 -0
  326. package/packages/storage/node_modules/.bin/tsup +22 -0
  327. package/packages/storage/node_modules/.bin/tsup-node +22 -0
  328. package/packages/storage/node_modules/.bin/vite +22 -0
  329. package/packages/storage/node_modules/.bin/vitest +22 -0
  330. package/packages/storage/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  331. package/packages/storage/package.json +60 -0
  332. package/packages/storage/src/DownloadBuilder.ts +60 -0
  333. package/packages/storage/src/StorageService.ts +323 -0
  334. package/packages/storage/src/index.ts +2 -0
  335. package/packages/storage/src/path.ts +35 -0
  336. package/packages/storage/src/transform.ts +15 -0
  337. package/packages/storage/tests/download.test.ts +64 -0
  338. package/packages/storage/tests/parity.test.ts +154 -0
  339. package/packages/storage/tests/path.test.ts +87 -0
  340. package/packages/storage/tests/transform.test.ts +79 -0
  341. package/packages/storage/tsconfig.json +5 -0
  342. package/packages/storage/tsup.config.ts +11 -0
  343. package/pnpm-workspace.yaml +24 -0
  344. package/tsconfig.base.json +15 -0
@@ -0,0 +1,185 @@
1
+ import { AuraResponse, BaseService, AuraClientLike, StorageBucket, UploadResult, ImageTransform, FileEntry, ObjectMeta, AuraError } from '@aurabase/core';
2
+
3
+ type DownloadFn = () => Promise<Response>;
4
+ /** Download paresseux (Blob par défaut). La requête ne part qu'à l'await ; résultat mémoïsé. */
5
+ declare class BlobDownloadBuilder implements PromiseLike<AuraResponse<Blob>> {
6
+ private readonly _fn;
7
+ private _promise;
8
+ constructor(_fn: DownloadFn);
9
+ asStream(): StreamDownloadBuilder;
10
+ private _run;
11
+ then<TR1 = AuraResponse<Blob>, TR2 = never>(onfulfilled?: ((v: AuraResponse<Blob>) => TR1 | PromiseLike<TR1>) | null, onrejected?: ((e: unknown) => TR2 | PromiseLike<TR2>) | null): Promise<TR1 | TR2>;
12
+ }
13
+ /** Variante flux — `res.body` (ReadableStream). */
14
+ declare class StreamDownloadBuilder implements PromiseLike<AuraResponse<ReadableStream<Uint8Array>>> {
15
+ private readonly _fn;
16
+ private _promise;
17
+ constructor(_fn: DownloadFn);
18
+ private _run;
19
+ then<TR1 = AuraResponse<ReadableStream<Uint8Array>>, TR2 = never>(onfulfilled?: ((v: AuraResponse<ReadableStream<Uint8Array>>) => TR1 | PromiseLike<TR1>) | null, onrejected?: ((e: unknown) => TR2 | PromiseLike<TR2>) | null): Promise<TR1 | TR2>;
20
+ }
21
+
22
+ declare class StorageService extends BaseService {
23
+ constructor(client: AuraClientLike);
24
+ private get prefix();
25
+ listBuckets(): Promise<AuraResponse<StorageBucket[]>>;
26
+ getBucket(id: string): Promise<AuraResponse<StorageBucket>>;
27
+ createBucket(name: string, options?: {
28
+ public?: boolean;
29
+ fileSizeLimit?: number;
30
+ allowedMimeTypes?: string[];
31
+ }): Promise<AuraResponse<StorageBucket>>;
32
+ /**
33
+ * Met à jour un bucket existant (mise à jour PARTIELLE : seuls les champs
34
+ * fournis sont envoyés). Mapping identique à `createBucket`
35
+ * (`public`/`file_size_limit`/`allowed_mime_types`).
36
+ *
37
+ * Backend route: PATCH /v1/storage/{project_id}/buckets/{id}
38
+ */
39
+ updateBucket(id: string, options?: {
40
+ public?: boolean;
41
+ fileSizeLimit?: number;
42
+ allowedMimeTypes?: string[];
43
+ }): Promise<AuraResponse<StorageBucket>>;
44
+ deleteBucket(id: string): Promise<AuraResponse<null>>;
45
+ /**
46
+ * Upload a file to a bucket.
47
+ *
48
+ * Le serveur génère une clé unique `<uuid>.<ext>` (relative au bucket).
49
+ * Réutilisez directement `data.key` pour download(), remove(), copy(), etc.
50
+ *
51
+ * @example
52
+ * const { data } = await client.storage.upload('avatars', 'photo.png', file)
53
+ * await client.storage.download('avatars', data!.key) // fonctionne directement
54
+ *
55
+ * Backend route: POST /v1/storage/{project_id}/{bucket}
56
+ */
57
+ upload(bucketId: string, path: string, file: Blob | File | ArrayBuffer, options?: {
58
+ contentType?: string;
59
+ upsert?: boolean;
60
+ metadata?: Record<string, string>;
61
+ }): Promise<AuraResponse<UploadResult>>;
62
+ /**
63
+ * Download paresseux d'un fichier. Renvoie un builder (Blob par défaut, `.asStream()` pour
64
+ * le flux) ; la requête part à l'`await`. Refresh proactif du token avant la requête.
65
+ * `options?.transform` (image) : appende `renderTransformParams(...)` à l'URL — figée à
66
+ * l'appel, le builder reste inchangé.
67
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/{*key}
68
+ */
69
+ download(bucketId: string, path: string, options?: {
70
+ transform?: ImageTransform;
71
+ }): BlobDownloadBuilder;
72
+ /**
73
+ * List files in a bucket.
74
+ *
75
+ * ⚠️ `offset` n'est PAS supporté par le backend (`ListQuery` ne connaît que
76
+ * `prefix`+`limit`) : le paramètre est accepté pour compatibilité ascendante
77
+ * mais IGNORÉ (jamais envoyé au serveur). Pour restreindre les résultats,
78
+ * utilisez `prefix`. La vraie pagination (continuation token) relève du backend.
79
+ *
80
+ * Backend route: GET /v1/storage/{project_id}/{bucket}
81
+ */
82
+ list(bucketId: string, options?: {
83
+ prefix?: string;
84
+ limit?: number;
85
+ offset?: number;
86
+ }): Promise<AuraResponse<FileEntry[]>>;
87
+ /**
88
+ * Delete one or more files from a bucket.
89
+ * Backend route: DELETE /v1/storage/{project_id}/{bucket}/{*key}
90
+ * Note: for single file deletion, paths[0] is used. Multi-delete is done in sequence.
91
+ */
92
+ remove(bucketId: string, paths: string[]): Promise<AuraResponse<null>>;
93
+ /**
94
+ * Copy a file within a bucket.
95
+ *
96
+ * `fromPath`/`toPath` sont relatifs au bucket (cohérent avec `download`/
97
+ * `remove`/`upload`) — le SDK les préfixe par `bucketId` pour produire les
98
+ * clés MinIO complètes attendues par le backend.
99
+ *
100
+ * Backend route: POST /v1/storage/{project_id}/{bucket}/copy
101
+ */
102
+ copy(bucketId: string, fromPath: string, toPath: string): Promise<AuraResponse<{
103
+ key: string;
104
+ }>>;
105
+ /**
106
+ * Move/rename a file within a bucket.
107
+ *
108
+ * `fromPath`/`toPath` sont relatifs au bucket (cohérent avec `download`/
109
+ * `remove`/`upload`) — le SDK les préfixe par `bucketId` pour produire les
110
+ * clés MinIO complètes attendues par le backend.
111
+ *
112
+ * Backend route: POST /v1/storage/{project_id}/{bucket}/move
113
+ */
114
+ move(bucketId: string, fromPath: string, toPath: string): Promise<AuraResponse<{
115
+ key: string;
116
+ }>>;
117
+ /**
118
+ * Get file metadata.
119
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/meta/{*key}
120
+ */
121
+ getMetadata(bucketId: string, path: string): Promise<AuraResponse<ObjectMeta>>;
122
+ /**
123
+ * Generate a signed (temporary) download URL.
124
+ *
125
+ * `options?.transform` (image) : dérisqué en réel (stack live) — les params transform
126
+ * sont HORS HMAC (le backend ne les couvre pas dans la signature), donc on les appende
127
+ * à l'URL signée APRÈS réception de `{ url, expires_in }`, sans toucher à la requête
128
+ * `signed-url` elle-même.
129
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/signed-url?key=...&ttl_secs=...
130
+ */
131
+ createSignedUrl(bucketId: string, path: string, expiresInSeconds?: number, options?: {
132
+ transform?: ImageTransform;
133
+ }): Promise<AuraResponse<{
134
+ url: string;
135
+ expires_in: number;
136
+ }>>;
137
+ /**
138
+ * Génère plusieurs URLs signées en une passe (batch).
139
+ *
140
+ * Il n'existe pas d'endpoint batch côté backend : l'implémentation fait un
141
+ * fan-out `Promise.all` sur `createSignedUrl` (même patron que `remove()`),
142
+ * RÉSILIENT PAR-ITEM — chaque entrée est soit `{ path, url, expires_in }`
143
+ * (succès), soit `{ path, error }` (échec), sans faire échouer les autres.
144
+ *
145
+ * @example
146
+ * const { data } = await client.storage.createSignedUrls('avatars', ['a.png', 'b.png'])
147
+ * data?.forEach((r) => 'url' in r ? use(r.url) : console.warn(r.path, r.error))
148
+ */
149
+ createSignedUrls(bucketId: string, paths: string[], expiresInSeconds?: number, options?: {
150
+ transform?: ImageTransform;
151
+ }): Promise<AuraResponse<Array<{
152
+ path: string;
153
+ url: string;
154
+ expires_in: number;
155
+ } | {
156
+ path: string;
157
+ error: AuraError;
158
+ }>>>;
159
+ /**
160
+ * Generate a signed upload URL (presigned POST/PUT).
161
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/upload-url?key=...&ttl_secs=...
162
+ */
163
+ createSignedUploadUrl(bucketId: string, path: string, expiresInSeconds?: number): Promise<AuraResponse<{
164
+ url: string;
165
+ expires_in: number;
166
+ }>>;
167
+ /**
168
+ * Construit une URL vers un fichier d'un bucket.
169
+ *
170
+ * ⚠️ Cette URL N'EST PAS accessible sans authentification : le gateway exige
171
+ * une clé API (`apikey`/`x-api-key`) sur toutes les routes storage, y compris
172
+ * pour les buckets créés avec `public: true` (ce flag n'est actuellement pas
173
+ * vérifié côté gateway — une requête non authentifiée renvoie 401). Pour
174
+ * partager un fichier sans authentification, utilisez `createSignedUrl()`,
175
+ * qui génère une URL signée HMAC vérifiée côté serveur sans clé API.
176
+ *
177
+ * `options?.transform` (image) : appende `renderTransformParams(...)` en query string.
178
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/{*key} (clé API requise)
179
+ */
180
+ getPublicUrl(bucketId: string, path: string, options?: {
181
+ transform?: ImageTransform;
182
+ }): string;
183
+ }
184
+
185
+ export { BlobDownloadBuilder, StorageService, StreamDownloadBuilder };
@@ -0,0 +1,329 @@
1
+ import { BaseService, AuraError, isTokenExpired, refreshOnce } from '@aurabase/core';
2
+
3
+ // src/StorageService.ts
4
+ async function runDownload(fn, extract) {
5
+ let res;
6
+ try {
7
+ res = await fn();
8
+ } catch (err) {
9
+ return {
10
+ data: null,
11
+ error: new AuraError(0, { error: { code: "network_error", message: err instanceof Error ? err.message : "Download failed" } })
12
+ };
13
+ }
14
+ if (!res.ok) return { data: null, error: new AuraError(res.status) };
15
+ return { data: await extract(res), error: null };
16
+ }
17
+ var BlobDownloadBuilder = class {
18
+ constructor(_fn) {
19
+ this._fn = _fn;
20
+ }
21
+ _fn;
22
+ _promise = null;
23
+ asStream() {
24
+ return new StreamDownloadBuilder(this._fn);
25
+ }
26
+ _run() {
27
+ if (!this._promise) this._promise = runDownload(this._fn, (r) => r.blob());
28
+ return this._promise;
29
+ }
30
+ then(onfulfilled, onrejected) {
31
+ return this._run().then(onfulfilled, onrejected);
32
+ }
33
+ };
34
+ var StreamDownloadBuilder = class {
35
+ constructor(_fn) {
36
+ this._fn = _fn;
37
+ }
38
+ _fn;
39
+ _promise = null;
40
+ _run() {
41
+ if (!this._promise) {
42
+ this._promise = runDownload(this._fn, (r) => r.body);
43
+ }
44
+ return this._promise;
45
+ }
46
+ then(onfulfilled, onrejected) {
47
+ return this._run().then(onfulfilled, onrejected);
48
+ }
49
+ };
50
+ function encodeObjectPath(path) {
51
+ const trimmed = path.replace(/^\/+/, "");
52
+ const segments = trimmed.split("/");
53
+ for (const seg of segments) {
54
+ if (seg === "..") {
55
+ throw new AuraError(0, {
56
+ error: {
57
+ code: "invalid_path",
58
+ message: 'Path traversal ("..") is not allowed in storage object paths'
59
+ }
60
+ });
61
+ }
62
+ }
63
+ return segments.map((s) => encodeURIComponent(s)).join("/");
64
+ }
65
+
66
+ // src/transform.ts
67
+ function renderTransformParams(t) {
68
+ const p = new URLSearchParams();
69
+ if (Number.isFinite(t.width)) p.set("width", String(Math.max(1, Math.floor(t.width))));
70
+ if (Number.isFinite(t.height)) p.set("height", String(Math.max(1, Math.floor(t.height))));
71
+ if (t.resize) p.set("fit", t.resize);
72
+ if (Number.isFinite(t.quality)) p.set("quality", String(Math.min(100, Math.max(20, Math.floor(t.quality)))));
73
+ if (t.format && t.format !== "origin") p.set("format", t.format);
74
+ return p;
75
+ }
76
+
77
+ // src/StorageService.ts
78
+ var StorageService = class extends BaseService {
79
+ constructor(client) {
80
+ super(client);
81
+ }
82
+ get prefix() {
83
+ return `/v1/storage/${this.client.projectId}`;
84
+ }
85
+ // -- Buckets ----------------------------------------------------------------
86
+ async listBuckets() {
87
+ return this.request("GET", `${this.prefix}/buckets`);
88
+ }
89
+ async getBucket(id) {
90
+ return this.request("GET", `${this.prefix}/buckets/${id}`);
91
+ }
92
+ async createBucket(name, options) {
93
+ return this.request("POST", `${this.prefix}/buckets`, {
94
+ name,
95
+ public: options?.public ?? false,
96
+ file_size_limit: options?.fileSizeLimit,
97
+ allowed_mime_types: options?.allowedMimeTypes
98
+ });
99
+ }
100
+ /**
101
+ * Met à jour un bucket existant (mise à jour PARTIELLE : seuls les champs
102
+ * fournis sont envoyés). Mapping identique à `createBucket`
103
+ * (`public`/`file_size_limit`/`allowed_mime_types`).
104
+ *
105
+ * Backend route: PATCH /v1/storage/{project_id}/buckets/{id}
106
+ */
107
+ async updateBucket(id, options) {
108
+ const body = {};
109
+ if (options?.public !== void 0) body.public = options.public;
110
+ if (options?.fileSizeLimit !== void 0) body.file_size_limit = options.fileSizeLimit;
111
+ if (options?.allowedMimeTypes !== void 0) body.allowed_mime_types = options.allowedMimeTypes;
112
+ return this.request("PATCH", `${this.prefix}/buckets/${id}`, body);
113
+ }
114
+ async deleteBucket(id) {
115
+ return this.request("DELETE", `${this.prefix}/buckets/${id}`);
116
+ }
117
+ // -- Objects ----------------------------------------------------------------
118
+ /**
119
+ * Upload a file to a bucket.
120
+ *
121
+ * Le serveur génère une clé unique `<uuid>.<ext>` (relative au bucket).
122
+ * Réutilisez directement `data.key` pour download(), remove(), copy(), etc.
123
+ *
124
+ * @example
125
+ * const { data } = await client.storage.upload('avatars', 'photo.png', file)
126
+ * await client.storage.download('avatars', data!.key) // fonctionne directement
127
+ *
128
+ * Backend route: POST /v1/storage/{project_id}/{bucket}
129
+ */
130
+ async upload(bucketId, path, file, options) {
131
+ const formData = new FormData();
132
+ const blob = file instanceof Blob ? file : new Blob([file], { type: options?.contentType ?? "application/octet-stream" });
133
+ formData.append("file", blob, path);
134
+ if (options?.upsert) formData.append("upsert", "true");
135
+ if (options?.metadata) {
136
+ for (const [k, v] of Object.entries(options.metadata)) formData.append(k, v);
137
+ }
138
+ return this.request("POST", `${this.prefix}/${bucketId}`, formData);
139
+ }
140
+ /**
141
+ * Download paresseux d'un fichier. Renvoie un builder (Blob par défaut, `.asStream()` pour
142
+ * le flux) ; la requête part à l'`await`. Refresh proactif du token avant la requête.
143
+ * `options?.transform` (image) : appende `renderTransformParams(...)` à l'URL — figée à
144
+ * l'appel, le builder reste inchangé.
145
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/{*key}
146
+ */
147
+ download(bucketId, path, options) {
148
+ let url = this.url(`${this.prefix}/${encodeURIComponent(bucketId)}/${encodeObjectPath(path)}`);
149
+ if (options?.transform) {
150
+ const qs = renderTransformParams(options.transform).toString();
151
+ if (qs) url = `${url}?${qs}`;
152
+ }
153
+ const client = this.client;
154
+ const downloadFn = async () => {
155
+ const store = client.authStore;
156
+ if (store.token && store.refreshToken && isTokenExpired(store.token, 30)) {
157
+ await refreshOnce(client);
158
+ }
159
+ const headers = {};
160
+ if (store.token) headers["Authorization"] = `Bearer ${store.token}`;
161
+ if (client.apiKey) headers["apikey"] = client.apiKey;
162
+ return client.fetchFn(url, { headers });
163
+ };
164
+ return new BlobDownloadBuilder(downloadFn);
165
+ }
166
+ /**
167
+ * List files in a bucket.
168
+ *
169
+ * ⚠️ `offset` n'est PAS supporté par le backend (`ListQuery` ne connaît que
170
+ * `prefix`+`limit`) : le paramètre est accepté pour compatibilité ascendante
171
+ * mais IGNORÉ (jamais envoyé au serveur). Pour restreindre les résultats,
172
+ * utilisez `prefix`. La vraie pagination (continuation token) relève du backend.
173
+ *
174
+ * Backend route: GET /v1/storage/{project_id}/{bucket}
175
+ */
176
+ async list(bucketId, options) {
177
+ const params = new URLSearchParams();
178
+ if (options?.prefix) params.set("prefix", options.prefix);
179
+ if (options?.limit !== void 0) params.set("limit", String(options.limit));
180
+ const qs = params.toString();
181
+ const sep = qs ? "?" : "";
182
+ return this.request("GET", `${this.prefix}/${bucketId}${sep}${qs}`);
183
+ }
184
+ /**
185
+ * Delete one or more files from a bucket.
186
+ * Backend route: DELETE /v1/storage/{project_id}/{bucket}/{*key}
187
+ * Note: for single file deletion, paths[0] is used. Multi-delete is done in sequence.
188
+ */
189
+ async remove(bucketId, paths) {
190
+ let keys;
191
+ try {
192
+ keys = paths.map((p) => encodeObjectPath(p));
193
+ } catch (e) {
194
+ return { data: null, error: e };
195
+ }
196
+ const b = encodeURIComponent(bucketId);
197
+ if (keys.length === 1) {
198
+ return this.request("DELETE", `${this.prefix}/${b}/${keys[0]}`);
199
+ }
200
+ const results = await Promise.all(
201
+ keys.map((k) => this.request("DELETE", `${this.prefix}/${b}/${k}`))
202
+ );
203
+ const failed = results.find((r) => r.error);
204
+ if (failed) return failed;
205
+ return { data: null, error: null };
206
+ }
207
+ /**
208
+ * Copy a file within a bucket.
209
+ *
210
+ * `fromPath`/`toPath` sont relatifs au bucket (cohérent avec `download`/
211
+ * `remove`/`upload`) — le SDK les préfixe par `bucketId` pour produire les
212
+ * clés MinIO complètes attendues par le backend.
213
+ *
214
+ * Backend route: POST /v1/storage/{project_id}/{bucket}/copy
215
+ */
216
+ async copy(bucketId, fromPath, toPath) {
217
+ return this.request("POST", `${this.prefix}/${bucketId}/copy`, {
218
+ src_key: `${bucketId}/${fromPath}`,
219
+ dst_key: `${bucketId}/${toPath}`
220
+ });
221
+ }
222
+ /**
223
+ * Move/rename a file within a bucket.
224
+ *
225
+ * `fromPath`/`toPath` sont relatifs au bucket (cohérent avec `download`/
226
+ * `remove`/`upload`) — le SDK les préfixe par `bucketId` pour produire les
227
+ * clés MinIO complètes attendues par le backend.
228
+ *
229
+ * Backend route: POST /v1/storage/{project_id}/{bucket}/move
230
+ */
231
+ async move(bucketId, fromPath, toPath) {
232
+ return this.request("POST", `${this.prefix}/${bucketId}/move`, {
233
+ src_key: `${bucketId}/${fromPath}`,
234
+ dst_key: `${bucketId}/${toPath}`
235
+ });
236
+ }
237
+ /**
238
+ * Get file metadata.
239
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/meta/{*key}
240
+ */
241
+ async getMetadata(bucketId, path) {
242
+ let key;
243
+ try {
244
+ key = encodeObjectPath(path);
245
+ } catch (e) {
246
+ return { data: null, error: e };
247
+ }
248
+ return this.request("GET", `${this.prefix}/${encodeURIComponent(bucketId)}/meta/${key}`);
249
+ }
250
+ /**
251
+ * Generate a signed (temporary) download URL.
252
+ *
253
+ * `options?.transform` (image) : dérisqué en réel (stack live) — les params transform
254
+ * sont HORS HMAC (le backend ne les couvre pas dans la signature), donc on les appende
255
+ * à l'URL signée APRÈS réception de `{ url, expires_in }`, sans toucher à la requête
256
+ * `signed-url` elle-même.
257
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/signed-url?key=...&ttl_secs=...
258
+ */
259
+ async createSignedUrl(bucketId, path, expiresInSeconds = 3600, options) {
260
+ const params = new URLSearchParams({ key: path, ttl_secs: String(expiresInSeconds) });
261
+ const res = await this.request(
262
+ "GET",
263
+ `${this.prefix}/${bucketId}/signed-url?${params.toString()}`
264
+ );
265
+ if (res.data && options?.transform) {
266
+ const qs = renderTransformParams(options.transform).toString();
267
+ if (qs) {
268
+ const sep = res.data.url.includes("?") ? "&" : "?";
269
+ res.data = { ...res.data, url: `${res.data.url}${sep}${qs}` };
270
+ }
271
+ }
272
+ return res;
273
+ }
274
+ /**
275
+ * Génère plusieurs URLs signées en une passe (batch).
276
+ *
277
+ * Il n'existe pas d'endpoint batch côté backend : l'implémentation fait un
278
+ * fan-out `Promise.all` sur `createSignedUrl` (même patron que `remove()`),
279
+ * RÉSILIENT PAR-ITEM — chaque entrée est soit `{ path, url, expires_in }`
280
+ * (succès), soit `{ path, error }` (échec), sans faire échouer les autres.
281
+ *
282
+ * @example
283
+ * const { data } = await client.storage.createSignedUrls('avatars', ['a.png', 'b.png'])
284
+ * data?.forEach((r) => 'url' in r ? use(r.url) : console.warn(r.path, r.error))
285
+ */
286
+ async createSignedUrls(bucketId, paths, expiresInSeconds = 3600, options) {
287
+ const results = await Promise.all(
288
+ paths.map(async (path) => {
289
+ const res = await this.createSignedUrl(bucketId, path, expiresInSeconds, options);
290
+ if (res.error || !res.data) {
291
+ return { path, error: res.error ?? new AuraError(0, { error: { code: "unknown", message: "No data" } }) };
292
+ }
293
+ return { path, url: res.data.url, expires_in: res.data.expires_in };
294
+ })
295
+ );
296
+ return { data: results, error: null };
297
+ }
298
+ /**
299
+ * Generate a signed upload URL (presigned POST/PUT).
300
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/upload-url?key=...&ttl_secs=...
301
+ */
302
+ async createSignedUploadUrl(bucketId, path, expiresInSeconds = 3600) {
303
+ const params = new URLSearchParams({ key: path, ttl_secs: String(expiresInSeconds) });
304
+ return this.request("GET", `${this.prefix}/${bucketId}/upload-url?${params.toString()}`);
305
+ }
306
+ /**
307
+ * Construit une URL vers un fichier d'un bucket.
308
+ *
309
+ * ⚠️ Cette URL N'EST PAS accessible sans authentification : le gateway exige
310
+ * une clé API (`apikey`/`x-api-key`) sur toutes les routes storage, y compris
311
+ * pour les buckets créés avec `public: true` (ce flag n'est actuellement pas
312
+ * vérifié côté gateway — une requête non authentifiée renvoie 401). Pour
313
+ * partager un fichier sans authentification, utilisez `createSignedUrl()`,
314
+ * qui génère une URL signée HMAC vérifiée côté serveur sans clé API.
315
+ *
316
+ * `options?.transform` (image) : appende `renderTransformParams(...)` en query string.
317
+ * Backend route: GET /v1/storage/{project_id}/{bucket}/{*key} (clé API requise)
318
+ */
319
+ getPublicUrl(bucketId, path, options) {
320
+ const base = this.url(`${this.prefix}/${encodeURIComponent(bucketId)}/${encodeObjectPath(path)}`);
321
+ if (options?.transform) {
322
+ const qs = renderTransformParams(options.transform).toString();
323
+ if (qs) return `${base}?${qs}`;
324
+ }
325
+ return base;
326
+ }
327
+ };
328
+
329
+ export { BlobDownloadBuilder, StorageService, StreamDownloadBuilder };
@@ -0,0 +1,19 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/esbuild@0.27.7/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/esbuild@0.27.7/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ "$basedir/../../../../node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/bin/esbuild" "$@"
18
+ exit $?
19
+ # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/esbuild@0.27.7/node_modules/esbuild/bin/esbuild
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
19
+ else
20
+ exec node "$basedir/../typescript/bin/tsc" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/packages/storage/node_modules/typescript/bin/tsc
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
19
+ else
20
+ exec node "$basedir/../typescript/bin/tsserver" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/packages/storage/node_modules/typescript/bin/tsserver
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules/tsup/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules/tsup/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../tsup/dist/cli-default.js" "$@"
19
+ else
20
+ exec node "$basedir/../tsup/dist/cli-default.js" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/packages/storage/node_modules/tsup/dist/cli-default.js
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules/tsup/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules/tsup/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/tsup@8.5.1_postcss@8.5.16_typescript@5.9.3/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../tsup/dist/cli-node.js" "$@"
19
+ else
20
+ exec node "$basedir/../tsup/dist/cli-node.js" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/packages/storage/node_modules/tsup/dist/cli-node.js
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules/vite/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules/vite/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules:/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../../../../node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules/vite/bin/vite.js" "$@"
19
+ else
20
+ exec node "$basedir/../../../../node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules/vite/bin/vite.js" "$@"
21
+ fi
22
+ # cmd-shim-target=/Users/affanedaylami/aurabase/aurabase-js/node_modules/.pnpm/vite@8.1.3_@types+node@20.14.15_esbuild@0.27.7/node_modules/vite/bin/vite.js