effect-start 0.23.0 → 0.25.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 (356) hide show
  1. package/dist/ChildProcess.js +32 -20
  2. package/dist/Commander.js +377 -293
  3. package/dist/ContentNegotiation.js +424 -318
  4. package/dist/Cookies.js +340 -271
  5. package/dist/Development.js +85 -49
  6. package/dist/Effectify.js +22 -14
  7. package/dist/Entity.js +260 -195
  8. package/dist/Fetch.js +192 -0
  9. package/dist/FilePathPattern.js +88 -77
  10. package/dist/FileRouter.js +192 -136
  11. package/dist/FileRouterCodegen.js +262 -191
  12. package/dist/FileSystem.js +126 -64
  13. package/dist/Http.js +96 -77
  14. package/dist/PathPattern.js +311 -273
  15. package/dist/PlatformError.js +36 -21
  16. package/dist/PlatformRuntime.js +65 -40
  17. package/dist/Route.js +122 -79
  18. package/dist/RouteBody.js +83 -58
  19. package/dist/RouteError.js +46 -25
  20. package/dist/RouteHook.js +58 -34
  21. package/dist/RouteHttp.js +346 -237
  22. package/dist/RouteHttpTracer.js +86 -58
  23. package/dist/RouteMount.js +81 -58
  24. package/dist/RouteSchema.js +253 -170
  25. package/dist/RouteSse.js +87 -72
  26. package/dist/RouteTree.js +99 -73
  27. package/dist/RouteTrie.js +160 -133
  28. package/dist/SchemaExtra.js +87 -62
  29. package/dist/Socket.js +32 -21
  30. package/dist/SqlIntrospect.js +317 -268
  31. package/dist/Start.js +55 -25
  32. package/dist/StartApp.js +3 -21
  33. package/dist/StreamExtra.js +109 -74
  34. package/dist/System.js +37 -21
  35. package/dist/TuplePathPattern.js +64 -58
  36. package/dist/Unique.js +159 -120
  37. package/dist/Values.js +48 -32
  38. package/dist/bun/BunBundle.js +158 -109
  39. package/dist/bun/BunChildProcessSpawner.js +121 -82
  40. package/dist/bun/BunImportTrackerPlugin.js +85 -63
  41. package/dist/bun/BunRoute.js +135 -99
  42. package/dist/bun/BunRuntime.js +39 -29
  43. package/dist/bun/BunServer.js +268 -140
  44. package/dist/bun/BunVirtualFilesPlugin.js +47 -33
  45. package/dist/bun/_BunEnhancedResolve.js +107 -82
  46. package/dist/bun/index.js +5 -5
  47. package/dist/bundler/Bundle.js +82 -38
  48. package/dist/bundler/BundleFiles.js +140 -82
  49. package/dist/bundler/BundleRoute.js +49 -38
  50. package/dist/client/Overlay.js +29 -28
  51. package/dist/client/ScrollState.js +94 -82
  52. package/dist/client/index.js +79 -61
  53. package/dist/console/Console.js +40 -24
  54. package/dist/console/ConsoleErrors.js +189 -178
  55. package/dist/console/ConsoleLogger.js +52 -43
  56. package/dist/console/ConsoleMetrics.js +69 -58
  57. package/dist/console/ConsoleProcess.js +57 -47
  58. package/dist/console/ConsoleStore.js +56 -45
  59. package/dist/console/ConsoleTracer.js +101 -88
  60. package/dist/console/Simulation.js +714 -563
  61. package/dist/console/index.js +3 -3
  62. package/dist/console/routes/tree.js +29 -28
  63. package/dist/datastar/actions/fetch.js +514 -381
  64. package/dist/datastar/actions/peek.js +12 -12
  65. package/dist/datastar/actions/setAll.js +18 -11
  66. package/dist/datastar/actions/toggleAll.js +18 -11
  67. package/dist/datastar/attributes/attr.js +48 -47
  68. package/dist/datastar/attributes/bind.js +186 -167
  69. package/dist/datastar/attributes/class.js +51 -44
  70. package/dist/datastar/attributes/computed.js +23 -24
  71. package/dist/datastar/attributes/effect.js +9 -8
  72. package/dist/datastar/attributes/indicator.js +32 -29
  73. package/dist/datastar/attributes/init.js +26 -25
  74. package/dist/datastar/attributes/jsonSignals.js +32 -29
  75. package/dist/datastar/attributes/on.js +76 -73
  76. package/dist/datastar/attributes/onIntersect.js +51 -51
  77. package/dist/datastar/attributes/onInterval.js +30 -29
  78. package/dist/datastar/attributes/onSignalPatch.js +49 -40
  79. package/dist/datastar/attributes/ref.js +10 -9
  80. package/dist/datastar/attributes/show.js +31 -30
  81. package/dist/datastar/attributes/signals.js +17 -16
  82. package/dist/datastar/attributes/style.js +56 -49
  83. package/dist/datastar/attributes/text.js +28 -25
  84. package/dist/datastar/engine.js +1079 -933
  85. package/dist/datastar/index.js +25 -24
  86. package/dist/datastar/utils.js +203 -155
  87. package/dist/datastar/watchers/patchElements.js +459 -372
  88. package/dist/datastar/watchers/patchSignals.js +13 -13
  89. package/dist/experimental/EncryptedCookies.js +305 -189
  90. package/dist/experimental/index.js +1 -1
  91. package/dist/hyper/Hyper.js +22 -17
  92. package/dist/hyper/HyperHtml.js +138 -123
  93. package/dist/hyper/HyperNode.js +11 -9
  94. package/dist/hyper/HyperRoute.js +41 -28
  95. package/dist/hyper/html.js +27 -27
  96. package/dist/hyper/index.js +5 -5
  97. package/dist/hyper/jsx-runtime.js +11 -5
  98. package/dist/index.js +8 -8
  99. package/dist/node/NodeFileSystem.js +606 -341
  100. package/dist/node/NodeUtils.js +21 -18
  101. package/dist/sql/Sql.js +8 -0
  102. package/dist/sql/bun/index.js +134 -67
  103. package/dist/sql/index.js +1 -0
  104. package/dist/sql/libsql/index.js +156 -0
  105. package/dist/sql/mssql/docker.js +103 -60
  106. package/dist/sql/mssql/index.js +182 -101
  107. package/dist/testing/TestLogger.js +39 -29
  108. package/dist/testing/index.js +2 -2
  109. package/dist/testing/utils.js +45 -23
  110. package/dist/x/cloudflare/CloudflareTunnel.js +61 -28
  111. package/dist/x/cloudflare/index.js +1 -1
  112. package/dist/x/tailscale/TailscaleTunnel.js +86 -60
  113. package/dist/x/tailscale/index.js +1 -1
  114. package/dist/x/tailwind/TailwindPlugin.js +280 -205
  115. package/dist/x/tailwind/compile.js +185 -129
  116. package/dist/x/tailwind/plugin.js +13 -11
  117. package/package.json +1 -1
  118. package/src/Development.ts +3 -1
  119. package/src/Entity.ts +17 -0
  120. package/src/Fetch.ts +271 -0
  121. package/src/SqlIntrospect.ts +64 -70
  122. package/src/Start.ts +24 -22
  123. package/src/StartApp.ts +11 -0
  124. package/src/bun/BunServer.ts +89 -16
  125. package/src/hyper/HyperHtml.ts +0 -1
  126. package/src/sql/bun/index.ts +1 -1
  127. package/src/sql/index.ts +1 -0
  128. package/src/sql/libsql/index.ts +173 -0
  129. package/src/sql/libsql/libsql.d.ts +39 -0
  130. package/src/sql/mssql/index.ts +1 -1
  131. package/src/x/tailscale/TailscaleTunnel.ts +7 -5
  132. package/dist/BlobStore.d.ts +0 -80
  133. package/dist/BlobStore.js +0 -19
  134. package/dist/ChildProcess.d.ts +0 -60
  135. package/dist/Commander.d.ts +0 -100
  136. package/dist/ContentNegotiation.d.ts +0 -12
  137. package/dist/Cookies.d.ts +0 -47
  138. package/dist/Development.d.ts +0 -39
  139. package/dist/Effectify.d.ts +0 -209
  140. package/dist/Entity.d.ts +0 -47
  141. package/dist/FilePathPattern.d.ts +0 -29
  142. package/dist/FileRouter.d.ts +0 -56
  143. package/dist/FileRouterCodegen.d.ts +0 -18
  144. package/dist/FileRouterPattern.d.ts +0 -9
  145. package/dist/FileRouterPattern.js +0 -35
  146. package/dist/FileSystem.d.ts +0 -158
  147. package/dist/Http.d.ts +0 -37
  148. package/dist/HttpAppExtra.d.ts +0 -7
  149. package/dist/HttpAppExtra.js +0 -320
  150. package/dist/HttpUtils.d.ts +0 -3
  151. package/dist/HttpUtils.js +0 -11
  152. package/dist/PathPattern.d.ts +0 -134
  153. package/dist/PlatformError.d.ts +0 -38
  154. package/dist/PlatformRuntime.d.ts +0 -27
  155. package/dist/Route.d.ts +0 -97
  156. package/dist/RouteBody.d.ts +0 -47
  157. package/dist/RouteError.d.ts +0 -98
  158. package/dist/RouteHook.d.ts +0 -12
  159. package/dist/RouteHttp.d.ts +0 -21
  160. package/dist/RouteHttpTracer.d.ts +0 -10
  161. package/dist/RouteMount.d.ts +0 -86
  162. package/dist/RouteSchema.d.ts +0 -86
  163. package/dist/RouteSse.d.ts +0 -21
  164. package/dist/RouteTree.d.ts +0 -57
  165. package/dist/RouteTrie.d.ts +0 -20
  166. package/dist/RouterPattern.d.ts +0 -118
  167. package/dist/RouterPattern.js +0 -269
  168. package/dist/SchemaExtra.d.ts +0 -7
  169. package/dist/Socket.d.ts +0 -27
  170. package/dist/Sql.d.ts +0 -34
  171. package/dist/Sql.js +0 -5
  172. package/dist/SqlIntrospect.d.ts +0 -91
  173. package/dist/Start.d.ts +0 -44
  174. package/dist/StartApp.d.ts +0 -19
  175. package/dist/StreamExtra.d.ts +0 -28
  176. package/dist/System.d.ts +0 -7
  177. package/dist/TuplePathPattern.d.ts +0 -9
  178. package/dist/Unique.d.ts +0 -50
  179. package/dist/Values.d.ts +0 -27
  180. package/dist/bun/BunBlobStoreDisk.d.ts +0 -6
  181. package/dist/bun/BunBlobStoreDisk.js +0 -116
  182. package/dist/bun/BunBlobStoreS3.d.ts +0 -11
  183. package/dist/bun/BunBlobStoreS3.js +0 -89
  184. package/dist/bun/BunBlobWatcherDisk.d.ts +0 -6
  185. package/dist/bun/BunBlobWatcherDisk.js +0 -60
  186. package/dist/bun/BunBlobWatcherQueue.d.ts +0 -6
  187. package/dist/bun/BunBlobWatcherQueue.js +0 -17
  188. package/dist/bun/BunBundle.d.ts +0 -11
  189. package/dist/bun/BunChildProcessSpawner.d.ts +0 -3
  190. package/dist/bun/BunHttpServer.d.ts +0 -44
  191. package/dist/bun/BunHttpServer.js +0 -186
  192. package/dist/bun/BunHttpServer_web.d.ts +0 -60
  193. package/dist/bun/BunHttpServer_web.js +0 -252
  194. package/dist/bun/BunImportTrackerPlugin.d.ts +0 -13
  195. package/dist/bun/BunPlatformHttpServer.d.ts +0 -10
  196. package/dist/bun/BunPlatformHttpServer.js +0 -53
  197. package/dist/bun/BunRoute.d.ts +0 -48
  198. package/dist/bun/BunRuntime.d.ts +0 -2
  199. package/dist/bun/BunServer.d.ts +0 -40
  200. package/dist/bun/BunServerRequest.d.ts +0 -60
  201. package/dist/bun/BunServerRequest.js +0 -252
  202. package/dist/bun/BunSql.d.ts +0 -4
  203. package/dist/bun/BunSql.js +0 -81
  204. package/dist/bun/BunVirtualFilesPlugin.d.ts +0 -4
  205. package/dist/bun/_BunEnhancedResolve.d.ts +0 -45
  206. package/dist/bun/index.d.ts +0 -5
  207. package/dist/bundler/Bundle.d.ts +0 -61
  208. package/dist/bundler/BundleFiles.d.ts +0 -13
  209. package/dist/bundler/BundleHttp.d.ts +0 -45
  210. package/dist/bundler/BundleHttp.js +0 -176
  211. package/dist/bundler/BundleRoute.d.ts +0 -27
  212. package/dist/client/Overlay.d.ts +0 -2
  213. package/dist/client/ScrollState.d.ts +0 -6
  214. package/dist/client/index.d.ts +0 -6
  215. package/dist/console/Console.d.ts +0 -6
  216. package/dist/console/ConsoleErrors.d.ts +0 -3
  217. package/dist/console/ConsoleLogger.d.ts +0 -3
  218. package/dist/console/ConsoleMetrics.d.ts +0 -3
  219. package/dist/console/ConsoleProcess.d.ts +0 -3
  220. package/dist/console/ConsoleStore.d.ts +0 -144
  221. package/dist/console/ConsoleTracer.d.ts +0 -3
  222. package/dist/console/Simulation.d.ts +0 -2
  223. package/dist/console/index.d.ts +0 -3
  224. package/dist/console/routes/errors/route.d.ts +0 -10
  225. package/dist/console/routes/errors/route.js +0 -47
  226. package/dist/console/routes/fiberDetail.d.ts +0 -16
  227. package/dist/console/routes/fiberDetail.js +0 -38
  228. package/dist/console/routes/fibers/route.d.ts +0 -10
  229. package/dist/console/routes/fibers/route.js +0 -19
  230. package/dist/console/routes/git/route.d.ts +0 -11
  231. package/dist/console/routes/git/route.js +0 -33
  232. package/dist/console/routes/layout.d.ts +0 -9
  233. package/dist/console/routes/layout.js +0 -3
  234. package/dist/console/routes/logs/route.d.ts +0 -10
  235. package/dist/console/routes/logs/route.js +0 -32
  236. package/dist/console/routes/metrics/route.d.ts +0 -10
  237. package/dist/console/routes/metrics/route.js +0 -17
  238. package/dist/console/routes/route.d.ts +0 -6
  239. package/dist/console/routes/route.js +0 -5
  240. package/dist/console/routes/routes/route.d.ts +0 -6
  241. package/dist/console/routes/routes/route.js +0 -20
  242. package/dist/console/routes/services/route.d.ts +0 -6
  243. package/dist/console/routes/services/route.js +0 -12
  244. package/dist/console/routes/system/route.d.ts +0 -10
  245. package/dist/console/routes/system/route.js +0 -18
  246. package/dist/console/routes/traceDetail.d.ts +0 -16
  247. package/dist/console/routes/traceDetail.js +0 -14
  248. package/dist/console/routes/traces/route.d.ts +0 -10
  249. package/dist/console/routes/traces/route.js +0 -39
  250. package/dist/console/routes/tree.d.ts +0 -153
  251. package/dist/console/ui/Errors.d.ts +0 -4
  252. package/dist/console/ui/Errors.js +0 -15
  253. package/dist/console/ui/Fibers.d.ts +0 -24
  254. package/dist/console/ui/Fibers.js +0 -121
  255. package/dist/console/ui/Git.d.ts +0 -20
  256. package/dist/console/ui/Git.js +0 -95
  257. package/dist/console/ui/Logs.d.ts +0 -4
  258. package/dist/console/ui/Logs.js +0 -25
  259. package/dist/console/ui/Metrics.d.ts +0 -4
  260. package/dist/console/ui/Metrics.js +0 -26
  261. package/dist/console/ui/Routes.d.ts +0 -8
  262. package/dist/console/ui/Routes.js +0 -70
  263. package/dist/console/ui/Services.d.ts +0 -10
  264. package/dist/console/ui/Services.js +0 -246
  265. package/dist/console/ui/Shell.d.ts +0 -10
  266. package/dist/console/ui/Shell.js +0 -7
  267. package/dist/console/ui/System.d.ts +0 -4
  268. package/dist/console/ui/System.js +0 -35
  269. package/dist/console/ui/Traces.d.ts +0 -12
  270. package/dist/console/ui/Traces.js +0 -179
  271. package/dist/datastar/actions/fetch.d.ts +0 -30
  272. package/dist/datastar/actions/peek.d.ts +0 -1
  273. package/dist/datastar/actions/setAll.d.ts +0 -1
  274. package/dist/datastar/actions/toggleAll.d.ts +0 -1
  275. package/dist/datastar/attributes/attr.d.ts +0 -1
  276. package/dist/datastar/attributes/bind.d.ts +0 -1
  277. package/dist/datastar/attributes/class.d.ts +0 -1
  278. package/dist/datastar/attributes/computed.d.ts +0 -1
  279. package/dist/datastar/attributes/effect.d.ts +0 -1
  280. package/dist/datastar/attributes/indicator.d.ts +0 -1
  281. package/dist/datastar/attributes/init.d.ts +0 -1
  282. package/dist/datastar/attributes/jsonSignals.d.ts +0 -1
  283. package/dist/datastar/attributes/on.d.ts +0 -1
  284. package/dist/datastar/attributes/onIntersect.d.ts +0 -1
  285. package/dist/datastar/attributes/onInterval.d.ts +0 -1
  286. package/dist/datastar/attributes/onSignalPatch.d.ts +0 -1
  287. package/dist/datastar/attributes/ref.d.ts +0 -1
  288. package/dist/datastar/attributes/show.d.ts +0 -1
  289. package/dist/datastar/attributes/signals.d.ts +0 -1
  290. package/dist/datastar/attributes/style.d.ts +0 -1
  291. package/dist/datastar/attributes/text.d.ts +0 -1
  292. package/dist/datastar/engine.d.ts +0 -162
  293. package/dist/datastar/happydom.d.ts +0 -1
  294. package/dist/datastar/happydom.js +0 -8
  295. package/dist/datastar/index.d.ts +0 -24
  296. package/dist/datastar/load.d.ts +0 -24
  297. package/dist/datastar/load.js +0 -24
  298. package/dist/datastar/utils.d.ts +0 -51
  299. package/dist/datastar/watchers/patchElements.d.ts +0 -1
  300. package/dist/datastar/watchers/patchSignals.d.ts +0 -1
  301. package/dist/experimental/EncryptedCookies.d.ts +0 -48
  302. package/dist/experimental/SseHttpResponse.d.ts +0 -7
  303. package/dist/experimental/SseHttpResponse.js +0 -28
  304. package/dist/experimental/index.d.ts +0 -1
  305. package/dist/hyper/Hyper.d.ts +0 -25
  306. package/dist/hyper/HyperHtml.d.ts +0 -23
  307. package/dist/hyper/HyperHtml.test.d.ts +0 -1
  308. package/dist/hyper/HyperHtml.test.js +0 -197
  309. package/dist/hyper/HyperNode.d.ts +0 -14
  310. package/dist/hyper/HyperRoute.d.ts +0 -8
  311. package/dist/hyper/HyperRoute.test.d.ts +0 -1
  312. package/dist/hyper/HyperRoute.test.js +0 -83
  313. package/dist/hyper/html.d.ts +0 -11
  314. package/dist/hyper/index.d.ts +0 -6
  315. package/dist/hyper/jsx-runtime.d.ts +0 -7
  316. package/dist/index.d.ts +0 -8
  317. package/dist/inference_check.d.ts +0 -1
  318. package/dist/inference_check.js +0 -15
  319. package/dist/lint/plugin.d.ts +0 -86
  320. package/dist/lint/plugin.js +0 -341
  321. package/dist/middlewares/BasicAuthMiddleware.d.ts +0 -8
  322. package/dist/middlewares/BasicAuthMiddleware.js +0 -22
  323. package/dist/middlewares/index.d.ts +0 -1
  324. package/dist/middlewares/index.js +0 -1
  325. package/dist/node/Effectify.d.ts +0 -209
  326. package/dist/node/Effectify.js +0 -19
  327. package/dist/node/FileSystem.d.ts +0 -7
  328. package/dist/node/FileSystem.js +0 -420
  329. package/dist/node/NodeFileSystem.d.ts +0 -7
  330. package/dist/node/NodeUtils.d.ts +0 -2
  331. package/dist/node/PlatformError.d.ts +0 -46
  332. package/dist/node/PlatformError.js +0 -43
  333. package/dist/node/Utils.d.ts +0 -1
  334. package/dist/node/Utils.js +0 -19
  335. package/dist/repro_fail.d.ts +0 -1
  336. package/dist/repro_fail.js +0 -14
  337. package/dist/sql/bun/index.d.ts +0 -3
  338. package/dist/sql/mssql/docker.d.ts +0 -2
  339. package/dist/sql/mssql/index.d.ts +0 -21
  340. package/dist/testing/TestHttpClient.d.ts +0 -13
  341. package/dist/testing/TestHttpClient.js +0 -68
  342. package/dist/testing/TestLogger.d.ts +0 -13
  343. package/dist/testing/index.d.ts +0 -2
  344. package/dist/testing/utils.d.ts +0 -9
  345. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -10
  346. package/dist/x/cloudflare/index.d.ts +0 -1
  347. package/dist/x/datastar/Datastar.d.ts +0 -6
  348. package/dist/x/datastar/Datastar.js +0 -47
  349. package/dist/x/datastar/index.d.ts +0 -1
  350. package/dist/x/datastar/index.js +0 -1
  351. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -15
  352. package/dist/x/tailscale/index.d.ts +0 -1
  353. package/dist/x/tailwind/TailwindPlugin.d.ts +0 -23
  354. package/dist/x/tailwind/compile.d.ts +0 -19
  355. package/dist/x/tailwind/plugin.d.ts +0 -2
  356. /package/src/{Sql.ts → sql/Sql.ts} +0 -0
package/dist/Unique.js CHANGED
@@ -1,7 +1,9 @@
1
- export const ALPHABET_BASE32_CROCKFORD = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
2
- export const ALPHABET_BASE32_RFC4648 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
3
- export const ALPHABET_BASE64_URL = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
4
- export const ALPHABET_HEX = "0123456789abcdef";
1
+ export const ALPHABET_BASE32_CROCKFORD = "0123456789ABCDEFGHJKMNPQRSTVWXYZ"
2
+ export const ALPHABET_BASE32_RFC4648 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
3
+ export const ALPHABET_BASE64_URL =
4
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
5
+ export const ALPHABET_HEX = "0123456789abcdef"
6
+
5
7
  /**
6
8
  * Generate a random string for ids, session tokens, and API keys.
7
9
  * It uses human-friendly crockford base32 encoding (5 bit of entropy per char)
@@ -12,34 +14,43 @@ export const ALPHABET_HEX = "0123456789abcdef";
12
14
  * - session tokens: 32-40 chars (~160-200 bits)
13
15
  */
14
16
  export function token(length = 32) {
15
- if (length <= 0)
16
- return "";
17
- const buf = new Uint8Array(length);
18
- crypto.getRandomValues(buf);
19
- let result = "";
20
- for (let i = 0; i < buf.length; i++) {
21
- result += ALPHABET_BASE32_CROCKFORD[buf[i] & 31];
22
- }
23
- return result;
17
+ if (length <= 0) return ""
18
+
19
+ const buf = new Uint8Array(length)
20
+ crypto.getRandomValues(buf)
21
+
22
+ let result = ""
23
+ for (let i = 0; i < buf.length; i++) {
24
+ result += ALPHABET_BASE32_CROCKFORD[buf[i] & 31]
25
+ }
26
+
27
+ return result
24
28
  }
29
+
25
30
  export function bytes(length) {
26
- const buf = new Uint8Array(length);
27
- crypto.getRandomValues(buf);
28
- return buf;
31
+ const buf = new Uint8Array(length)
32
+ crypto.getRandomValues(buf)
33
+ return buf
29
34
  }
30
- export const UUID_NIL = "00000000-0000-0000-0000-000000000000";
35
+
36
+ export const UUID_NIL = "00000000-0000-0000-0000-000000000000"
37
+
31
38
  export function uuid4() {
32
- return formatUuid(uuid4bytes());
39
+ return formatUuid(uuid4bytes())
33
40
  }
41
+
34
42
  export function uuid7(time = Date.now()) {
35
- return formatUuid(uuid7Bytes(time));
43
+ return formatUuid(uuid7Bytes(time))
36
44
  }
45
+
37
46
  function uuid4bytes() {
38
- const buf = bytes(16);
39
- buf[6] = (buf[6] & 0x0f) | 0x40; // version 4
40
- buf[8] = (buf[8] & 0x3f) | 0x80; // variant
41
- return buf;
47
+ const buf = bytes(16)
48
+ buf[6] = (buf[6] & 0x0f) | 0x40 // version 4
49
+ buf[8] = (buf[8] & 0x3f) | 0x80 // variant
50
+
51
+ return buf
42
52
  }
53
+
43
54
  /**
44
55
  * Decode a 48-bit Unix timestamp (ms) from UUID7 or ULID.
45
56
  *
@@ -52,33 +63,41 @@ function uuid4bytes() {
52
63
  * const timestamp = Unique.toTimestamp(bytes)
53
64
  */
54
65
  export function toTimestamp(bytes) {
55
- if (bytes.length < 6)
56
- return 0;
57
- return (bytes[0] * 0x10000000000 +
58
- bytes[1] * 0x100000000 +
59
- bytes[2] * 0x1000000 +
60
- bytes[3] * 0x10000 +
61
- bytes[4] * 0x100 +
62
- bytes[5]);
66
+ if (bytes.length < 6) return 0
67
+
68
+ return (
69
+ bytes[0] * 0x10000000000 +
70
+ bytes[1] * 0x100000000 +
71
+ bytes[2] * 0x1000000 +
72
+ bytes[3] * 0x10000 +
73
+ bytes[4] * 0x100 +
74
+ bytes[5]
75
+ )
63
76
  }
77
+
64
78
  export function uuid7Bytes(time = Date.now()) {
65
- const buf = new Uint8Array(16);
66
- const timestamp = BigInt(toSafeTime(time));
67
- // 48-bit timestamp (6 bytes)
68
- buf[0] = Number((timestamp >> 40n) & 0xffn);
69
- buf[1] = Number((timestamp >> 32n) & 0xffn);
70
- buf[2] = Number((timestamp >> 24n) & 0xffn);
71
- buf[3] = Number((timestamp >> 16n) & 0xffn);
72
- buf[4] = Number((timestamp >> 8n) & 0xffn);
73
- buf[5] = Number(timestamp & 0xffn);
74
- // 12-bit random A (1.5 bytes)
75
- crypto.getRandomValues(buf.subarray(6, 8));
76
- buf[6] = (buf[6] & 0x0f) | 0x70; // version 7
77
- // 2-bit variant + 62-bit random B (8 bytes)
78
- crypto.getRandomValues(buf.subarray(8, 16));
79
- buf[8] = (buf[8] & 0x3f) | 0x80; // variant
80
- return buf;
79
+ const buf = new Uint8Array(16)
80
+ const timestamp = BigInt(toSafeTime(time))
81
+
82
+ // 48-bit timestamp (6 bytes)
83
+ buf[0] = Number((timestamp >> 40n) & 0xffn)
84
+ buf[1] = Number((timestamp >> 32n) & 0xffn)
85
+ buf[2] = Number((timestamp >> 24n) & 0xffn)
86
+ buf[3] = Number((timestamp >> 16n) & 0xffn)
87
+ buf[4] = Number((timestamp >> 8n) & 0xffn)
88
+ buf[5] = Number(timestamp & 0xffn)
89
+
90
+ // 12-bit random A (1.5 bytes)
91
+ crypto.getRandomValues(buf.subarray(6, 8))
92
+ buf[6] = (buf[6] & 0x0f) | 0x70 // version 7
93
+
94
+ // 2-bit variant + 62-bit random B (8 bytes)
95
+ crypto.getRandomValues(buf.subarray(8, 16))
96
+ buf[8] = (buf[8] & 0x3f) | 0x80 // variant
97
+
98
+ return buf
81
99
  }
100
+
82
101
  /**
83
102
  * Convert UUID bytes to canonical (RFC9562) representation.
84
103
  *
@@ -86,56 +105,70 @@ export function uuid7Bytes(time = Date.now()) {
86
105
  * Unique.formatUuid(new Uint8Array(16))
87
106
  */
88
107
  export function formatUuid(bytes) {
89
- if (bytes.length === 0)
90
- return "";
91
- let result = "";
92
- for (let i = 0; i < bytes.length; i++) {
93
- const byte = bytes[i];
94
- result += ALPHABET_HEX[(byte >> 4) & 0x0f];
95
- result += ALPHABET_HEX[byte & 0x0f];
96
- if (i === 3 || i === 5 || i === 7 || i === 9)
97
- result += "-";
98
- }
99
- return result;
108
+ if (bytes.length === 0) return ""
109
+
110
+ let result = ""
111
+
112
+ for (let i = 0; i < bytes.length; i++) {
113
+ const byte = bytes[i]
114
+ result += ALPHABET_HEX[(byte >> 4) & 0x0f]
115
+ result += ALPHABET_HEX[byte & 0x0f]
116
+
117
+ if (i === 3 || i === 5 || i === 7 || i === 9) result += "-"
118
+ }
119
+
120
+ return result
100
121
  }
122
+
101
123
  export function ulid(time = Date.now()) {
102
- const bytes = ulidBytes(time);
103
- return formatUlid(bytes);
124
+ const bytes = ulidBytes(time)
125
+ return formatUlid(bytes)
104
126
  }
127
+
105
128
  export function ulidBytes(time = Date.now()) {
106
- const buf = new Uint8Array(16);
107
- const timestamp = BigInt(toSafeTime(time));
108
- buf[0] = Number((timestamp >> 40n) & 0xffn);
109
- buf[1] = Number((timestamp >> 32n) & 0xffn);
110
- buf[2] = Number((timestamp >> 24n) & 0xffn);
111
- buf[3] = Number((timestamp >> 16n) & 0xffn);
112
- buf[4] = Number((timestamp >> 8n) & 0xffn);
113
- buf[5] = Number(timestamp & 0xffn);
114
- crypto.getRandomValues(buf.subarray(6, 16));
115
- return buf;
129
+ const buf = new Uint8Array(16)
130
+ const timestamp = BigInt(toSafeTime(time))
131
+
132
+ buf[0] = Number((timestamp >> 40n) & 0xffn)
133
+ buf[1] = Number((timestamp >> 32n) & 0xffn)
134
+ buf[2] = Number((timestamp >> 24n) & 0xffn)
135
+ buf[3] = Number((timestamp >> 16n) & 0xffn)
136
+ buf[4] = Number((timestamp >> 8n) & 0xffn)
137
+ buf[5] = Number(timestamp & 0xffn)
138
+
139
+ crypto.getRandomValues(buf.subarray(6, 16))
140
+
141
+ return buf
116
142
  }
143
+
117
144
  function formatUlid(bytes) {
118
- if (bytes.length !== 16)
119
- return "";
120
- const timestamp = toTimestamp(bytes);
121
- const timePart = encodeUlidTime(timestamp);
122
- const randomPart = toBase32(bytes.subarray(6, 16));
123
- return `${timePart}${randomPart}`;
145
+ if (bytes.length !== 16) return ""
146
+
147
+ const timestamp = toTimestamp(bytes)
148
+ const timePart = encodeUlidTime(timestamp)
149
+ const randomPart = toBase32(bytes.subarray(6, 16))
150
+
151
+ return `${timePart}${randomPart}`
124
152
  }
153
+
125
154
  function encodeUlidTime(time) {
126
- let value = BigInt(time);
127
- const result = Array.from({ length: 10 });
128
- for (let i = 9; i >= 0; i--) {
129
- result[i] = ALPHABET_BASE32_CROCKFORD[Number(value & 31n)];
130
- value >>= 5n;
131
- }
132
- return result.join("");
155
+ let value = BigInt(time)
156
+ const result = Array.from({ length: 10 })
157
+
158
+ for (let i = 9; i >= 0; i--) {
159
+ result[i] = ALPHABET_BASE32_CROCKFORD[Number(value & 31n)]
160
+ value >>= 5n
161
+ }
162
+
163
+ return result.join("")
133
164
  }
165
+
134
166
  function toSafeTime(time) {
135
- if (!Number.isFinite(time))
136
- return 0;
137
- return Math.max(0, Math.trunc(time));
167
+ if (!Number.isFinite(time)) return 0
168
+
169
+ return Math.max(0, Math.trunc(time))
138
170
  }
171
+
139
172
  /**
140
173
  * Generate a nanoid-style random string.
141
174
  *
@@ -146,42 +179,48 @@ function toSafeTime(time) {
146
179
  * were competing to have the smallest possible bundle size.
147
180
  */
148
181
  export function nanoid(size = 21, alphabet = ALPHABET_BASE64_URL) {
149
- if (size <= 0 || alphabet.length === 0)
150
- return "";
151
- const length = alphabet.length;
152
- const mask = (2 << Math.floor(Math.log2(length - 1))) - 1;
153
- const step = Math.ceil((1.6 * mask * size) / length);
154
- let id = "";
155
- while (id.length < size) {
156
- const bytes = new Uint8Array(step);
157
- crypto.getRandomValues(bytes);
158
- for (let i = 0; i < step && id.length < size; i++) {
159
- const index = bytes[i] & mask;
160
- if (index < length)
161
- id += alphabet[index];
162
- }
182
+ if (size <= 0 || alphabet.length === 0) return ""
183
+
184
+ const length = alphabet.length
185
+ const mask = (2 << Math.floor(Math.log2(length - 1))) - 1
186
+ const step = Math.ceil((1.6 * mask * size) / length)
187
+
188
+ let id = ""
189
+ while (id.length < size) {
190
+ const bytes = new Uint8Array(step)
191
+ crypto.getRandomValues(bytes)
192
+
193
+ for (let i = 0; i < step && id.length < size; i++) {
194
+ const index = bytes[i] & mask
195
+ if (index < length) id += alphabet[index]
163
196
  }
164
- return id;
197
+ }
198
+ return id
165
199
  }
200
+
166
201
  function toBase32(bytes, alphabet = ALPHABET_BASE32_CROCKFORD) {
167
- if (bytes.length === 0)
168
- return "";
169
- let result = "";
170
- let buffer = 0;
171
- let bits = 0;
172
- for (const byte of bytes) {
173
- buffer = (buffer << 8) | byte;
174
- bits += 8;
175
- while (bits >= 5) {
176
- bits -= 5;
177
- const index = (buffer >> bits) & 31;
178
- result += alphabet[index];
179
- buffer &= (1 << bits) - 1;
180
- }
181
- }
182
- if (bits > 0) {
183
- const index = (buffer << (5 - bits)) & 31;
184
- result += alphabet[index];
202
+ if (bytes.length === 0) return ""
203
+
204
+ let result = ""
205
+ let buffer = 0
206
+ let bits = 0
207
+
208
+ for (const byte of bytes) {
209
+ buffer = (buffer << 8) | byte
210
+ bits += 8
211
+
212
+ while (bits >= 5) {
213
+ bits -= 5
214
+ const index = (buffer >> bits) & 31
215
+ result += alphabet[index]
216
+ buffer &= (1 << bits) - 1
185
217
  }
186
- return result;
218
+ }
219
+
220
+ if (bits > 0) {
221
+ const index = (buffer << (5 - bits)) & 31
222
+ result += alphabet[index]
223
+ }
224
+
225
+ return result
187
226
  }
package/dist/Values.js CHANGED
@@ -1,36 +1,52 @@
1
+
2
+
1
3
  export function isPlainObject(value) {
2
- if (value === null || typeof value !== "object") {
3
- return false;
4
- }
5
- // Check for built-in types and web APIs
6
- if (ArrayBuffer.isView(value) ||
7
- value instanceof ArrayBuffer ||
8
- value instanceof Blob ||
9
- value instanceof FormData ||
10
- value instanceof URLSearchParams ||
11
- value instanceof ReadableStream ||
12
- value instanceof Date ||
13
- value instanceof Map ||
14
- value instanceof Set ||
15
- value instanceof RegExp ||
16
- value instanceof Error ||
17
- value instanceof Promise ||
18
- Array.isArray(value)) {
19
- return false;
20
- }
21
- // Check if it's a plain object (Object.prototype or null prototype)
22
- const proto = Object.getPrototypeOf(value);
23
- return proto === null || proto === Object.prototype;
4
+ if (value === null || typeof value !== "object") {
5
+ return false
6
+ }
7
+
8
+ // Check for built-in types and web APIs
9
+ if (
10
+ ArrayBuffer.isView(value) ||
11
+ value instanceof ArrayBuffer ||
12
+ value instanceof Blob ||
13
+ value instanceof FormData ||
14
+ value instanceof URLSearchParams ||
15
+ value instanceof ReadableStream ||
16
+ value instanceof Date ||
17
+ value instanceof Map ||
18
+ value instanceof Set ||
19
+ value instanceof RegExp ||
20
+ value instanceof Error ||
21
+ value instanceof Promise ||
22
+ Array.isArray(value)
23
+ ) {
24
+ return false
25
+ }
26
+
27
+ // Check if it's a plain object (Object.prototype or null prototype)
28
+ const proto = Object.getPrototypeOf(value)
29
+ return proto === null || proto === Object.prototype
24
30
  }
31
+
32
+ /**
33
+ * Type helper that returns `true` if type T has any method properties,
34
+ * otherwise returns `never`.
35
+ *
36
+ * Used internally by IsPlainObject to distinguish plain objects from
37
+ * class instances or objects with methods.
38
+ */
39
+
25
40
  export const firstValue = (record) => {
26
- for (const key in record) {
27
- return record[key];
28
- }
29
- return undefined;
30
- };
41
+ for (const key in record) {
42
+ return record[key]
43
+ }
44
+ return undefined
45
+ }
46
+
31
47
  export const concatBytes = (a, b) => {
32
- const result = new Uint8Array(a.byteLength + b.byteLength);
33
- result.set(a);
34
- result.set(b, a.byteLength);
35
- return result;
36
- };
48
+ const result = new Uint8Array(a.byteLength + b.byteLength)
49
+ result.set(a)
50
+ result.set(b, a.byteLength)
51
+ return result
52
+ }