zeed 1.3.1 → 1.5.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 (229) hide show
  1. package/AGENTS.md +50 -211
  2. package/README.md +16 -0
  3. package/dist/_experiments/bitcask.cjs +2 -2
  4. package/dist/{args-FLoL3OKJ.d.cts → args-CEjib9V9.d.mts} +1 -1
  5. package/dist/{args-WC9q5kz2.d.mts → args-DEig-jw4.d.cts} +1 -1
  6. package/dist/{clipboard-BkUO-syY.d.mts → clipboard-BusqmLLY.d.cts} +1 -1
  7. package/dist/{clipboard-Cfpr331X.d.cts → clipboard-DcuuFRwa.d.mts} +1 -1
  8. package/dist/common/exec/index.d.cts +3 -3
  9. package/dist/common/exec/index.d.mts +3 -3
  10. package/dist/common/exec/pool.d.cts +1 -1
  11. package/dist/common/exec/pool.d.mts +1 -1
  12. package/dist/common/exec/progress.d.cts +1 -1
  13. package/dist/common/exec/progress.d.mts +1 -1
  14. package/dist/common/exec/promise.d.cts +1 -1
  15. package/dist/common/exec/promise.d.mts +1 -1
  16. package/dist/common/exec/queue.d.cts +1 -1
  17. package/dist/common/exec/queue.d.mts +1 -1
  18. package/dist/common/exec/throttle-debounce.d.cts +1 -1
  19. package/dist/common/exec/throttle-debounce.d.mts +1 -1
  20. package/dist/common/index.cjs +21 -0
  21. package/dist/common/index.d.cts +15 -12
  22. package/dist/common/index.d.mts +16 -13
  23. package/dist/common/index.mjs +4 -1
  24. package/dist/common/msg/channel-debug.d.cts +1 -1
  25. package/dist/common/msg/channel-debug.d.mts +1 -1
  26. package/dist/common/msg/channel-local.d.cts +1 -1
  27. package/dist/common/msg/channel-local.d.mts +1 -1
  28. package/dist/common/msg/channel-resilient.d.cts +1 -1
  29. package/dist/common/msg/channel-resilient.d.mts +1 -1
  30. package/dist/common/msg/channel-wkwebview.d.cts +2 -1
  31. package/dist/common/msg/channel-wkwebview.d.mts +2 -1
  32. package/dist/common/msg/channel.d.cts +1 -1
  33. package/dist/common/msg/channel.d.mts +1 -1
  34. package/dist/common/msg/emitter.d.cts +1 -1
  35. package/dist/common/msg/emitter.d.mts +1 -1
  36. package/dist/common/msg/index.d.cts +1 -1
  37. package/dist/common/msg/index.d.mts +1 -1
  38. package/dist/common/msg/messages.d.cts +1 -1
  39. package/dist/common/msg/messages.d.mts +1 -1
  40. package/dist/common/msg/pubsub.d.cts +1 -1
  41. package/dist/common/msg/pubsub.d.mts +1 -1
  42. package/dist/common/msg/rpc.cjs +8 -8
  43. package/dist/common/msg/rpc.cjs.map +1 -1
  44. package/dist/common/msg/rpc.mjs +8 -8
  45. package/dist/common/msg/rpc.mjs.map +1 -1
  46. package/dist/common/schema/export-json-schema.cjs +40 -31
  47. package/dist/common/schema/export-json-schema.cjs.map +1 -1
  48. package/dist/common/schema/export-json-schema.mjs +40 -31
  49. package/dist/common/schema/export-json-schema.mjs.map +1 -1
  50. package/dist/common/schema/index.cjs +21 -0
  51. package/dist/common/schema/index.d.cts +6 -3
  52. package/dist/common/schema/index.d.mts +7 -4
  53. package/dist/common/schema/index.mjs +4 -1
  54. package/dist/common/schema/sql/expr.cjs +128 -0
  55. package/dist/common/schema/sql/expr.cjs.map +1 -0
  56. package/dist/common/schema/sql/expr.d.cts +2 -0
  57. package/dist/common/schema/sql/expr.d.mts +2 -0
  58. package/dist/common/schema/sql/expr.mjs +115 -0
  59. package/dist/common/schema/sql/expr.mjs.map +1 -0
  60. package/dist/common/schema/sql/index.cjs +23 -0
  61. package/dist/common/schema/sql/index.d.cts +4 -0
  62. package/dist/common/schema/sql/index.d.mts +4 -0
  63. package/dist/common/schema/sql/index.mjs +5 -0
  64. package/dist/common/schema/sql/select.cjs +143 -0
  65. package/dist/common/schema/sql/select.cjs.map +1 -0
  66. package/dist/common/schema/sql/select.d.cts +2 -0
  67. package/dist/common/schema/sql/select.d.mts +2 -0
  68. package/dist/common/schema/sql/select.mjs +139 -0
  69. package/dist/common/schema/sql/select.mjs.map +1 -0
  70. package/dist/common/schema/sql/table.cjs +23 -0
  71. package/dist/common/schema/sql/table.cjs.map +1 -0
  72. package/dist/common/schema/sql/table.d.cts +2 -0
  73. package/dist/common/schema/sql/table.d.mts +2 -0
  74. package/dist/common/schema/sql/table.mjs +20 -0
  75. package/dist/common/schema/sql/table.mjs.map +1 -0
  76. package/dist/common/schema/type-test.d.cts +1 -1
  77. package/dist/common/schema/type-test.d.mts +1 -1
  78. package/dist/common/schema/utils.d.cts +1 -1
  79. package/dist/common/schema/utils.d.mts +1 -1
  80. package/dist/common/schema/z.d.mts +1 -1
  81. package/dist/common/storage/index.d.cts +1 -1
  82. package/dist/common/storage/index.d.mts +1 -1
  83. package/dist/common/storage/memstorage.d.cts +1 -1
  84. package/dist/common/storage/memstorage.d.mts +1 -1
  85. package/dist/common/test.d.cts +1 -1
  86. package/dist/common/test.d.mts +1 -1
  87. package/dist/common/time.d.cts +1 -1
  88. package/dist/common/time.d.mts +1 -1
  89. package/dist/common/timeout.d.cts +1 -1
  90. package/dist/common/timeout.d.mts +1 -1
  91. package/dist/common/utils.d.cts +1 -1
  92. package/dist/common/utils.d.mts +1 -1
  93. package/dist/common/uuid.d.cts +1 -1
  94. package/dist/common/uuid.d.mts +1 -1
  95. package/dist/{crypto-CyTV7Qce.d.cts → crypto-D68rVmvU.d.mts} +1 -1
  96. package/dist/{crypto-LT7EC5_d.d.mts → crypto-KzGHoCJE.d.cts} +1 -1
  97. package/dist/{env-B3vOiVY8.d.cts → env-BJXdwBKq.d.mts} +1 -1
  98. package/dist/{env-C3npYe8w.d.mts → env-HsOnA_yK.d.cts} +1 -1
  99. package/dist/expr-CCKrqOw1.d.mts +25 -0
  100. package/dist/expr-yYgSeBZ3.d.cts +25 -0
  101. package/dist/{files-CDNKX9VI.d.mts → files-4O-PxnAC.d.cts} +1 -1
  102. package/dist/{files-DdI9UZvg.d.cts → files-BlpxqSTT.d.mts} +1 -1
  103. package/dist/{files-async-1V0bu_ca.d.cts → files-async-DFLC-Nkd.d.cts} +1 -1
  104. package/dist/{files-async-cBMkRwsu.d.mts → files-async-DfuEEDjH.d.mts} +1 -1
  105. package/dist/{filestorage-CXQ9MzeW.d.cts → filestorage-BjeBZEAs.d.cts} +1 -1
  106. package/dist/{filestorage-YzM2z9sU.d.mts → filestorage-CmfztpWm.d.mts} +1 -1
  107. package/dist/{fs-DHJ9AqUk.d.cts → fs-D837bjRT.d.cts} +1 -1
  108. package/dist/{fs-DgjZdpuF.d.mts → fs-DlYLapik.d.mts} +1 -1
  109. package/dist/{glob-Bfs7ZS_i.d.mts → glob-5yW09dkR.d.mts} +1 -1
  110. package/dist/{glob-Bt150jOY.d.cts → glob-CZaZPqiy.d.cts} +1 -1
  111. package/dist/{index-DHXVOH8h.d.cts → index-CFkMqHvX.d.cts} +1 -2
  112. package/dist/{index-DMaPyx9O.d.mts → index-C_3Y_s6f.d.mts} +1 -2
  113. package/dist/index.all.cjs +21 -0
  114. package/dist/index.all.d.cts +29 -26
  115. package/dist/index.all.d.mts +30 -27
  116. package/dist/index.all.mjs +4 -1
  117. package/dist/index.browser.cjs +21 -0
  118. package/dist/index.browser.d.cts +15 -12
  119. package/dist/index.browser.d.mts +16 -13
  120. package/dist/index.browser.mjs +4 -1
  121. package/dist/index.jsr.d.cts +4 -4
  122. package/dist/index.jsr.d.mts +4 -4
  123. package/dist/index.node.cjs +21 -0
  124. package/dist/index.node.d.cts +29 -26
  125. package/dist/index.node.d.mts +30 -27
  126. package/dist/index.node.mjs +4 -1
  127. package/dist/{log-file-bsTsc9KM.d.cts → log-file-DwEDms1F.d.cts} +2 -2
  128. package/dist/{log-file-DTuImomJ.d.mts → log-file-QV1unm3z.d.mts} +2 -2
  129. package/dist/{log-file-rotation-_YruAcNc.d.cts → log-file-rotation-BpZxXYlU.d.cts} +2 -2
  130. package/dist/{log-file-rotation-FBmtp_Uz.d.mts → log-file-rotation-DanrO_2y.d.mts} +2 -2
  131. package/dist/{log-node-DlrXl3QO.d.mts → log-node-BSn7RqAc.d.mts} +1 -1
  132. package/dist/{log-node-Dk948mHX.d.cts → log-node-D_fiJL6x.d.cts} +1 -1
  133. package/dist/{log-rotation-CkyjZbK5.d.mts → log-rotation-BdGakFya.d.cts} +1 -1
  134. package/dist/{log-rotation-_d7iRm9s.d.cts → log-rotation-Ce4e-8LN.d.mts} +1 -1
  135. package/dist/{log-util-2Ls76P-0.d.cts → log-util-C0U3zCjw.d.cts} +1 -1
  136. package/dist/{log-util-Da_d19f8.d.mts → log-util-Da_UCcmt.d.mts} +1 -1
  137. package/dist/{memstorage-D5A9FwiP.d.mts → memstorage-BhWXthO8.d.mts} +1 -1
  138. package/dist/{memstorage-BcjQLdaQ.d.cts → memstorage-tvlWDYgS.d.cts} +1 -1
  139. package/dist/node/args.cjs +1 -1
  140. package/dist/node/args.d.cts +1 -1
  141. package/dist/node/args.d.mts +1 -1
  142. package/dist/node/clipboard.d.cts +1 -1
  143. package/dist/node/clipboard.d.mts +1 -1
  144. package/dist/node/crypto.cjs +1 -1
  145. package/dist/node/crypto.d.cts +1 -1
  146. package/dist/node/crypto.d.mts +1 -1
  147. package/dist/node/env.cjs +2 -2
  148. package/dist/node/env.d.cts +1 -1
  149. package/dist/node/env.d.mts +1 -1
  150. package/dist/node/files-async.cjs +1 -1
  151. package/dist/node/files-async.d.cts +1 -1
  152. package/dist/node/files-async.d.mts +1 -1
  153. package/dist/node/files.cjs +1 -1
  154. package/dist/node/files.d.cts +1 -1
  155. package/dist/node/files.d.mts +1 -1
  156. package/dist/node/filestorage.cjs +1 -1
  157. package/dist/node/filestorage.d.cts +1 -1
  158. package/dist/node/filestorage.d.mts +1 -1
  159. package/dist/node/fs.cjs +1 -1
  160. package/dist/node/fs.d.cts +1 -1
  161. package/dist/node/fs.d.mts +1 -1
  162. package/dist/node/glob.d.cts +1 -1
  163. package/dist/node/glob.d.mts +1 -1
  164. package/dist/node/index.d.cts +14 -14
  165. package/dist/node/index.d.mts +14 -14
  166. package/dist/node/log/index.d.cts +5 -5
  167. package/dist/node/log/index.d.mts +5 -5
  168. package/dist/node/log/log-context-node.cjs +1 -1
  169. package/dist/node/log/log-file-rotation.d.cts +1 -1
  170. package/dist/node/log/log-file-rotation.d.mts +1 -1
  171. package/dist/node/log/log-file.cjs +1 -1
  172. package/dist/node/log/log-file.d.cts +1 -1
  173. package/dist/node/log/log-file.d.mts +1 -1
  174. package/dist/node/log/log-node.cjs +6 -15
  175. package/dist/node/log/log-node.cjs.map +1 -1
  176. package/dist/node/log/log-node.d.cts +1 -1
  177. package/dist/node/log/log-node.d.mts +1 -1
  178. package/dist/node/log/log-node.mjs +4 -13
  179. package/dist/node/log/log-node.mjs.map +1 -1
  180. package/dist/node/log/log-rotation.cjs +1 -1
  181. package/dist/node/log/log-rotation.d.cts +1 -1
  182. package/dist/node/log/log-rotation.d.mts +1 -1
  183. package/dist/node/log/log-util.cjs +1 -1
  184. package/dist/node/log/log-util.d.cts +1 -1
  185. package/dist/node/log/log-util.d.mts +1 -1
  186. package/dist/{promise-DGgiRckN.d.cts → promise-CU_CENbU.d.cts} +1 -1
  187. package/dist/{promise-MH3xAy4S.d.mts → promise-CoWXgo4w.d.mts} +1 -1
  188. package/dist/select-DrciHdk_.d.cts +52 -0
  189. package/dist/select-F2KpP6mo.d.mts +52 -0
  190. package/dist/table-Cr8tjDIL.d.mts +19 -0
  191. package/dist/table-IkLXirT-.d.cts +19 -0
  192. package/dist/{test-CAhm15f4.d.mts → test-DcXa0MeX.d.cts} +1 -1
  193. package/dist/{test-D2plOVHF.d.cts → test-jZsc7P2c.d.mts} +1 -1
  194. package/dist/{throttle-debounce-BLFxAZ8W.d.mts → throttle-debounce-CCh0F100.d.mts} +1 -1
  195. package/dist/{throttle-debounce-Psb0ay1r.d.cts → throttle-debounce-DyFiyoAk.d.cts} +1 -1
  196. package/dist/{time-BfKJBbym.d.cts → time-BgFZe9ys.d.cts} +1 -1
  197. package/dist/{time-DxE-vjjw.d.mts → time-DSV_k3mG.d.mts} +1 -1
  198. package/dist/{timeout-CnUk6Ruj.d.mts → timeout-DDSSNZY8.d.mts} +1 -1
  199. package/dist/{timeout-CpFcK8MD.d.cts → timeout-E3ZQbJgK.d.cts} +1 -1
  200. package/dist/{type-test-BiKyEZkc.d.mts → type-test-BvzWDJz3.d.mts} +1 -1
  201. package/dist/{type-test-sM7QpfQU.d.cts → type-test-CBK-iJ9d.d.cts} +1 -1
  202. package/dist/{utils-B8DsVgFr.d.mts → utils-1RyCGkpQ.d.mts} +1 -1
  203. package/dist/{utils-BfZkD2Pt.d.mts → utils-6Culwiaf.d.cts} +1 -1
  204. package/dist/{utils-DHQBNh-Z.d.cts → utils-CDJihcg3.d.mts} +1 -1
  205. package/dist/{utils-Bctk_WhH.d.cts → utils-nCQklGHV.d.cts} +1 -1
  206. package/dist/{uuid-Cusm2nIK.d.cts → uuid-CKFZfSff.d.mts} +1 -1
  207. package/dist/{uuid-ININPGKB.d.mts → uuid-D42A8UdP.d.cts} +1 -1
  208. package/dist/z-C0fpNWZg.d.cts +1 -0
  209. package/dist/z-D_jezYmm.d.mts +1 -0
  210. package/dist/{z-collection-BmuBin--.d.mts → z-collection-BSfgRU0Q.d.mts} +1 -1
  211. package/package.json +17 -18
  212. package/src/common/schema/README.md +247 -66
  213. package/src/common/schema/export-json-schema.spec.ts +11 -7
  214. package/src/common/schema/export-json-schema.ts +59 -52
  215. package/src/common/schema/index.ts +1 -0
  216. package/src/common/schema/sql/README.md +254 -0
  217. package/src/common/schema/sql/expr.ts +99 -0
  218. package/src/common/schema/sql/index.ts +3 -0
  219. package/src/common/schema/sql/select.spec.ts +144 -0
  220. package/src/common/schema/sql/select.ts +207 -0
  221. package/src/common/schema/sql/table.ts +36 -0
  222. package/src/common/schema/README-SCHEMA.md +0 -0
  223. /package/dist/{index-BH1nuHdZ.d.cts → index-CIABef8t.d.mts} +0 -0
  224. /package/dist/{index-BL7o4fG9.d.cts → index-CliqZ9rj.d.mts} +0 -0
  225. /package/dist/{index-CP2eJYlK.d.mts → index-D6xqj1Qx.d.cts} +0 -0
  226. /package/dist/{index-DjOaHFU3.d.mts → index-DHFfG4yr.d.cts} +0 -0
  227. /package/dist/{index-sViox9YW.d.mts → index-N-OgGgfF.d.mts} +0 -0
  228. /package/dist/{z-ClMox7qS.d.mts → index-WOw4GVZo.d.cts} +0 -0
  229. /package/dist/{z-dtM4F8Lo.d.cts → index-luywJTzJ.d.mts} +0 -0
package/AGENTS.md CHANGED
@@ -1,233 +1,72 @@
1
1
  # AGENTS.md
2
2
 
3
- ## Project Overview
3
+ Guidance for coding agents working on the zeed repository. For end-user documentation see [README.md](README.md).
4
4
 
5
- Zeed is a zero-dependency TypeScript utility library designed for universal JavaScript (browsers, Node.js, Deno, and Bun). It provides core utilities for logging, messaging, schema validation, event handling, async operations, and more.
5
+ ## Project
6
6
 
7
- **Key characteristics:**
8
- - Zero runtime dependencies (all integrations are vendored or optional)
9
- - Strict TypeScript with full type inference
10
- - Tree-shakable ESM with CommonJS fallback
11
- - Platform-specific code split between `src/browser/`, `src/node/`, and `src/common/`
7
+ Zero-dependency TypeScript utility library for universal JavaScript (browser, Node, Deno, Bun).
12
8
 
13
- ## Commands
14
-
15
- ### Building and Development
16
- ```bash
17
- # Build the library (ESM + CJS with minification and types)
18
- pnpm build
19
-
20
- # Type checking without compilation
21
- pnpm check
22
-
23
- # Watch mode for development
24
- pnpm watch
25
- ```
26
-
27
- ### Testing
28
- ```bash
29
- # Run all tests (Node.js + common)
30
- pnpm test
31
-
32
- # Run tests with coverage report
33
- pnpm coverage
9
+ - Zero runtime dependencies
10
+ - Strict TypeScript, full type inference
11
+ - Tree-shakable ESM with CJS fallback
12
+ - Platform split: `src/browser/`, `src/node/`, `src/common/`
34
13
 
35
- # Run specific test file
36
- pnpm test <filename>.spec.ts
14
+ ## Commands
37
15
 
38
- # Run browser tests in different browsers
39
- pnpm test:browser # Chromium with preview
40
- pnpm test:chromium # Chromium via playwright
41
- pnpm test:firefox # Firefox via playwright
42
- pnpm test:webkit # WebKit via playwright
43
- ```
16
+ Package manager: `pnpm` (>= 10). Node >= 20. `nr` is a binary from `@antfu/ni` that runs `package.json` scripts.
44
17
 
45
- ### Linting
46
18
  ```bash
47
- # Check for linting issues
48
- pnpm lint
49
-
50
- # Auto-fix linting issues
19
+ pnpm build # tsdown build (ESM + CJS + types)
20
+ pnpm check # tsc --noEmit
21
+ pnpm watch # incremental build
22
+ pnpm test # type check + vitest run (node + common)
23
+ pnpm coverage # vitest with coverage
24
+ pnpm vitest run path/to/file.spec.ts # single test file
25
+ pnpm test:chromium # browser tests via playwright (also :firefox, :webkit)
26
+ pnpm test:browser # browser tests with preview UI
27
+ pnpm lint # eslint
51
28
  pnpm lint:fix
29
+ pnpm build:docs # typedoc -> docs/
52
30
  ```
53
31
 
54
- ### Documentation
55
- ```bash
56
- # Generate API documentation (published to https://zeed.holtwick.de/)
57
- pnpm build:docs
58
- ```
59
-
60
- ## Architecture
61
-
62
- ### Module Structure
63
-
64
- The codebase is organized into three main areas:
65
-
66
- 1. **`src/common/`** - Platform-agnostic utilities
67
- - Core functionality that works everywhere (browser, Node.js, Deno, Bun)
68
- - Includes: schema validation, messaging, data utilities, logging foundation, etc.
69
-
70
- 2. **`src/browser/`** - Browser-specific utilities
71
- - DOM interactions, LocalStorage, browser-specific logging handlers
72
- - Example: `log-browser-factory.ts` provides colorful console output for browsers
73
-
74
- 3. **`src/node/`** - Node.js/Deno/Bun-specific utilities
75
- - File system operations, process env handling, Node-specific features
76
- - Example: `env.ts` for environment variable management
77
-
78
- ### Entry Points
79
-
80
- The library uses conditional exports for platform-specific builds:
81
-
82
- - **`src/index.all.ts`** - Full universal export (browser + node + common)
83
- - **`src/index.browser.ts`** - Browser-only build (re-exports browser + common)
84
- - **`src/index.node.ts`** - Node-only build (re-exports node + common)
85
- - **`src/index.jsr.ts`** - JSR registry specific export
86
-
87
- The `package.json` exports field automatically selects the right build:
88
- ```json
89
- {
90
- "exports": {
91
- ".": {
92
- "types": "./dist/index.all.d.mts",
93
- "require": "./dist/index.node.cjs",
94
- "node": "./dist/index.node.mjs",
95
- "default": "./dist/index.browser.mjs"
96
- }
97
- }
98
- }
99
- ```
100
-
101
- ### Key Subsystems
102
-
103
- #### Messaging (`src/common/msg/`)
104
-
105
- A layered messaging architecture for cross-context communication. See `src/common/msg/README.md` for full details.
106
-
107
- - **Emitter** - Type-safe, async event emitter for in-app communication
108
- - **Channel** - Uniform `postMessage` abstraction for data transport (WebSocket, WebRTC, WebWorker, etc.)
109
- - **PubSub** - Event-like messages over a Channel with type safety
110
- - **Messages** - RPC-like interface with Promise-based responses, timeouts, and retries
111
- - **Encoder** - Transform data for transport (JSON, encryption, etc.)
112
-
113
- Example:
114
- ```typescript
115
- interface MyMessages {
116
- echo: (data: any) => Promise<any>
117
- }
118
-
119
- const hub = useMessageHub({ channel }).send<MyMessages>()
120
- await hub.echo({ hello: 'world' })
121
- ```
122
-
123
- #### Schema Validation (`src/common/schema/`)
124
-
125
- Type-safe runtime validation with [Standard Schema](https://github.com/standard-schema/standard-schema) compatibility. Works with tRPC, TanStack Form/Router, Hono, and 40+ other libraries.
126
-
127
- - Import via `z` namespace: `import { z } from 'zeed'`
128
- - All schemas support `.parse()`, `.optional()`, `.default()`, type inference
129
- - Standard Schema interface available via `schema['~standard']`
130
- - Supports serialization/deserialization for network transport
131
-
132
- Example:
133
- ```typescript
134
- const userSchema = z.object({
135
- name: z.string(),
136
- email: z.string(),
137
- role: z.stringLiterals(['admin', 'user']),
138
- })
139
-
140
- type User = z.infer<typeof userSchema>
141
- const user = userSchema.parse(data)
142
- ```
143
-
144
- #### Logging (`src/common/log/`, `src/browser/log/`, `src/node/log/`)
145
-
146
- Universal logging system with platform-specific handlers:
147
-
148
- - **Configuration**: `ZEED=*` or `DEBUG=*` to enable logs (ZEED supersedes DEBUG)
149
- - **Level filtering**: `ZEED_LEVEL=info` to hide debug logs
150
- - **Log to file**: `ZEED_LOG=/path/to/file.log`
151
- - **Handlers**: `LoggerConsoleHandler`, `LoggerBrowserHandler`, `LoggerNodeHandler`, `LoggerFileHandler`
152
-
153
- Usage:
154
- ```typescript
155
- import { Logger } from 'zeed'
156
-
157
- const log = Logger('my-module')
158
- log('message')
159
- log.info('info')
160
- log.warn('warning')
161
- log.error('error')
32
+ ## Layout
33
+
34
+ ```text
35
+ src/
36
+ common/ platform-agnostic (schema, msg, data, log core, ...)
37
+ browser/ DOM, LocalStorage, browser log handler
38
+ node/ fs, env, node log handler
39
+ index.all.ts universal entry
40
+ index.browser.ts browser build
41
+ index.node.ts node build
42
+ index.jsr.ts JSR registry entry
162
43
  ```
163
44
 
164
- #### Data Utilities (`src/common/data/`)
165
-
166
- Extensive collection of data manipulation utilities:
167
- - **Array operations**: `arrayUnique`, `arrayShuffle`, `arrayGroupBy`
168
- - **String utilities**: `camelCase`, `snakeCase`, `slugify`
169
- - **Binary encoding**: `useBase(62)` for Base62 encoding/decoding
170
- - **Object operations**: `deepEqual`, `deepMerge`, `objectFilter`, `objectPluck`
171
- - **CRDT sorting**: `sortedItems` for conflict-free replicated data
172
-
173
- ## Development Conventions
174
-
175
- ### Code Style
176
-
177
- - **Indentation**: Always use 2 spaces (not tabs)
178
- - **TypeScript**: Strict mode enabled, use explicit types where inference isn't clear
179
- - **Imports**: Use relative imports within the same major module, exported symbols for cross-module
180
-
181
- ### Testing
182
-
183
- - All test files must end with `.spec.ts`
184
- - Tests live side-by-side with the code they test (e.g., `array.ts` → `array.spec.ts`)
185
- - Use Vitest with globals enabled (`describe`, `it`, `expect` available globally)
186
- - Aim for 100% test coverage for new utilities
187
- - Browser tests require explicit environment: `pnpm test:browser`
45
+ Conditional exports in `package.json` route consumers to the right build. Ignore `_archive/`, `dist/`, `docs/`, `demos/`.
188
46
 
189
- ### File Organization
47
+ ## Subsystems
190
48
 
191
- - Platform-specific code goes in `src/browser/` or `src/node/`
192
- - Shared code goes in `src/common/`
193
- - Each module exports through an `index.ts` barrel file
194
- - Ignore `_archive/`, `dist/`, `docs/`, and `demos/` folders
49
+ - **`common/schema/`** - Standard Schema compatible runtime validation, exposed as `z`. `z.object`, `z.string`, `z.stringLiterals`, `.parse`, `.optional`, `.default`, `z.infer`. `schema['~standard']` exposes the Standard Schema interface.
50
+ - **`common/msg/`** - Layered messaging: `Emitter` (typed events), `Channel` (postMessage abstraction), `PubSub`, `Messages` (RPC with Promise/timeout/retry), `Encoder`. See `src/common/msg/README.md`.
51
+ - **`common/log/`** + platform handlers - `Logger('name')`, levels `info`/`warn`/`error`. Env: `ZEED=*` or `DEBUG=*` (ZEED wins), `ZEED_LEVEL=info`, `ZEED_LOG=/path/file.log`. Handlers: `LoggerConsoleHandler`, `LoggerBrowserHandler`, `LoggerNodeHandler`, `LoggerFileHandler`.
52
+ - **`common/data/`** - `arrayUnique`, `arrayShuffle`, `arrayGroupBy`, `camelCase`, `snakeCase`, `slugify`, `useBase(62)`, `deepEqual`, `deepMerge`, `objectFilter`, `objectPluck`, `sortedItems` (CRDT).
195
53
 
196
- ### Type System Patterns
197
-
198
- **Use the `Type` class for runtime validation:**
199
- ```typescript
200
- // Define schema
201
- const schema = z.object({ name: z.string() })
202
-
203
- // Infer TypeScript type
204
- type Schema = z.infer<typeof schema>
205
-
206
- // Parse/validate at runtime
207
- const data = schema.parse(input)
208
- ```
209
-
210
- **Event emitters should use typed interfaces:**
211
- ```typescript
212
- interface MyEvents {
213
- inc: (count: number) => number
214
- }
215
-
216
- const e = new Emitter<MyEvents>()
217
- e.on('inc', async count => count + 1)
218
- ```
54
+ ## Conventions
219
55
 
220
- ## Build System
56
+ - 2-space indent, no tabs.
57
+ - Strict TS. Explicit types only where inference is unclear.
58
+ - Relative imports within a module, barrel imports across modules.
59
+ - Tests live next to code: `array.ts` + `array.spec.ts`. Vitest globals enabled.
60
+ - New utilities: aim for 100% coverage.
61
+ - Browser-only code in `src/browser/`, node-only in `src/node/`, everything else in `src/common/`.
62
+ - Each module has an `index.ts` barrel.
221
63
 
222
- - **Bundler**: tsdown (rolldown-based)
223
- - **Output**: ESM + CJS in `dist/` with `.mjs` / `.cjs` entry files and TypeScript declarations
224
- - **Target**: ES2022
225
- - **Features**: Tree-shaking, minification, source maps, code splitting
64
+ ## Build
226
65
 
227
- The build creates multiple entry points and emits matching declaration files such as `dist/index.all.d.mts`, `dist/index.node.d.mts`, and `dist/index.node.d.cts`.
66
+ - Bundler: `tsdown` (rolldown-based). Config in `tsdown.config.ts`.
67
+ - Output: `dist/` with `.mjs`, `.cjs`, and `.d.mts`/`.d.cts` declarations per entry (e.g. `dist/index.all.d.mts`, `dist/index.node.d.cts`).
68
+ - Features: tree-shaking, minification, source maps, code splitting.
228
69
 
229
- ## Package Management
70
+ ## Release
230
71
 
231
- - Uses `pnpm` (v10.18.0+)
232
- - Node.js >= 20 required
233
- - The `nr` alias in scripts refers to `ni run` from `@antfu/ni` package
72
+ `pnpm prep` runs lint-fix, type check, full test suite, and doc upload. `pnpm npm:release` publishes to npm. `pnpm build:docs` generates typedoc into `docs/` (published to <https://zeed.holtwick.de/>).
package/README.md CHANGED
@@ -24,24 +24,30 @@
24
24
  <td width="50%">
25
25
 
26
26
  ### 🎯 **Type-Safe**
27
+
27
28
  Strict TypeScript with full type inference
28
29
 
29
30
  ### 📦 **Zero Dependencies**
31
+
30
32
  Lightweight and completely tree-shakable
31
33
 
32
34
  ### 🌍 **Universal**
35
+
33
36
  Works in browsers, Node.js, Deno, and Bun
34
37
 
35
38
  </td>
36
39
  <td width="50%">
37
40
 
38
41
  ### ⚡ **Modern ESM**
42
+
39
43
  ES Modules with CommonJS fallback
40
44
 
41
45
  ### ✅ **Well Tested**
46
+
42
47
  Comprehensive test coverage
43
48
 
44
49
  ### 🔌 **Standard Schema**
50
+
45
51
  Compatible with tRPC, TanStack, Hono & more
46
52
 
47
53
  </td>
@@ -93,11 +99,13 @@ log.error('Error')
93
99
  By default, logs are muted. Enable them with filters:
94
100
 
95
101
  **Browser:**
102
+
96
103
  ```ts
97
104
  localStorage.zeed = '*'
98
105
  ```
99
106
 
100
107
  **Node.js:**
108
+
101
109
  ```sh
102
110
  ZEED=* node myapp.js
103
111
  ```
@@ -116,6 +124,7 @@ Write to file: `ZEED_LOG=/path/to/file.log`
116
124
  - `LoggerFileHandler(path, opt)` - File output with optional rotation
117
125
 
118
126
  **Log Rotation Example:**
127
+
119
128
  ```ts
120
129
  import { LoggerFileHandler } from 'zeed'
121
130
 
@@ -270,6 +279,7 @@ else {
270
279
  ```
271
280
 
272
281
  **Features:**
282
+
273
283
  - Primitives: `string()`, `number()`, `int()`, `boolean()`, `any()`
274
284
  - Objects: `object()`, `record()`, `pick()`, `omit()`, `extend()`, `partial()`, `required()`
275
285
  - Arrays & Tuples: `array()`, `tuple()`
@@ -289,6 +299,7 @@ else {
289
299
  <td width="50%">
290
300
 
291
301
  **🔄 CRDT Sorting**
302
+
292
303
  ```ts
293
304
  interface Row extends SortedItem {
294
305
  id: string
@@ -298,6 +309,7 @@ sortedItems(rows)
298
309
  ```
299
310
 
300
311
  **🔐 Binary Encoding**
312
+
301
313
  ```ts
302
314
  const { encode, decode } = useBase(62)
303
315
  decode(encode(data)) === data
@@ -307,12 +319,14 @@ decode(encode(data)) === data
307
319
  <td width="50%">
308
320
 
309
321
  **🔍 Deep Object Utils**
322
+
310
323
  ```ts
311
324
  deepEqual(obj1, obj2)
312
325
  deepMerge(obj1, obj2)
313
326
  ```
314
327
 
315
328
  **🧹 Resource Disposal**
329
+
316
330
  ```ts
317
331
  const dispose = useDispose()
318
332
  dispose.add(cleanup)
@@ -332,10 +346,12 @@ Zeed includes many more utilities - explore the [full API documentation](https:/
332
346
  ## 🤝 Related Projects
333
347
 
334
348
  **By the same author:**
349
+
335
350
  - [zeed-dom](https://github.com/holtwick/zeed-dom) - DOM manipulation utilities
336
351
  - [zerva](https://github.com/holtwick/zerva) - Modular server framework
337
352
 
338
353
  **Similar utility libraries:**
354
+
339
355
  - [lib0](https://github.com/dmonad/lib0) - Fundamental utility functions
340
356
  - [antfu/utils](https://github.com/antfu/utils) - Collection of common utilities
341
357
  - [vueuse](https://vueuse.org/) - Vue composition utilities
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_chunk = require('../chunk-uaV2rQ02.cjs');
3
3
  let fs = require("fs");
4
- fs = require_chunk.__toESM(fs);
4
+ fs = require_chunk.__toESM(fs, 1);
5
5
  let path = require("path");
6
- path = require_chunk.__toESM(path);
6
+ path = require_chunk.__toESM(path, 1);
7
7
  let fs_promises = require("fs/promises");
8
8
 
9
9
  //#region src/_experiments/bitcask.ts
@@ -19,4 +19,4 @@ interface ParseConfig {
19
19
  declare function parseArgs(config?: ParseConfig): Record<string, any>;
20
20
  //#endregion
21
21
  export { parseArgs as n, ParseConfig as t };
22
- //# sourceMappingURL=args-FLoL3OKJ.d.cts.map
22
+ //# sourceMappingURL=args-CEjib9V9.d.mts.map
@@ -19,4 +19,4 @@ interface ParseConfig {
19
19
  declare function parseArgs(config?: ParseConfig): Record<string, any>;
20
20
  //#endregion
21
21
  export { parseArgs as n, ParseConfig as t };
22
- //# sourceMappingURL=args-WC9q5kz2.d.mts.map
22
+ //# sourceMappingURL=args-DEig-jw4.d.cts.map
@@ -3,4 +3,4 @@
3
3
  declare function pbcopy(data: string): Promise<unknown>;
4
4
  //#endregion
5
5
  export { pbcopy as t };
6
- //# sourceMappingURL=clipboard-BkUO-syY.d.mts.map
6
+ //# sourceMappingURL=clipboard-BusqmLLY.d.cts.map
@@ -3,4 +3,4 @@
3
3
  declare function pbcopy(data: string): Promise<unknown>;
4
4
  //#endregion
5
5
  export { pbcopy as t };
6
- //# sourceMappingURL=clipboard-Cfpr331X.d.cts.map
6
+ //# sourceMappingURL=clipboard-DcuuFRwa.d.mts.map
@@ -1,5 +1,5 @@
1
1
  import { i as useMutex, n as Mutex, r as useAsyncMutex, t as AsyncMutex } from "../../mutex-Bx9wpyQU.cjs";
2
- import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-DHXVOH8h.cjs";
3
- import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-DGgiRckN.cjs";
4
- import { n as throttle, t as debounce } from "../../throttle-debounce-Psb0ay1r.cjs";
2
+ import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-CFkMqHvX.cjs";
3
+ import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-CU_CENbU.cjs";
4
+ import { n as throttle, t as debounce } from "../../throttle-debounce-DyFiyoAk.cjs";
5
5
  export { AsyncMutex, AsyncReturnType, Mutex, PoolConfig, PoolTask, PoolTaskEvents, PoolTaskFn, PoolTaskIdConflictResolution, PoolTaskState, Progress, ProgressOptions, SerialQueue, TaskEvents, TaskFn, createPromise, debounce, immediate, isPromise, isTimeout, promisify, sleep, throttle, timeout, tryTimeout, useAsyncMutex, useMutex, usePool, waitOn };
@@ -1,5 +1,5 @@
1
1
  import { i as useMutex, n as Mutex, r as useAsyncMutex, t as AsyncMutex } from "../../mutex-D_myf4dr.mjs";
2
- import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-DMaPyx9O.mjs";
3
- import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-MH3xAy4S.mjs";
4
- import { n as throttle, t as debounce } from "../../throttle-debounce-BLFxAZ8W.mjs";
2
+ import { a as PoolTask, c as PoolTaskIdConflictResolution, d as Progress, f as ProgressOptions, i as PoolConfig, l as PoolTaskState, n as TaskEvents, o as PoolTaskEvents, r as TaskFn, s as PoolTaskFn, t as SerialQueue, u as usePool } from "../../index-C_3Y_s6f.mjs";
3
+ import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-CoWXgo4w.mjs";
4
+ import { n as throttle, t as debounce } from "../../throttle-debounce-CCh0F100.mjs";
5
5
  export { AsyncMutex, AsyncReturnType, Mutex, PoolConfig, PoolTask, PoolTaskEvents, PoolTaskFn, PoolTaskIdConflictResolution, PoolTaskState, Progress, ProgressOptions, SerialQueue, TaskEvents, TaskFn, createPromise, debounce, immediate, isPromise, isTimeout, promisify, sleep, throttle, timeout, tryTimeout, useAsyncMutex, useMutex, usePool, waitOn };
@@ -1,2 +1,2 @@
1
- import { a as PoolTask, c as PoolTaskIdConflictResolution, i as PoolConfig, l as PoolTaskState, o as PoolTaskEvents, s as PoolTaskFn, u as usePool } from "../../index-DHXVOH8h.cjs";
1
+ import { a as PoolTask, c as PoolTaskIdConflictResolution, i as PoolConfig, l as PoolTaskState, o as PoolTaskEvents, s as PoolTaskFn, u as usePool } from "../../index-CFkMqHvX.cjs";
2
2
  export { PoolConfig, PoolTask, PoolTaskEvents, PoolTaskFn, PoolTaskIdConflictResolution, PoolTaskState, usePool };
@@ -1,2 +1,2 @@
1
- import { a as PoolTask, c as PoolTaskIdConflictResolution, i as PoolConfig, l as PoolTaskState, o as PoolTaskEvents, s as PoolTaskFn, u as usePool } from "../../index-DMaPyx9O.mjs";
1
+ import { a as PoolTask, c as PoolTaskIdConflictResolution, i as PoolConfig, l as PoolTaskState, o as PoolTaskEvents, s as PoolTaskFn, u as usePool } from "../../index-C_3Y_s6f.mjs";
2
2
  export { PoolConfig, PoolTask, PoolTaskEvents, PoolTaskFn, PoolTaskIdConflictResolution, PoolTaskState, usePool };
@@ -1,2 +1,2 @@
1
- import { d as Progress, f as ProgressOptions } from "../../index-DHXVOH8h.cjs";
1
+ import { d as Progress, f as ProgressOptions } from "../../index-CFkMqHvX.cjs";
2
2
  export { Progress, ProgressOptions };
@@ -1,2 +1,2 @@
1
- import { d as Progress, f as ProgressOptions } from "../../index-DMaPyx9O.mjs";
1
+ import { d as Progress, f as ProgressOptions } from "../../index-C_3Y_s6f.mjs";
2
2
  export { Progress, ProgressOptions };
@@ -1,2 +1,2 @@
1
- import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-DGgiRckN.cjs";
1
+ import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-CU_CENbU.cjs";
2
2
  export { AsyncReturnType, createPromise, immediate, isPromise, isTimeout, promisify, sleep, timeout, tryTimeout, waitOn };
@@ -1,2 +1,2 @@
1
- import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-MH3xAy4S.mjs";
1
+ import { a as isTimeout, c as timeout, i as isPromise, l as tryTimeout, n as createPromise, o as promisify, r as immediate, s as sleep, t as AsyncReturnType, u as waitOn } from "../../promise-CoWXgo4w.mjs";
2
2
  export { AsyncReturnType, createPromise, immediate, isPromise, isTimeout, promisify, sleep, timeout, tryTimeout, waitOn };
@@ -1,2 +1,2 @@
1
- import { n as TaskEvents, r as TaskFn, t as SerialQueue } from "../../index-DHXVOH8h.cjs";
1
+ import { n as TaskEvents, r as TaskFn, t as SerialQueue } from "../../index-CFkMqHvX.cjs";
2
2
  export { SerialQueue, TaskEvents, TaskFn };
@@ -1,2 +1,2 @@
1
- import { n as TaskEvents, r as TaskFn, t as SerialQueue } from "../../index-DMaPyx9O.mjs";
1
+ import { n as TaskEvents, r as TaskFn, t as SerialQueue } from "../../index-C_3Y_s6f.mjs";
2
2
  export { SerialQueue, TaskEvents, TaskFn };
@@ -1,2 +1,2 @@
1
- import { n as throttle, t as debounce } from "../../throttle-debounce-Psb0ay1r.cjs";
1
+ import { n as throttle, t as debounce } from "../../throttle-debounce-DyFiyoAk.cjs";
2
2
  export { debounce, throttle };
@@ -1,2 +1,2 @@
1
- import { n as throttle, t as debounce } from "../../throttle-debounce-BLFxAZ8W.mjs";
1
+ import { n as throttle, t as debounce } from "../../throttle-debounce-CCh0F100.mjs";
2
2
  export { debounce, throttle };
@@ -82,6 +82,9 @@ const require_common_schema_parse_args = require('./schema/parse-args.cjs');
82
82
  const require_common_schema_parse_env = require('./schema/parse-env.cjs');
83
83
  const require_common_schema_schema = require('./schema/schema.cjs');
84
84
  const require_common_schema_serialize = require('./schema/serialize.cjs');
85
+ const require_common_schema_sql_table = require('./schema/sql/table.cjs');
86
+ const require_common_schema_sql_expr = require('./schema/sql/expr.cjs');
87
+ const require_common_schema_sql_select = require('./schema/sql/select.cjs');
85
88
  const require_common_schema_z_collection = require('./schema/z-collection.cjs');
86
89
  const require_common_storage_memstorage = require('./storage/memstorage.cjs');
87
90
  const require_common_test = require('./test.cjs');
@@ -120,6 +123,7 @@ exports.PubSub = require_common_msg_pubsub.PubSub;
120
123
  exports.RPCMode = require_common_msg_rpc.RPCMode;
121
124
  exports.RX_URL = require_common_data_url.RX_URL;
122
125
  exports.ResillientChannel = require_common_msg_channel_resilient.ResillientChannel;
126
+ exports.SelectBuilder = require_common_schema_sql_select.SelectBuilder;
123
127
  exports.SerialQueue = require_common_exec_queue.SerialQueue;
124
128
  exports.TIME_DAY_MS = require_common_time.TIME_DAY_MS;
125
129
  exports.TIME_DAY_S = require_common_time.TIME_DAY_S;
@@ -143,6 +147,7 @@ exports.XRX = require_common_data_xrx.XRX;
143
147
  exports._decodeUtf8Polyfill = require_bin._decodeUtf8Polyfill;
144
148
  exports._encodeUtf8Polyfill = require_bin._encodeUtf8Polyfill;
145
149
  exports._useBase = require_common_data_basex._useBase;
150
+ exports.and = require_common_schema_sql_expr.and;
146
151
  exports.any = require_common_schema_schema.any;
147
152
  exports.array = require_common_schema_schema.array;
148
153
  exports.arrayAvg = require_common_data_array.arrayAvg;
@@ -291,6 +296,7 @@ exports.endSortWeight = require_common_data_sortable.endSortWeight;
291
296
  exports.ensureKey = require_common_data_utils.ensureKey;
292
297
  exports.ensureKeyAsync = require_common_data_utils.ensureKeyAsync;
293
298
  exports.ensureUint8Array = require_bin.ensureUint8Array;
299
+ exports.eq = require_common_schema_sql_expr.eq;
294
300
  exports.equalBinary = require_bin.equalBinary;
295
301
  exports.escapeHTML = require_common_data_html.escapeHTML;
296
302
  exports.escapeRegExp = require_common_data_regexp.escapeRegExp;
@@ -313,6 +319,7 @@ exports.formatBytesToHumanBase1024 = require_common_data_format.formatBytesToHum
313
319
  exports.formatMessages = require_common_data_message.formatMessages;
314
320
  exports.formatMilliseconds = require_common_time.formatMilliseconds;
315
321
  exports.formatSecondsToTime = require_common_data_format.formatSecondsToTime;
322
+ exports.from = require_common_schema_sql_select.from;
316
323
  exports.fromBase64 = require_bin.fromBase64;
317
324
  exports.fromBase64String = require_bin.fromBase64String;
318
325
  exports.fromCamelCase = require_common_data_camelcase.fromCamelCase;
@@ -337,15 +344,19 @@ exports.getTimestamp = require_common_time.getTimestamp;
337
344
  exports.getTimestampInSeconds = require_common_time.getTimestampInSeconds;
338
345
  exports.getWindow = require_common_platform.getWindow;
339
346
  exports.globalAny = require_common_global.globalAny;
347
+ exports.gt = require_common_schema_sql_expr.gt;
348
+ exports.gte = require_common_schema_sql_expr.gte;
340
349
  exports.helpSchemaArgs = require_common_schema_parse_args.helpSchemaArgs;
341
350
  exports.hex = require_bin.hex;
342
351
  exports.immediate = require_common_exec_promise.immediate;
343
352
  exports.importKeyXAES = require_common_crypto_xaes.importKeyXAES;
353
+ exports.inArray = require_common_schema_sql_expr.inArray;
344
354
  exports.int = require_common_schema_schema.int;
345
355
  exports.isArray = require_common_data_is.isArray;
346
356
  exports.isBinaryArray = require_common_data_is.isBinaryArray;
347
357
  exports.isBoolean = require_common_data_is.isBoolean;
348
358
  exports.isBrowser = require_common_platform.isBrowser;
359
+ exports.isColumn = require_common_schema_sql_table.isColumn;
349
360
  exports.isEmpty = require_common_data_is.isEmpty;
350
361
  exports.isEven = require_common_data_rounding.isEven;
351
362
  exports.isFunction = require_common_data_is.isFunction;
@@ -384,6 +395,7 @@ exports.jsonStringifySafe = require_common_data_json.jsonStringifySafe;
384
395
  exports.jsonStringifySorted = require_common_data_json.jsonStringifySorted;
385
396
  exports.jsonToUint8Array = require_bin.jsonToUint8Array;
386
397
  exports.last = require_common_data_utils.last;
398
+ exports.like = require_common_schema_sql_expr.like;
387
399
  exports.linkifyPlainText = require_common_data_url.linkifyPlainText;
388
400
  exports.linkifyPlainTextSimple = require_common_data_url.linkifyPlainTextSimple;
389
401
  exports.linkifyPlainTextWithLineBreaks = require_common_data_url.linkifyPlainTextWithLineBreaks;
@@ -394,12 +406,16 @@ exports.listQuery = require_common_data_list.listQuery;
394
406
  exports.literal = require_common_schema_schema.literal;
395
407
  exports.logCaptureConsole = require_common_log_log_console_capture.logCaptureConsole;
396
408
  exports.logMessageFromCompact = require_common_log_log_memory.logMessageFromCompact;
409
+ exports.lt = require_common_schema_sql_expr.lt;
410
+ exports.lte = require_common_schema_sql_expr.lte;
397
411
  exports.memoize = require_common_data_utils.memoize;
398
412
  exports.memoizeAsync = require_common_data_utils.memoizeAsync;
399
413
  exports.moveSortWeight = require_common_data_sortable.moveSortWeight;
414
+ exports.ne = require_common_schema_sql_expr.ne;
400
415
  exports.none = require_common_schema_schema.none;
401
416
  exports.noop = require_common_utils.noop;
402
417
  exports.noopDisposer = require_common_dispose_utils.noopDisposer;
418
+ exports.not = require_common_schema_sql_expr.not;
403
419
  exports.number = require_common_schema_schema.number;
404
420
  exports.numberToBase32 = require_common_data_math.numberToBase32;
405
421
  exports.object = require_common_schema_schema.object;
@@ -414,6 +430,7 @@ exports.objectMergeDisposable = require_common_data_object.objectMergeDisposable
414
430
  exports.objectOmit = require_common_data_object.objectOmit;
415
431
  exports.objectPick = require_common_data_object.objectPick;
416
432
  exports.objectPlain = require_common_data_object.objectPlain;
433
+ exports.or = require_common_schema_sql_expr.or;
417
434
  exports.parseBasicAuth = require_common_network.parseBasicAuth;
418
435
  exports.parseDate = require_common_time.parseDate;
419
436
  exports.parseFloat = require_common_data_convert.parseFloat;
@@ -455,6 +472,7 @@ exports.schemaExportTypescriptInterface = require_common_schema_export_typescrip
455
472
  exports.schemaParseObject = require_common_schema_parse_object.schemaParseObject;
456
473
  exports.schemaValidateObject = require_common_schema_parse_object.schemaValidateObject;
457
474
  exports.seededRandom = require_common_data_math.seededRandom;
475
+ exports.select = require_common_schema_sql_select.select;
458
476
  exports.serializeSchema = require_common_schema_serialize.serializeSchema;
459
477
  exports.setDayTest = require_common_data_day.setDayTest;
460
478
  exports.setTestMode = require_common_test.setTestMode;
@@ -464,6 +482,8 @@ exports.size = require_common_data_utils.size;
464
482
  exports.sleep = require_common_exec_promise.sleep;
465
483
  exports.sortedItems = require_common_data_sortable.sortedItems;
466
484
  exports.sortedOrderby = require_common_data_orderby.sortedOrderby;
485
+ exports.sqlIsNotNull = require_common_schema_sql_expr.sqlIsNotNull;
486
+ exports.sqlIsNull = require_common_schema_sql_expr.sqlIsNull;
467
487
  exports.startSortWeight = require_common_data_sortable.startSortWeight;
468
488
  exports.str = require_bin.str;
469
489
  exports.string = require_common_schema_schema.string;
@@ -480,6 +500,7 @@ exports.suidBytes = require_common_uuid.suidBytes;
480
500
  exports.suidBytesDate = require_common_uuid.suidBytesDate;
481
501
  exports.suidDate = require_common_uuid.suidDate;
482
502
  exports.sum = require_common_data_math.sum;
503
+ exports.table = require_common_schema_sql_table.table;
483
504
  exports.throttle = require_common_exec_throttle_debounce.throttle;
484
505
  exports.timeout = require_common_exec_promise.timeout;
485
506
  exports.timestampMillisecondsToSeconds = require_common_time.timestampMillisecondsToSeconds;