alepha 0.20.3 → 0.20.4

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 (217) hide show
  1. package/dist/api/audits/index.d.ts.map +1 -1
  2. package/dist/api/files/index.d.ts.map +1 -1
  3. package/dist/api/jobs/index.d.ts +14 -14
  4. package/dist/api/jobs/index.d.ts.map +1 -1
  5. package/dist/api/keys/index.d.ts +4 -4
  6. package/dist/api/organizations/index.d.ts.map +1 -1
  7. package/dist/api/parameters/index.d.ts +8 -3
  8. package/dist/api/parameters/index.d.ts.map +1 -1
  9. package/dist/api/parameters/index.js +20 -4
  10. package/dist/api/parameters/index.js.map +1 -1
  11. package/dist/api/payments/index.d.ts.map +1 -1
  12. package/dist/api/users/index.browser.js +6 -0
  13. package/dist/api/users/index.browser.js.map +1 -1
  14. package/dist/api/users/index.d.ts +5037 -139
  15. package/dist/api/users/index.d.ts.map +1 -1
  16. package/dist/api/users/index.js +58 -10
  17. package/dist/api/users/index.js.map +1 -1
  18. package/dist/bucket/index.d.ts +77 -107
  19. package/dist/bucket/index.d.ts.map +1 -1
  20. package/dist/bucket/index.js +148 -4
  21. package/dist/bucket/index.js.map +1 -1
  22. package/dist/bucket/index.workerd.js +7 -1
  23. package/dist/bucket/index.workerd.js.map +1 -1
  24. package/dist/cache/core/index.d.ts +26 -0
  25. package/dist/cache/core/index.d.ts.map +1 -1
  26. package/dist/cache/core/index.js +11 -1
  27. package/dist/cache/core/index.js.map +1 -1
  28. package/dist/cache/core/index.workerd.js +11 -1
  29. package/dist/cache/core/index.workerd.js.map +1 -1
  30. package/dist/cli/config/index.d.ts +7 -5
  31. package/dist/cli/config/index.d.ts.map +1 -1
  32. package/dist/cli/config/index.js +2 -3
  33. package/dist/cli/config/index.js.map +1 -1
  34. package/dist/cli/core/index.d.ts +420 -13
  35. package/dist/cli/core/index.d.ts.map +1 -1
  36. package/dist/cli/core/index.js +22 -511
  37. package/dist/cli/core/index.js.map +1 -1
  38. package/dist/cli/devtools/index.d.ts +4 -8
  39. package/dist/cli/devtools/index.d.ts.map +1 -1
  40. package/dist/cli/devtools/index.js +13 -15
  41. package/dist/cli/devtools/index.js.map +1 -1
  42. package/dist/cli/platform/index.d.ts +10 -13
  43. package/dist/cli/platform/index.d.ts.map +1 -1
  44. package/dist/cli/platform/index.js +18 -15
  45. package/dist/cli/platform/index.js.map +1 -1
  46. package/dist/cli/vendor/index.d.ts +10 -13
  47. package/dist/cli/vendor/index.d.ts.map +1 -1
  48. package/dist/cli/vendor/index.js +16 -13
  49. package/dist/cli/vendor/index.js.map +1 -1
  50. package/dist/core/index.browser.js +27 -3
  51. package/dist/core/index.browser.js.map +1 -1
  52. package/dist/core/index.d.ts +6 -3
  53. package/dist/core/index.d.ts.map +1 -1
  54. package/dist/core/index.js +27 -3
  55. package/dist/core/index.js.map +1 -1
  56. package/dist/core/index.native.js +27 -3
  57. package/dist/core/index.native.js.map +1 -1
  58. package/dist/core/index.workerd.js +27 -3
  59. package/dist/core/index.workerd.js.map +1 -1
  60. package/dist/datetime/index.d.ts +69 -10
  61. package/dist/datetime/index.d.ts.map +1 -1
  62. package/dist/datetime/index.js +135 -13
  63. package/dist/datetime/index.js.map +1 -1
  64. package/dist/email/smtp/index.js +10636 -2
  65. package/dist/email/smtp/index.js.map +1 -1
  66. package/dist/fake/index.d.ts +8085 -4
  67. package/dist/fake/index.d.ts.map +1 -1
  68. package/dist/fake/index.js +33554 -3
  69. package/dist/fake/index.js.map +1 -1
  70. package/dist/lock/core/index.d.ts +30 -2
  71. package/dist/lock/core/index.d.ts.map +1 -1
  72. package/dist/lock/core/index.js +35 -12
  73. package/dist/lock/core/index.js.map +1 -1
  74. package/dist/mcp/index.d.ts +238 -31
  75. package/dist/mcp/index.d.ts.map +1 -1
  76. package/dist/mcp/index.js +198 -71
  77. package/dist/mcp/index.js.map +1 -1
  78. package/dist/orm/core/index.browser.js +1 -1
  79. package/dist/orm/core/index.browser.js.map +1 -1
  80. package/dist/orm/core/index.bun.js +4 -3
  81. package/dist/orm/core/index.bun.js.map +1 -1
  82. package/dist/orm/core/index.d.ts +4877 -9
  83. package/dist/orm/core/index.d.ts.map +1 -1
  84. package/dist/orm/core/index.js +4 -3
  85. package/dist/orm/core/index.js.map +1 -1
  86. package/dist/orm/postgres/index.d.ts +608 -1
  87. package/dist/orm/postgres/index.d.ts.map +1 -1
  88. package/dist/react/core/index.d.ts +102 -1
  89. package/dist/react/core/index.d.ts.map +1 -1
  90. package/dist/react/core/index.js +65 -1
  91. package/dist/react/core/index.js.map +1 -1
  92. package/dist/react/form/index.d.ts +6 -0
  93. package/dist/react/form/index.d.ts.map +1 -1
  94. package/dist/react/form/index.js +7 -7
  95. package/dist/react/form/index.js.map +1 -1
  96. package/dist/react/i18n/index.d.ts +7 -1
  97. package/dist/react/i18n/index.d.ts.map +1 -1
  98. package/dist/react/i18n/index.js +6 -0
  99. package/dist/react/i18n/index.js.map +1 -1
  100. package/dist/react/router/index.browser.js +20 -2
  101. package/dist/react/router/index.browser.js.map +1 -1
  102. package/dist/react/router/index.d.ts +36 -4
  103. package/dist/react/router/index.d.ts.map +1 -1
  104. package/dist/react/router/index.js +20 -2
  105. package/dist/react/router/index.js.map +1 -1
  106. package/dist/react/testing/chunk-6Ep1yQYe.js +16 -0
  107. package/dist/react/testing/index.d.ts +411 -1
  108. package/dist/react/testing/index.d.ts.map +1 -1
  109. package/dist/react/testing/index.js +12293 -13
  110. package/dist/react/testing/index.js.map +1 -1
  111. package/dist/react/ui/index.d.ts +195 -1
  112. package/dist/react/ui/index.d.ts.map +1 -1
  113. package/dist/react/ui/index.js +61 -1
  114. package/dist/react/ui/index.js.map +1 -1
  115. package/dist/scheduler/index.d.ts +84 -3
  116. package/dist/scheduler/index.d.ts.map +1 -1
  117. package/dist/scheduler/index.js +390 -1
  118. package/dist/scheduler/index.js.map +1 -1
  119. package/dist/scheduler/index.workerd.js +390 -1
  120. package/dist/scheduler/index.workerd.js.map +1 -1
  121. package/dist/security/index.d.ts +325 -2
  122. package/dist/security/index.d.ts.map +1 -1
  123. package/dist/security/index.js +1361 -2
  124. package/dist/security/index.js.map +1 -1
  125. package/dist/server/auth/index.d.ts +1054 -1
  126. package/dist/server/auth/index.d.ts.map +1 -1
  127. package/dist/server/auth/index.js +1223 -1
  128. package/dist/server/auth/index.js.map +1 -1
  129. package/dist/server/core/index.browser.js +10 -3
  130. package/dist/server/core/index.browser.js.map +1 -1
  131. package/dist/server/core/index.d.ts.map +1 -1
  132. package/dist/server/core/index.js +28 -5
  133. package/dist/server/core/index.js.map +1 -1
  134. package/dist/server/metrics/index.d.ts +514 -1
  135. package/dist/server/metrics/index.d.ts.map +1 -1
  136. package/dist/server/metrics/index.js +4374 -4
  137. package/dist/server/metrics/index.js.map +1 -1
  138. package/dist/server/swagger/index.d.ts.map +1 -1
  139. package/dist/server/swagger/index.js +3 -4
  140. package/dist/server/swagger/index.js.map +1 -1
  141. package/dist/websocket/index.browser.js +11 -5
  142. package/dist/websocket/index.browser.js.map +1 -1
  143. package/dist/websocket/index.d.ts +3 -1
  144. package/dist/websocket/index.d.ts.map +1 -1
  145. package/dist/websocket/index.js +21 -6
  146. package/dist/websocket/index.js.map +1 -1
  147. package/package.json +671 -263
  148. package/src/api/parameters/services/ParameterProvider.ts +21 -4
  149. package/src/api/users/__tests__/SessionService.spec.ts +99 -0
  150. package/src/api/users/__tests__/UserJobs.spec.ts +67 -0
  151. package/src/api/users/atoms/realmAuthSettingsAtom.ts +15 -0
  152. package/src/api/users/entities/sessions.ts +6 -0
  153. package/src/api/users/jobs/UserJobs.ts +44 -17
  154. package/src/api/users/providers/RealmProvider.ts +4 -0
  155. package/src/api/users/services/SessionService.ts +27 -0
  156. package/src/bucket/__tests__/NodeS3BucketProvider.spec.ts +74 -0
  157. package/src/bucket/index.ts +19 -2
  158. package/src/bucket/primitives/$bucket.ts +9 -1
  159. package/src/bucket/providers/CloudflareR2Provider.ts +2 -137
  160. package/src/bucket/providers/NodeS3BucketProvider.ts +218 -0
  161. package/src/cache/core/index.ts +29 -0
  162. package/src/cache/core/primitives/$cache.ts +14 -1
  163. package/src/cli/config/defineConfig.ts +13 -15
  164. package/src/cli/core/__tests__/init.spec.ts +6 -7
  165. package/src/cli/core/services/ProjectScaffolder.ts +18 -14
  166. package/src/cli/core/tasks/BuildCloudflareTask.ts +5 -0
  167. package/src/cli/core/templates/agentMd.ts +2 -10
  168. package/src/cli/core/templates/saasAdminLayoutTsx.ts +3 -3
  169. package/src/cli/devtools/index.ts +12 -26
  170. package/src/cli/platform/index.ts +15 -24
  171. package/src/cli/vendor/atoms/vendorOptions.ts +1 -1
  172. package/src/cli/vendor/index.ts +14 -23
  173. package/src/core/Alepha.ts +11 -1
  174. package/src/core/helpers/ref.ts +18 -0
  175. package/src/core/index.shared.ts +1 -0
  176. package/src/core/providers/SchemaValidator.ts +9 -1
  177. package/src/core/providers/TypeProvider.ts +1 -2
  178. package/src/datetime/REFACTORING.md +118 -0
  179. package/src/datetime/providers/DateTimeProvider.ts +203 -24
  180. package/src/lock/core/index.ts +31 -0
  181. package/src/lock/core/primitives/$lock.ts +14 -1
  182. package/src/mcp/__tests__/jsonrpc.spec.ts +1 -1
  183. package/src/mcp/helpers/jsonrpc.ts +26 -1
  184. package/src/mcp/index.ts +10 -5
  185. package/src/mcp/interfaces/McpTypes.ts +83 -6
  186. package/src/mcp/primitives/$prompt.ts +18 -1
  187. package/src/mcp/primitives/$resource.ts +18 -1
  188. package/src/mcp/primitives/$tool.ts +83 -7
  189. package/src/mcp/providers/McpServerProvider.ts +74 -16
  190. package/src/mcp/transports/StreamableHttpMcpTransport.ts +226 -0
  191. package/src/orm/REFACTORING.md +330 -0
  192. package/src/orm/core/primitives/$transactional.ts +11 -0
  193. package/src/orm/core/schemas/updateSchema.ts +1 -1
  194. package/src/orm/core/services/PgRelationManager.ts +4 -2
  195. package/src/react/core/__tests__/useQuery.browser.spec.tsx +86 -0
  196. package/src/react/core/hooks/useQuery.ts +153 -0
  197. package/src/react/core/index.ts +1 -0
  198. package/src/react/form/services/FormModel.ts +15 -6
  199. package/src/react/form/services/parseField.ts +8 -0
  200. package/src/react/i18n/providers/I18nProvider.ts +8 -2
  201. package/src/react/router/__tests__/$page.spec.tsx +0 -16
  202. package/src/react/router/__tests__/ssr.spec.tsx +339 -0
  203. package/src/react/router/primitives/$page.ts +28 -4
  204. package/src/react/router/providers/ReactPageProvider.ts +27 -9
  205. package/src/react/ui/atoms/uiThemeListAtom.ts +36 -0
  206. package/src/react/ui/index.ts +6 -0
  207. package/src/react/ui/services/SchemaControl.ts +209 -0
  208. package/src/security/primitives/$issuer.ts +6 -3
  209. package/src/server/core/__tests__/ServerRouterProvider-serializationError.spec.ts +75 -0
  210. package/src/server/core/__tests__/ServerRouterProvider-validationError.spec.ts +306 -0
  211. package/src/server/core/errors/ValidationError.ts +13 -1
  212. package/src/server/core/primitives/$action.ts +16 -5
  213. package/src/server/core/providers/ServerRouterProvider.ts +26 -4
  214. package/src/server/swagger/providers/ServerSwaggerProvider.ts +5 -7
  215. package/src/websocket/providers/NodeWebSocketServerProvider.ts +10 -4
  216. package/src/websocket/services/WebSocketClient.ts +11 -5
  217. package/src/mcp/transports/SseMcpTransport.ts +0 -182
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/orm/postgres/services/PostgresModelBuilder.ts","../../../src/orm/postgres/providers/PostgresProvider.ts","../../../src/orm/postgres/providers/BunPostgresProvider.ts","../../../src/orm/postgres/providers/CloudflareHyperdriveProvider.ts","../../../src/orm/postgres/providers/NodePostgresProvider.ts","../../../src/orm/postgres/providers/PglitePostgresProvider.ts","../../../src/orm/postgres/schemas/postgresEnvSchema.ts","../../../src/orm/postgres/types/byte.ts","../../../src/orm/postgres/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["Modes","text","binary","Mode","BufferParameter","ArrayBuffer","ArrayBufferView","MessageName","BackendMessage","name","length","parseComplete","bindComplete","closeComplete","noData","portalSuspended","replicationStart","emptyQuery","copyDone","AuthenticationOk","constructor","AuthenticationCleartextPassword","AuthenticationMD5Password","Uint8Array","salt","AuthenticationSASL","mechanisms","AuthenticationSASLContinue","data","AuthenticationSASLFinal","AuthenticationMessage","NoticeOrError","message","severity","code","detail","hint","position","internalPosition","internalQuery","where","schema","table","column","dataType","constraint","file","line","routine","DatabaseError","Error","CopyDataMessage","chunk","CopyResponse","columnTypes","columnCount","Field","tableID","columnID","dataTypeID","dataTypeSize","dataTypeModifier","format","RowDescriptionMessage","fieldCount","fields","ParameterDescriptionMessage","parameterCount","dataTypeIDs","ParameterStatusMessage","parameterName","parameterValue","BackendKeyDataMessage","processID","secretKey","NotificationResponseMessage","processId","channel","payload","ReadyForQueryMessage","status","CommandCompleteMessage","DataRowMessage","NoticeMessage","messages_AuthenticationCleartextPassword","messages_AuthenticationMD5Password","messages_AuthenticationMessage","messages_AuthenticationOk","messages_AuthenticationSASL","messages_AuthenticationSASLContinue","messages_AuthenticationSASLFinal","messages_BackendKeyDataMessage","messages_BackendMessage","messages_CommandCompleteMessage","messages_CopyDataMessage","messages_CopyResponse","messages_DataRowMessage","messages_DatabaseError","messages_Field","messages_MessageName","messages_NoticeMessage","messages_NotificationResponseMessage","messages_ParameterDescriptionMessage","messages_ParameterStatusMessage","messages_ReadyForQueryMessage","messages_RowDescriptionMessage","messages_bindComplete","messages_closeComplete","messages_copyDone","messages_emptyQuery","messages_noData","messages_parseComplete","messages_portalSuspended","messages_replicationStart","messages","IDBFS","Emscripten","FileSystemType","IDBDatabase","Record","quit","dbs","FS","filesystems","MEMFS","NODEFS","PostgresMod","EmscriptenModule","Array","WebAssembly","Memory","Blob","Promise","Omit","preInit","mod","preRun","postRun","thisProgram","stdin","wasmMemory","PROXYFS","WASM_PREFIX","pg_extensions","UTF8ToString","ptr","maxBytesToRead","stringToUTF8OnStack","s","_pgl_set_system_fn","system_fn","_pgl_set_popen_fn","popen_fn","_pgl_set_pclose_fn","pclose_fn","_pgl_set_rw_cbs","read_cb","write_cb","_pgl_set_pipe_fn","pipe_fn","_pgl_freopen","filepath","mode","stream","_pgl_pq_flush","_fopen","path","_fclose","_fflush","_pgl_proc_exit","addFunction","cb","signature","removeFunction","f","callMain","args","_PostgresMainLoopOnce","_PostgresMainLongJmp","_PostgresSendReadyForQueryIfNecessary","_ProcessStartupPacket","Port","ssl_done","gss_done","_IsTransactionBlock","_pgl_setPGliteActive","newValue","_pgl_startPGlite","_pgl_getMyProcPort","_pgl_sendConnData","ENV","_emscripten_force_exit","_pgl_run_atexit_funcs","_pq_buffer_remaining_data","PostgresFactory","T","Partial","moduleOverrides","_default","postgresMod_FS","postgresMod_PostgresMod","postgresMod","default","DumpTarCompressionOptions","FsType","Filesystem","PGlite","File","init","pg","emscriptenOptions","emscriptenOpts","syncToFs","relaxedDurability","initialSyncFs","dumpTar","dbname","compression","closeFs","EmscriptenBuiltinFilesystem","dataDir","_relaxedDurability","BaseFilesystem","debug","FsStats","chmod","close","fd","fstat","lstat","mkdir","recursive","options","open","flags","readdir","read","buffer","offset","rename","oldPath","newPath","rmdir","truncate","len","unlink","utimes","atime","mtime","writeFile","encoding","flag","write","dev","ino","nlink","uid","gid","rdev","size","blksize","blocks","ctime","ERRNO_CODES","EBADF","EBADFD","EEXIST","EINVAL","EISDIR","ENODEV","ENOENT","ENOTDIR","ENOTEMPTY","FilesystemType","DebugLevel","RowMode","ParserOptions","pgType","value","SerializerOptions","QueryOptions","rowMode","parsers","serializers","blob","onNotice","notice","paramTypes","ExecProtocolOptions","throwOnError","ExecProtocolOptionsStream","onRawData","ExtensionSetupResult","TNamespace","URL","namespaceObj","bundlePath","ExtensionSetup","PGliteInterface","clientOnly","Extension","setup","ExtensionNamespace","Extensions","namespace","InitializedExtensions","TExtensions","K","ExecProtocolResult","DumpDataDirResult","tarball","extension","filename","PGliteOptions","Module","noInitDb","username","database","fs","extensions","loadDataDir","initialMemory","pgliteWasmModule","initdbWasmModule","fsBundle","startParams","Results","TemplateStringsArray","DescribeQueryResult","Transaction","waitReady","ready","closed","query","params","sql","sqlStrings","exec","describeQuery","transaction","tx","callback","execProtocolRaw","execProtocolRawStream","execProtocol","runExclusive","fn","listen","unlisten","onNotification","offNotification","dumpDataDir","refreshArrayTypes","PGliteInterfaceExtensions","E","ReturnType","Awaited","N","Row","key","rows","affectedRows","rollback","Serializer","Parser","queryParams","serializer","resultFields","parser","BOOL","BYTEA","CHAR","INT8","INT2","INT4","REGPROC","TEXT","OID","TID","XID","CID","JSON","XML","PG_NODE_TREE","SMGR","PATH","POLYGON","CIDR","FLOAT4","FLOAT8","ABSTIME","RELTIME","TINTERVAL","CIRCLE","MACADDR8","MONEY","MACADDR","INET","ACLITEM","BPCHAR","VARCHAR","DATE","TIME","TIMESTAMP","TIMESTAMPTZ","INTERVAL","TIMETZ","BIT","VARBIT","NUMERIC","REFCURSOR","REGPROCEDURE","REGOPER","REGOPERATOR","REGCLASS","REGTYPE","UUID","TXID_SNAPSHOT","PG_LSN","PG_NDISTINCT","PG_DEPENDENCIES","TSVECTOR","TSQUERY","GTSVECTOR","REGCONFIG","REGDICTIONARY","JSONB","REGNAMESPACE","REGROLE","types","Date","string","to","from","serialize","x","parse","number","bigint","json","boolean","date","bytea","typeId","TypeHandler","TypeHandlers","parseType","type","arraySerializer","xs","typarray","arrayParser","types$1_ABSTIME","types$1_ACLITEM","types$1_BIT","types$1_BOOL","types$1_BPCHAR","types$1_BYTEA","types$1_CHAR","types$1_CID","types$1_CIDR","types$1_CIRCLE","types$1_DATE","types$1_FLOAT4","types$1_FLOAT8","types$1_GTSVECTOR","types$1_INET","types$1_INT2","types$1_INT4","types$1_INT8","types$1_INTERVAL","types$1_JSON","types$1_JSONB","types$1_MACADDR","types$1_MACADDR8","types$1_MONEY","types$1_NUMERIC","types$1_OID","types$1_PATH","types$1_PG_DEPENDENCIES","types$1_PG_LSN","types$1_PG_NDISTINCT","types$1_PG_NODE_TREE","types$1_POLYGON","types$1_Parser","types$1_REFCURSOR","types$1_REGCLASS","types$1_REGCONFIG","types$1_REGDICTIONARY","types$1_REGNAMESPACE","types$1_REGOPER","types$1_REGOPERATOR","types$1_REGPROC","types$1_REGPROCEDURE","types$1_REGROLE","types$1_REGTYPE","types$1_RELTIME","types$1_SMGR","types$1_Serializer","types$1_TEXT","types$1_TID","types$1_TIME","types$1_TIMESTAMP","types$1_TIMESTAMPTZ","types$1_TIMETZ","types$1_TINTERVAL","types$1_TSQUERY","types$1_TSVECTOR","types$1_TXID_SNAPSHOT","types$1_TypeHandler","types$1_TypeHandlers","types$1_UUID","types$1_VARBIT","types$1_VARCHAR","types$1_XID","types$1_XML","types$1_arrayParser","types$1_arraySerializer","types$1_parseType","types$1_parsers","types$1_serializers","types$1_types","types$1","BasePGlite","force","Pick","private","execProtocolStream","_handleBlob","_getWrittenBlob","_cleanupBlob","_checkReady","_runExclusiveQuery","_runExclusiveTransaction","_initArrayTypes","O","Symbol","asyncDispose","AsyncDisposable","POSTGRES_MAIN_LONGJMP","DEFAULT_RECV_BUF_SIZE","MAX_BUFFER_SIZE","externalCommandStreamFd","defaultStartParams","create","handleExternalCmd","cmd","execProtocolRawSync","isInTransaction","clone","_runExclusiveListen","A","B","C","D","F","G","I","M","P","Q","R","S","W","a","b","c","d","e","g","h","i","j","k","l","m","n","o","p","q","r","t","u","v","w","y","z"],"sources":["../../../src/orm/postgres/services/PostgresModelBuilder.ts","../../../src/orm/postgres/providers/PostgresProvider.ts","../../../src/orm/postgres/providers/BunPostgresProvider.ts","../../../src/orm/postgres/providers/CloudflareHyperdriveProvider.ts","../../../src/orm/postgres/providers/NodePostgresProvider.ts","../../../../../node_modules/@electric-sql/pglite/dist/pglite-BZlQ7pL-.d.ts","../../../src/orm/postgres/providers/PglitePostgresProvider.ts","../../../src/orm/postgres/schemas/postgresEnvSchema.ts","../../../src/orm/postgres/types/byte.ts","../../../src/orm/postgres/index.ts"],"x_google_ignoreList":[5],"mappings":"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"}
@@ -389,6 +389,107 @@ type UseEvents = { [T in keyof Hooks]?: Hook<T> | ((payload: Hooks[T]) => Async<
389
389
  */
390
390
  declare const useInject: <T extends object>(service: Service<T>) => T;
391
391
  //#endregion
392
+ //#region ../../src/react/core/hooks/useQuery.d.ts
393
+ /**
394
+ * Hook for declarative data fetching with automatic execution and refetch.
395
+ *
396
+ * Thin wrapper over {@link useAction}: it pre-applies `runOnInit: true`,
397
+ * exposes the last result as `data`, and provides a stable `refetch()` to
398
+ * re-run the query on demand. For optimistic mutations and side-effects,
399
+ * use {@link useAction} directly — `useQuery` is for the read path.
400
+ *
401
+ * Caching, request deduplication, and AbortSignal cancellation come from
402
+ * `useAction` + `HttpClient`. There is no separate cache layer — pass
403
+ * `localCache` to your `HttpClient.fetch()`/`fetchAction()` call inside
404
+ * the query handler if you want per-call caching.
405
+ *
406
+ * @example Basic
407
+ * ```tsx
408
+ * const client = useInject(HttpClient);
409
+ * const { data, loading, error, refetch } = useQuery({
410
+ * handler: async ({ signal }) => {
411
+ * const res = await client.fetch("/api/users", { request: { signal } });
412
+ * return res.data;
413
+ * },
414
+ * }, []);
415
+ * ```
416
+ *
417
+ * @example Re-fetch when a dep changes
418
+ * ```tsx
419
+ * const { data } = useQuery({
420
+ * handler: async () => api.getUser(userId),
421
+ * }, [userId]);
422
+ * ```
423
+ *
424
+ * @example Polling
425
+ * ```tsx
426
+ * const { data } = useQuery({
427
+ * handler: async () => api.getStatus(),
428
+ * runEvery: [5, "seconds"],
429
+ * }, []);
430
+ * ```
431
+ */
432
+ declare function useQuery<Result>(options: UseQueryOptions<Result>, deps: DependencyList): UseQueryReturn<Result>;
433
+ interface UseQueryOptions<Result> {
434
+ /**
435
+ * Async query handler. Receives an {@link ActionContext} with an
436
+ * AbortSignal that fires on unmount, dependency change, or `cancel()`.
437
+ */
438
+ handler: (context: ActionContext) => Async<Result>;
439
+ /**
440
+ * Optional identifier (used in lifecycle events for debugging/analytics).
441
+ */
442
+ id?: string;
443
+ /**
444
+ * If `false`, skip automatic execution on mount and dep change. Use
445
+ * `refetch()` to trigger manually. Defaults to `true`.
446
+ */
447
+ enabled?: boolean;
448
+ /**
449
+ * Initial value for `data` before the first successful fetch.
450
+ */
451
+ initialData?: Result;
452
+ /**
453
+ * Re-run periodically. See {@link useAction} `runEvery`.
454
+ */
455
+ runEvery?: DurationLike;
456
+ /**
457
+ * Debounce delay in milliseconds. See {@link useAction} `debounce`.
458
+ */
459
+ debounce?: number;
460
+ /**
461
+ * Called on success with the resolved value.
462
+ */
463
+ onSuccess?: (result: Result) => void | Promise<void>;
464
+ /**
465
+ * Custom error handler. If provided, prevents default error re-throw.
466
+ */
467
+ onError?: (error: Error) => void | Promise<void>;
468
+ }
469
+ interface UseQueryReturn<Result> {
470
+ /**
471
+ * The last successful result. `undefined` until the first fetch resolves
472
+ * (or the value of `initialData` if provided).
473
+ */
474
+ data: Result | undefined;
475
+ /**
476
+ * Loading state — `true` while a fetch is in flight.
477
+ */
478
+ loading: boolean;
479
+ /**
480
+ * Error from the last failed fetch, if any.
481
+ */
482
+ error?: Error;
483
+ /**
484
+ * Re-run the query. The previous in-flight request, if any, is aborted.
485
+ */
486
+ refetch: () => Promise<Result | undefined>;
487
+ /**
488
+ * Abort the in-flight request without scheduling another.
489
+ */
490
+ cancel: () => void;
491
+ }
492
+ //#endregion
392
493
  //#region ../../src/react/core/hooks/useStore.d.ts
393
494
  /**
394
495
  * Hook to access and mutate the Alepha state.
@@ -461,5 +562,5 @@ declare module "alepha" {
461
562
  */
462
563
  declare const AlephaReact: _$alepha.Service<_$alepha.Module>;
463
564
  //#endregion
464
- export { ActionContext, AlephaContext, AlephaProvider, AlephaProviderProps, AlephaReact, ClientOnly, ClientOnlyProps, ErrorBoundary, ErrorBoundaryProps, UseActionOptions, UseActionReturn, UseStoreReturn, useAction, useAlepha, useClient, useEvents, useInject, useStore };
565
+ export { ActionContext, AlephaContext, AlephaProvider, AlephaProviderProps, AlephaReact, ClientOnly, ClientOnlyProps, ErrorBoundary, ErrorBoundaryProps, UseActionOptions, UseActionReturn, UseQueryOptions, UseQueryReturn, UseStoreReturn, useAction, useAlepha, useClient, useEvents, useInject, useQuery, useStore };
465
566
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/react/core/components/ClientOnly.tsx","../../../src/react/core/components/ErrorBoundary.tsx","../../../src/react/core/contexts/AlephaContext.ts","../../../src/react/core/contexts/AlephaProvider.tsx","../../../src/react/core/hooks/useAction.ts","../../../src/react/core/hooks/useAlepha.ts","../../../src/react/core/hooks/useClient.ts","../../../src/react/core/hooks/useEvents.ts","../../../src/react/core/hooks/useInject.ts","../../../src/react/core/hooks/useStore.ts","../../../src/react/core/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/react/core/components/ClientOnly.tsx","../../../src/react/core/components/ErrorBoundary.tsx","../../../src/react/core/contexts/AlephaContext.ts","../../../src/react/core/contexts/AlephaProvider.tsx","../../../src/react/core/hooks/useAction.ts","../../../src/react/core/hooks/useAlepha.ts","../../../src/react/core/hooks/useClient.ts","../../../src/react/core/hooks/useEvents.ts","../../../src/react/core/hooks/useInject.ts","../../../src/react/core/hooks/useQuery.ts","../../../src/react/core/hooks/useStore.ts","../../../src/react/core/index.ts"],"mappings":"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"}
@@ -405,6 +405,70 @@ const useEvents = (opts, deps) => {
405
405
  }, deps);
406
406
  };
407
407
  //#endregion
408
+ //#region ../../src/react/core/hooks/useQuery.ts
409
+ /**
410
+ * Hook for declarative data fetching with automatic execution and refetch.
411
+ *
412
+ * Thin wrapper over {@link useAction}: it pre-applies `runOnInit: true`,
413
+ * exposes the last result as `data`, and provides a stable `refetch()` to
414
+ * re-run the query on demand. For optimistic mutations and side-effects,
415
+ * use {@link useAction} directly — `useQuery` is for the read path.
416
+ *
417
+ * Caching, request deduplication, and AbortSignal cancellation come from
418
+ * `useAction` + `HttpClient`. There is no separate cache layer — pass
419
+ * `localCache` to your `HttpClient.fetch()`/`fetchAction()` call inside
420
+ * the query handler if you want per-call caching.
421
+ *
422
+ * @example Basic
423
+ * ```tsx
424
+ * const client = useInject(HttpClient);
425
+ * const { data, loading, error, refetch } = useQuery({
426
+ * handler: async ({ signal }) => {
427
+ * const res = await client.fetch("/api/users", { request: { signal } });
428
+ * return res.data;
429
+ * },
430
+ * }, []);
431
+ * ```
432
+ *
433
+ * @example Re-fetch when a dep changes
434
+ * ```tsx
435
+ * const { data } = useQuery({
436
+ * handler: async () => api.getUser(userId),
437
+ * }, [userId]);
438
+ * ```
439
+ *
440
+ * @example Polling
441
+ * ```tsx
442
+ * const { data } = useQuery({
443
+ * handler: async () => api.getStatus(),
444
+ * runEvery: [5, "seconds"],
445
+ * }, []);
446
+ * ```
447
+ */
448
+ function useQuery(options, deps) {
449
+ const [data, setData] = useState(options.initialData);
450
+ const action = useAction({
451
+ id: options.id,
452
+ handler: options.handler,
453
+ runOnInit: options.enabled !== false,
454
+ runEvery: options.runEvery,
455
+ debounce: options.debounce,
456
+ onError: options.onError,
457
+ onSuccess: async (result) => {
458
+ setData(result);
459
+ if (options.onSuccess) await options.onSuccess(result);
460
+ }
461
+ }, deps);
462
+ const refetch = useCallback(() => action.run(), [action.run]);
463
+ return {
464
+ data,
465
+ loading: action.loading,
466
+ error: action.error,
467
+ refetch,
468
+ cancel: action.cancel
469
+ };
470
+ }
471
+ //#endregion
408
472
  //#region ../../src/react/core/hooks/useStore.ts
409
473
  function useStore(target, defaultValue) {
410
474
  const alepha = useAlepha();
@@ -451,6 +515,6 @@ function useStore(target, defaultValue) {
451
515
  */
452
516
  const AlephaReact = $module({ name: "alepha.react.core" });
453
517
  //#endregion
454
- export { AlephaContext, AlephaProvider, AlephaReact, ClientOnly, ErrorBoundary, useAction, useAlepha, useClient, useEvents, useInject, useStore };
518
+ export { AlephaContext, AlephaProvider, AlephaReact, ClientOnly, ErrorBoundary, useAction, useAlepha, useClient, useEvents, useInject, useQuery, useStore };
455
519
 
456
520
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/react/core/components/ClientOnly.tsx","../../../src/react/core/components/ErrorBoundary.tsx","../../../src/react/core/contexts/AlephaContext.ts","../../../src/react/core/contexts/AlephaProvider.tsx","../../../src/react/core/hooks/useAlepha.ts","../../../src/react/core/hooks/useInject.ts","../../../src/react/core/hooks/useAction.ts","../../../src/react/core/hooks/useClient.ts","../../../src/react/core/hooks/useEvents.ts","../../../src/react/core/hooks/useStore.ts","../../../src/react/core/index.ts"],"sourcesContent":["import {\n type PropsWithChildren,\n type ReactNode,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ClientOnlyProps {\n fallback?: ReactNode;\n disabled?: boolean;\n}\n\n/**\n * A small utility component that renders its children only on the client side.\n *\n * Optionally, you can provide a fallback React node that will be rendered.\n *\n * You should use this component when\n * - you have code that relies on browser-specific APIs\n * - you want to avoid server-side rendering for a specific part of your application\n * - you want to prevent pre-rendering of a component\n *\n * @example\n * ```tsx\n * import { ClientOnly } from \"alepha/react\";\n *\n * const MyComponent = () => {\n * // Avoids SSR issues with Date API\n * return (\n * <ClientOnly>\n * {new Date().toLocaleTimeString()}\n * </ClientOnly>\n * );\n * }\n * ```\n */\nconst ClientOnly = (props: PropsWithChildren<ClientOnlyProps>) => {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => setMounted(true), []);\n\n if (props.disabled) {\n return props.children;\n }\n\n return mounted ? props.children : props.fallback;\n};\n\nexport default ClientOnly;\n","import React, {\n type ErrorInfo,\n type PropsWithChildren,\n type ReactNode,\n} from \"react\";\n\n/**\n * Props for the ErrorBoundary component.\n */\nexport interface ErrorBoundaryProps {\n /**\n * Fallback React node to render when an error is caught.\n * If not provided, a default error message will be shown.\n */\n fallback: (error: Error, reset: () => void) => ReactNode;\n\n /**\n * Optional callback that receives the error and error info.\n * Use this to log errors to a monitoring service.\n */\n onError?: (error: Error, info: ErrorInfo) => void;\n}\n\n/**\n * State of the ErrorBoundary component.\n */\ninterface ErrorBoundaryState {\n error?: Error;\n}\n\n/**\n * A reusable error boundary for catching rendering errors in any part of the React component tree.\n *\n * It's already included in the Alepha React framework when using page or layout components.\n */\nexport class ErrorBoundary extends React.Component<\n PropsWithChildren<ErrorBoundaryProps>,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = {};\n }\n\n /**\n * Update state so the next render shows the fallback UI.\n */\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return {\n error,\n };\n }\n\n /**\n * Lifecycle method called when an error is caught.\n * You can log the error or perform side effects here.\n */\n componentDidCatch(error: Error, info: ErrorInfo): void {\n if (this.props.onError) {\n this.props.onError(error, info);\n }\n }\n\n render(): ReactNode {\n if (this.state.error) {\n const reset = () => {\n this.setState({ error: undefined });\n };\n return this.props.fallback(this.state.error, reset);\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import type { Alepha } from \"alepha\";\nimport { createContext } from \"react\";\n\n/**\n * React context to provide the Alepha instance throughout the component tree.\n */\nexport const AlephaContext = createContext<Alepha | undefined>(undefined);\n","import { Alepha } from \"alepha\";\nimport { type ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { AlephaContext } from \"./AlephaContext.ts\";\n\nexport interface AlephaProviderProps {\n children: ReactNode;\n onError: (error: Error) => ReactNode;\n onLoading: () => ReactNode;\n}\n\n/**\n * AlephaProvider component to initialize and provide Alepha instance to the app.\n *\n * This isn't recommended for apps using `alepha/react/router`, as Router will handle this for you.\n */\nexport const AlephaProvider = (props: AlephaProviderProps) => {\n const alepha = useMemo(() => Alepha.create(), []);\n\n const [started, setStarted] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n useEffect(() => {\n alepha\n .start()\n .then(() => setStarted(true))\n .catch((err) => setError(err));\n }, [alepha]);\n\n if (error) {\n return props.onError(error);\n }\n\n if (!started) {\n return props.onLoading();\n }\n\n return (\n <AlephaContext.Provider value={alepha}>\n {props.children}\n </AlephaContext.Provider>\n );\n};\n","import { type Alepha, AlephaError } from \"alepha\";\nimport { useContext } from \"react\";\nimport { AlephaContext } from \"../contexts/AlephaContext.ts\";\n\n/**\n * Main Alepha hook.\n *\n * It provides access to the Alepha instance within a React component.\n *\n * With Alepha, you can access the core functionalities of the framework:\n *\n * - alepha.state() for state management\n * - alepha.inject() for dependency injection\n * - alepha.events.emit() for event handling\n * etc...\n */\nexport const useAlepha = (): Alepha => {\n const alepha = useContext(AlephaContext);\n if (!alepha) {\n throw new AlephaError(\n \"Hook 'useAlepha()' must be used within an AlephaContext.Provider\",\n );\n }\n\n return alepha;\n};\n","import type { Service } from \"alepha\";\nimport { useMemo } from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\n\n/**\n * Hook to inject a service instance.\n * It's a wrapper of `useAlepha().inject(service)` with a memoization.\n */\nexport const useInject = <T extends object>(service: Service<T>): T => {\n const alepha = useAlepha();\n return useMemo(() => alepha.inject(service), []);\n};\n","import type { Async } from \"alepha\";\nimport {\n DateTimeProvider,\n type DurationLike,\n type Interval,\n type Timeout,\n} from \"alepha/datetime\";\nimport {\n type DependencyList,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\nimport { useInject } from \"./useInject.ts\";\n\n/**\n * Hook for handling async actions with automatic error handling and event emission.\n *\n * By default, prevents concurrent executions - if an action is running and you call it again,\n * the second call will be ignored. Use `debounce` option to delay execution instead.\n *\n * Emits lifecycle events:\n * - `react:action:begin` - When action starts\n * - `react:action:success` - When action completes successfully\n * - `react:action:error` - When action throws an error\n * - `react:action:end` - Always emitted at the end\n *\n * @example Basic usage\n * ```tsx\n * const action = useAction({\n * handler: async (data) => {\n * await api.save(data);\n * }\n * }, []);\n *\n * <button onClick={() => action.run(data)} disabled={action.loading}>\n * Save\n * </button>\n * ```\n *\n * @example With debounce (search input)\n * ```tsx\n * const search = useAction({\n * handler: async (query: string) => {\n * await api.search(query);\n * },\n * debounce: 300 // Wait 300ms after last call\n * }, []);\n *\n * <input onChange={(e) => search.run(e.target.value)} />\n * ```\n *\n * @example Run on component mount\n * ```tsx\n * const fetchData = useAction({\n * handler: async () => {\n * const data = await api.getData();\n * return data;\n * },\n * runOnInit: true // Runs once when component mounts\n * }, []);\n * ```\n *\n * @example Run periodically (polling)\n * ```tsx\n * const pollStatus = useAction({\n * handler: async () => {\n * const status = await api.getStatus();\n * return status;\n * },\n * runEvery: 5000 // Run every 5 seconds\n * }, []);\n *\n * // Or with duration tuple\n * const pollStatus = useAction({\n * handler: async () => {\n * const status = await api.getStatus();\n * return status;\n * },\n * runEvery: [30, 'seconds'] // Run every 30 seconds\n * }, []);\n * ```\n *\n * @example With AbortController\n * ```tsx\n * const fetch = useAction({\n * handler: async (url, { signal }) => {\n * const response = await fetch(url, { signal });\n * return response.json();\n * }\n * }, []);\n * // Automatically cancelled on unmount or when new request starts\n * ```\n *\n * @example With error handling\n * ```tsx\n * const deleteAction = useAction({\n * handler: async (id: string) => {\n * await api.delete(id);\n * },\n * onError: (error) => {\n * if (error.code === 'NOT_FOUND') {\n * // Custom error handling\n * }\n * }\n * }, []);\n *\n * {deleteAction.error && <div>Error: {deleteAction.error.message}</div>}\n * ```\n *\n * @example Global error handling\n * ```tsx\n * // In your root app setup\n * alepha.events.on(\"react:action:error\", ({ error }) => {\n * toast.danger(error.message);\n * Sentry.captureException(error);\n * });\n * ```\n */\nexport function useAction<Args extends any[], Result = void>(\n options: UseActionOptions<Args, Result>,\n deps: DependencyList,\n): UseActionReturn<Args, Result> {\n const alepha = useAlepha();\n const dateTimeProvider = useInject(DateTimeProvider);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n const [result, setResult] = useState<Result | undefined>();\n const isExecutingRef = useRef(false);\n const debounceTimerRef = useRef<Timeout | undefined>(undefined);\n const abortControllerRef = useRef<AbortController | undefined>(undefined);\n const isMountedRef = useRef(true);\n const intervalRef = useRef<Interval | undefined>(undefined);\n\n // Track mount state — must set true in body for React StrictMode double-invoke\n useEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n\n // clear debounce timer\n if (debounceTimerRef.current) {\n dateTimeProvider.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = undefined;\n }\n\n // clear interval\n if (intervalRef.current) {\n dateTimeProvider.clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n\n // abort in-flight request\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = undefined;\n }\n };\n }, []);\n\n const executeAction = useCallback(\n async (...args: Args): Promise<Result | undefined> => {\n // Prevent concurrent executions\n if (isExecutingRef.current) {\n return;\n }\n\n // Abort previous request if still running\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // Create new AbortController for this request\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n\n isExecutingRef.current = true;\n setLoading(true);\n setError(undefined);\n\n try {\n await alepha.events.emit(\"react:action:begin\", {\n type: \"custom\",\n id: options.id,\n });\n // Pass abort signal as last argument to handler\n const result = await options.handler(...args, {\n signal: abortController.signal,\n } as any);\n\n // Only update state if still mounted and not aborted\n if (!isMountedRef.current || abortController.signal.aborted) {\n return;\n }\n\n setResult(result as Result);\n\n await alepha.events.emit(\"react:action:success\", {\n type: \"custom\",\n id: options.id,\n });\n\n if (options.onSuccess) {\n await options.onSuccess(result);\n }\n\n return result;\n } catch (err) {\n // Ignore abort errors\n if (err instanceof Error && err.name === \"AbortError\") {\n return;\n }\n\n // Only update state if still mounted\n if (!isMountedRef.current) {\n return;\n }\n\n const error = err as Error;\n setError(error);\n\n await alepha.events.emit(\"react:action:error\", {\n type: \"custom\",\n id: options.id,\n error,\n });\n\n if (options.onError) {\n await options.onError(error);\n } else {\n // Re-throw if no custom error handler\n throw error;\n }\n } finally {\n isExecutingRef.current = false;\n if (isMountedRef.current) {\n setLoading(false);\n }\n\n await alepha.events.emit(\"react:action:end\", {\n type: \"custom\",\n id: options.id,\n });\n\n // Clean up abort controller\n if (abortControllerRef.current === abortController) {\n abortControllerRef.current = undefined;\n }\n }\n },\n [...deps, options.id, options.onError, options.onSuccess],\n );\n\n const handler = useCallback(\n async (...args: Args): Promise<Result | undefined> => {\n if (options.debounce) {\n // clear existing timer\n if (debounceTimerRef.current) {\n dateTimeProvider.clearTimeout(debounceTimerRef.current);\n }\n\n // Set new timer\n return new Promise((resolve) => {\n debounceTimerRef.current = dateTimeProvider.createTimeout(\n async () => {\n const result = await executeAction(...args);\n resolve(result);\n },\n options.debounce ?? 0,\n );\n });\n }\n\n return executeAction(...args);\n },\n [executeAction, options.debounce],\n );\n\n const cancel = useCallback(() => {\n // clear debounce timer\n if (debounceTimerRef.current) {\n dateTimeProvider.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = undefined;\n }\n\n // abort in-flight request\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = undefined;\n }\n\n // reset state\n if (isMountedRef.current) {\n isExecutingRef.current = false;\n setLoading(false);\n }\n }, []);\n\n // Run action on mount if runOnInit is true\n useEffect(() => {\n if (options.runOnInit) {\n handler(...([] as any));\n }\n }, deps);\n\n // Run action periodically if runEvery is specified\n useEffect(() => {\n if (!options.runEvery) {\n return;\n }\n\n // Set up interval\n intervalRef.current = dateTimeProvider.createInterval(\n () => handler(...([] as any)),\n options.runEvery,\n true,\n );\n\n // cleanup on unmount or when runEvery changes\n return () => {\n if (intervalRef.current) {\n dateTimeProvider.clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n };\n }, [handler, options.runEvery]);\n\n return {\n run: handler,\n loading,\n error,\n cancel,\n result,\n };\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Context object passed as the last argument to action handlers.\n * Contains an AbortSignal that can be used to cancel the request.\n */\nexport interface ActionContext {\n /**\n * AbortSignal that can be passed to fetch or other async operations.\n * The signal will be aborted when:\n * - The component unmounts\n * - A new action is triggered (cancels previous)\n * - The cancel() method is called\n *\n * @example\n * ```tsx\n * const action = useAction({\n * handler: async (url, { signal }) => {\n * const response = await fetch(url, { signal });\n * return response.json();\n * }\n * }, []);\n * ```\n */\n signal: AbortSignal;\n}\n\nexport interface UseActionOptions<Args extends any[] = any[], Result = any> {\n /**\n * The async action handler function.\n * Receives the action arguments plus an ActionContext as the last parameter.\n */\n handler: (...args: [...Args, ActionContext]) => Async<Result>;\n\n /**\n * Custom error handler. If provided, prevents default error re-throw.\n */\n onError?: (error: Error) => void | Promise<void>;\n\n /**\n * Custom success handler.\n */\n onSuccess?: (result: Result) => void | Promise<void>;\n\n /**\n * Optional identifier for this action (useful for debugging/analytics)\n */\n id?: string;\n\n name?: string;\n\n /**\n * Debounce delay in milliseconds. If specified, the action will only execute\n * after the specified delay has passed since the last call. Useful for search inputs\n * or other high-frequency events.\n *\n * @example\n * ```tsx\n * // Execute search 300ms after user stops typing\n * const search = useAction({ handler: search, debounce: 300 }, [])\n * ```\n */\n debounce?: number;\n\n /**\n * If true, the action will be executed once when the component mounts.\n *\n * @example\n * ```tsx\n * const fetchData = useAction({\n * handler: async () => await api.getData(),\n * runOnInit: true\n * }, []);\n * ```\n */\n runOnInit?: boolean;\n\n /**\n * If specified, the action will be executed periodically at the given interval.\n * The interval is specified as a DurationLike value (number in ms, Duration object, or [number, unit] tuple).\n *\n * @example\n * ```tsx\n * // Run every 5 seconds\n * const poll = useAction({\n * handler: async () => await api.poll(),\n * runEvery: 5000\n * }, []);\n * ```\n *\n * @example\n * ```tsx\n * // Run every 1 minute\n * const poll = useAction({\n * handler: async () => await api.poll(),\n * runEvery: [1, 'minute']\n * }, []);\n * ```\n */\n runEvery?: DurationLike;\n}\n\nexport interface UseActionReturn<Args extends any[], Result> {\n /**\n * Execute the action with the provided arguments.\n *\n * @example\n * ```tsx\n * const action = useAction({ handler: async (data) => { ... } }, []);\n * action.run(data);\n * ```\n */\n run: (...args: Args) => Promise<Result | undefined>;\n\n /**\n * Loading state - true when action is executing.\n */\n loading: boolean;\n\n /**\n * Error state - contains error if action failed, undefined otherwise.\n */\n error?: Error;\n\n /**\n * Cancel any pending debounced action or abort the current in-flight request.\n *\n * @example\n * ```tsx\n * const action = useAction({ ... }, []);\n *\n * <button onClick={action.cancel} disabled={!action.loading}>\n * Cancel\n * </button>\n * ```\n */\n cancel: () => void;\n\n /**\n * The result data from the last successful action execution.\n */\n result?: Result;\n}\n","import {\n type ClientScope,\n type HttpVirtualClient,\n LinkProvider,\n} from \"alepha/server/links\";\nimport { useMemo } from \"react\";\nimport { useInject } from \"./useInject.ts\";\n\n/**\n * Hook to get a virtual client for the specified scope.\n *\n * It's the React-hook version of `$client()`, from `AlephaServerLinks` module.\n */\nexport const useClient = <T extends object>(\n scope?: ClientScope,\n): HttpVirtualClient<T> => {\n const linkProvider = useInject(LinkProvider);\n\n return useMemo(() => {\n return linkProvider.client<T>(scope);\n }, [scope]);\n};\n","import type { Async, Hook, Hooks } from \"alepha\";\nimport { type DependencyList, useEffect } from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\n\n/**\n * Allow subscribing to multiple Alepha events. See {@link Hooks} for available events.\n *\n * useEvents is fully typed to ensure correct event callback signatures.\n *\n * @example\n * ```tsx\n * useEvents(\n * {\n * \"react:transition:begin\": (ev) => {\n * console.log(\"Transition began to:\", ev.to);\n * },\n * \"react:transition:error\": {\n * priority: \"first\",\n * callback: (ev) => {\n * console.error(\"Transition error:\", ev.error);\n * },\n * },\n * },\n * [],\n * );\n * ```\n */\nexport const useEvents = (opts: UseEvents, deps: DependencyList) => {\n const alepha = useAlepha();\n\n useEffect(() => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n const subs: Function[] = [];\n for (const [name, hook] of Object.entries(opts)) {\n subs.push(alepha.events.on(name as any, hook as any));\n }\n\n return () => {\n for (const clear of subs) {\n clear();\n }\n };\n }, deps);\n};\n\ntype UseEvents = {\n [T in keyof Hooks]?: Hook<T> | ((payload: Hooks[T]) => Async<void>);\n};\n","import type { State, Static, TAtomObject } from \"alepha\";\nimport { Atom } from \"alepha\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\n\n/**\n * Hook to access and mutate the Alepha state.\n */\nfunction useStore<T extends TAtomObject>(\n target: Atom<T>,\n defaultValue?: Static<T>,\n): UseStoreReturn<Static<T>>;\nfunction useStore<Key extends keyof State>(\n target: Key,\n defaultValue?: State[Key],\n): UseStoreReturn<State[Key]>;\nfunction useStore(target: any, defaultValue?: any): any {\n const alepha = useAlepha();\n\n useMemo(() => {\n if (defaultValue != null && alepha.store.get(target) == null) {\n alepha.store.set(target, defaultValue);\n }\n }, [defaultValue]);\n\n const [state, setState] = useState(alepha.store.get(target));\n\n useEffect(() => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n const key = target instanceof Atom ? target.key : target;\n\n return alepha.events.on(\"state:mutate\", (ev) => {\n if (ev.key === key) {\n setState(ev.value);\n }\n });\n }, []);\n\n return [\n state,\n (value: any) => {\n alepha.store.set(target, value);\n },\n ] as const;\n}\n\nexport type UseStoreReturn<T> = [T, (value: T) => void];\n\nexport { useStore };\n","import { $module } from \"alepha\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type * from \"./components/ClientOnly.tsx\";\nexport { default as ClientOnly } from \"./components/ClientOnly.tsx\";\nexport type * from \"./components/ErrorBoundary.tsx\";\nexport { default as ErrorBoundary } from \"./components/ErrorBoundary.tsx\";\nexport * from \"./contexts/AlephaContext.ts\";\nexport * from \"./contexts/AlephaProvider.tsx\";\nexport * from \"./hooks/useAction.ts\";\nexport * from \"./hooks/useAlepha.ts\";\nexport * from \"./hooks/useClient.ts\";\nexport * from \"./hooks/useEvents.ts\";\nexport * from \"./hooks/useInject.ts\";\nexport * from \"./hooks/useStore.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ndeclare module \"alepha\" {\n interface Hooks {\n /**\n * Fires when a user action is starting.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:begin\": {\n type: string;\n id?: string;\n };\n /**\n * Fires when a user action has succeeded.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:success\": {\n type: string;\n id?: string;\n };\n /**\n * Fires when a user action has failed.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:error\": {\n type: string;\n id?: string;\n error: Error;\n };\n /**\n * Fires when a user action has completed, regardless of success or failure.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:end\": {\n type: string;\n id?: string;\n };\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Full-stack React framework with server-side rendering.\n *\n * **Features:**\n * - React page routes with type-safe params\n * - Async action handler with loading/error/cancel states\n * - Type-safe HTTP client access\n * - Dependency injection in components\n * - Global state management\n * - Router navigation methods\n * - Current route state access\n * - Check if path is active\n * - URL query parameters\n * - Access route schema\n * - Subscribe to Alepha events\n * - Type-safe form handling with validation\n * - Error handling wrapper component\n * - Client-side only rendering component\n * - Server-side rendering with hydration\n * - Automatic code splitting\n * - Event system for action tracking\n *\n * @module alepha.react\n */\nexport const AlephaReact = $module({\n name: \"alepha.react.core\",\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/react/core/components/ClientOnly.tsx","../../../src/react/core/components/ErrorBoundary.tsx","../../../src/react/core/contexts/AlephaContext.ts","../../../src/react/core/contexts/AlephaProvider.tsx","../../../src/react/core/hooks/useAlepha.ts","../../../src/react/core/hooks/useInject.ts","../../../src/react/core/hooks/useAction.ts","../../../src/react/core/hooks/useClient.ts","../../../src/react/core/hooks/useEvents.ts","../../../src/react/core/hooks/useQuery.ts","../../../src/react/core/hooks/useStore.ts","../../../src/react/core/index.ts"],"sourcesContent":["import {\n type PropsWithChildren,\n type ReactNode,\n useEffect,\n useState,\n} from \"react\";\n\nexport interface ClientOnlyProps {\n fallback?: ReactNode;\n disabled?: boolean;\n}\n\n/**\n * A small utility component that renders its children only on the client side.\n *\n * Optionally, you can provide a fallback React node that will be rendered.\n *\n * You should use this component when\n * - you have code that relies on browser-specific APIs\n * - you want to avoid server-side rendering for a specific part of your application\n * - you want to prevent pre-rendering of a component\n *\n * @example\n * ```tsx\n * import { ClientOnly } from \"alepha/react\";\n *\n * const MyComponent = () => {\n * // Avoids SSR issues with Date API\n * return (\n * <ClientOnly>\n * {new Date().toLocaleTimeString()}\n * </ClientOnly>\n * );\n * }\n * ```\n */\nconst ClientOnly = (props: PropsWithChildren<ClientOnlyProps>) => {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => setMounted(true), []);\n\n if (props.disabled) {\n return props.children;\n }\n\n return mounted ? props.children : props.fallback;\n};\n\nexport default ClientOnly;\n","import React, {\n type ErrorInfo,\n type PropsWithChildren,\n type ReactNode,\n} from \"react\";\n\n/**\n * Props for the ErrorBoundary component.\n */\nexport interface ErrorBoundaryProps {\n /**\n * Fallback React node to render when an error is caught.\n * If not provided, a default error message will be shown.\n */\n fallback: (error: Error, reset: () => void) => ReactNode;\n\n /**\n * Optional callback that receives the error and error info.\n * Use this to log errors to a monitoring service.\n */\n onError?: (error: Error, info: ErrorInfo) => void;\n}\n\n/**\n * State of the ErrorBoundary component.\n */\ninterface ErrorBoundaryState {\n error?: Error;\n}\n\n/**\n * A reusable error boundary for catching rendering errors in any part of the React component tree.\n *\n * It's already included in the Alepha React framework when using page or layout components.\n */\nexport class ErrorBoundary extends React.Component<\n PropsWithChildren<ErrorBoundaryProps>,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = {};\n }\n\n /**\n * Update state so the next render shows the fallback UI.\n */\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return {\n error,\n };\n }\n\n /**\n * Lifecycle method called when an error is caught.\n * You can log the error or perform side effects here.\n */\n componentDidCatch(error: Error, info: ErrorInfo): void {\n if (this.props.onError) {\n this.props.onError(error, info);\n }\n }\n\n render(): ReactNode {\n if (this.state.error) {\n const reset = () => {\n this.setState({ error: undefined });\n };\n return this.props.fallback(this.state.error, reset);\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import type { Alepha } from \"alepha\";\nimport { createContext } from \"react\";\n\n/**\n * React context to provide the Alepha instance throughout the component tree.\n */\nexport const AlephaContext = createContext<Alepha | undefined>(undefined);\n","import { Alepha } from \"alepha\";\nimport { type ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { AlephaContext } from \"./AlephaContext.ts\";\n\nexport interface AlephaProviderProps {\n children: ReactNode;\n onError: (error: Error) => ReactNode;\n onLoading: () => ReactNode;\n}\n\n/**\n * AlephaProvider component to initialize and provide Alepha instance to the app.\n *\n * This isn't recommended for apps using `alepha/react/router`, as Router will handle this for you.\n */\nexport const AlephaProvider = (props: AlephaProviderProps) => {\n const alepha = useMemo(() => Alepha.create(), []);\n\n const [started, setStarted] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n\n useEffect(() => {\n alepha\n .start()\n .then(() => setStarted(true))\n .catch((err) => setError(err));\n }, [alepha]);\n\n if (error) {\n return props.onError(error);\n }\n\n if (!started) {\n return props.onLoading();\n }\n\n return (\n <AlephaContext.Provider value={alepha}>\n {props.children}\n </AlephaContext.Provider>\n );\n};\n","import { type Alepha, AlephaError } from \"alepha\";\nimport { useContext } from \"react\";\nimport { AlephaContext } from \"../contexts/AlephaContext.ts\";\n\n/**\n * Main Alepha hook.\n *\n * It provides access to the Alepha instance within a React component.\n *\n * With Alepha, you can access the core functionalities of the framework:\n *\n * - alepha.state() for state management\n * - alepha.inject() for dependency injection\n * - alepha.events.emit() for event handling\n * etc...\n */\nexport const useAlepha = (): Alepha => {\n const alepha = useContext(AlephaContext);\n if (!alepha) {\n throw new AlephaError(\n \"Hook 'useAlepha()' must be used within an AlephaContext.Provider\",\n );\n }\n\n return alepha;\n};\n","import type { Service } from \"alepha\";\nimport { useMemo } from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\n\n/**\n * Hook to inject a service instance.\n * It's a wrapper of `useAlepha().inject(service)` with a memoization.\n */\nexport const useInject = <T extends object>(service: Service<T>): T => {\n const alepha = useAlepha();\n return useMemo(() => alepha.inject(service), []);\n};\n","import type { Async } from \"alepha\";\nimport {\n DateTimeProvider,\n type DurationLike,\n type Interval,\n type Timeout,\n} from \"alepha/datetime\";\nimport {\n type DependencyList,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\nimport { useInject } from \"./useInject.ts\";\n\n/**\n * Hook for handling async actions with automatic error handling and event emission.\n *\n * By default, prevents concurrent executions - if an action is running and you call it again,\n * the second call will be ignored. Use `debounce` option to delay execution instead.\n *\n * Emits lifecycle events:\n * - `react:action:begin` - When action starts\n * - `react:action:success` - When action completes successfully\n * - `react:action:error` - When action throws an error\n * - `react:action:end` - Always emitted at the end\n *\n * @example Basic usage\n * ```tsx\n * const action = useAction({\n * handler: async (data) => {\n * await api.save(data);\n * }\n * }, []);\n *\n * <button onClick={() => action.run(data)} disabled={action.loading}>\n * Save\n * </button>\n * ```\n *\n * @example With debounce (search input)\n * ```tsx\n * const search = useAction({\n * handler: async (query: string) => {\n * await api.search(query);\n * },\n * debounce: 300 // Wait 300ms after last call\n * }, []);\n *\n * <input onChange={(e) => search.run(e.target.value)} />\n * ```\n *\n * @example Run on component mount\n * ```tsx\n * const fetchData = useAction({\n * handler: async () => {\n * const data = await api.getData();\n * return data;\n * },\n * runOnInit: true // Runs once when component mounts\n * }, []);\n * ```\n *\n * @example Run periodically (polling)\n * ```tsx\n * const pollStatus = useAction({\n * handler: async () => {\n * const status = await api.getStatus();\n * return status;\n * },\n * runEvery: 5000 // Run every 5 seconds\n * }, []);\n *\n * // Or with duration tuple\n * const pollStatus = useAction({\n * handler: async () => {\n * const status = await api.getStatus();\n * return status;\n * },\n * runEvery: [30, 'seconds'] // Run every 30 seconds\n * }, []);\n * ```\n *\n * @example With AbortController\n * ```tsx\n * const fetch = useAction({\n * handler: async (url, { signal }) => {\n * const response = await fetch(url, { signal });\n * return response.json();\n * }\n * }, []);\n * // Automatically cancelled on unmount or when new request starts\n * ```\n *\n * @example With error handling\n * ```tsx\n * const deleteAction = useAction({\n * handler: async (id: string) => {\n * await api.delete(id);\n * },\n * onError: (error) => {\n * if (error.code === 'NOT_FOUND') {\n * // Custom error handling\n * }\n * }\n * }, []);\n *\n * {deleteAction.error && <div>Error: {deleteAction.error.message}</div>}\n * ```\n *\n * @example Global error handling\n * ```tsx\n * // In your root app setup\n * alepha.events.on(\"react:action:error\", ({ error }) => {\n * toast.danger(error.message);\n * Sentry.captureException(error);\n * });\n * ```\n */\nexport function useAction<Args extends any[], Result = void>(\n options: UseActionOptions<Args, Result>,\n deps: DependencyList,\n): UseActionReturn<Args, Result> {\n const alepha = useAlepha();\n const dateTimeProvider = useInject(DateTimeProvider);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>();\n const [result, setResult] = useState<Result | undefined>();\n const isExecutingRef = useRef(false);\n const debounceTimerRef = useRef<Timeout | undefined>(undefined);\n const abortControllerRef = useRef<AbortController | undefined>(undefined);\n const isMountedRef = useRef(true);\n const intervalRef = useRef<Interval | undefined>(undefined);\n\n // Track mount state — must set true in body for React StrictMode double-invoke\n useEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n\n // clear debounce timer\n if (debounceTimerRef.current) {\n dateTimeProvider.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = undefined;\n }\n\n // clear interval\n if (intervalRef.current) {\n dateTimeProvider.clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n\n // abort in-flight request\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = undefined;\n }\n };\n }, []);\n\n const executeAction = useCallback(\n async (...args: Args): Promise<Result | undefined> => {\n // Prevent concurrent executions\n if (isExecutingRef.current) {\n return;\n }\n\n // Abort previous request if still running\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n // Create new AbortController for this request\n const abortController = new AbortController();\n abortControllerRef.current = abortController;\n\n isExecutingRef.current = true;\n setLoading(true);\n setError(undefined);\n\n try {\n await alepha.events.emit(\"react:action:begin\", {\n type: \"custom\",\n id: options.id,\n });\n // Pass abort signal as last argument to handler\n const result = await options.handler(...args, {\n signal: abortController.signal,\n } as any);\n\n // Only update state if still mounted and not aborted\n if (!isMountedRef.current || abortController.signal.aborted) {\n return;\n }\n\n setResult(result as Result);\n\n await alepha.events.emit(\"react:action:success\", {\n type: \"custom\",\n id: options.id,\n });\n\n if (options.onSuccess) {\n await options.onSuccess(result);\n }\n\n return result;\n } catch (err) {\n // Ignore abort errors\n if (err instanceof Error && err.name === \"AbortError\") {\n return;\n }\n\n // Only update state if still mounted\n if (!isMountedRef.current) {\n return;\n }\n\n const error = err as Error;\n setError(error);\n\n await alepha.events.emit(\"react:action:error\", {\n type: \"custom\",\n id: options.id,\n error,\n });\n\n if (options.onError) {\n await options.onError(error);\n } else {\n // Re-throw if no custom error handler\n throw error;\n }\n } finally {\n isExecutingRef.current = false;\n if (isMountedRef.current) {\n setLoading(false);\n }\n\n await alepha.events.emit(\"react:action:end\", {\n type: \"custom\",\n id: options.id,\n });\n\n // Clean up abort controller\n if (abortControllerRef.current === abortController) {\n abortControllerRef.current = undefined;\n }\n }\n },\n [...deps, options.id, options.onError, options.onSuccess],\n );\n\n const handler = useCallback(\n async (...args: Args): Promise<Result | undefined> => {\n if (options.debounce) {\n // clear existing timer\n if (debounceTimerRef.current) {\n dateTimeProvider.clearTimeout(debounceTimerRef.current);\n }\n\n // Set new timer\n return new Promise((resolve) => {\n debounceTimerRef.current = dateTimeProvider.createTimeout(\n async () => {\n const result = await executeAction(...args);\n resolve(result);\n },\n options.debounce ?? 0,\n );\n });\n }\n\n return executeAction(...args);\n },\n [executeAction, options.debounce],\n );\n\n const cancel = useCallback(() => {\n // clear debounce timer\n if (debounceTimerRef.current) {\n dateTimeProvider.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = undefined;\n }\n\n // abort in-flight request\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = undefined;\n }\n\n // reset state\n if (isMountedRef.current) {\n isExecutingRef.current = false;\n setLoading(false);\n }\n }, []);\n\n // Run action on mount if runOnInit is true\n useEffect(() => {\n if (options.runOnInit) {\n handler(...([] as any));\n }\n }, deps);\n\n // Run action periodically if runEvery is specified\n useEffect(() => {\n if (!options.runEvery) {\n return;\n }\n\n // Set up interval\n intervalRef.current = dateTimeProvider.createInterval(\n () => handler(...([] as any)),\n options.runEvery,\n true,\n );\n\n // cleanup on unmount or when runEvery changes\n return () => {\n if (intervalRef.current) {\n dateTimeProvider.clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n };\n }, [handler, options.runEvery]);\n\n return {\n run: handler,\n loading,\n error,\n cancel,\n result,\n };\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Context object passed as the last argument to action handlers.\n * Contains an AbortSignal that can be used to cancel the request.\n */\nexport interface ActionContext {\n /**\n * AbortSignal that can be passed to fetch or other async operations.\n * The signal will be aborted when:\n * - The component unmounts\n * - A new action is triggered (cancels previous)\n * - The cancel() method is called\n *\n * @example\n * ```tsx\n * const action = useAction({\n * handler: async (url, { signal }) => {\n * const response = await fetch(url, { signal });\n * return response.json();\n * }\n * }, []);\n * ```\n */\n signal: AbortSignal;\n}\n\nexport interface UseActionOptions<Args extends any[] = any[], Result = any> {\n /**\n * The async action handler function.\n * Receives the action arguments plus an ActionContext as the last parameter.\n */\n handler: (...args: [...Args, ActionContext]) => Async<Result>;\n\n /**\n * Custom error handler. If provided, prevents default error re-throw.\n */\n onError?: (error: Error) => void | Promise<void>;\n\n /**\n * Custom success handler.\n */\n onSuccess?: (result: Result) => void | Promise<void>;\n\n /**\n * Optional identifier for this action (useful for debugging/analytics)\n */\n id?: string;\n\n name?: string;\n\n /**\n * Debounce delay in milliseconds. If specified, the action will only execute\n * after the specified delay has passed since the last call. Useful for search inputs\n * or other high-frequency events.\n *\n * @example\n * ```tsx\n * // Execute search 300ms after user stops typing\n * const search = useAction({ handler: search, debounce: 300 }, [])\n * ```\n */\n debounce?: number;\n\n /**\n * If true, the action will be executed once when the component mounts.\n *\n * @example\n * ```tsx\n * const fetchData = useAction({\n * handler: async () => await api.getData(),\n * runOnInit: true\n * }, []);\n * ```\n */\n runOnInit?: boolean;\n\n /**\n * If specified, the action will be executed periodically at the given interval.\n * The interval is specified as a DurationLike value (number in ms, Duration object, or [number, unit] tuple).\n *\n * @example\n * ```tsx\n * // Run every 5 seconds\n * const poll = useAction({\n * handler: async () => await api.poll(),\n * runEvery: 5000\n * }, []);\n * ```\n *\n * @example\n * ```tsx\n * // Run every 1 minute\n * const poll = useAction({\n * handler: async () => await api.poll(),\n * runEvery: [1, 'minute']\n * }, []);\n * ```\n */\n runEvery?: DurationLike;\n}\n\nexport interface UseActionReturn<Args extends any[], Result> {\n /**\n * Execute the action with the provided arguments.\n *\n * @example\n * ```tsx\n * const action = useAction({ handler: async (data) => { ... } }, []);\n * action.run(data);\n * ```\n */\n run: (...args: Args) => Promise<Result | undefined>;\n\n /**\n * Loading state - true when action is executing.\n */\n loading: boolean;\n\n /**\n * Error state - contains error if action failed, undefined otherwise.\n */\n error?: Error;\n\n /**\n * Cancel any pending debounced action or abort the current in-flight request.\n *\n * @example\n * ```tsx\n * const action = useAction({ ... }, []);\n *\n * <button onClick={action.cancel} disabled={!action.loading}>\n * Cancel\n * </button>\n * ```\n */\n cancel: () => void;\n\n /**\n * The result data from the last successful action execution.\n */\n result?: Result;\n}\n","import {\n type ClientScope,\n type HttpVirtualClient,\n LinkProvider,\n} from \"alepha/server/links\";\nimport { useMemo } from \"react\";\nimport { useInject } from \"./useInject.ts\";\n\n/**\n * Hook to get a virtual client for the specified scope.\n *\n * It's the React-hook version of `$client()`, from `AlephaServerLinks` module.\n */\nexport const useClient = <T extends object>(\n scope?: ClientScope,\n): HttpVirtualClient<T> => {\n const linkProvider = useInject(LinkProvider);\n\n return useMemo(() => {\n return linkProvider.client<T>(scope);\n }, [scope]);\n};\n","import type { Async, Hook, Hooks } from \"alepha\";\nimport { type DependencyList, useEffect } from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\n\n/**\n * Allow subscribing to multiple Alepha events. See {@link Hooks} for available events.\n *\n * useEvents is fully typed to ensure correct event callback signatures.\n *\n * @example\n * ```tsx\n * useEvents(\n * {\n * \"react:transition:begin\": (ev) => {\n * console.log(\"Transition began to:\", ev.to);\n * },\n * \"react:transition:error\": {\n * priority: \"first\",\n * callback: (ev) => {\n * console.error(\"Transition error:\", ev.error);\n * },\n * },\n * },\n * [],\n * );\n * ```\n */\nexport const useEvents = (opts: UseEvents, deps: DependencyList) => {\n const alepha = useAlepha();\n\n useEffect(() => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n const subs: Function[] = [];\n for (const [name, hook] of Object.entries(opts)) {\n subs.push(alepha.events.on(name as any, hook as any));\n }\n\n return () => {\n for (const clear of subs) {\n clear();\n }\n };\n }, deps);\n};\n\ntype UseEvents = {\n [T in keyof Hooks]?: Hook<T> | ((payload: Hooks[T]) => Async<void>);\n};\n","import type { Async } from \"alepha\";\nimport type { DurationLike } from \"alepha/datetime\";\nimport { type DependencyList, useCallback, useState } from \"react\";\nimport type { ActionContext } from \"./useAction.ts\";\nimport { useAction } from \"./useAction.ts\";\n\n/**\n * Hook for declarative data fetching with automatic execution and refetch.\n *\n * Thin wrapper over {@link useAction}: it pre-applies `runOnInit: true`,\n * exposes the last result as `data`, and provides a stable `refetch()` to\n * re-run the query on demand. For optimistic mutations and side-effects,\n * use {@link useAction} directly — `useQuery` is for the read path.\n *\n * Caching, request deduplication, and AbortSignal cancellation come from\n * `useAction` + `HttpClient`. There is no separate cache layer — pass\n * `localCache` to your `HttpClient.fetch()`/`fetchAction()` call inside\n * the query handler if you want per-call caching.\n *\n * @example Basic\n * ```tsx\n * const client = useInject(HttpClient);\n * const { data, loading, error, refetch } = useQuery({\n * handler: async ({ signal }) => {\n * const res = await client.fetch(\"/api/users\", { request: { signal } });\n * return res.data;\n * },\n * }, []);\n * ```\n *\n * @example Re-fetch when a dep changes\n * ```tsx\n * const { data } = useQuery({\n * handler: async () => api.getUser(userId),\n * }, [userId]);\n * ```\n *\n * @example Polling\n * ```tsx\n * const { data } = useQuery({\n * handler: async () => api.getStatus(),\n * runEvery: [5, \"seconds\"],\n * }, []);\n * ```\n */\nexport function useQuery<Result>(\n options: UseQueryOptions<Result>,\n deps: DependencyList,\n): UseQueryReturn<Result> {\n const [data, setData] = useState<Result | undefined>(options.initialData);\n\n const action = useAction<[], Result>(\n {\n id: options.id,\n handler: options.handler,\n runOnInit: options.enabled !== false,\n runEvery: options.runEvery,\n debounce: options.debounce,\n onError: options.onError,\n onSuccess: async (result) => {\n setData(result);\n if (options.onSuccess) {\n await options.onSuccess(result);\n }\n },\n },\n deps,\n );\n\n const refetch = useCallback(() => action.run(), [action.run]);\n\n return {\n data,\n loading: action.loading,\n error: action.error,\n refetch,\n cancel: action.cancel,\n };\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface UseQueryOptions<Result> {\n /**\n * Async query handler. Receives an {@link ActionContext} with an\n * AbortSignal that fires on unmount, dependency change, or `cancel()`.\n */\n handler: (context: ActionContext) => Async<Result>;\n\n /**\n * Optional identifier (used in lifecycle events for debugging/analytics).\n */\n id?: string;\n\n /**\n * If `false`, skip automatic execution on mount and dep change. Use\n * `refetch()` to trigger manually. Defaults to `true`.\n */\n enabled?: boolean;\n\n /**\n * Initial value for `data` before the first successful fetch.\n */\n initialData?: Result;\n\n /**\n * Re-run periodically. See {@link useAction} `runEvery`.\n */\n runEvery?: DurationLike;\n\n /**\n * Debounce delay in milliseconds. See {@link useAction} `debounce`.\n */\n debounce?: number;\n\n /**\n * Called on success with the resolved value.\n */\n onSuccess?: (result: Result) => void | Promise<void>;\n\n /**\n * Custom error handler. If provided, prevents default error re-throw.\n */\n onError?: (error: Error) => void | Promise<void>;\n}\n\nexport interface UseQueryReturn<Result> {\n /**\n * The last successful result. `undefined` until the first fetch resolves\n * (or the value of `initialData` if provided).\n */\n data: Result | undefined;\n\n /**\n * Loading state — `true` while a fetch is in flight.\n */\n loading: boolean;\n\n /**\n * Error from the last failed fetch, if any.\n */\n error?: Error;\n\n /**\n * Re-run the query. The previous in-flight request, if any, is aborted.\n */\n refetch: () => Promise<Result | undefined>;\n\n /**\n * Abort the in-flight request without scheduling another.\n */\n cancel: () => void;\n}\n","import type { State, Static, TAtomObject } from \"alepha\";\nimport { Atom } from \"alepha\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAlepha } from \"./useAlepha.ts\";\n\n/**\n * Hook to access and mutate the Alepha state.\n */\nfunction useStore<T extends TAtomObject>(\n target: Atom<T>,\n defaultValue?: Static<T>,\n): UseStoreReturn<Static<T>>;\nfunction useStore<Key extends keyof State>(\n target: Key,\n defaultValue?: State[Key],\n): UseStoreReturn<State[Key]>;\nfunction useStore(target: any, defaultValue?: any): any {\n const alepha = useAlepha();\n\n useMemo(() => {\n if (defaultValue != null && alepha.store.get(target) == null) {\n alepha.store.set(target, defaultValue);\n }\n }, [defaultValue]);\n\n const [state, setState] = useState(alepha.store.get(target));\n\n useEffect(() => {\n if (!alepha.isBrowser()) {\n return;\n }\n\n const key = target instanceof Atom ? target.key : target;\n\n return alepha.events.on(\"state:mutate\", (ev) => {\n if (ev.key === key) {\n setState(ev.value);\n }\n });\n }, []);\n\n return [\n state,\n (value: any) => {\n alepha.store.set(target, value);\n },\n ] as const;\n}\n\nexport type UseStoreReturn<T> = [T, (value: T) => void];\n\nexport { useStore };\n","import { $module } from \"alepha\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type * from \"./components/ClientOnly.tsx\";\nexport { default as ClientOnly } from \"./components/ClientOnly.tsx\";\nexport type * from \"./components/ErrorBoundary.tsx\";\nexport { default as ErrorBoundary } from \"./components/ErrorBoundary.tsx\";\nexport * from \"./contexts/AlephaContext.ts\";\nexport * from \"./contexts/AlephaProvider.tsx\";\nexport * from \"./hooks/useAction.ts\";\nexport * from \"./hooks/useAlepha.ts\";\nexport * from \"./hooks/useClient.ts\";\nexport * from \"./hooks/useEvents.ts\";\nexport * from \"./hooks/useInject.ts\";\nexport * from \"./hooks/useQuery.ts\";\nexport * from \"./hooks/useStore.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\ndeclare module \"alepha\" {\n interface Hooks {\n /**\n * Fires when a user action is starting.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:begin\": {\n type: string;\n id?: string;\n };\n /**\n * Fires when a user action has succeeded.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:success\": {\n type: string;\n id?: string;\n };\n /**\n * Fires when a user action has failed.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:error\": {\n type: string;\n id?: string;\n error: Error;\n };\n /**\n * Fires when a user action has completed, regardless of success or failure.\n * Action can be a form submission, a route transition, or a custom action.\n */\n \"react:action:end\": {\n type: string;\n id?: string;\n };\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Full-stack React framework with server-side rendering.\n *\n * **Features:**\n * - React page routes with type-safe params\n * - Async action handler with loading/error/cancel states\n * - Type-safe HTTP client access\n * - Dependency injection in components\n * - Global state management\n * - Router navigation methods\n * - Current route state access\n * - Check if path is active\n * - URL query parameters\n * - Access route schema\n * - Subscribe to Alepha events\n * - Type-safe form handling with validation\n * - Error handling wrapper component\n * - Client-side only rendering component\n * - Server-side rendering with hydration\n * - Automatic code splitting\n * - Event system for action tracking\n *\n * @module alepha.react\n */\nexport const AlephaReact = $module({\n name: \"alepha.react.core\",\n});\n"],"mappings":"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"}
@@ -228,6 +228,12 @@ interface FieldMeta {
228
228
  constraints: FieldConstraints;
229
229
  testId?: string;
230
230
  schema: TSchema;
231
+ /**
232
+ * Raw `$control` value from the schema, untyped here. The UI layer
233
+ * (`alepha/react/ui`) provides the strict {@link SchemaControl} type and
234
+ * a `resolveSchemaControl` helper to evaluate the function form.
235
+ */
236
+ control?: unknown;
231
237
  }
232
238
  interface ParseFieldOptions {
233
239
  label?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/react/form/services/FormModel.ts","../../../src/react/form/components/FormState.tsx","../../../src/react/form/errors/FormValidationError.ts","../../../src/react/form/hooks/useFieldValue.ts","../../../src/react/form/hooks/useForm.ts","../../../src/react/form/hooks/useFormState.ts","../../../src/react/form/hooks/useFormValues.ts","../../../src/react/form/services/parseField.ts","../../../src/react/form/services/prettyName.ts","../../../src/react/form/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/react/form/services/FormModel.ts","../../../src/react/form/components/FormState.tsx","../../../src/react/form/errors/FormValidationError.ts","../../../src/react/form/hooks/useFieldValue.ts","../../../src/react/form/hooks/useForm.ts","../../../src/react/form/hooks/useFormState.ts","../../../src/react/form/hooks/useFormValues.ts","../../../src/react/form/services/parseField.ts","../../../src/react/form/services/prettyName.ts","../../../src/react/form/index.ts"],"mappings":";;;;;;;;;AAoBA;;;;;cAAa,SAAA,WAAoB,OAAA;EAAA,SAcb,EAAA;EAAA,SACA,OAAA,EAAS,eAAA,CAAgB,CAAA;EAAA,mBAdxB,GAAA,EAcuB,gBAAA,CAdpB,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,MAAA,EAAQ,MAAA;EAAA,mBACR,aAAA,EAAe,MAAA;EAAA,UACxB,gBAAA;EAEH,KAAA,EAAO,aAAA,CAAc,CAAA;EAAA,IAEjB,UAAA,CAAA;cAKO,EAAA,UACA,OAAA,EAAS,eAAA,CAAgB,CAAA;EA+Df;;;;EAAA,UAjClB,qBAAA,CACR,MAAA,EAAQ,OAAA,EACR,MAAA,YACC,MAAA;EAAA,IA8BQ,aAAA,CAAA,GAAiB,MAAA;EAAA,IAIjB,KAAA,CAAA;;;oBAIS,aAAA;qBAIC,aAAA;EAAA;EAAA,SAIL,gBAAA,GAAoB,MAAA,EAAQ,MAAA;EAAA,SA0B5B,KAAA,GAAS,KAAA,GAAQ,aAAA;EAAA,SA0BjB,MAAA,QAAM,OAAA;EA0HnB;;;;EAAA,UAlDO,iBAAA,CAAkB,KAAA,EAAO,MAAA,gBAAsB,MAAA;EAqF9C;;;;EAAA,UAjED,sBAAA,CACR,MAAA,EAAQ,MAAA,eACR,GAAA,UACA,KAAA;EAAA,UAoBQ,qBAAA,WAAgC,OAAA,CAAA,CACxC,OAAA,EAAS,eAAA,CAAgB,CAAA,GACzB,MAAA,EAAQ,OAAA,EACR,OAAA;IACE,MAAA;IACA,KAAA,EAAO,MAAA;EAAA,IAER,aAAA,CAAc,CAAA;EAAA,UAiCP,qBAAA,WAAgC,OAAA,CAAA,CACxC,IAAA,QAAY,MAAA,CAAO,CAAA,YACnB,OAAA,EAAS,eAAA,CAAgB,CAAA,GACzB,MAAA,EAAQ,OAAA,EACR,QAAA,WACA,OAAA;IACE,MAAA;IACA,KAAA,EAAO,MAAA;EAAA,IAER,cAAA;EArTgB;;;;EAAA,UA4bT,iBAAA,CAAkB,KAAA,OAAY,MAAA,EAAQ,OAAA;AAAA;AAAA,KA0CtC,aAAA,WAAwB,OAAA,kBACtB,CAAA,iBAAkB,UAAA,CAAW,CAAA,eAAgB,CAAA;AAAA,UAG1C,aAAA;EACf,cAAA;EACA,eAAA;AAAA;AAAA,KAGU,UAAA,WAAqB,OAAA,IAAW,CAAA,SAAU,OAAA,GAClD,gBAAA,CAAiB,CAAA,IACjB,CAAA,SAAU,MAAA,YACR,eAAA,CAAgB,CAAA,IAChB,cAAA;AAAA,UAEW,cAAA;EACf,IAAA;EACA,QAAA;EACA,YAAA;EACA,KAAA,EAAO,uBAAA;EACP,MAAA,EAAQ,OAAA;EACR,GAAA,GAAM,KAAA;EACN,IAAA,EAAM,SAAA;EACN,KAAA;AAAA;AAAA,UAGe,gBAAA,WAA2B,OAAA,UAAiB,cAAA;EAC3D,KAAA,EAAO,aAAA,CAAc,CAAA;AAAA;AAAA,UAGN,eAAA,WAA0B,OAAA,UAAiB,cAAA;EAC1D,KAAA,EAAO,KAAA,CAAM,UAAA,CAAW,CAAA;AAAA;AAAA,KAGd,uBAAA,GAA0B,IAAA,CACpC,mBAAA;EAUA,KAAA;AAAA;AAAA,KAGU,eAAA,WAA0B,OAAA;EAzbpB;;;;EA8bhB,MAAA,EAAQ,CAAA;EApaiB;;;;EA0azB,OAAA,GAAU,MAAA,EAAQ,MAAA,CAAO,CAAA;EAxUG;;;;EA8U5B,aAAA,GAAgB,OAAA,CAAQ,MAAA,CAAO,CAAA;EAxT7B;;;;EA8TF,aAAA,IACE,IAAA,QAAY,MAAA,CAAO,CAAA,YACnB,MAAA,EAAQ,OAAA,KACL,mBAAA;EA3SM;;;;;;;EAoTX,EAAA;EAEA,OAAA,IAAW,KAAA,EAAO,KAAA;EAElB,QAAA,IAAY,GAAA,UAAa,KAAA,OAAY,KAAA,EAAO,MAAA;EAE5C,OAAA;AAAA;;;cC/kBI,SAAA,aAAuB,OAAA,EAAS,KAAA;EACpC,IAAA,EAAM,SAAA,CAAU,CAAA;EAChB,QAAA,GAAW,KAAA;IAAS,OAAA;IAAkB,KAAA;EAAA,MAAqB,SAAA;AAAA,MAC5D,SAAA;;;cCNY,mBAAA,SAA4B,YAAA;EAAA,SAC9B,IAAA;cAEG,OAAA;IACV,OAAA;IACA,IAAA;EAAA;AAAA;;;;;;;;AFaJ;cGVa,aAAA,GACX,KAAA,EAAO,cAAA,YACC,KAAA;;;;;;;AHQV;;;;;;;;;;;;;;;;;;;;;;;;cIaa,OAAA,aAAqB,OAAA,EAChC,OAAA,EAAS,eAAA,CAAgB,CAAA,GACzB,IAAA,aACC,SAAA,CAAU,CAAA;;;UC/BI,kBAAA;EACf,OAAA;EACA,KAAA;EACA,MAAA,GAAS,MAAA;EACT,KAAA,GAAQ,KAAA;AAAA;AAAA,cAGG,YAAA,aACD,OAAA,qBACS,kBAAA,EAEnB,MAAA,EAAQ,SAAA,CAAU,CAAA;EAAO,IAAA,EAAM,SAAA,CAAU,CAAA;EAAI,IAAA;AAAA,GAC7C,OAAA,GAAS,IAAA,OACR,IAAA,CAAK,kBAAA,EAAoB,IAAA;;;;;;;cCTf,aAAA,aAA2B,OAAA,EACtC,IAAA,EAAM,SAAA,CAAU,CAAA,MACf,MAAA;;;;;;;KCHS,QAAA;AAAA,UAcK,gBAAA;EACf,SAAA;EACA,SAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,UAGe,SAAA;EACf,EAAA;EACA,KAAA;EACA,WAAA;EACA,KAAA;EACA,QAAA;EACA,IAAA;EACA,MAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,gBAAA;EACA,IAAA;EACA,QAAA,GAAW,QAAA;EACX,WAAA,EAAa,gBAAA;EACb,MAAA;EACA,MAAA,EAAQ,OAAA;EP2OkC;;;;;EOrO1C,OAAA;AAAA;AAAA,UAGe,iBAAA;EACf,KAAA;EACA,WAAA;EACA,KAAA,GAAQ,KAAA;AAAA;;;;;;;;cAUG,UAAA,GACX,KAAA,EAAO,cAAA,EACP,OAAA,GAAS,iBAAA,KACR,SAAA;;;;;;;;;APnDH;;;;;cQTa,UAAA,GAAc,IAAA;;;;YCMf,KAAA;IACR,aAAA;MAAiB,EAAA;MAAY,IAAA;MAAc,KAAA;IAAA;IAC3C,mBAAA;MAAuB,EAAA;IAAA;IACvB,qBAAA;MAAyB,EAAA;MAAY,MAAA,EAAQ,MAAA;IAAA;IAC7C,mBAAA;MAAuB,EAAA;MAAY,KAAA,EAAO,KAAA;IAAA;IAC1C,iBAAA;MAAqB,EAAA;IAAA;IACrB,YAAA;MAAgB,EAAA;IAAA;EAAA;AAAA;;;;;;;;;;;;;cAkBP,eAAA,EAAe,QAAA,CAAA,OAAA,CAE1B,QAAA,CAF0B,MAAA"}
@@ -190,14 +190,15 @@ var FormModel = class {
190
190
  };
191
191
  reset = (event) => {
192
192
  event?.preventDefault?.();
193
+ const keys = new Set([...Object.keys(this.values), ...Object.keys(this.initialValues)]);
193
194
  for (const key in this.values) delete this.values[key];
194
195
  Object.assign(this.values, { ...this.initialValues });
195
- for (const [key, value] of Object.entries(this.values)) {
196
+ for (const key of keys) {
196
197
  const path = `/${key.replaceAll(".", "/")}`;
197
198
  this.alepha.events.emit("form:change", {
198
199
  id: this.id,
199
200
  path,
200
- value
201
+ value: this.values[key]
201
202
  }, { catch: true });
202
203
  }
203
204
  this.alepha.events.emit("form:reset", { id: this.id }, { catch: true });
@@ -306,10 +307,8 @@ var FormModel = class {
306
307
  }, { catch: true });
307
308
  };
308
309
  const attr = { name: key };
309
- if (options.id) {
310
- attr.id = `${options.id}-${key}`;
311
- attr["data-testid"] = attr.id;
312
- }
310
+ attr.id = `${this.id}-${key}`;
311
+ attr["data-testid"] = attr.id;
313
312
  if (t.schema.isString(field)) {
314
313
  if (field.maxLength != null) attr.maxLength = Number(field.maxLength);
315
314
  if (field.minLength != null) attr.minLength = Number(field.minLength);
@@ -523,7 +522,8 @@ const parseField = (input, options = {}) => {
523
522
  iconHint,
524
523
  constraints,
525
524
  testId: input.props["data-testid"],
526
- schema: input.schema
525
+ schema: input.schema,
526
+ control: schema.$control
527
527
  };
528
528
  };
529
529
  const inferIconHint = (params) => {